From c7169e37a6d563546f8f6741deada2ef3763fe4c Mon Sep 17 00:00:00 2001 From: Phil Kunz Date: Mon, 12 Apr 2021 20:09:19 +0000 Subject: [PATCH] fix(core): update --- test/test.ts | 5 +++++ ts/smarturl.classes.smarturl.ts | 36 ++++++++++++++++++++++++++++++++- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/test/test.ts b/test/test.ts index 8c02eff..0a19d80 100644 --- a/test/test.ts +++ b/test/test.ts @@ -8,4 +8,9 @@ tap.test('first test', async () => { expect(testSmarturl).to.be.instanceOf(smarturl.Smarturl); }); +tap.test('should parse an URL', async () => { + const parsedUrl = testSmarturl.parseUrl('https://lossless.com'); + console.log(parsedUrl); +}); + tap.start(); diff --git a/ts/smarturl.classes.smarturl.ts b/ts/smarturl.classes.smarturl.ts index 52ad571..1753a3f 100644 --- a/ts/smarturl.classes.smarturl.ts +++ b/ts/smarturl.classes.smarturl.ts @@ -1,7 +1,41 @@ import * as plugins from './smarturl.plugins'; +export interface IUrlObject{ + href: string; + origin: string; + protocol: string; + username: string; + password: string; + host: string; + hostname: string; + port: string; + pathname: string; + search: string; + searchParams: any; + hash: string; +} + export class Smarturl { public parseUrl(urlArg: string) { - return new plugins.url.URL(urlArg); + const parsedUrlInstance = new plugins.url.URL(urlArg); + const parsedUrl: IUrlObject = { + href: parsedUrlInstance.href, + origin: parsedUrlInstance.origin, + protocol: parsedUrlInstance.protocol, + username: parsedUrlInstance.username, + password: parsedUrlInstance.password, + host: parsedUrlInstance.host, + hostname: parsedUrlInstance.hostname, + port: parsedUrlInstance.port, + pathname: parsedUrlInstance.pathname, + search: parsedUrlInstance.search, + searchParams: parsedUrlInstance.searchParams, + hash: parsedUrlInstance.hash, + }; + if (!parsedUrl.port && parsedUrl.protocol === 'https:') { + console.log(`inferring port 443 for "https:"`); + parsedUrl.port = '443'; + } + return parsedUrl; } }