From 7705f9e6f5d248b876077f5179464f28723cec9c Mon Sep 17 00:00:00 2001 From: Dimitri Benin Date: Mon, 25 Feb 2019 22:07:21 +0100 Subject: [PATCH 1/2] [normalize-url] Move old types to sub-dir --- types/normalize-url/{ => v3}/index.d.ts | 0 types/normalize-url/{ => v3}/normalize-url-tests.ts | 0 types/normalize-url/{ => v3}/tsconfig.json | 11 ++++++++--- types/normalize-url/{ => v3}/tslint.json | 0 4 files changed, 8 insertions(+), 3 deletions(-) rename types/normalize-url/{ => v3}/index.d.ts (100%) rename types/normalize-url/{ => v3}/normalize-url-tests.ts (100%) rename types/normalize-url/{ => v3}/tsconfig.json (73%) rename types/normalize-url/{ => v3}/tslint.json (100%) diff --git a/types/normalize-url/index.d.ts b/types/normalize-url/v3/index.d.ts similarity index 100% rename from types/normalize-url/index.d.ts rename to types/normalize-url/v3/index.d.ts diff --git a/types/normalize-url/normalize-url-tests.ts b/types/normalize-url/v3/normalize-url-tests.ts similarity index 100% rename from types/normalize-url/normalize-url-tests.ts rename to types/normalize-url/v3/normalize-url-tests.ts diff --git a/types/normalize-url/tsconfig.json b/types/normalize-url/v3/tsconfig.json similarity index 73% rename from types/normalize-url/tsconfig.json rename to types/normalize-url/v3/tsconfig.json index 1626fe81b7..dda934378d 100644 --- a/types/normalize-url/tsconfig.json +++ b/types/normalize-url/v3/tsconfig.json @@ -8,10 +8,15 @@ "noImplicitThis": true, "strictNullChecks": false, "strictFunctionTypes": true, - "baseUrl": "../", + "baseUrl": "../../", "typeRoots": [ - "../" + "../../" ], + "paths": { + "normalize-url": [ + "normalize-url/v3" + ] + }, "types": [], "noEmit": true, "forceConsistentCasingInFileNames": true @@ -20,4 +25,4 @@ "index.d.ts", "normalize-url-tests.ts" ] -} \ No newline at end of file +} diff --git a/types/normalize-url/tslint.json b/types/normalize-url/v3/tslint.json similarity index 100% rename from types/normalize-url/tslint.json rename to types/normalize-url/v3/tslint.json From 82f5d966921ec5f550b045251a9bd027bc04a432 Mon Sep 17 00:00:00 2001 From: Dimitri Benin Date: Mon, 25 Feb 2019 22:34:41 +0100 Subject: [PATCH 2/2] [normalize-url] Update types to v4.1 --- types/normalize-url/index.d.ts | 160 +++++++++++++++++++++ types/normalize-url/normalize-url-tests.ts | 23 +++ types/normalize-url/tsconfig.json | 23 +++ types/normalize-url/tslint.json | 3 + types/normalize-url/v3/tslint.json | 6 +- 5 files changed, 210 insertions(+), 5 deletions(-) create mode 100644 types/normalize-url/index.d.ts create mode 100644 types/normalize-url/normalize-url-tests.ts create mode 100644 types/normalize-url/tsconfig.json create mode 100644 types/normalize-url/tslint.json diff --git a/types/normalize-url/index.d.ts b/types/normalize-url/index.d.ts new file mode 100644 index 0000000000..166477caee --- /dev/null +++ b/types/normalize-url/index.d.ts @@ -0,0 +1,160 @@ +// Type definitions for normalize-url 4.1 +// Project: https://github.com/sindresorhus/normalize-url +// Definitions by: odin3 +// BendingBender +// Mathieu M-Gosselin +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +declare namespace normalizeUrl { + interface Options { + /** + * @default 'http:' + */ + defaultProtocol?: string; + /** + * Prepends `defaultProtocol` to the URL if it's protocol-relative. + * + * @default true + * @example + * normalizeUrl('//sindresorhus.com:80/'); + * //=> 'http://sindresorhus.com' + * + * normalizeUrl('//sindresorhus.com:80/', {normalizeProtocol: false}); + * //=> '//sindresorhus.com' + */ + normalizeProtocol?: boolean; + /** + * Normalizes `https:` URLs to `http:`. + * + * @default false + * @example + * normalizeUrl('https://sindresorhus.com:80/'); + * //=> 'https://sindresorhus.com' + * + * normalizeUrl('https://sindresorhus.com:80/', {forceHttp: true}); + * //=> 'http://sindresorhus.com' + */ + forceHttp?: boolean; + /** + * Normalizes `http:` URLs to `https:`. + * + * This option can't be used with the `forceHttp` option at the same time. + * + * @default false + * @example + * normalizeUrl('https://sindresorhus.com:80/'); + * //=> 'https://sindresorhus.com' + * + * normalizeUrl('http://sindresorhus.com:80/', {forceHttps: true}); + * //=> 'https://sindresorhus.com' + */ + forceHttps?: boolean; + /** + * Strip the [authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) part of a URL. + * + * @default true + * @example + * normalizeUrl('user:password@sindresorhus.com'); + * //=> 'https://sindresorhus.com' + * + * normalizeUrl('user:password@sindresorhus.com', {stripAuthentication: false}); + * //=> 'https://user:password@sindresorhus.com' + */ + stripAuthentication?: boolean; + /** + * Removes hash from the URL. + * + * @default false + * @example + * normalizeUrl('sindresorhus.com/about.html#contact'); + * //=> 'http://sindresorhus.com/about.html#contact' + * + * normalizeUrl('sindresorhus.com/about.html#contact', {stripHash: true}); + * //=> 'http://sindresorhus.com/about.html' + */ + stripHash?: boolean; + /** + * Removes HTTP(S) protocol from an URL `http://sindresorhus.com` → `sindresorhus.com`. + * + * @default false + * @example + * normalizeUrl('https://sindresorhus.com'); + * //=> 'https://sindresorhus.com' + * + * normalizeUrl('sindresorhus.com', {stripProtocol: true}); + * //=> 'sindresorhus.com' + */ + stripProtocol?: boolean; + /** + * Removes `www.` from the URL. + * + * @default true + * @example + * normalizeUrl('http://www.sindresorhus.com'); + * //=> 'http://sindresorhus.com' + * + * normalizeUrl('http://www.sindresorhus.com', {stripWWW: false}); + * //=> 'http://www.sindresorhus.com' + */ + stripWWW?: boolean; + /** + * Removes query parameters that matches any of the provided strings or regexes. + * + * @default [/^utm_\w+/i] + * @example + * normalizeUrl('www.sindresorhus.com?foo=bar&ref=test_ref', { + * removeQueryParameters: ['ref'] + * }); + * //=> 'http://sindresorhus.com/?foo=bar' + */ + removeQueryParameters?: Array; + /** + * Removes trailing slash. + * + * **Note**: Trailing slash is always removed if the URL doesn't have a pathname. + * + * @default true + * @example + * normalizeUrl('http://sindresorhus.com/redirect/'); + * //=> 'http://sindresorhus.com/redirect' + * + * normalizeUrl('http://sindresorhus.com/redirect/', {removeTrailingSlash: false}); + * //=> 'http://sindresorhus.com/redirect/' + * + * normalizeUrl('http://sindresorhus.com/', {removeTrailingSlash: false}); + * //=> 'http://sindresorhus.com' + */ + removeTrailingSlash?: boolean; + /** + * Removes the default directory index file from path that matches any of the provided strings or regexes. + * When `true`, the regex `/^index\.[a-z]+$/` is used. + * + * @default false + * @example + * normalizeUrl('www.sindresorhus.com/foo/default.php', { + * removeDirectoryIndex: [/^default\.[a-z]+$/] + * }); + * //=> 'http://sindresorhus.com/foo' + */ + removeDirectoryIndex?: Array; + /** + * Sorts the query parameters alphabetically by key. + * + * @default true + * @example + * normalizeUrl('www.sindresorhus.com?b=two&a=one&c=three', { + * sortQueryParameters: false + * }); + * //=> 'http://sindresorhus.com/?b=two&a=one&c=three' + */ + sortQueryParameters?: boolean; + } +} + +/** + * [Normalize](https://en.wikipedia.org/wiki/URL_normalization) a URL. + * @param url URL to normalize. + */ +declare function normalizeUrl(url: string, options?: normalizeUrl.Options): string; + +export = normalizeUrl; diff --git a/types/normalize-url/normalize-url-tests.ts b/types/normalize-url/normalize-url-tests.ts new file mode 100644 index 0000000000..cdd87e42df --- /dev/null +++ b/types/normalize-url/normalize-url-tests.ts @@ -0,0 +1,23 @@ +import normalizeUrl = require('normalize-url'); + +normalizeUrl('sindresorhus.com'); // $ExpectType string +normalizeUrl('HTTP://xn--xample-hva.com:80/?b=bar&a=foo'); // $ExpectType string + +normalizeUrl('//sindresorhus.com:80/', { defaultProtocol: 'https:' }); +normalizeUrl('//sindresorhus.com:80/', { normalizeProtocol: false }); +normalizeUrl('https://sindresorhus.com:80/', { forceHttp: true }); +normalizeUrl('http://sindresorhus.com:80/', { forceHttps: true }); +normalizeUrl('user:password@sindresorhus.com', { stripAuthentication: false }); +normalizeUrl('sindresorhus.com/about.html#contact', { stripHash: true }); +normalizeUrl('https://sindresorhus.com', { stripProtocol: true }); +normalizeUrl('http://www.sindresorhus.com', { stripWWW: false }); +normalizeUrl('www.sindresorhus.com?foo=bar&ref=test_ref', { + removeQueryParameters: ['ref', /test/], +}); +normalizeUrl('http://sindresorhus.com/', { removeTrailingSlash: false }); +normalizeUrl('www.sindresorhus.com/foo/default.php', { + removeDirectoryIndex: [/^default\.[a-z]+$/, 'foo'], +}); +normalizeUrl('www.sindresorhus.com?b=two&a=one&c=three', { + sortQueryParameters: false, +}); diff --git a/types/normalize-url/tsconfig.json b/types/normalize-url/tsconfig.json new file mode 100644 index 0000000000..0f18de6c48 --- /dev/null +++ b/types/normalize-url/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "normalize-url-tests.ts" + ] +} diff --git a/types/normalize-url/tslint.json b/types/normalize-url/tslint.json new file mode 100644 index 0000000000..f93cf8562a --- /dev/null +++ b/types/normalize-url/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "dtslint/dt.json" +} diff --git a/types/normalize-url/v3/tslint.json b/types/normalize-url/v3/tslint.json index 279473e356..f93cf8562a 100644 --- a/types/normalize-url/v3/tslint.json +++ b/types/normalize-url/v3/tslint.json @@ -1,7 +1,3 @@ { - "extends": "dtslint/dt.json", - "rules": { - // This package uses the Function type, and it will take effort to fix. - "ban-types": false - } + "extends": "dtslint/dt.json" }