From 28295cfd90f06d9416c292347b2ab895417daaee Mon Sep 17 00:00:00 2001 From: Anton Golub Date: Tue, 18 Jan 2022 12:59:36 +0300 Subject: [PATCH] feat(node): declare URL and URLSearchParams as globals closes: #34960 --- types/node/index.d.ts | 1 + types/node/test/url.ts | 6 ++++++ types/node/url.d.ts | 2 +- types/node/url.globals.d.ts | 11 +++++++++++ types/node/v12/index.d.ts | 1 + types/node/v12/url.d.ts | 2 +- types/node/v12/url.globals.d.ts | 11 +++++++++++ types/node/v14/index.d.ts | 1 + types/node/v14/test/url.ts | 7 +++++++ types/node/v14/url.d.ts | 2 +- types/node/v14/url.globals.d.ts | 11 +++++++++++ types/node/v16/index.d.ts | 1 + types/node/v16/test/url.ts | 6 ++++++ types/node/v16/url.d.ts | 2 +- types/node/v16/url.globals.d.ts | 11 +++++++++++ 15 files changed, 71 insertions(+), 4 deletions(-) create mode 100644 types/node/url.globals.d.ts create mode 100644 types/node/v12/url.globals.d.ts create mode 100644 types/node/v14/url.globals.d.ts create mode 100644 types/node/v16/url.globals.d.ts diff --git a/types/node/index.d.ts b/types/node/index.d.ts index e0a6c92ef61fdc3..1e6774134d505f0 100644 --- a/types/node/index.d.ts +++ b/types/node/index.d.ts @@ -120,6 +120,7 @@ /// /// /// +/// /// /// /// diff --git a/types/node/test/url.ts b/types/node/test/url.ts index c31901445ac1615..54a160fe34f0df9 100644 --- a/types/node/test/url.ts +++ b/types/node/test/url.ts @@ -167,3 +167,9 @@ import * as url from 'node:url'; { const dataUrl: string = url.URL.createObjectURL(new Blob([''])); } +{ + const dataUrl1: URL = new url.URL('file://test'); + const dataUrl2: url.URL = new URL('file://test'); + const urlSearchParams1: URLSearchParams = new url.URLSearchParams(); + const urlSearchParams2: url.URLSearchParams = new URLSearchParams(); +} diff --git a/types/node/url.d.ts b/types/node/url.d.ts index 3c41ed74a8f43c4..145174ecb1fa6da 100644 --- a/types/node/url.d.ts +++ b/types/node/url.d.ts @@ -778,7 +778,7 @@ declare module 'url' { * @param fn Invoked for each name-value pair in the query * @param thisArg To be used as `this` value for when `fn` is called */ - forEach(callback: (this: TThis, value: string, name: string, searchParams: this) => void, thisArg?: TThis): void; + forEach(callback: (this: TThis, value: string, name: string, searchParams: URLSearchParams) => void, thisArg?: TThis): void; /** * Returns the value of the first name-value pair whose name is `name`. If there * are no such pairs, `null` is returned. diff --git a/types/node/url.globals.d.ts b/types/node/url.globals.d.ts new file mode 100644 index 000000000000000..b871fa8c07db7d2 --- /dev/null +++ b/types/node/url.globals.d.ts @@ -0,0 +1,11 @@ +import { URL as _URL, URLSearchParams as _URLSearchParams } from 'url'; + +declare global { + interface Global { + URL: typeof _URL; + URLSearchParams: typeof _URLSearchParams; + } + + interface URLSearchParams extends _URLSearchParams {} + interface URL extends _URL {} +} diff --git a/types/node/v12/index.d.ts b/types/node/v12/index.d.ts index 68f8cb857384e00..e77f9632b451802 100644 --- a/types/node/v12/index.d.ts +++ b/types/node/v12/index.d.ts @@ -82,6 +82,7 @@ /// /// /// +/// /// /// /// diff --git a/types/node/v12/url.d.ts b/types/node/v12/url.d.ts index 3cd0d028bd688a1..313242604199271 100644 --- a/types/node/v12/url.d.ts +++ b/types/node/v12/url.d.ts @@ -103,7 +103,7 @@ declare module 'url' { append(name: string, value: string): void; delete(name: string): void; entries(): IterableIterator<[string, string]>; - forEach(callback: (value: string, name: string, searchParams: this) => void): void; + forEach(callback: (value: string, name: string, searchParams: URLSearchParams) => void): void; get(name: string): string | null; getAll(name: string): string[]; has(name: string): boolean; diff --git a/types/node/v12/url.globals.d.ts b/types/node/v12/url.globals.d.ts new file mode 100644 index 000000000000000..b871fa8c07db7d2 --- /dev/null +++ b/types/node/v12/url.globals.d.ts @@ -0,0 +1,11 @@ +import { URL as _URL, URLSearchParams as _URLSearchParams } from 'url'; + +declare global { + interface Global { + URL: typeof _URL; + URLSearchParams: typeof _URLSearchParams; + } + + interface URLSearchParams extends _URLSearchParams {} + interface URL extends _URL {} +} diff --git a/types/node/v14/index.d.ts b/types/node/v14/index.d.ts index 4ef94df6cd6b599..cd735ca08b1bed9 100644 --- a/types/node/v14/index.d.ts +++ b/types/node/v14/index.d.ts @@ -88,6 +88,7 @@ /// /// /// +/// /// /// /// diff --git a/types/node/v14/test/url.ts b/types/node/v14/test/url.ts index 5e863db2c22929f..79d82bb5405fdd0 100644 --- a/types/node/v14/test/url.ts +++ b/types/node/v14/test/url.ts @@ -154,3 +154,10 @@ import * as url from 'node:url'; { const path: url.URL = url.pathToFileURL('file://test'); } + +{ + const dataUrl1: URL = new url.URL('file://test'); + const dataUrl2: url.URL = new URL('file://test'); + const urlSearchParams1: URLSearchParams = new url.URLSearchParams(); + const urlSearchParams2: url.URLSearchParams = new URLSearchParams(); +} diff --git a/types/node/v14/url.d.ts b/types/node/v14/url.d.ts index 715dc7df8131f39..682a0e473d257ce 100644 --- a/types/node/v14/url.d.ts +++ b/types/node/v14/url.d.ts @@ -102,7 +102,7 @@ declare module 'url' { append(name: string, value: string): void; delete(name: string): void; entries(): IterableIterator<[string, string]>; - forEach(callback: (value: string, name: string, searchParams: this) => void): void; + forEach(callback: (value: string, name: string, searchParams: URLSearchParams) => void, thisArg?: any): void; get(name: string): string | null; getAll(name: string): string[]; has(name: string): boolean; diff --git a/types/node/v14/url.globals.d.ts b/types/node/v14/url.globals.d.ts new file mode 100644 index 000000000000000..e48c93202f908a1 --- /dev/null +++ b/types/node/v14/url.globals.d.ts @@ -0,0 +1,11 @@ +import { URL as _URL, URLSearchParams as _URLSearchParams } from 'node:url'; + +declare global { + interface Global { + URL: typeof _URL; + URLSearchParams: typeof _URLSearchParams; + } + + interface URLSearchParams extends _URLSearchParams {} + interface URL extends _URL {} +} diff --git a/types/node/v16/index.d.ts b/types/node/v16/index.d.ts index 37b03d709e50f79..3163479af93f252 100644 --- a/types/node/v16/index.d.ts +++ b/types/node/v16/index.d.ts @@ -120,6 +120,7 @@ /// /// /// +/// /// /// /// diff --git a/types/node/v16/test/url.ts b/types/node/v16/test/url.ts index c31901445ac1615..54a160fe34f0df9 100644 --- a/types/node/v16/test/url.ts +++ b/types/node/v16/test/url.ts @@ -167,3 +167,9 @@ import * as url from 'node:url'; { const dataUrl: string = url.URL.createObjectURL(new Blob([''])); } +{ + const dataUrl1: URL = new url.URL('file://test'); + const dataUrl2: url.URL = new URL('file://test'); + const urlSearchParams1: URLSearchParams = new url.URLSearchParams(); + const urlSearchParams2: url.URLSearchParams = new URLSearchParams(); +} diff --git a/types/node/v16/url.d.ts b/types/node/v16/url.d.ts index 602fca03b8c571f..1f5d03e6adc31f6 100644 --- a/types/node/v16/url.d.ts +++ b/types/node/v16/url.d.ts @@ -738,7 +738,7 @@ declare module 'url' { * @param fn Invoked for each name-value pair in the query * @param thisArg To be used as `this` value for when `fn` is called */ - forEach(callback: (this: TThis, value: string, name: string, searchParams: this) => void, thisArg?: TThis): void; + forEach(callback: (this: TThis, value: string, name: string, searchParams: URLSearchParams) => void, thisArg?: TThis): void; /** * Returns the value of the first name-value pair whose name is `name`. If there * are no such pairs, `null` is returned. diff --git a/types/node/v16/url.globals.d.ts b/types/node/v16/url.globals.d.ts new file mode 100644 index 000000000000000..b871fa8c07db7d2 --- /dev/null +++ b/types/node/v16/url.globals.d.ts @@ -0,0 +1,11 @@ +import { URL as _URL, URLSearchParams as _URLSearchParams } from 'url'; + +declare global { + interface Global { + URL: typeof _URL; + URLSearchParams: typeof _URLSearchParams; + } + + interface URLSearchParams extends _URLSearchParams {} + interface URL extends _URL {} +}