{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { existsSync } from \"fs\";\nimport path from \"path\";\nimport { fileURLToPath } from \"url\";\n\nconst getDirname = () => {\n    try {\n        if (import.meta.dirname) {\n            return import.meta.dirname;\n        }\n    } catch {}\n\n    try {\n        if (import.meta.filename) {\n            return path.dirname(import.meta.filename);\n        }\n    } catch {}\n\n    try {\n        if (import.meta.url) {\n            return path.dirname(fileURLToPath(import.meta.url));\n        }\n    } catch {}\n\n    try {\n        return __dirname;\n    } catch {}\n\n    try {\n        return path.dirname(__filename);\n    } catch {}\n\n    throw new Error(\"could not find dirname\");\n};\n\nconst dirname = getDirname();\n\nlet cachedValue: string = \"\";\n\n/**\n * Find the project root by walking up from the module location.\n * @param noCache - if true, ignore any cached result and recompute.\n * @returns absolute path to project root\n * @throws Error when no package.json is found\n */\nexport const findRoot = async (noCache = false): Promise<string> => {\n    if (cachedValue && !noCache) {\n        return cachedValue;\n    }\n    return _findRoot();\n};\n\nconst _findRoot = async (currentDirectory = dirname, countedPackageDotJson = 0): Promise<string> => {\n    if (existsSync(path.join(currentDirectory, \"package.json\"))) {\n        countedPackageDotJson += 1;\n    }\n    if (countedPackageDotJson >= 2) {\n        cachedValue = currentDirectory;\n        return currentDirectory;\n    }\n    const parentDirectory = path.dirname(currentDirectory);\n\n    if (!parentDirectory || parentDirectory == \"/\" || parentDirectory == \"\\\\\") {\n        throw new Error(\"There is no parent package, or this script not placed in a node_modules of a project\");\n    }\n\n    return _findRoot(parentDirectory, countedPackageDotJson);\n};\n\nexport default findRoot;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAA2B;AAC3B,kBAAiB;AACjB,iBAA8B;AAF9B;AAIA,IAAM,aAAa,MAAM;AACrB,MAAI;AACA,QAAI,YAAY,SAAS;AACrB,aAAO,YAAY;AAAA,IACvB;AAAA,EACJ,QAAE;AAAA,EAAO;AAET,MAAI;AACA,QAAI,YAAY,UAAU;AACtB,aAAO,YAAAA,QAAK,QAAQ,YAAY,QAAQ;AAAA,IAC5C;AAAA,EACJ,QAAE;AAAA,EAAO;AAET,MAAI;AACA,QAAI,YAAY,KAAK;AACjB,aAAO,YAAAA,QAAK,YAAQ,0BAAc,YAAY,GAAG,CAAC;AAAA,IACtD;AAAA,EACJ,QAAE;AAAA,EAAO;AAET,MAAI;AACA,WAAO;AAAA,EACX,QAAE;AAAA,EAAO;AAET,MAAI;AACA,WAAO,YAAAA,QAAK,QAAQ,UAAU;AAAA,EAClC,QAAE;AAAA,EAAO;AAET,QAAM,IAAI,MAAM,wBAAwB;AAC5C;AAEA,IAAM,UAAU,WAAW;AAE3B,IAAI,cAAsB;AAQnB,IAAM,WAAW,OAAO,UAAU,UAA2B;AAChE,MAAI,eAAe,CAAC,SAAS;AACzB,WAAO;AAAA,EACX;AACA,SAAO,UAAU;AACrB;AAEA,IAAM,YAAY,OAAO,mBAAmB,SAAS,wBAAwB,MAAuB;AAChG,UAAI,sBAAW,YAAAA,QAAK,KAAK,kBAAkB,cAAc,CAAC,GAAG;AACzD,6BAAyB;AAAA,EAC7B;AACA,MAAI,yBAAyB,GAAG;AAC5B,kBAAc;AACd,WAAO;AAAA,EACX;AACA,QAAM,kBAAkB,YAAAA,QAAK,QAAQ,gBAAgB;AAErD,MAAI,CAAC,mBAAmB,mBAAmB,OAAO,mBAAmB,MAAM;AACvE,UAAM,IAAI,MAAM,sFAAsF;AAAA,EAC1G;AAEA,SAAO,UAAU,iBAAiB,qBAAqB;AAC3D;AAEA,IAAO,cAAQ;","names":["path"]}