14 lines
551 B
TypeScript
14 lines
551 B
TypeScript
import * as path from 'path';
|
|
|
|
/** Directory names to skip when walking or listing workspaces. */
|
|
export const EXCLUDED = new Set(['node_modules', '.git', 'dist', 'build', 'lib', '.cache', 'coverage']);
|
|
|
|
/** Resolve a relative path safely within a workspace root — throws if it tries to escape. */
|
|
export function safeResolve(root: string, rel: string): string {
|
|
const resolved = path.resolve(root, rel);
|
|
if (!resolved.startsWith(path.resolve(root))) {
|
|
throw new Error(`Path escapes workspace: ${rel}`);
|
|
}
|
|
return resolved;
|
|
}
|