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";