From 09071e6202e029b05743d40806a0bfccb2fb44c0 Mon Sep 17 00:00:00 2001 From: Johannes Ewald Date: Thu, 30 Jun 2022 10:53:19 -0400 Subject: [PATCH] fix: Parse error with : when using fromUrl() Fixes #140 --- src/from-url.test.ts | 9 +++++++++ src/from-url.ts | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/from-url.test.ts b/src/from-url.test.ts index 630cce7..4f08af8 100644 --- a/src/from-url.test.ts +++ b/src/from-url.test.ts @@ -66,6 +66,15 @@ describe(fromUrl.name, () => { expect(fromUrl("1:2:3:4:5:6:7:8")).toBe("[1:2:3:4:5:6:7:8]"); }); + // https://github.com/peerigon/parse-domain/issues/140 + test("it doesn't get confused with other : characters", () => { + expect( + fromUrl( + "http://www.example.com/search?updated-max=2020-04-16T09:14:00+10:00" + ) + ).toBe("www.example.com"); + }); + test("it returns the NO_HOSTNAME symbol for invalid URLs", () => { expect(fromUrl(":8080/path?query")).toBe(NO_HOSTNAME); expect(fromUrl("/path?query")).toBe(NO_HOSTNAME); diff --git a/src/from-url.ts b/src/from-url.ts index b50d64e..d87d05e 100644 --- a/src/from-url.ts +++ b/src/from-url.ts @@ -1,5 +1,6 @@ const urlPattern = /^[a-z][*+.a-z-]+:\/\//i; -const invalidIpv6Pattern = /^([a-z][*+.a-z-]+:\/\/)([^[].*:[^/?]*:[^/?]*)(.*)/i; +const invalidIpv6Pattern = + /^([a-z][*+.a-z-]+:\/\/)([^[][^/?]*:[^/?]*:[^/?]*)(.*)/i; export const NO_HOSTNAME: unique symbol = Symbol("NO_HOSTNAME");