{"version":3,"sources":["../src/fs/forEachUp.ts"],"names":["forEachUp","callback","options","includeSelf","base","assignObject","cur","result","isFunction","ABORT","parent","path"],"mappings":";;;;AAmBO,SAASA,CAAAA,CAAUC,EAA6CC,CAAyB,CAAA,CAC5F,GAAM,CAAE,WAAAC,CAAAA,CAAAA,CAAa,IAAAC,CAAAA,CAAAA,CAAO,QAAQ,GAAI,EAAE,CAAIC,CAAAA,CAAAA,CAAa,EAAC,CAAGH,CAAO,CAAA,CAClEI,EAAMF,CACJG,CAAAA,CAAAA,CAAmB,EAAC,CAC1B,GAAI,EAAAJ,CAAeK,EAAAA,GAAAA,CAAWP,CAAQ,CAClCM,GAAAA,CAAAA,CAAO,IAAKD,CAAAA,CAAG,CACXL,CAAAA,CAAAA,CAASK,CAAG,CAAA,GAAMG,MAE1B,CAAa,OAAA,CACT,IAAMC,CAAAA,CAASC,CAAK,CAAA,OAAA,CAAQL,CAAG,CAAA,CAI/B,GAHII,CAAWJ,GAAAA,CAAAA,GACfC,CAAO,CAAA,IAAA,CAAKG,CAAM,CAAA,CAClBJ,CAAMI,CAAAA,CAAAA,CACFF,IAAWP,CAAQ,CAAA,EACfA,CAASS,CAAAA,CAAM,CAAMD,GAAAA,GAAAA,CAAAA,CAAO,KAExC,CACA,OAAOF,CACX,CAAA","file":"chunk-FOICYMBY.mjs","sourcesContent":["/**\n *\n * 从当前文件夹开始，向上遍历祖先文件夹\n *\n *\n *\n *\n */\nimport path from 'node:path'\nimport { isFunction } from '../typecheck/isFunction'\nimport { assignObject } from '../object/assignObject'\nimport { ABORT } from '../consts'\nexport { ABORT } from '../consts'\n\nexport interface findUpOptions {\n    includeSelf?: boolean // 结果是否包含当前文件夹\n    base?: string // 入口文件夹,默认为当前文件夹\n}\n\nexport function forEachUp(callback: (folder: string) => Symbol | void, options?: findUpOptions) {\n    const { includeSelf, base = process.cwd() } = assignObject({}, options)\n    let cur = base\n    const result: string[] = []\n    if (includeSelf && isFunction(callback)) {\n        result.push(cur)\n        if (callback(cur) === ABORT) return\n    }\n    while (true) {\n        const parent = path.dirname(cur)\n        if (parent === cur) break\n        result.push(parent)\n        cur = parent\n        if (isFunction(callback)) {\n            if (callback(parent) === ABORT) break\n        }\n    }\n    return result\n}\n"]}