Files
poshmanager/server/utils/pathUtils.js
2026-06-25 12:41:33 -05:00

41 lines
1.2 KiB
JavaScript

import path from 'path';
export { path };
export function basenameAny(value, fallback = '') {
const normalized = String(value || fallback || '').replace(/\\/g, '/');
return path.posix.basename(normalized);
}
export function extnameAny(value) {
return path.extname(basenameAny(value)).toLowerCase();
}
export function nameWithoutExtensionAny(value, fallback = '') {
return path.parse(basenameAny(value, fallback)).name;
}
export function sanitizeFileName(name, fallback = 'asset.bin') {
return basenameAny(name, fallback)
.replace(/[/\\?%*:|"<>]/g, '-')
.replace(/\s+/g, ' ')
.trim()
.slice(0, 180) || fallback;
}
export function normalizePackagePath(value, fallbackName = '') {
const clean = String(value || fallbackName || '')
.replace(/\\/g, '/')
.split('/')
.filter((part) => part && part !== '.' && part !== '..')
.join('/');
return clean.slice(0, 500);
}
export function isPathInside(parentDir, candidatePath) {
const parent = path.resolve(parentDir);
const candidate = path.resolve(candidatePath);
const relative = path.relative(parent, candidate);
return relative === '' || (relative && !relative.startsWith('..') && !path.isAbsolute(relative));
}