mirror of
https://github.com/oven-sh/bun
synced 2026-02-02 15:08:46 +00:00
@types/bun: Update to @types/node@25, fallback to PropertyKey in test expect matchers when keyof unknown is used (#25460)
more accurately, developers cannot pass a value when expect values resolve to never. this is easy to fall into when using the `toContainKey*` matchers. falling back to PropertyKey when this happens is a sensible/reasonable default ### What does this PR do? fixes #25456, cc @MonsterDeveloper fixes #25461 ### How did you verify your code works? bun types integration test
This commit is contained in:
17
packages/bun-types/globals.d.ts
vendored
17
packages/bun-types/globals.d.ts
vendored
@@ -1,9 +1,12 @@
|
||||
declare module "bun" {
|
||||
namespace __internal {
|
||||
type NodeCryptoWebcryptoSubtleCrypto = import("crypto").webcrypto.SubtleCrypto;
|
||||
type NodeCryptoWebcryptoCryptoKey = import("crypto").webcrypto.CryptoKey;
|
||||
type NodeCryptoWebcryptoCryptoKeyPair = import("crypto").webcrypto.CryptoKeyPair;
|
||||
|
||||
type LibEmptyOrNodeCryptoWebcryptoSubtleCrypto = LibDomIsLoaded extends true
|
||||
? {}
|
||||
: import("crypto").webcrypto.SubtleCrypto;
|
||||
|
||||
type LibWorkerOrBunWorker = LibDomIsLoaded extends true ? {} : Bun.Worker;
|
||||
type LibEmptyOrBunWebSocket = LibDomIsLoaded extends true ? {} : Bun.WebSocket;
|
||||
|
||||
@@ -14,7 +17,9 @@ declare module "bun" {
|
||||
? {}
|
||||
: import("node:stream/web").DecompressionStream;
|
||||
|
||||
type LibPerformanceOrNodePerfHooksPerformance = LibDomIsLoaded extends true ? {} : import("perf_hooks").Performance;
|
||||
type LibPerformanceOrNodePerfHooksPerformance = LibDomIsLoaded extends true
|
||||
? {}
|
||||
: import("node:perf_hooks").Performance;
|
||||
type LibEmptyOrPerformanceEntry = LibDomIsLoaded extends true ? {} : import("node:perf_hooks").PerformanceEntry;
|
||||
type LibEmptyOrPerformanceMark = LibDomIsLoaded extends true ? {} : import("node:perf_hooks").PerformanceMark;
|
||||
type LibEmptyOrPerformanceMeasure = LibDomIsLoaded extends true ? {} : import("node:perf_hooks").PerformanceMeasure;
|
||||
@@ -224,7 +229,7 @@ interface TextEncoder extends Bun.__internal.LibEmptyOrNodeUtilTextEncoder {
|
||||
* @param src The text to encode.
|
||||
* @param dest The array to hold the encode result.
|
||||
*/
|
||||
encodeInto(src?: string, dest?: Bun.BufferSource): import("util").EncodeIntoResult;
|
||||
encodeInto(src?: string, dest?: Bun.BufferSource): import("node:util").TextEncoderEncodeIntoResult;
|
||||
}
|
||||
declare var TextEncoder: Bun.__internal.UseLibDomIfAvailable<
|
||||
"TextEncoder",
|
||||
@@ -952,7 +957,7 @@ declare function alert(message?: string): void;
|
||||
declare function confirm(message?: string): boolean;
|
||||
declare function prompt(message?: string, _default?: string): string | null;
|
||||
|
||||
interface SubtleCrypto extends Bun.__internal.NodeCryptoWebcryptoSubtleCrypto {}
|
||||
interface SubtleCrypto extends Bun.__internal.LibEmptyOrNodeCryptoWebcryptoSubtleCrypto {}
|
||||
declare var SubtleCrypto: {
|
||||
prototype: SubtleCrypto;
|
||||
new (): SubtleCrypto;
|
||||
@@ -1688,6 +1693,10 @@ declare var EventSource: Bun.__internal.UseLibDomIfAvailable<
|
||||
|
||||
interface Performance extends Bun.__internal.LibPerformanceOrNodePerfHooksPerformance {}
|
||||
declare var performance: Bun.__internal.UseLibDomIfAvailable<"performance", Performance>;
|
||||
declare var Performance: Bun.__internal.UseLibDomIfAvailable<
|
||||
"Performance",
|
||||
{ new (): Performance; prototype: Performance }
|
||||
>;
|
||||
|
||||
interface PerformanceEntry extends Bun.__internal.LibEmptyOrPerformanceEntry {}
|
||||
declare var PerformanceEntry: Bun.__internal.UseLibDomIfAvailable<
|
||||
|
||||
19
packages/bun-types/overrides.d.ts
vendored
19
packages/bun-types/overrides.d.ts
vendored
@@ -308,11 +308,11 @@ declare global {
|
||||
}
|
||||
}
|
||||
|
||||
declare module "fs/promises" {
|
||||
declare module "node:fs/promises" {
|
||||
function exists(path: Bun.PathLike): Promise<boolean>;
|
||||
}
|
||||
|
||||
declare module "tls" {
|
||||
declare module "node:tls" {
|
||||
interface BunConnectionOptions extends Omit<ConnectionOptions, "key" | "ca" | "tls" | "cert"> {
|
||||
/**
|
||||
* Optionally override the trusted CA certificates. Default is to trust
|
||||
@@ -359,3 +359,18 @@ declare module "tls" {
|
||||
|
||||
function connect(options: BunConnectionOptions, secureConnectListener?: () => void): TLSSocket;
|
||||
}
|
||||
|
||||
declare module "console" {
|
||||
interface Console {
|
||||
/**
|
||||
* Asynchronously read lines from standard input (fd 0)
|
||||
*
|
||||
* ```ts
|
||||
* for await (const line of console) {
|
||||
* console.log(line);
|
||||
* }
|
||||
* ```
|
||||
*/
|
||||
[Symbol.asyncIterator](): AsyncIterableIterator<string>;
|
||||
}
|
||||
}
|
||||
|
||||
18
packages/bun-types/test.d.ts
vendored
18
packages/bun-types/test.d.ts
vendored
@@ -428,6 +428,8 @@ declare module "bun:test" {
|
||||
}
|
||||
|
||||
namespace __internal {
|
||||
type IfNeverThenElse<T, Else> = [T] extends [never] ? Else : T;
|
||||
|
||||
type IsTuple<T> = T extends readonly unknown[]
|
||||
? number extends T["length"]
|
||||
? false // It's an array with unknown length, not a tuple
|
||||
@@ -1097,8 +1099,8 @@ declare module "bun:test" {
|
||||
*
|
||||
* @param expected the expected value
|
||||
*/
|
||||
toContainKey(expected: keyof T): void;
|
||||
toContainKey<X = T>(expected: NoInfer<keyof X>): void;
|
||||
toContainKey(expected: __internal.IfNeverThenElse<keyof T, PropertyKey>): void;
|
||||
toContainKey<X = T>(expected: __internal.IfNeverThenElse<NoInfer<keyof X>, PropertyKey>): void;
|
||||
|
||||
/**
|
||||
* Asserts that an `object` contains all the provided keys.
|
||||
@@ -1114,8 +1116,8 @@ declare module "bun:test" {
|
||||
*
|
||||
* @param expected the expected value
|
||||
*/
|
||||
toContainAllKeys(expected: Array<keyof T>): void;
|
||||
toContainAllKeys<X = T>(expected: NoInfer<Array<keyof X>>): void;
|
||||
toContainAllKeys(expected: Array<__internal.IfNeverThenElse<keyof T, PropertyKey>>): void;
|
||||
toContainAllKeys<X = T>(expected: Array<__internal.IfNeverThenElse<NoInfer<keyof X>, PropertyKey>>): void;
|
||||
|
||||
/**
|
||||
* Asserts that an `object` contains at least one of the provided keys.
|
||||
@@ -1131,8 +1133,8 @@ declare module "bun:test" {
|
||||
*
|
||||
* @param expected the expected value
|
||||
*/
|
||||
toContainAnyKeys(expected: Array<keyof T>): void;
|
||||
toContainAnyKeys<X = T>(expected: NoInfer<Array<keyof X>>): void;
|
||||
toContainAnyKeys(expected: Array<__internal.IfNeverThenElse<keyof T, PropertyKey>>): void;
|
||||
toContainAnyKeys<X = T>(expected: Array<__internal.IfNeverThenElse<NoInfer<keyof X>, PropertyKey>>): void;
|
||||
|
||||
/**
|
||||
* Asserts that an `object` contain the provided value.
|
||||
@@ -1224,8 +1226,8 @@ declare module "bun:test" {
|
||||
*
|
||||
* @param expected the expected value
|
||||
*/
|
||||
toContainKeys(expected: Array<keyof T>): void;
|
||||
toContainKeys<X = T>(expected: NoInfer<Array<keyof X>>): void;
|
||||
toContainKeys(expected: Array<__internal.IfNeverThenElse<keyof T, PropertyKey>>): void;
|
||||
toContainKeys<X = T>(expected: Array<__internal.IfNeverThenElse<NoInfer<keyof X>, PropertyKey>>): void;
|
||||
|
||||
/**
|
||||
* Asserts that a value contains and equals what is expected.
|
||||
|
||||
Reference in New Issue
Block a user