crypto-viewer/src/utils/path.ts
2026-01-27 19:45:34 +01:00

24 lines
745 B
TypeScript

/**
* An analog of Node.js's `path.join`
* @param {...string} segments
* @return {string}
*/
export const join = (...segments: string[]) => {
const partss = segments.reduce((parts: any, segment: string) => {
// Remove leading slashes from non-first part
if (parts.length > 0) segment = segment.replace(/^\//, '')
// Remove trailing slashes
segment = segment.replace(/\/$/, '')
return parts.concat(segment.split('/'));
}, [])
const resultParts: string[] = []
for (const part of partss) {
if (part === '.') continue;
if (part === '..') {
resultParts.pop()
continue
}
resultParts.push(part)
}
return resultParts.join('/')
}