{"mappings":"A,S,E,C,C,C,C,C,C,C,E,O,c,C,E,E,C,I,E,I,E,W,C,E,a,C,C,E,CEGO,SAAS,IACZ,OAAO,AAA0C,OAA1C,AAAA,EAAM,IAAI,CAAC,OAAQ,CAAE,QAAS,CAAA,CAAK,EAC9C,CAeO,SAAS,IAEZ,OAAO,QAAQ,MAAM,OAAS,GAAK,CAAA,CAAQ,QAAQ,GAAG,CAAC,EAAE,AAC7D,CAEO,SAAS,IACZ,OAAO,KAAY,GACvB,CAEO,SAAS,EAAY,CAAO,SAC/B,AAAI,IACO,CAAC,KAAK,EAAE,EAAQ,CAAC,CAErB,CACX,CAcO,SAAS,EAAa,CAAO,CAAE,EAAO,EAAE,CAAE,EAAc,CAAkB,SAC7E,AAAI,IAEO,AAAA,EADS,EAAe,EAAS,GACP,GAG1B,AAAA,EAAU,EAAS,EAAM,EAExC,CASO,SAAS,EAAS,CAAO,CAAE,EAAO,EAAE,CAAE,EAAc,CAAkB,SACzE,AAAI,IAEO,AAAA,EADS,EAAe,EAAS,GACX,GAGtB,AAAA,EAAM,EAAS,EAAM,EAEpC,CACA,SAAS,EAAe,CAAO,CAAE,CAAI,EACjC,MAAO,CAAC,KAAK,EAAE,EAAM,CAAC,KAAY,EAAK,EAAE,IAAI,CAAC,KAAK,CAAC,AACxD,CACA,SAAS,EAAM,CAAO,EAClB,OAAO,EAAQ,GAAG,CAAC,AAAC,GAAS,EAAS,GAAO,EAAM,CAAC,CAAC,EAAE,EAAI,CAAC,CAAC,CACjE,CACA,SAAS,EAAS,CAAG,EACjB,GAAI,EAAI,MAAM,CAAG,EACb,MAAO,CAAA,EAEX,IAAM,EAAQ,CAAG,CAAC,EAAE,CACd,EAAO,CAAG,CAAC,EAAI,MAAM,CAAG,EAAE,CAChC,MAAQ,AAAU,MAAV,GAAiB,AAAS,MAAT,GAAkB,AAAU,MAAV,GAAiB,AAAS,MAAT,CAChE,CEpFA,eAAe,IACX,GAAI,CAEA,OADA,MAAM,AAAA,EAAM,SACL,CAAA,CACX,CACA,KAAM,CACF,MAAO,CAAA,CACX,CACJ,CACe,eAAA,IACX,GAAI,AAAqB,UAArB,QAAQ,QAAQ,CAChB,MAAO,CAAA,EAEX,GAAI,CAGA,OADA,MAAM,AAAA,EAAM,SAAU,CAAC,QAAS,QAAS,QAAQ,GAAG,CAAC,WAAW,EAAI,GAAG,EAChE,CAAA,CACX,CACA,MAAO,EAAO,CACV,GAAI,AAAe,WAAf,EAAM,IAAI,CACV,OAAO,IAEX,MAAO,CAAA,CACX,CACJ,CDqBO,SAAS,UACZ,AAAI,AAAqB,UAArB,QAAQ,QAAQ,CACT,IAGA,AAAA,GAEf,CE/CO,eAAe,EAAqB,CAAI,EAC3C,GAAK,AAAA,CAAA,AAAqB,UAArB,QAAQ,QAAQ,EAAgB,AAAqB,WAArB,QAAQ,QAAQ,AAAK,GACtD,AAAA,KACA,AAA0B,KAAA,IAA1B,QAAQ,GAAG,CAAC,SAAS,CAAgB,CACrC,IAAM,EAAc,AAAA,EAAG,QAAQ,CAAC,GAAM,WAAW,EACjD,OAAM,AAAA,EAAS,QAAS,IAAK,EAAc,CAAC,KAAK,CAAG,EAAE,CAAG,QAAQ,GAAG,CAAC,SAAS,CAAE,EAAK,CAAE,EAC3F,CACJ,K,E,E,C,C,Q,M,O,A,Q,oB,C,C,a,C,C,gB,C,C,S,C,K,O,A,Q,M,I,C,E,E,U,I,G,E,E,S,I,G,E,E,S,I,G,E,E,c,I,G,E,E,qB,I,G,E,E,e,I,G,E,E,W,I,GHqBO,IAAM,EAAqB,CAC9B,MAAO,UACP,MAAO,CAAA,CACX,E,E,E,C,E,iB,I,G,E,E,e,I,G,E,E,U,I,GCvBO,IAAM,EAAiB,EAejB,EAAe,E,E,C,E,uB,I,U,K,O,C,K,M,C,K,M,C,K,W,C,K,kB,C,K,Y,C,K,Q,C,K,c,C,K,Y,C,K,O,C,K,oB","sources":["<anon>","src/index.mts","src/root.mts","src/admin.mts","src/is-admin.mts","src/user-access.mts"],"sourcesContent":["import $5eerk$which from \"which\";\nimport {execaCommandSync as $5eerk$execaCommandSync, execaSync as $5eerk$execaSync, execaCommand as $5eerk$execaCommand, execa as $5eerk$execa} from \"execa\";\nimport $5eerk$fs from \"fs\";\n\n\nfunction $parcel$export(e, n, v, s) {\n  Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $2e97c29b7add0805$exports = {};\n\n$parcel$export($2e97c29b7add0805$exports, \"hasSudo\", () => $2e97c29b7add0805$export$7683bf1311d8252);\n$parcel$export($2e97c29b7add0805$exports, \"isRoot\", () => $2e97c29b7add0805$export$e3140dc7d0c35e48);\n$parcel$export($2e97c29b7add0805$exports, \"isSudo\", () => $2e97c29b7add0805$export$316200228f28b8ce);\n$parcel$export($2e97c29b7add0805$exports, \"prependSudo\", () => $2e97c29b7add0805$export$d976d47922ae9667);\n$parcel$export($2e97c29b7add0805$exports, \"defaultExecOptions\", () => $2e97c29b7add0805$export$151aeb0ade3989e1);\n$parcel$export($2e97c29b7add0805$exports, \"execRootSync\", () => $2e97c29b7add0805$export$58f152936f209932);\n$parcel$export($2e97c29b7add0805$exports, \"execRoot\", () => $2e97c29b7add0805$export$351270479e2eef26);\n\n\nfunction $2e97c29b7add0805$export$7683bf1311d8252() {\n    return (0, $5eerk$which).sync(\"sudo\", {\n        nothrow: true\n    }) !== null;\n}\nfunction $2e97c29b7add0805$export$e3140dc7d0c35e48() {\n    // TODO not all CI systems are root\n    return process.getuid?.() === 0 || Boolean(process.env.CI);\n}\nfunction $2e97c29b7add0805$export$316200228f28b8ce() {\n    return $2e97c29b7add0805$export$e3140dc7d0c35e48() && $2e97c29b7add0805$export$7683bf1311d8252();\n}\nfunction $2e97c29b7add0805$export$d976d47922ae9667(command) {\n    if ($2e97c29b7add0805$export$316200228f28b8ce()) return `sudo ${command}`;\n    return command;\n}\nconst $2e97c29b7add0805$export$151aeb0ade3989e1 = {\n    stdio: \"inherit\",\n    shell: true\n};\nfunction $2e97c29b7add0805$export$58f152936f209932(program, args = [], execOptions = $2e97c29b7add0805$export$151aeb0ade3989e1) {\n    if ($2e97c29b7add0805$export$316200228f28b8ce()) {\n        const command = $2e97c29b7add0805$var$getSudoCommand(program, args);\n        return (0, $5eerk$execaCommandSync)(command, execOptions);\n    } else return (0, $5eerk$execaSync)(program, args, execOptions);\n}\nfunction $2e97c29b7add0805$export$351270479e2eef26(program, args = [], execOptions = $2e97c29b7add0805$export$151aeb0ade3989e1) {\n    if ($2e97c29b7add0805$export$316200228f28b8ce()) {\n        const command = $2e97c29b7add0805$var$getSudoCommand(program, args);\n        return (0, $5eerk$execaCommand)(command, execOptions);\n    } else return (0, $5eerk$execa)(program, args, execOptions);\n}\nfunction $2e97c29b7add0805$var$getSudoCommand(program, args) {\n    return `sudo ${$2e97c29b7add0805$var$quote([\n        program,\n        ...args\n    ]).join(\" \")}`;\n}\nfunction $2e97c29b7add0805$var$quote(strings) {\n    return strings.map((str)=>$2e97c29b7add0805$var$isQuoted(str) ? str : `'${str}'`);\n}\nfunction $2e97c29b7add0805$var$isQuoted(str) {\n    if (str.length < 2) return false;\n    const first = str[0];\n    const last = str[str.length - 1];\n    return first === \"'\" && last === \"'\" || first === '\"' && last === '\"';\n} //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC5tanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvcm9vdC5tdHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFBO0FBQ3pCLE9BQU8sRUFDTCxLQUFLLEVBQ0wsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixTQUFTLEdBS1YsTUFBTSxPQUFPLENBQUE7QUFFZCxrQ0FBa0M7QUFDbEMsTUFBTSxVQUFVLE9BQU87SUFDckIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQTtBQUN2RCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sVUFBVSxNQUFNO0lBQ3BCLG1DQUFtQztJQUNuQyxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUM1RCxDQUFDO0FBRUQsbUVBQW1FO0FBQ25FLE1BQU0sVUFBVSxNQUFNO0lBQ3BCLE9BQU8sTUFBTSxFQUFFLElBQUksT0FBTyxFQUFFLENBQUE7QUFDOUIsQ0FBQztBQUVELHlEQUF5RDtBQUN6RCxNQUFNLFVBQVUsV0FBVyxDQUFDLE9BQWU7SUFDekMsSUFBSSxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBQ2IsT0FBTyxRQUFRLE9BQU8sRUFBRSxDQUFBO0lBQzFCLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQTtBQUNoQixDQUFDO0FBRUQsK0RBQStEO0FBQy9ELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFxQjtJQUNsRCxLQUFLLEVBQUUsU0FBUztJQUNoQixLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUE7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FDMUIsT0FBZSxFQUNmLE9BQWlCLEVBQUUsRUFDbkIsY0FBZ0Msa0JBQWtCO0lBRWxELElBQUksTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUNiLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDN0MsT0FBTyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUE7SUFDL0MsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBQzlDLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQ3RCLE9BQWUsRUFDZixPQUFpQixFQUFFLEVBQ25CLGNBQTRCLGtCQUFrQjtJQUU5QyxJQUFJLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDYixNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQzdDLE9BQU8sWUFBWSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQTtJQUMzQyxDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUE7SUFDMUMsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxPQUFlLEVBQUUsSUFBYztJQUNyRCxPQUFPLFFBQVEsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQTtBQUN0RCxDQUFDO0FBRUQsU0FBUyxLQUFLLENBQUMsT0FBaUI7SUFDOUIsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQTtBQUNqRSxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsR0FBVztJQUMzQixJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbkIsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0lBQ0QsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3BCLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQ2hDLE9BQU8sQ0FBQyxLQUFLLEtBQUssR0FBRyxJQUFJLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxHQUFHLElBQUksSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFBO0FBQzNFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgd2hpY2ggZnJvbSBcIndoaWNoXCJcbmltcG9ydCB7XG4gIGV4ZWNhLFxuICBleGVjYUNvbW1hbmQsXG4gIGV4ZWNhQ29tbWFuZFN5bmMsXG4gIGV4ZWNhU3luYyxcbiAgdHlwZSBTeW5jT3B0aW9ucyBhcyBFeGVjYVN5bmNPcHRpb25zLFxuICB0eXBlIEV4ZWNhU3luY1JldHVyblZhbHVlLFxuICB0eXBlIE9wdGlvbnMgYXMgRXhlY2FPcHRpb25zLFxuICB0eXBlIEV4ZWNhQ2hpbGRQcm9jZXNzLFxufSBmcm9tIFwiZXhlY2FcIlxuXG4vKiogRGV0ZWN0IGlmIHN1ZG8gaXMgYXZhaWxhYmxlICovXG5leHBvcnQgZnVuY3Rpb24gaGFzU3VkbygpOiBib29sZWFuIHtcbiAgcmV0dXJuIHdoaWNoLnN5bmMoXCJzdWRvXCIsIHsgbm90aHJvdzogdHJ1ZSB9KSAhPT0gbnVsbFxufVxuXG4vKipcbiAqIERldGVjdCBpZiB0aGUgcHJvY2VzcyBoYXMgcm9vdCBwcml2aWxlZ2Ugb24gUG9zaXguXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogaW1wb3J0IHsgaXNSb290IH0gZnJvbSBcImFkbWluYVwiXG4gKlxuICogY29uc29sZS5sb2coaXNSb290KCkpXG4gKiAvLz0+IGZhbHNlXG4gKiBgYGBcbiAqXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBwcm9jZXNzIGlzIHJ1bm5pbmcgYXMgcm9vdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUm9vdCgpOiBib29sZWFuIHtcbiAgLy8gVE9ETyBub3QgYWxsIENJIHN5c3RlbXMgYXJlIHJvb3RcbiAgcmV0dXJuIHByb2Nlc3MuZ2V0dWlkPy4oKSA9PT0gMCB8fCBCb29sZWFuKHByb2Nlc3MuZW52LkNJKVxufVxuXG4vKiogRGV0ZWN0IGlmIHN1ZG8gaXMgYXZhaWxhYmxlIGFuZCB0aGUgdXNlciBoYXMgcm9vdCBwcml2aWxlZ2VzICovXG5leHBvcnQgZnVuY3Rpb24gaXNTdWRvKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNSb290KCkgJiYgaGFzU3VkbygpXG59XG5cbi8qKiBQcmVwZW5kIGBzdWRvYCB0byB0aGUgY29tbWFuZCBpZiBzdWRvIGlzIGF2YWlsYWJsZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZXBlbmRTdWRvKGNvbW1hbmQ6IHN0cmluZykge1xuICBpZiAoaXNTdWRvKCkpIHtcbiAgICByZXR1cm4gYHN1ZG8gJHtjb21tYW5kfWBcbiAgfVxuICByZXR1cm4gY29tbWFuZFxufVxuXG4vKiogRGVmYXVsdCBleGVjIG9wdGlvbnMgYHsgc3RkaW86IFwiaW5oZXJpdFwiLCBzaGVsbDogdHJ1ZSB9YCAqL1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRFeGVjT3B0aW9uczogRXhlY2FTeW5jT3B0aW9ucyA9IHtcbiAgc3RkaW86IFwiaW5oZXJpdFwiLFxuICBzaGVsbDogdHJ1ZSxcbn1cblxuLyoqXG4gKiBFeGVjdXRlIGEgY29tbWFuZCBhcyByb290IGlmIHN1ZG8gaXMgYXZhaWxhYmxlLiBPdGhlcndpc2UgZXhlY3V0ZXMgdGhlIGNvbW1hbmQgbm9ybWFsbHkgd2l0aG91dCBzdWRvLlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIFRoZSBwcm9ncmFtIHRvIHNwYXduXG4gKiBAcGFyYW0gYXJncyBUaGUgY29tbWFuZCBhcmd1bWVudHNcbiAqIEBwYXJhbSBleGVjT3B0aW9ucyBUaGUgb3B0aW9ucyBwYXNzZWQgdG8gYGV4ZWNhYC4gRGVmYXVsdHMgdG8gYHsgc3RkaW86IFwiaW5oZXJpdFwiLCBzaGVsbDogdHJ1ZSB9YFxuICogQHJldHVybnMgVGhlIGV4ZWN1dGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4ZWNSb290U3luYyhcbiAgcHJvZ3JhbTogc3RyaW5nLFxuICBhcmdzOiBzdHJpbmdbXSA9IFtdLFxuICBleGVjT3B0aW9uczogRXhlY2FTeW5jT3B0aW9ucyA9IGRlZmF1bHRFeGVjT3B0aW9ucyxcbik6IEV4ZWNhU3luY1JldHVyblZhbHVlPHN0cmluZz4ge1xuICBpZiAoaXNTdWRvKCkpIHtcbiAgICBjb25zdCBjb21tYW5kID0gZ2V0U3Vkb0NvbW1hbmQocHJvZ3JhbSwgYXJncylcbiAgICByZXR1cm4gZXhlY2FDb21tYW5kU3luYyhjb21tYW5kLCBleGVjT3B0aW9ucylcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZXhlY2FTeW5jKHByb2dyYW0sIGFyZ3MsIGV4ZWNPcHRpb25zKVxuICB9XG59XG5cbi8qKlxuICogQXN5bmNocm9ub3VzbHkgZXhlY3V0ZSBhIGNvbW1hbmQgYXMgcm9vdCBpZiBzdWRvIGlzIGF2YWlsYWJsZS4gT3RoZXJ3aXNlIGV4ZWN1dGVzIHRoZSBjb21tYW5kIG5vcm1hbGx5IHdpdGhvdXQgc3Vkby5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSBUaGUgcHJvZ3JhbSB0byBzcGF3blxuICogQHBhcmFtIGFyZ3MgVGhlIGNvbW1hbmQgYXJndW1lbnRzXG4gKiBAcGFyYW0gZXhlY09wdGlvbnMgVGhlIG9wdGlvbnMgcGFzc2VkIHRvIGBleGVjYWAuIERlZmF1bHRzIHRvIGB7IHN0ZGlvOiBcImluaGVyaXRcIiwgc2hlbGw6IHRydWUgfWBcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0byB0aGUgZXhlY3V0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhlY1Jvb3QoXG4gIHByb2dyYW06IHN0cmluZyxcbiAgYXJnczogc3RyaW5nW10gPSBbXSxcbiAgZXhlY09wdGlvbnM6IEV4ZWNhT3B0aW9ucyA9IGRlZmF1bHRFeGVjT3B0aW9ucyxcbik6IEV4ZWNhQ2hpbGRQcm9jZXNzPHN0cmluZz4ge1xuICBpZiAoaXNTdWRvKCkpIHtcbiAgICBjb25zdCBjb21tYW5kID0gZ2V0U3Vkb0NvbW1hbmQocHJvZ3JhbSwgYXJncylcbiAgICByZXR1cm4gZXhlY2FDb21tYW5kKGNvbW1hbmQsIGV4ZWNPcHRpb25zKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBleGVjYShwcm9ncmFtLCBhcmdzLCBleGVjT3B0aW9ucylcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRTdWRvQ29tbWFuZChwcm9ncmFtOiBzdHJpbmcsIGFyZ3M6IHN0cmluZ1tdKSB7XG4gIHJldHVybiBgc3VkbyAke3F1b3RlKFtwcm9ncmFtLCAuLi5hcmdzXSkuam9pbihcIiBcIil9YFxufVxuXG5mdW5jdGlvbiBxdW90ZShzdHJpbmdzOiBzdHJpbmdbXSkge1xuICByZXR1cm4gc3RyaW5ncy5tYXAoKHN0cikgPT4gKGlzUXVvdGVkKHN0cikgPyBzdHIgOiBgJyR7c3RyfSdgKSlcbn1cblxuZnVuY3Rpb24gaXNRdW90ZWQoc3RyOiBzdHJpbmcpIHtcbiAgaWYgKHN0ci5sZW5ndGggPCAyKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgY29uc3QgZmlyc3QgPSBzdHJbMF1cbiAgY29uc3QgbGFzdCA9IHN0cltzdHIubGVuZ3RoIC0gMV1cbiAgcmV0dXJuIChmaXJzdCA9PT0gXCInXCIgJiYgbGFzdCA9PT0gXCInXCIpIHx8IChmaXJzdCA9PT0gJ1wiJyAmJiBsYXN0ID09PSAnXCInKVxufVxuIl19\n\n\nvar $e6e54fba4e25d332$exports = {};\n\n$parcel$export($e6e54fba4e25d332$exports, \"isAdminWindows\", () => $e6e54fba4e25d332$export$36ad181701cee597);\n$parcel$export($e6e54fba4e25d332$exports, \"isAdminPosix\", () => $e6e54fba4e25d332$export$2ebf12717e6b5bb8);\n$parcel$export($e6e54fba4e25d332$exports, \"isAdmin\", () => $e6e54fba4e25d332$export$fc970ed23da99565);\n// From `is-admin`: updated execa\n\n// https://stackoverflow.com/a/28268802\nasync function $515243e4fb3e8732$var$testFltmc() {\n    try {\n        await (0, $5eerk$execa)(\"fltmc\");\n        return true;\n    } catch  {\n        return false;\n    }\n}\nasync function $515243e4fb3e8732$export$2e2bcd8739ae039() {\n    if (process.platform !== \"win32\") return false;\n    try {\n        // https://stackoverflow.com/a/21295806/1641422\n        await (0, $5eerk$execa)(\"fsutil\", [\n            \"dirty\",\n            \"query\",\n            process.env.systemdrive ?? \"\"\n        ]);\n        return true;\n    } catch (error) {\n        if (error.code === \"ENOENT\") return $515243e4fb3e8732$var$testFltmc();\n        return false;\n    }\n} //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtYWRtaW4ubWpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3JjL2lzLWFkbWluLm10cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQ0FBaUM7QUFFakMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUU3Qix1Q0FBdUM7QUFDdkMsS0FBSyxVQUFVLFNBQVM7SUFDdEIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDcEIsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxVQUFVLE9BQU87SUFDbkMsSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLE9BQU8sRUFBRSxDQUFDO1FBQ2pDLE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILCtDQUErQztRQUMvQyxNQUFNLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDeEUsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLElBQUssS0FBMkIsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbkQsT0FBTyxTQUFTLEVBQUUsQ0FBQTtRQUNwQixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEZyb20gYGlzLWFkbWluYDogdXBkYXRlZCBleGVjYVxuXG5pbXBvcnQgeyBleGVjYSB9IGZyb20gXCJleGVjYVwiXG5cbi8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yODI2ODgwMlxuYXN5bmMgZnVuY3Rpb24gdGVzdEZsdG1jKCkge1xuICB0cnkge1xuICAgIGF3YWl0IGV4ZWNhKFwiZmx0bWNcIilcbiAgICByZXR1cm4gdHJ1ZVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBpc0FkbWluKCkge1xuICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSAhPT0gXCJ3aW4zMlwiKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICB0cnkge1xuICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMTI5NTgwNi8xNjQxNDIyXG4gICAgYXdhaXQgZXhlY2EoXCJmc3V0aWxcIiwgW1wiZGlydHlcIiwgXCJxdWVyeVwiLCBwcm9jZXNzLmVudi5zeXN0ZW1kcml2ZSA/PyBcIlwiXSlcbiAgICByZXR1cm4gdHJ1ZVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmICgoZXJyb3IgYXMgeyBjb2RlPzogc3RyaW5nIH0pLmNvZGUgPT09IFwiRU5PRU5UXCIpIHtcbiAgICAgIHJldHVybiB0ZXN0Rmx0bWMoKVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG4iXX0=\n\n\n\nconst $e6e54fba4e25d332$export$36ad181701cee597 = (0, $515243e4fb3e8732$export$2e2bcd8739ae039);\nconst $e6e54fba4e25d332$export$2ebf12717e6b5bb8 = (0, $2e97c29b7add0805$export$e3140dc7d0c35e48);\nfunction $e6e54fba4e25d332$export$fc970ed23da99565() {\n    if (process.platform === \"win32\") return $e6e54fba4e25d332$export$36ad181701cee597();\n    else return (0, $2e97c29b7add0805$export$e3140dc7d0c35e48)();\n} //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4ubWpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3JjL2FkbWluLm10cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxJQUFJLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVuQzs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLGtCQUFrQixDQUFBO0FBRWhEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFBO0FBRWxDOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE1BQU0sVUFBVSxPQUFPO0lBQ3JCLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUNqQyxPQUFPLGNBQWMsRUFBRSxDQUFBO0lBQ3pCLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxNQUFNLEVBQUUsQ0FBQTtJQUNqQixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlZmF1bHQgYXMgaXNBZG1pbldpbmRvd3NPcmlnIH0gZnJvbSBcIi4vaXMtYWRtaW4ubWpzXCJcbmltcG9ydCB7IGlzUm9vdCB9IGZyb20gXCIuL3Jvb3QubWpzXCJcblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgcHJvY2VzcyBpcyBydW5uaW5nIGFzIGFkbWluaXN0cmF0b3Igb24gV2luZG93cy5cbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYGpzXG4gKiBpbXBvcnQgeyBpc0FkbWluV2luZG93cyB9IGZyb20gXCJhZG1pbmFcIlxuICpcbiAqIGNvbnNvbGUubG9nKGF3YWl0IGlzQWRtaW5XaW5kb3dzKCkpXG4gKiAvLz0+IGZhbHNlXG4gKiBgYGBcbiAqXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBwcm9jZXNzIGlzIHJ1bm5pbmcgYXMgYWRtaW5pc3RyYXRvci5cbiAqL1xuZXhwb3J0IGNvbnN0IGlzQWRtaW5XaW5kb3dzID0gaXNBZG1pbldpbmRvd3NPcmlnXG5cbi8qKlxuICogRGV0ZWN0IGlmIHRoZSBwcm9jZXNzIGhhcyByb290IHByaXZpbGVnZSBvbiBQb3NpeC5cbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYGpzXG4gKiBpbXBvcnQgeyBpc0FkbWluUG9zaXggfSBmcm9tIFwiYWRtaW5hXCJcbiAqXG4gKiBjb25zb2xlLmxvZyhpc0FkbWluUG9zaXgoKSlcbiAqIC8vPT4gZmFsc2VcbiAqIGBgYFxuICpcbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHByb2Nlc3MgaXMgcnVubmluZyBhcyByb290LlxuICovXG5leHBvcnQgY29uc3QgaXNBZG1pblBvc2l4ID0gaXNSb290XG5cbi8qKlxuICogRGV0ZWN0IGlmIHRoZSBjb2RlIGlzIHJ1bm5pbmcgYXMgYWRtaW4vcm9vdFxuICpcbiAqIE9uIFdpbmRvd3MsIGl0IGNoZWNrcyBmb3IgYWRtaW4gYWNjZXNzLCBhbmQgb24gUG9zaXgsIGl0IGNoZWNrcyBmb3Igcm9vdCBhY2Nlc3NcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYGpzXG4gKiBpbXBvcnQgeyBpc0FkbWluIH0gZnJvbSBcImFkbWluYVwiXG4gKlxuICogY29uc29sZS5sb2coaXNBZG1pbigpKVxuICogLy89PiBmYWxzZVxuICogYGBgXG4gKlxuICogQHJldHVybnMgV2hldGhlciB0aGUgcHJvY2VzcyBpcyBydW5uaW5nIGFzIHJvb3Qgb3IgYWRtaW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0FkbWluKCkge1xuICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiKSB7XG4gICAgcmV0dXJuIGlzQWRtaW5XaW5kb3dzKClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gaXNSb290KClcbiAgfVxufVxuIl19\n\n\nvar $1d016c1eadc2c340$exports = {};\n\n$parcel$export($1d016c1eadc2c340$exports, \"grantUserWriteAccess\", () => $1d016c1eadc2c340$export$4718e061a205eab);\n\n\nasync function $1d016c1eadc2c340$export$4718e061a205eab(path) {\n    if ((process.platform === \"linux\" || process.platform === \"darwin\") && (0, $2e97c29b7add0805$export$316200228f28b8ce)() && process.env.SUDO_USER !== undefined) {\n        const isDirectory = (0, $5eerk$fs).statSync(path).isDirectory();\n        await (0, $2e97c29b7add0805$export$351270479e2eef26)(\"chown\", [\n            ...isDirectory ? [\n                \"-R\"\n            ] : [],\n            process.env.SUDO_USER,\n            path\n        ], (0, $2e97c29b7add0805$export$151aeb0ade3989e1));\n    }\n} //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1hY2Nlc3MubWpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3JjL3VzZXItYWNjZXNzLm10cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNqRSxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFFbkI7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLG9CQUFvQixDQUFDLElBQVk7SUFDckQsSUFDRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDO1FBQy9ELE1BQU0sRUFBRTtRQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFDbkMsQ0FBQztRQUNELE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDbkQsTUFBTSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEVBQUUsa0JBQWtCLENBQUMsQ0FBQTtJQUM1RyxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzU3VkbywgZXhlY1Jvb3QsIGRlZmF1bHRFeGVjT3B0aW9ucyB9IGZyb20gXCIuL3Jvb3QubWpzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnNcIlxuXG4vKipcbiAqIEdpdmUgdGhlIHVzZXIgYWNjZXNzIHRvIHRoZSBnaXZlbiBwYXRoIChhbmQgaXRzIHN1Yi1kaXJlY3RvcmllcyBpZiBhIGRpcmVjdG9yeSkuIEl0IGNoYW5nZXMgdGhlIG93bmVyIHRvIHRoZVxuICogU1VET19VU0VSLiBUaGlzIGFsbG93cyB0aGUgdXNlciB0byB1c2UgdGhlIGZvbGRlciB3aXRob3V0IHN1ZG9cbiAqXG4gKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB0byBnaXZlIHRoZSB1c2VyIGFjY2VzcyB0b1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ3JhbnRVc2VyV3JpdGVBY2Nlc3MocGF0aDogc3RyaW5nKSB7XG4gIGlmIChcbiAgICAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gXCJsaW51eFwiIHx8IHByb2Nlc3MucGxhdGZvcm0gPT09IFwiZGFyd2luXCIpICYmXG4gICAgaXNTdWRvKCkgJiZcbiAgICBwcm9jZXNzLmVudi5TVURPX1VTRVIgIT09IHVuZGVmaW5lZFxuICApIHtcbiAgICBjb25zdCBpc0RpcmVjdG9yeSA9IGZzLnN0YXRTeW5jKHBhdGgpLmlzRGlyZWN0b3J5KClcbiAgICBhd2FpdCBleGVjUm9vdChcImNob3duXCIsIFsuLi4oaXNEaXJlY3RvcnkgPyBbXCItUlwiXSA6IFtdKSwgcHJvY2Vzcy5lbnYuU1VET19VU0VSLCBwYXRoXSwgZGVmYXVsdEV4ZWNPcHRpb25zKVxuICB9XG59XG4iXX0=\n\n\n //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgubWpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3JjL2luZGV4Lm10cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFlBQVksQ0FBQTtBQUMxQixjQUFjLGFBQWEsQ0FBQTtBQUMzQixjQUFjLG1CQUFtQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vcm9vdC5tanNcIlxuZXhwb3J0ICogZnJvbSBcIi4vYWRtaW4ubWpzXCJcbmV4cG9ydCAqIGZyb20gXCIuL3VzZXItYWNjZXNzLm1qc1wiXG4iXX0=\n\n\nexport {$2e97c29b7add0805$export$7683bf1311d8252 as hasSudo, $2e97c29b7add0805$export$e3140dc7d0c35e48 as isRoot, $2e97c29b7add0805$export$316200228f28b8ce as isSudo, $2e97c29b7add0805$export$d976d47922ae9667 as prependSudo, $2e97c29b7add0805$export$151aeb0ade3989e1 as defaultExecOptions, $2e97c29b7add0805$export$58f152936f209932 as execRootSync, $2e97c29b7add0805$export$351270479e2eef26 as execRoot, $e6e54fba4e25d332$export$36ad181701cee597 as isAdminWindows, $e6e54fba4e25d332$export$2ebf12717e6b5bb8 as isAdminPosix, $e6e54fba4e25d332$export$fc970ed23da99565 as isAdmin, $1d016c1eadc2c340$export$4718e061a205eab as grantUserWriteAccess};\n//# sourceMappingURL=index.node.mjs.map\n","export * from \"./root.mjs\"\nexport * from \"./admin.mjs\"\nexport * from \"./user-access.mjs\"\n","import which from \"which\"\nimport {\n  execa,\n  execaCommand,\n  execaCommandSync,\n  execaSync,\n  type SyncOptions as ExecaSyncOptions,\n  type ExecaSyncReturnValue,\n  type Options as ExecaOptions,\n  type ExecaChildProcess,\n} from \"execa\"\n\n/** Detect if sudo is available */\nexport function hasSudo(): boolean {\n  return which.sync(\"sudo\", { nothrow: true }) !== null\n}\n\n/**\n * Detect if the process has root privilege on Posix.\n *\n * @example\n *\n * ```js\n * import { isRoot } from \"admina\"\n *\n * console.log(isRoot())\n * //=> false\n * ```\n *\n * @returns Whether the process is running as root.\n */\nexport function isRoot(): boolean {\n  // TODO not all CI systems are root\n  return process.getuid?.() === 0 || Boolean(process.env.CI)\n}\n\n/** Detect if sudo is available and the user has root privileges */\nexport function isSudo(): boolean {\n  return isRoot() && hasSudo()\n}\n\n/** Prepend `sudo` to the command if sudo is available */\nexport function prependSudo(command: string) {\n  if (isSudo()) {\n    return `sudo ${command}`\n  }\n  return command\n}\n\n/** Default exec options `{ stdio: \"inherit\", shell: true }` */\nexport const defaultExecOptions: ExecaSyncOptions = {\n  stdio: \"inherit\",\n  shell: true,\n}\n\n/**\n * Execute a command as root if sudo is available. Otherwise executes the command normally without sudo.\n *\n * @param program The program to spawn\n * @param args The command arguments\n * @param execOptions The options passed to `execa`. Defaults to `{ stdio: \"inherit\", shell: true }`\n * @returns The execution result\n */\nexport function execRootSync(\n  program: string,\n  args: string[] = [],\n  execOptions: ExecaSyncOptions = defaultExecOptions,\n): ExecaSyncReturnValue<string> {\n  if (isSudo()) {\n    const command = getSudoCommand(program, args)\n    return execaCommandSync(command, execOptions)\n  } else {\n    return execaSync(program, args, execOptions)\n  }\n}\n\n/**\n * Asynchronously execute a command as root if sudo is available. Otherwise executes the command normally without sudo.\n *\n * @param program The program to spawn\n * @param args The command arguments\n * @param execOptions The options passed to `execa`. Defaults to `{ stdio: \"inherit\", shell: true }`\n * @returns A promise to the execution result\n */\nexport function execRoot(\n  program: string,\n  args: string[] = [],\n  execOptions: ExecaOptions = defaultExecOptions,\n): ExecaChildProcess<string> {\n  if (isSudo()) {\n    const command = getSudoCommand(program, args)\n    return execaCommand(command, execOptions)\n  } else {\n    return execa(program, args, execOptions)\n  }\n}\n\nfunction getSudoCommand(program: string, args: string[]) {\n  return `sudo ${quote([program, ...args]).join(\" \")}`\n}\n\nfunction quote(strings: string[]) {\n  return strings.map((str) => (isQuoted(str) ? str : `'${str}'`))\n}\n\nfunction isQuoted(str: string) {\n  if (str.length < 2) {\n    return false\n  }\n  const first = str[0]\n  const last = str[str.length - 1]\n  return (first === \"'\" && last === \"'\") || (first === '\"' && last === '\"')\n}\n","import { default as isAdminWindowsOrig } from \"./is-admin.mjs\"\nimport { isRoot } from \"./root.mjs\"\n\n/**\n * Check if the process is running as administrator on Windows.\n *\n * @example\n *\n * ```js\n * import { isAdminWindows } from \"admina\"\n *\n * console.log(await isAdminWindows())\n * //=> false\n * ```\n *\n * @returns Whether the process is running as administrator.\n */\nexport const isAdminWindows = isAdminWindowsOrig\n\n/**\n * Detect if the process has root privilege on Posix.\n *\n * @example\n *\n * ```js\n * import { isAdminPosix } from \"admina\"\n *\n * console.log(isAdminPosix())\n * //=> false\n * ```\n *\n * @returns Whether the process is running as root.\n */\nexport const isAdminPosix = isRoot\n\n/**\n * Detect if the code is running as admin/root\n *\n * On Windows, it checks for admin access, and on Posix, it checks for root access\n *\n * @example\n *\n * ```js\n * import { isAdmin } from \"admina\"\n *\n * console.log(isAdmin())\n * //=> false\n * ```\n *\n * @returns Whether the process is running as root or admin.\n */\nexport function isAdmin() {\n  if (process.platform === \"win32\") {\n    return isAdminWindows()\n  } else {\n    return isRoot()\n  }\n}\n","// From `is-admin`: updated execa\n\nimport { execa } from \"execa\"\n\n// https://stackoverflow.com/a/28268802\nasync function testFltmc() {\n  try {\n    await execa(\"fltmc\")\n    return true\n  } catch {\n    return false\n  }\n}\n\nexport default async function isAdmin() {\n  if (process.platform !== \"win32\") {\n    return false\n  }\n\n  try {\n    // https://stackoverflow.com/a/21295806/1641422\n    await execa(\"fsutil\", [\"dirty\", \"query\", process.env.systemdrive ?? \"\"])\n    return true\n  } catch (error) {\n    if ((error as { code?: string }).code === \"ENOENT\") {\n      return testFltmc()\n    }\n\n    return false\n  }\n}\n","import { isSudo, execRoot, defaultExecOptions } from \"./root.mjs\"\nimport fs from \"fs\"\n\n/**\n * Give the user access to the given path (and its sub-directories if a directory). It changes the owner to the\n * SUDO_USER. This allows the user to use the folder without sudo\n *\n * @param path The path to give the user access to\n */\nexport async function grantUserWriteAccess(path: string) {\n  if (\n    (process.platform === \"linux\" || process.platform === \"darwin\") &&\n    isSudo() &&\n    process.env.SUDO_USER !== undefined\n  ) {\n    const isDirectory = fs.statSync(path).isDirectory()\n    await execRoot(\"chown\", [...(isDirectory ? [\"-R\"] : []), process.env.SUDO_USER, path], defaultExecOptions)\n  }\n}\n"],"names":["$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","$2e97c29b7add0805$export$7683bf1311d8252","$5eerk$which","sync","nothrow","$2e97c29b7add0805$export$e3140dc7d0c35e48","process","getuid","Boolean","env","CI","$2e97c29b7add0805$export$316200228f28b8ce","$2e97c29b7add0805$export$d976d47922ae9667","command","$2e97c29b7add0805$export$58f152936f209932","program","args","execOptions","$2e97c29b7add0805$export$151aeb0ade3989e1","$5eerk$execaCommandSync","$2e97c29b7add0805$var$getSudoCommand","$5eerk$execaSync","$2e97c29b7add0805$export$351270479e2eef26","$5eerk$execaCommand","$5eerk$execa","$2e97c29b7add0805$var$quote","join","strings","map","str","$2e97c29b7add0805$var$isQuoted","length","first","last","$515243e4fb3e8732$var$testFltmc","$515243e4fb3e8732$export$2e2bcd8739ae039","platform","systemdrive","error","code","$e6e54fba4e25d332$export$fc970ed23da99565","$e6e54fba4e25d332$export$36ad181701cee597","$1d016c1eadc2c340$export$4718e061a205eab","path","undefined","SUDO_USER","isDirectory","$5eerk$fs","statSync","$e6e54fba4e25d332$exports","$2e97c29b7add0805$exports","execaCommandSync","execaSync","execaCommand","execa","stdio","shell","$e6e54fba4e25d332$export$2ebf12717e6b5bb8","hasSudo","isRoot","isSudo","prependSudo","defaultExecOptions","execRootSync","execRoot","isAdminWindows","isAdminPosix","isAdmin","grantUserWriteAccess"],"version":3,"file":"index.node.mjs.map","sourceRoot":"../"}