From 446fa31c191594865ade572dcbc81cce95b6ea5b Mon Sep 17 00:00:00 2001 From: Alistair Smith Date: Fri, 22 Nov 2024 18:00:49 -0800 Subject: [PATCH] Begin some work on more-correct types --- bun.lockb | Bin 189738 -> 190442 bytes packages/bun-types/bun.d.ts | 18 ++++- packages/bun-types/deprecated.d.ts | 48 ++++++------ packages/bun-types/fetch.d.ts | 9 ++- packages/bun-types/globals.d.ts | 88 ++++++++-------------- packages/bun-types/index.d.ts | 3 + packages/bun-types/package.json | 3 +- packages/bun-types/test/fetch.test.ts | 12 +++ packages/bun-types/test/toml.test.ts | 4 - packages/bun-types/test/wildcards.test.ts | 6 ++ packages/bun-types/wildcards.d.ts | 9 +++ 11 files changed, 111 insertions(+), 89 deletions(-) create mode 100644 packages/bun-types/test/fetch.test.ts delete mode 100644 packages/bun-types/test/toml.test.ts create mode 100644 packages/bun-types/test/wildcards.test.ts create mode 100644 packages/bun-types/wildcards.d.ts diff --git a/bun.lockb b/bun.lockb index 4ccfae2715a8e4f8b3965953513a6d47f1dc6aab..24d5f46ecde229ae1a50b34877bdda29f54d6aca 100755 GIT binary patch delta 20733 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 diff --git a/packages/bun-types/bun.d.ts b/packages/bun-types/bun.d.ts index d6e7b0ee17..82e56dba92 100644 --- a/packages/bun-types/bun.d.ts +++ b/packages/bun-types/bun.d.ts @@ -16,6 +16,7 @@ declare module "bun" { import type { Encoding as CryptoEncoding } from "crypto"; import type { CipherNameAndProtocol, EphemeralKeyInfo, PeerCertificate } from "tls"; + interface Env { NODE_ENV?: string; /** @@ -163,6 +164,19 @@ declare module "bun" { */ arrayBuffer(): ArrayBuffer; + /** + * Read from stdout as a Uint8Array + * + * @returns Stdout as a Uint8Array + * @example + * + * ```ts + * const output = await $`echo hello`; + * console.log(output.bytes()); // Uint8Array { byteLength: 6 } + * ``` + */ + bytes(): Uint8Array; + /** * Read from stdout as a Blob * @@ -411,9 +425,9 @@ declare module "bun" { arrayBuffer(): ArrayBuffer; /** - * Read from stdout as an Uint8Array + * Read from stdout as a Uint8Array * - * @returns Stdout as an Uint8Array + * @returns Stdout as a Uint8Array * @example * * ```ts diff --git a/packages/bun-types/deprecated.d.ts b/packages/bun-types/deprecated.d.ts index 5a90164689..3b04ec3528 100644 --- a/packages/bun-types/deprecated.d.ts +++ b/packages/bun-types/deprecated.d.ts @@ -3,30 +3,30 @@ declare module "bun" { * @deprecated Renamed to `ErrorLike` */ type Errorlike = ErrorLike; - interface TLSOptions { - /** - * File path to a TLS key - * - * To enable TLS, this option is required. - * - * @deprecated since v0.6.3 - Use `key: Bun.file(path)` instead. - */ - keyFile?: string; - /** - * File path to a TLS certificate - * - * To enable TLS, this option is required. - * - * @deprecated since v0.6.3 - Use `cert: Bun.file(path)` instead. - */ - certFile?: string; - /** - * File path to a .pem file for a custom root CA - * - * @deprecated since v0.6.3 - Use `ca: Bun.file(path)` instead. - */ - caFile?: string; - } + // interface TLSOptions { + // /** + // * File path to a TLS key + // * + // * To enable TLS, this option is required. + // * + // * @deprecated since v0.6.3 - Use `key: Bun.file(path)` instead. + // */ + // keyFile?: string; + // /** + // * File path to a TLS certificate + // * + // * To enable TLS, this option is required. + // * + // * @deprecated since v0.6.3 - Use `cert: Bun.file(path)` instead. + // */ + // certFile?: string; + // /** + // * File path to a .pem file for a custom root CA + // * + // * @deprecated since v0.6.3 - Use `ca: Bun.file(path)` instead. + // */ + // caFile?: string; + // } } declare namespace NodeJS { diff --git a/packages/bun-types/fetch.d.ts b/packages/bun-types/fetch.d.ts index 01c53de54d..82f8d4c0b7 100644 --- a/packages/bun-types/fetch.d.ts +++ b/packages/bun-types/fetch.d.ts @@ -1,6 +1,3 @@ -type _Response = typeof globalThis extends { onmessage: any } ? {} : import("undici-types").Response; - -export interface Response extends _Response {} export declare class Response { constructor(body?: Bun.BodyInit | null | undefined, init?: Bun.ResponseInit | undefined); @@ -51,3 +48,9 @@ export declare class Response { */ static error(): Response; } + +export declare class Request { + constructor(...params: Parameters); + + // TODO: Rest of types +} diff --git a/packages/bun-types/globals.d.ts b/packages/bun-types/globals.d.ts index a29bcc91cb..e895bb8c48 100644 --- a/packages/bun-types/globals.d.ts +++ b/packages/bun-types/globals.d.ts @@ -6,6 +6,14 @@ type _ReadableStream = typeof globalThis extends { } ? T : import("stream/web").ReadableStream; + +type _RequestInit = typeof globalThis extends { + onerror: any; + RequestInit: infer T; +} + ? T + : NonNullable[1]>; + type _WritableStream = typeof globalThis extends { onerror: any; WritableStream: infer T; @@ -141,17 +149,9 @@ import type { TextDecoder as NodeTextDecoder, TextEncoder as NodeTextEncoder } f import type { MessagePort } from "worker_threads"; import type { WebSocket as _WebSocket } from "ws"; -declare module "*.txt" { - var text: string; - export = text; -} - -declare module "*.toml" { - var contents: any; - export = contents; -} - declare global { + var onmessage: never; // Not a fan of this - required so Node.js' globals.d.ts doesn't conflict with our own definitions. Not a perfect solution though. + var Bun: typeof import("bun"); namespace NodeJS { @@ -804,9 +804,10 @@ declare global { readonly lastModified: number; readonly name: string; } - var File: typeof globalThis extends { onerror: any; File: infer T } ? T : typeof File; - interface FetchRequestInit extends RequestInit { + var File: File; + + interface RequestInit extends _RequestInit { /** * Log the raw HTTP request & response to stdout. This API may be * removed in a future version of Bun without notice. @@ -823,10 +824,7 @@ declare global { /** * Override the default TLS options */ - tls?: { - rejectUnauthorized?: boolean | undefined; // Defaults to true - checkServerIdentity?: any; // TODO: change `any` to `checkServerIdentity` - }; + tls?: import("bun").TLSOptions; } /** @@ -915,29 +913,8 @@ declare global { new (): ShadowRealm; }; - interface Fetch { - /** - * Send a HTTP(s) request - * - * @param request Request object - * @param init A structured value that contains settings for the fetch() request. - * - * @returns A promise that resolves to {@link Response} object. - */ - (request: Request, init?: RequestInit): Promise; - - /** - * Send a HTTP(s) request - * - * @param url URL string - * @param init A structured value that contains settings for the fetch() request. - * - * @returns A promise that resolves to {@link Response} object. - */ - (url: string | URL | Request, init?: FetchRequestInit): Promise; - - (input: string | URL | globalThis.Request, init?: RequestInit): Promise; - + // @types/node defines fetch, we can merge our `.preconnect(url)` 'static' method + namespace fetch { /** * Start the DNS resolution, TCP connection, and TLS handshake for a request * before the request is actually sent. @@ -946,13 +923,14 @@ declare global { * long-running task that will delay the request starting. * * This is a bun-specific API and is not part of the Fetch API specification. + * + * @param url A string or URL instance to preconnect */ - preconnect(url: string | URL): void; + export function preconnect(url: string | URL): void; } - var fetch: Fetch; - function queueMicrotask(callback: (...args: any[]) => void): void; + /** * Log an error using the default exception handler * @param error Error or string @@ -1835,10 +1813,10 @@ declare global { readonly main: boolean; /** Alias of `import.meta.dir`. Exists for Node.js compatibility */ - readonly dirname: string; + /* readonly */ dirname: string; // Ideally this would be `readonly`, but Node.js doesn't mark it readonly so TypeScript tells us off /** Alias of `import.meta.path`. Exists for Node.js compatibility */ - readonly filename: string; + /* readonly */ filename: string; // Ideally this would be `readonly`, but Node.js doesn't mark it readonly so TypeScript tells us off } /** @@ -1969,17 +1947,17 @@ declare global { ? T : typeof import("./fetch").Response; - var Request: typeof globalThis extends { - onerror: any; - Request: infer T; - } - ? T - : { - prototype: Request; - new (requestInfo: string, requestInit?: RequestInit): Request; - new (requestInfo: RequestInit & { url: string }): Request; - new (requestInfo: Request, requestInit?: RequestInit): Request; - }; + // var Request: typeof globalThis extends { + // onerror: any; + // Request: infer T; + // } + // ? T + // : { + // prototype: Request; + // new (requestInfo: string, requestInit?: RequestInit): Request; + // new (requestInfo: RequestInit & { url: string }): Request; + // new (requestInfo: Request, requestInit?: RequestInit): Request; + // }; interface Headers { /** diff --git a/packages/bun-types/index.d.ts b/packages/bun-types/index.d.ts index c0ceea7286..71a6a4f33b 100644 --- a/packages/bun-types/index.d.ts +++ b/packages/bun-types/index.d.ts @@ -2,6 +2,8 @@ // Definitions by: Jarred Sumner // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +/// + /// /// /// @@ -10,6 +12,7 @@ //// /// +/// /// /// /// diff --git a/packages/bun-types/package.json b/packages/bun-types/package.json index ced7abf069..8567bbf58d 100644 --- a/packages/bun-types/package.json +++ b/packages/bun-types/package.json @@ -14,7 +14,8 @@ "homepage": "https://bun.sh", "dependencies": { "@types/node": "~20.12.8", - "@types/ws": "~8.5.10" + "@types/ws": "~8.5.10", + "undici-fetch": "^1.0.0-rc.4" }, "devDependencies": { "@biomejs/biome": "^1.5.3", diff --git a/packages/bun-types/test/fetch.test.ts b/packages/bun-types/test/fetch.test.ts new file mode 100644 index 0000000000..6c10b4861b --- /dev/null +++ b/packages/bun-types/test/fetch.test.ts @@ -0,0 +1,12 @@ +fetch.preconnect("bun"); +fetch("bun"); + +fetch("bun", { + verbose: true, +}); + +const init: RequestInit = { + proxy: "12345", + verbose: true, + method: "GET", +}; diff --git a/packages/bun-types/test/toml.test.ts b/packages/bun-types/test/toml.test.ts deleted file mode 100644 index 6b93b6150a..0000000000 --- a/packages/bun-types/test/toml.test.ts +++ /dev/null @@ -1,4 +0,0 @@ -import data from "./bunfig.toml"; -import { expectAny } from "./utilities.test"; - -expectAny(data); diff --git a/packages/bun-types/test/wildcards.test.ts b/packages/bun-types/test/wildcards.test.ts new file mode 100644 index 0000000000..3fb959ee07 --- /dev/null +++ b/packages/bun-types/test/wildcards.test.ts @@ -0,0 +1,6 @@ +import toml from "./bunfig.toml"; +import text from "./bunfig.txt"; +import { expectAny, expectType } from "./utilities.test"; + +expectAny(toml); +expectType(text); diff --git a/packages/bun-types/wildcards.d.ts b/packages/bun-types/wildcards.d.ts new file mode 100644 index 0000000000..b4ac81a0a3 --- /dev/null +++ b/packages/bun-types/wildcards.d.ts @@ -0,0 +1,9 @@ +declare module "*.txt" { + var text: string; + export = text; +} + +declare module "*.toml" { + var contents: any; + export = contents; +}