@sidekick-coder/db
Version:
Cli Tool to manipulate data from diferent sources
54 lines (52 loc) • 1.24 kB
JavaScript
// src/core/filesystem/createPathFake.ts
function createPathFake() {
function parts(...args) {
const result = args.map((a) => a.replace(/\/\//g, "/")).map((a) => a.split("/")).flat().filter((a) => a !== "").filter(Boolean);
return result;
}
function resolve(...args) {
const normalized = parts(...args).reduce((acc, segment) => {
if (segment === "." || segment === ".") {
return acc;
}
if (segment === "..") {
acc.pop();
return acc;
}
acc.push(segment);
return acc;
}, []).join("/");
let result = normalized;
if (!result.startsWith("/")) {
result = "/" + normalized;
}
return result;
}
function join(...args) {
return parts(...args).join("/");
}
function dirname(args) {
if (args === "/") {
return "/";
}
const partsArray = parts(args);
if (partsArray.length < 1) {
return "/";
}
let result = partsArray.slice(0, -1).join("/");
if (!result.startsWith("/")) {
result = "/" + result;
}
return result;
}
function basename(args) {
return parts(args).slice(-1)[0];
}
return {
resolve,
join,
dirname,
basename
};
}
export { createPathFake };