diff --git a/package.json b/package.json index b480519f9..820c76bad 100644 --- a/package.json +++ b/package.json @@ -142,7 +142,6 @@ "insert-text-at-cursor": "0.1.1", "is-root": "2.0.0", "is-svg": "3.0.0", - "is-url": "1.2.4", "js-yaml": "3.12.1", "jsdom": "13.1.0", "json5": "2.1.0", diff --git a/src/@types/is-url.d.ts b/src/@types/is-url.d.ts deleted file mode 100644 index c1ccadd49..000000000 --- a/src/@types/is-url.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -declare module 'is-url' { - function isUrl(string: string): boolean; - - namespace isUrl {} // Hack - - export = isUrl; -} diff --git a/src/config/load.ts b/src/config/load.ts index 57cfb8075..fc3e69919 100644 --- a/src/config/load.ts +++ b/src/config/load.ts @@ -6,7 +6,6 @@ import * as fs from 'fs'; import { URL } from 'url'; import * as yaml from 'js-yaml'; import { Source, Mixin } from './types'; -import * as isUrl from 'is-url'; import * as pkg from '../../package.json'; /** @@ -26,10 +25,7 @@ export default function load() { const mixin = {} as Mixin; - // Validate URLs - if (!isUrl(config.url)) throw `url="${config.url}" is not a valid URL`; - - const url = new URL(config.url); + const url = validateUrl(config.url); config.url = normalizeUrl(config.url); mixin.host = url.host; @@ -51,6 +47,14 @@ export default function load() { return Object.assign(config, mixin); } +function validateUrl(url: string) { + try { + return new URL(url); + } catch (e) { + throw `url="${url}" is not a valid URL`; + } +} + function normalizeUrl(url: string) { return url.endsWith('/') ? url.substr(0, url.length - 1) : url; }