@spartacus/core
Version:
Spartacus - the core framework
26 lines • 3.37 kB
JavaScript
/**
* Joins the multiple parts with '/' to create a url
*
* @param parts the distinct parts of the url to join
*/
export function urlPathJoin(...parts) {
var _a, _b;
const paths = [];
parts = parts.filter((part) => Boolean(part));
for (const part of parts) {
paths.push(cleanSlashes(part));
}
if ((_a = parts[0]) === null || _a === void 0 ? void 0 : _a.startsWith('/')) {
paths[0] = '/' + paths[0];
}
if ((_b = parts[parts.length - 1]) === null || _b === void 0 ? void 0 : _b.endsWith('/')) {
paths[paths.length - 1] = paths[paths.length - 1] + '/';
}
return paths.join('/');
}
function cleanSlashes(path) {
path = path.startsWith('/') ? path.slice(1) : path;
path = path.endsWith('/') ? path.slice(0, -1) : path;
return path;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2NjLXVybC11dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvb2NjL3V0aWxzL29jYy11cmwtdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFHLEtBQWU7O0lBQzVDLE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztJQUMzQixLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7UUFDeEIsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztLQUNoQztJQUVELElBQUksTUFBQSxLQUFLLENBQUMsQ0FBQyxDQUFDLDBDQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUM3QixLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUMzQjtJQUNELElBQUksTUFBQSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsMENBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQzFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztLQUN6RDtJQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QixDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsSUFBWTtJQUNoQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ25ELElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFFckQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBKb2lucyB0aGUgbXVsdGlwbGUgcGFydHMgd2l0aCAnLycgdG8gY3JlYXRlIGEgdXJsXG4gKlxuICogQHBhcmFtIHBhcnRzIHRoZSBkaXN0aW5jdCBwYXJ0cyBvZiB0aGUgdXJsIHRvIGpvaW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVybFBhdGhKb2luKC4uLnBhcnRzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIGNvbnN0IHBhdGhzOiBzdHJpbmdbXSA9IFtdO1xuICBwYXJ0cyA9IHBhcnRzLmZpbHRlcigocGFydCkgPT4gQm9vbGVhbihwYXJ0KSk7XG4gIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgIHBhdGhzLnB1c2goY2xlYW5TbGFzaGVzKHBhcnQpKTtcbiAgfVxuXG4gIGlmIChwYXJ0c1swXT8uc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgcGF0aHNbMF0gPSAnLycgKyBwYXRoc1swXTtcbiAgfVxuICBpZiAocGFydHNbcGFydHMubGVuZ3RoIC0gMV0/LmVuZHNXaXRoKCcvJykpIHtcbiAgICBwYXRoc1twYXRocy5sZW5ndGggLSAxXSA9IHBhdGhzW3BhdGhzLmxlbmd0aCAtIDFdICsgJy8nO1xuICB9XG4gIHJldHVybiBwYXRocy5qb2luKCcvJyk7XG59XG5cbmZ1bmN0aW9uIGNsZWFuU2xhc2hlcyhwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBwYXRoID0gcGF0aC5zdGFydHNXaXRoKCcvJykgPyBwYXRoLnNsaWNlKDEpIDogcGF0aDtcbiAgcGF0aCA9IHBhdGguZW5kc1dpdGgoJy8nKSA/IHBhdGguc2xpY2UoMCwgLTEpIDogcGF0aDtcblxuICByZXR1cm4gcGF0aDtcbn1cbiJdfQ==