import path from 'path';

export function safePath(pathIn: string, options: { base: string, noSubDir?: boolean }): string | null {
    const base = options.base.endsWith('/') ? options.base : options.base + '/';
    if (!pathIn.startsWith("./")) {
        pathIn = "./" + pathIn;
    }
    pathIn = path.join(base, pathIn);
    const normBase = path.normalize(base);
    const normPath = path.normalize(pathIn);

    if (normPath !== normBase && normPath.startsWith(normBase)) {
        if (options.noSubDir) {
            let rel = path.relative(normBase, normPath);
            if (rel.indexOf(path.sep) !== -1) {
                return null;
            }
        }
        return normPath;
    }
    return null;
}