From 3afd6f5807a5084fc50b592e389bc47b41974f5e Mon Sep 17 00:00:00 2001 From: "t.breeze" Date: Thu, 4 Aug 2022 15:49:20 +0100 Subject: [PATCH] feat: Project/Base/Canonical url utility function --- src/index.ts | 1 + src/utilities/cannonicalUrl/cannonicalUrl.test.ts | 10 ++++++++++ src/utilities/cannonicalUrl/cannonicalUrl.ts | 12 ++++++++++++ src/utilities/cannonicalUrl/index.ts | 1 + 4 files changed, 24 insertions(+) create mode 100644 src/utilities/cannonicalUrl/cannonicalUrl.test.ts create mode 100644 src/utilities/cannonicalUrl/cannonicalUrl.ts create mode 100644 src/utilities/cannonicalUrl/index.ts diff --git a/src/index.ts b/src/index.ts index 578d77d..122d8cc 100644 --- a/src/index.ts +++ b/src/index.ts @@ -4,3 +4,4 @@ export * from "./components/pagination"; // Utilities export * from "./utilities/truncateString"; +export * from "./utilities/cannonicalUrl"; diff --git a/src/utilities/cannonicalUrl/cannonicalUrl.test.ts b/src/utilities/cannonicalUrl/cannonicalUrl.test.ts new file mode 100644 index 0000000..2fc1d0e --- /dev/null +++ b/src/utilities/cannonicalUrl/cannonicalUrl.test.ts @@ -0,0 +1,10 @@ +import { cannonicalUrl } from "./cannonicalUrl"; + +describe("Get cannonical url", () => { + const exampleUrl = "http://zengenti.com/"; + const expectedUrl = "https://www.zengenti.com"; + + it("Should return the example url with: https enforced, www. added, & trailing / removed", () => { + expect(cannonicalUrl(exampleUrl)).toBe(expectedUrl); + }); +}); diff --git a/src/utilities/cannonicalUrl/cannonicalUrl.ts b/src/utilities/cannonicalUrl/cannonicalUrl.ts new file mode 100644 index 0000000..4e20bfc --- /dev/null +++ b/src/utilities/cannonicalUrl/cannonicalUrl.ts @@ -0,0 +1,12 @@ +export function cannonicalUrl(baseUrl: string) { + /** Removes http/https/www protocol from baseUrl */ + const formatBaseUrl: string = baseUrl.replace( + /(http|https):\/\/|www\.|\/$/g, + "" + ); + + /** Formats & enforces https */ + const buildCannonicalUrl: string = `https://www.${formatBaseUrl}`; + + return buildCannonicalUrl; +} diff --git a/src/utilities/cannonicalUrl/index.ts b/src/utilities/cannonicalUrl/index.ts new file mode 100644 index 0000000..62469f1 --- /dev/null +++ b/src/utilities/cannonicalUrl/index.ts @@ -0,0 +1 @@ +export * from "./cannonicalUrl";