diff options
author | 2022-09-28 23:13:33 +0800 | |
---|---|---|
committer | 2022-09-28 23:13:33 +0800 | |
commit | 812658ad2ab3732a99e35c4fd903e302e723db46 (patch) | |
tree | 37dc457bcfa8558e546d064eb315a74149010da1 /packages/astro-rss/src | |
parent | f4bca41a2d85968a2c9f2379f99954c7bcb06df1 (diff) | |
download | astro-812658ad2ab3732a99e35c4fd903e302e723db46.tar.gz astro-812658ad2ab3732a99e35c4fd903e302e723db46.tar.zst astro-812658ad2ab3732a99e35c4fd903e302e723db46.zip |
Remove shamefully-hoist (#4842)
Diffstat (limited to 'packages/astro-rss/src')
-rw-r--r-- | packages/astro-rss/src/util.ts | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/packages/astro-rss/src/util.ts b/packages/astro-rss/src/util.ts index 0dad6b239..7218cc934 100644 --- a/packages/astro-rss/src/util.ts +++ b/packages/astro-rss/src/util.ts @@ -1,10 +1,8 @@ -import npath from 'path-browserify'; - /** Normalize URL to its canonical form */ export function createCanonicalURL(url: string, base?: string): URL { let pathname = url.replace(/\/index.html$/, ''); // index.html is not canonical pathname = pathname.replace(/\/1\/?$/, ''); // neither is a trailing /1/ (impl. detail of collections) - if (!npath.extname(pathname)) pathname = pathname.replace(/(\/+)?$/, '/'); // add trailing slash if there’s no extension + if (!getUrlExtension(url)) pathname = pathname.replace(/(\/+)?$/, '/'); // add trailing slash if there’s no extension pathname = pathname.replace(/\/+/g, '/'); // remove duplicate slashes (URL() won’t) return new URL(pathname, base); } @@ -17,3 +15,9 @@ export function isValidURL(url: string): boolean { } catch (e) {} return false; } + +function getUrlExtension(url: string) { + const lastDot = url.lastIndexOf('.'); + const lastSlash = url.lastIndexOf('/'); + return lastDot > lastSlash ? url.slice(lastDot + 1) : ''; +} |