"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.findProjectRoot = exports.isLocalPath = void 0; const findup_sync_1 = __importDefault(require("findup-sync")); const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); /** * Attempts to detect whether the string is a local path regardless of its * existence by checking its format. The point is to distinguish between * paths and modules on the npm registry. This will fail for non-existent * local Windows paths that begin with a drive letter, e.g. C:..\generator.js, * but will succeed for any existing files and any absolute paths. * * @param {String} str - string to check * @returns {Boolean} whether the string could be a path to a local file or directory */ function isLocalPath(str) { return path_1.default.isAbsolute(str) || /^\./.test(str) || fs_1.default.existsSync(str); } exports.isLocalPath = isLocalPath; /** * Find the root directory path of a project. * @param {String} cwd - Any custom starting point to walk through directories * @returns {String} Absolute path of the project root. */ function findProjectRoot(cwd = process.cwd()) { const rootFilePath = findup_sync_1.default('package.json', { cwd }); const projectRoot = path_1.default.dirname(rootFilePath); return projectRoot; } exports.findProjectRoot = findProjectRoot;