details: https://hg.nginx.org/njs/rev/29fbf8f85c09 branches: changeset: 2047:29fbf8f85c09 user: Dmitry Volyntsev <xei...@nginx.com> date: Thu Feb 09 18:34:51 2023 -0800 description: Types: updated Fetch API types.
diffstat: test/ts/test.ts | 9 +++ ts/ngx_core.d.ts | 153 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 154 insertions(+), 8 deletions(-) diffs (231 lines): diff -r 8b0350c4b19e -r 29fbf8f85c09 test/ts/test.ts --- a/test/ts/test.ts Thu Feb 09 18:34:51 2023 -0800 +++ b/test/ts/test.ts Thu Feb 09 18:34:51 2023 -0800 @@ -96,12 +96,21 @@ async function http_module(r: NginxHTTPR let out: Array<string> = reply.headers.getAll("foo"); let has: boolean = reply.headers.has("foo"); + reply.headers.append("foo", "xxx"); + reply.headers.delete("xxx"); + reply.headers.forEach((name, value) => { /* do something. */ }); + return reply.text() }) .then(body => r.return(200, body)) .catch(e => r.return(501, e.message)) + let response = await ngx.fetch('http://nginx.org/'); + let response2 = new Response("xxx", {headers: {"Content-Type": "text/plain"}, status: 404}); + + let req = new Request("http://nginx.org", {method: "POST", headers: new Headers(["Foo", "bar"])}); + let response3 = await ngx.fetch(req); // js_body_filter r.sendBuffer(Buffer.from("xxx"), {last:true}); diff -r 8b0350c4b19e -r 29fbf8f85c09 ts/ngx_core.d.ts --- a/ts/ngx_core.d.ts Thu Feb 09 18:34:51 2023 -0800 +++ b/ts/ngx_core.d.ts Thu Feb 09 18:34:51 2023 -0800 @@ -1,4 +1,28 @@ -interface NgxResponseHeaders { +type NgxHeaders = Headers | Object | [NjsFixedSizeArray<2, NjsStringLike>]; + +declare class Headers { + /** + * Appends a new value into an existing header in the Headers object, + * or adds the header if it does not already exist. + * @param name A name of the header. + * @param value A value of the header. + * @since 0.7.10 + */ + append(name:NjsStringLike, value: NjsStringLike): void; + /** + * Headers constructors. + * + * @param init is an optional initialization object. + * @returns returns Headers object. + * @since 0.7.10 + */ + constructor(init?: Object | [NjsFixedSizeArray<2, NjsStringLike>]); + /** + * Deletes a header from the Headers object. + * @param name A name of the header to be deleted. + * @since 0.7.10 + */ + delete(name:NjsStringLike): void; /** * Returns a string containing the values of all headers * with the specified name separated by a comma and a space. @@ -12,14 +36,119 @@ interface NgxResponseHeaders { */ getAll(name:NjsStringLike): Array<NjsByteString>; /** + * Executes a provided function once for each key/value + * pair in the Headers object. + * @param fn the function to be envoked. + * @since 0.7.10 + */ + forEach(fn:(name: NjsStringLike, value: NjsStringLike) => void): void; + /** * Returns a boolean value indicating whether a header with * the specified name exists. * @param name A name of the header. */ has(name:NjsStringLike): boolean; + /** + * Sets a new value for an existing header inside the Headers object, + * or adds the header if it does not already exist. + * @param name A name of the header. + * @param value A value of the header. + * @since 0.7.10 + */ + set(name:NjsStringLike, value: NjsStringLike): void; +} + +interface NgxRequestOptions { + /** + * Request body, by default is empty. + */ + body?: NjsStringLike; + /** + * Cache mode, by default is "default". + */ + cache?: "default" | "no-store" | "reload" | "no-cache" | "force-cache" | "only-if-cached"; + /** + * Credentials, by default is "same-origin". + */ + credentials?: "omit" | "same-origin" | "include"; + /** + * Request headers. + */ + headers?: NgxHeaders; + /** + * Request method, by default the GET method is used. + */ + method?: NjsStringLike; + /** + * Mode, by default is "no-cors". + */ + mode?: "same-origin" | "no-cors" | "cors"; } -interface NgxResponse { +declare class Request { + /** + * Returns a Promise that resolves with an body as ArrayBuffer. + */ + arrayBuffer(): Promise<ArrayBuffer>; + /** + * A boolean value, true if the body has been used. + */ + readonly bodyUsed: boolean; + /** + * Cache mode. + */ + readonly cache: NjsByteString; + /** + * Request constructors. + * + * @param init is an optional initialization object. + * @returns returns Headers object. + * @since 0.7.10 + */ + constructor(input: NjsStringLike | Request, options?: NgxRequestOptions); + /** + * Credentials. + */ + readonly credentials: NjsByteString; + /** + * Returns a Promise that resolves with an result of applying of + * JSON.parse() to a body. + */ + json(): Promise<Object>; + /** + * The Headers object associated with the request. + */ + headers: Headers; + /** + * Request mode. + */ + readonly mode: NjsByteString; + /** + * Returns a Promise that resolves with an body as String. + */ + text(): Promise<NjsByteString>; + /** + * Request url. + */ + readonly url: NjsByteString; +} + +interface NgxResponseOptions { + /** + * Request headers. + */ + headers?: NgxHeaders; + /** + * Response status, 200 by default. + */ + status?: number; + /** + * Response status test, '' by default. + */ + statusText?: NjsStringLike; +} + +declare class Response { /** * Takes a Response stream and reads it to completion. * Returns a Promise that resolves with an ArrayBuffer. @@ -30,15 +159,23 @@ interface NgxResponse { */ readonly bodyUsed: boolean; /** + * Response constructors. + * + * @param init is an optional initialization object. + * @returns returns Headers object. + * @since 0.7.10 + */ + constructor(body?: NjsStringLike, options?: NgxResponseOptions); + /** * Takes a Response stream and reads it to completion. * Returns a Promise that resolves with the result of * parsing the body text as JSON. */ json(): Promise<Object>; /** - * The NgxResponseHeaders object associated with the response. + * The Headers object associated with the response. */ - headers: NgxResponseHeaders; + headers: Headers; /** * A boolean value, true if the response was successful * (status in the range 200-299). @@ -86,7 +223,7 @@ interface NgxFetchOptions { /** * Request headers object. */ - headers?: Object, + headers?: NgxHeaders; /** * The maximum size of the response body in bytes, by default is 1048576 (32768 before 0.7.4). * Nginx specific. @@ -118,13 +255,13 @@ interface NgxObject { log(level: number, message: NjsStringOrBuffer): void; /** * Makes a request to fetch an URL. - * Returns a Promise that resolves with the NgxResponse object. + * Returns a Promise that resolves with the Response object. * Since 0.7.0 HTTPS is supported, redirects are not handled. - * @param url URL of a resource to fetch. + * @param init URL of a resource to fetch or a Request object. * @param options An object containing additional settings. * @since 0.5.1 */ - fetch(url: NjsStringOrBuffer, options?: NgxFetchOptions): Promise<NgxResponse>; + fetch(init: NjsStringOrBuffer | Request, options?: NgxFetchOptions): Promise<Response>; } declare const ngx: NgxObject; _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-devel