{"version":3,"sources":["../index.js"],"sourcesContent":["/**\n * Has Pnpm.\n *\n * Check if pnpm is used instead of npm\n *\n * @author Awais <https://twitter.com/MrAhmadAwais/>\n */\nimport {execa} from 'execa';\nimport fs from 'fs/promises';\nimport path from 'path';\n\nconst cache = new Map();\n\n// Returns true if a file exists.\nconst exists = path =>\n\tfs.stat(path).then(\n\t\t() => true,\n\t\t() => false\n\t);\n\nfunction hasGlobalInstallation(pm) {\n\tconst key = `has_global_${pm}`;\n\tif (cache.has(key)) {\n\t\treturn Promise.resolve(cache.get(key));\n\t}\n\n\treturn execa(pm, ['--version'])\n\t\t.then(res => {\n\t\t\treturn /^\\d+.\\d+.\\d+$/.test(res.stdout);\n\t\t})\n\t\t.then(value => {\n\t\t\tcache.set(key, value);\n\t\t\treturn value;\n\t\t})\n\t\t.catch(() => false);\n}\n\nasync function checkOtherManagers(cwd) {\n\tconst managers = ['yarn', 'npm', 'bun'];\n\tconst results = await Promise.all(\n\t\tmanagers.map(async manager => {\n\t\t\tconst lockFile =\n\t\t\t\tmanager === 'npm'\n\t\t\t\t\t? 'package-lock.json'\n\t\t\t\t\t: `${manager}.lock${manager === 'bun' ? 'b' : ''}`;\n\t\t\tconst hasLock = await exists(path.join(cwd, lockFile));\n\t\t\tconst hasGlobal = await hasGlobalInstallation(manager);\n\t\t\treturn {\n\t\t\t\tname: manager,\n\t\t\t\thasLock,\n\t\t\t\thasGlobal\n\t\t\t};\n\t\t})\n\t);\n\n\treturn results.filter(m => m.hasLock || m.hasGlobal);\n}\n\nasync function canPnpm(cwd = process.cwd()) {\n\t// Check for pnpm lock file\n\tconst pnpmLockExists = await exists(path.join(cwd, 'pnpm-lock.yaml'));\n\tif (pnpmLockExists) {\n\t\treturn {canPnpm: true, reason: 'local lock file'};\n\t}\n\n\t// Check for global pnpm installation\n\tconst canPnpmGlobal = await hasGlobalInstallation('pnpm');\n\tif (canPnpmGlobal) {\n\t\treturn {canPnpm: true, reason: 'global installation'};\n\t}\n\n\t// If pnpm is not found, check other managers\n\tconst otherManagers = await checkOtherManagers(cwd);\n\n\treturn {\n\t\tcanPnpm: false,\n\t\totherManagers: otherManagers.map(m => ({\n\t\t\tname: m.name,\n\t\t\tdetected: m.hasLock ? 'local lock file' : 'global installation'\n\t\t}))\n\t};\n}\n\nexport default canPnpm;\n"],"mappings":"6iBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAOA,IAAAI,EAAoB,iBACpBC,EAAe,4BACfC,EAAiB,qBAEXC,EAAQ,IAAI,IAGZC,EAASC,GACd,EAAAC,QAAG,KAAKD,CAAI,EAAE,KACb,IAAM,GACN,IAAM,EACP,EAED,SAASE,EAAsBC,EAAI,CAClC,IAAMC,EAAM,cAAcD,CAAE,GAC5B,OAAIL,EAAM,IAAIM,CAAG,EACT,QAAQ,QAAQN,EAAM,IAAIM,CAAG,CAAC,KAG/B,SAAMD,EAAI,CAAC,WAAW,CAAC,EAC5B,KAAKE,GACE,gBAAgB,KAAKA,EAAI,MAAM,CACtC,EACA,KAAKC,IACLR,EAAM,IAAIM,EAAKE,CAAK,EACbA,EACP,EACA,MAAM,IAAM,EAAK,CACpB,CAEA,eAAeC,EAAmBC,EAAK,CACtC,IAAMC,EAAW,CAAC,OAAQ,MAAO,KAAK,EAiBtC,OAhBgB,MAAM,QAAQ,IAC7BA,EAAS,IAAI,MAAMC,GAAW,CAC7B,IAAMC,EACLD,IAAY,MACT,oBACA,GAAGA,CAAO,QAAQA,IAAY,MAAQ,IAAM,EAAE,GAC5CE,EAAU,MAAMb,EAAO,EAAAC,QAAK,KAAKQ,EAAKG,CAAQ,CAAC,EAC/CE,EAAY,MAAMX,EAAsBQ,CAAO,EACrD,MAAO,CACN,KAAMA,EACN,QAAAE,EACA,UAAAC,CACD,CACD,CAAC,CACF,GAEe,OAAOC,GAAKA,EAAE,SAAWA,EAAE,SAAS,CACpD,CAEA,eAAeC,EAAQP,EAAM,QAAQ,IAAI,EAAG,CAG3C,OADuB,MAAMT,EAAO,EAAAC,QAAK,KAAKQ,EAAK,gBAAgB,CAAC,EAE5D,CAAC,QAAS,GAAM,OAAQ,iBAAiB,EAI3B,MAAMN,EAAsB,MAAM,EAEhD,CAAC,QAAS,GAAM,OAAQ,qBAAqB,EAM9C,CACN,QAAS,GACT,eAJqB,MAAMK,EAAmBC,CAAG,GAIpB,IAAIM,IAAM,CACtC,KAAMA,EAAE,KACR,SAAUA,EAAE,QAAU,kBAAoB,qBAC3C,EAAE,CACH,CACD,CAEA,IAAOE,EAAQD","names":["can_pnpm_exports","__export","can_pnpm_default","__toCommonJS","import_execa","import_promises","import_path","cache","exists","path","fs","hasGlobalInstallation","pm","key","res","value","checkOtherManagers","cwd","managers","manager","lockFile","hasLock","hasGlobal","m","canPnpm","can_pnpm_default"]}