UNPKG

lib-tools

Version:

The lib-tools helps you simplify the build, bundle, test and npm packaging workflows for Typescript, JavaScript, Angular library projects and assets module projects.

28 lines 4.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.findUp = void 0; const path = require("path"); const fs_extra_1 = require("fs-extra"); const path_helpers_1 = require("./path-helpers"); async function findUp(pathName, startDirs, endDir) { const startDirsArray = Array.isArray(startDirs) ? startDirs : [startDirs]; for (const startDir of startDirsArray) { let currentDir = startDir; const pathNames = Array.isArray(pathName) ? pathName : [pathName]; const rootPath = path.parse(currentDir).root; do { for (const p of pathNames) { const tempPath = path.isAbsolute(p) ? p : path.resolve(currentDir, p); if (await fs_extra_1.pathExists(tempPath)) { return tempPath; } } currentDir = path.dirname(currentDir); } while (currentDir && currentDir !== rootPath && (path_helpers_1.isSamePaths(endDir, currentDir) || path_helpers_1.isInFolder(endDir, currentDir))); } return null; } exports.findUp = findUp; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC11cC5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsidXRpbHMvZmluZC11cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBNkI7QUFFN0IsdUNBQXNDO0FBRXRDLGlEQUF5RDtBQUVsRCxLQUFLLFVBQVUsTUFBTSxDQUN4QixRQUEyQixFQUMzQixTQUE0QixFQUM1QixNQUFjO0lBRWQsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFFLEtBQUssTUFBTSxRQUFRLElBQUksY0FBYyxFQUFFO1FBQ25DLElBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQztRQUMxQixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFN0MsR0FBRztZQUNDLEtBQUssTUFBTSxDQUFDLElBQUksU0FBUyxFQUFFO2dCQUN2QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN0RSxJQUFJLE1BQU0scUJBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRTtvQkFDNUIsT0FBTyxRQUFRLENBQUM7aUJBQ25CO2FBQ0o7WUFFRCxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUN6QyxRQUNHLFVBQVU7WUFDVixVQUFVLEtBQUssUUFBUTtZQUN2QixDQUFDLDBCQUFXLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxJQUFJLHlCQUFVLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDLEVBQ3JFO0tBQ0w7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBNUJELHdCQTRCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7IHBhdGhFeGlzdHMgfSBmcm9tICdmcy1leHRyYSc7XG5cbmltcG9ydCB7IGlzSW5Gb2xkZXIsIGlzU2FtZVBhdGhzIH0gZnJvbSAnLi9wYXRoLWhlbHBlcnMnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmluZFVwKFxuICAgIHBhdGhOYW1lOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgICBzdGFydERpcnM6IHN0cmluZyB8IHN0cmluZ1tdLFxuICAgIGVuZERpcjogc3RyaW5nXG4pOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICBjb25zdCBzdGFydERpcnNBcnJheSA9IEFycmF5LmlzQXJyYXkoc3RhcnREaXJzKSA/IHN0YXJ0RGlycyA6IFtzdGFydERpcnNdO1xuICAgIGZvciAoY29uc3Qgc3RhcnREaXIgb2Ygc3RhcnREaXJzQXJyYXkpIHtcbiAgICAgICAgbGV0IGN1cnJlbnREaXIgPSBzdGFydERpcjtcbiAgICAgICAgY29uc3QgcGF0aE5hbWVzID0gQXJyYXkuaXNBcnJheShwYXRoTmFtZSkgPyBwYXRoTmFtZSA6IFtwYXRoTmFtZV07XG4gICAgICAgIGNvbnN0IHJvb3RQYXRoID0gcGF0aC5wYXJzZShjdXJyZW50RGlyKS5yb290O1xuXG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcCBvZiBwYXRoTmFtZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0ZW1wUGF0aCA9IHBhdGguaXNBYnNvbHV0ZShwKSA/IHAgOiBwYXRoLnJlc29sdmUoY3VycmVudERpciwgcCk7XG4gICAgICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHModGVtcFBhdGgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZW1wUGF0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGN1cnJlbnREaXIgPSBwYXRoLmRpcm5hbWUoY3VycmVudERpcik7XG4gICAgICAgIH0gd2hpbGUgKFxuICAgICAgICAgICAgY3VycmVudERpciAmJlxuICAgICAgICAgICAgY3VycmVudERpciAhPT0gcm9vdFBhdGggJiZcbiAgICAgICAgICAgIChpc1NhbWVQYXRocyhlbmREaXIsIGN1cnJlbnREaXIpIHx8IGlzSW5Gb2xkZXIoZW5kRGlyLCBjdXJyZW50RGlyKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbn1cbiJdfQ==