@jsenv/urls
Advanced tools
Comparing version 2.3.2 to 2.4.0
{ | ||
"name": "@jsenv/urls", | ||
"version": "2.3.2", | ||
"version": "2.4.0", | ||
"license": "MIT", | ||
@@ -5,0 +5,0 @@ "repository": { |
@@ -17,2 +17,3 @@ // tslint:disable:ordered-imports | ||
ensurePathnameTrailingSlash, | ||
removePathnameTrailingSlash, | ||
asUrlUntilPathname, | ||
@@ -19,0 +20,0 @@ } from "./url_utils.js"; |
@@ -170,7 +170,8 @@ import { urlToExtension } from "./url_to_extension.js"; | ||
export const ensurePathnameTrailingSlash = (url) => { | ||
const transformUrlPathname = (url, transformer) => { | ||
if (typeof url === "string") { | ||
const urlObject = new URL(url); | ||
const { pathname } = urlObject; | ||
if (pathname.endsWith("/")) { | ||
const pathnameTransformed = transformer(pathname); | ||
if (pathnameTransformed === pathname) { | ||
return url; | ||
@@ -184,11 +185,19 @@ } | ||
const { search, hash } = urlObject; | ||
const urlWithTrailingSlash = `${origin}${pathname}/${search}${hash}`; | ||
return urlWithTrailingSlash; | ||
const urlWithPathnameTransformed = `${origin}${pathnameTransformed}${search}${hash}`; | ||
return urlWithPathnameTransformed; | ||
} | ||
if (url.pathname.endsWith("/")) { | ||
return url; | ||
} | ||
url.pathname += "/"; | ||
const pathnameTransformed = transformer(url.pathname); | ||
url.pathname = pathnameTransformed; | ||
return url; | ||
}; | ||
export const ensurePathnameTrailingSlash = (url) => { | ||
return transformUrlPathname(url, (pathname) => { | ||
return pathname.endsWith("/") ? pathname : `${pathname}/`; | ||
}); | ||
}; | ||
export const removePathnameTrailingSlash = (url) => { | ||
return transformUrlPathname(url, (pathname) => { | ||
return pathname.endsWith("/") ? pathname.slice(0, -1) : pathname; | ||
}); | ||
}; | ||
@@ -195,0 +204,0 @@ export const asUrlUntilPathname = (url) => { |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
21776
623