{"version":3,"file":"isMusl.mjs","names":[],"sources":["../../src/node/isMusl.ts"],"sourcesContent":["import { readFileSync } from 'fs';\nimport { execSync } from 'child_process';\nimport path from 'path';\nexport const isMusl = () => {\n    let musl: boolean | null = false;\n    if (process.platform === 'linux') {\n        musl = isMuslFromFilesystem();\n        if (musl === null) {\n            musl = isMuslFromReport();\n        }\n        if (musl === null) {\n            musl = isMuslFromChildProcess();\n        }\n    }\n    return !!musl;\n};\n\nexport const isMuslFromFilesystem = () => {\n    try {\n        return readFileSync('/usr/bin/ldd', 'utf-8').includes('musl');\n    } catch {\n        return null;\n    }\n};\n\nexport const isMuslFromReport = () => {\n    const report: any =\n        typeof process.report.getReport === 'function'\n            ? process.report.getReport()\n            : null;\n    if (!report) {\n        return null;\n    }\n    if (report.header && report.header.glibcVersionRuntime) {\n        return false;\n    }\n    if (Array.isArray(report.sharedObjects)) {\n        if (\n            report.sharedObjects.some(\n                (f: string) =>\n                    f.includes('libc.musl-') || f.includes('ld-musl-'),\n            )\n        ) {\n            return true;\n        }\n    }\n    return false;\n};\n\nexport const isMuslFromChildProcess = () => {\n    try {\n        return execSync('ldd --version', { encoding: 'utf8' }).includes('musl');\n    } catch (e) {\n        // If we reach this case, we don't know if the system is musl or not, so is better to just fallback to false\n        return false;\n    }\n};\n"],"mappings":";;;AAGA,IAAa,UAAe;CACxB,IAAI,IAAuB;CAU3B,OATI,QAAQ,aAAa,YACrB,IAAO,EAAqB,GACxB,MAAS,SACT,IAAO,EAAiB,IAExB,MAAS,SACT,IAAO,EAAuB,KAG/B,CAAC,CAAC;AACb,GAEa,UAA6B;CACtC,IAAI;EACA,OAAO,EAAa,gBAAgB,OAAO,EAAE,SAAS,MAAM;CAChE,QAAQ;EACJ,OAAO;CACX;AACJ,GAEa,UAAyB;CAClC,IAAM,IACF,OAAO,QAAQ,OAAO,aAAc,aAC9B,QAAQ,OAAO,UAAU,IACzB;CAiBV,OAhBK,IAGD,EAAO,UAAU,EAAO,OAAO,sBACxB,KAEX,GAAI,MAAM,QAAQ,EAAO,aAAa,KAE9B,EAAO,cAAc,MAChB,MACG,EAAE,SAAS,YAAY,KAAK,EAAE,SAAS,UAAU,CACzD,KAVG;AAgBf,GAEa,UAA+B;CACxC,IAAI;EACA,OAAO,EAAS,iBAAiB,EAAE,UAAU,OAAO,CAAC,EAAE,SAAS,MAAM;CAC1E,QAAY;EAER,OAAO;CACX;AACJ"}