@meld-ts/core
    Preparing search index...

    Type Alias PathUtilsOptions

    type PathUtilsOptions = {
        separator: string;
        dangerReplace?: PathReplacementCallback;
        duplicateReplace?: PathReplacementCallback;
    }
    Index

    Properties

    separator: string
    dangerReplace?: PathReplacementCallback

    危险内容替换回调(安全防线)

    purge 阶段最先执行。默认不传则不做任何安全检查—— 这意味着 join('/var/www', '../../../etc') 会返回 ../etc

    调用时机join(...paths) 中,每个顶层 path 参数调用一次 purge, 即 dangerReplace 每个参数只执行一次。若传入含分隔符的参数(如 join(`${prefix}/a/b`)),回调看到的是完整的 "prefix/a/b" 字符串; join 在内部 split 后得到的子段不会再次触发 dangerReplace

    强烈建议在此回调中实现路径遍历拦截,例如:

    • 检测并移除 ..
    • 检测并拒绝绝对路径
    • 将路径限制在某个根目录内
    dangerReplace: (path, sep) => {
    // 拒绝绝对路径
    if (path.startsWith(sep)) throw new Error('absolute path not allowed');
    // 移除所有 .. 段
    return path.split(sep).filter(s => s !== '..').join(sep);
    }
    duplicateReplace?: PathReplacementCallback

    重复分隔符合并回调

    dangerReplace 之后执行。默认不传则不做合并处理。 典型用途://a//b/a/b