18d3f3824SCedric van Putten"use strict";
28d3f3824SCedric van Puttenvar __importDefault = (this && this.__importDefault) || function (mod) {
38d3f3824SCedric van Putten    return (mod && mod.__esModule) ? mod : { "default": mod };
48d3f3824SCedric van Putten};
58d3f3824SCedric van PuttenObject.defineProperty(exports, "__esModule", { value: true });
68d3f3824SCedric van Puttenexports.BasePackageManager = void 0;
78d3f3824SCedric van Puttenconst spawn_async_1 = __importDefault(require("@expo/spawn-async"));
88d3f3824SCedric van Puttenconst assert_1 = __importDefault(require("assert"));
98d3f3824SCedric van Puttenconst fs_1 = __importDefault(require("fs"));
108d3f3824SCedric van Puttenconst path_1 = __importDefault(require("path"));
118d3f3824SCedric van Puttenclass BasePackageManager {
12*1a3a1db5SEvan Bacon    silent;
13*1a3a1db5SEvan Bacon    log;
14*1a3a1db5SEvan Bacon    options;
158d3f3824SCedric van Putten    constructor({ silent, log, env = process.env, ...options } = {}) {
168d3f3824SCedric van Putten        this.silent = !!silent;
178d3f3824SCedric van Putten        this.log = log ?? (!silent ? console.log : undefined);
188d3f3824SCedric van Putten        this.options = {
19efdcf92fSCedric van Putten            stdio: silent ? undefined : 'inherit',
208d3f3824SCedric van Putten            ...options,
218d3f3824SCedric van Putten            env: { ...this.getDefaultEnvironment(), ...env },
228d3f3824SCedric van Putten        };
238d3f3824SCedric van Putten    }
248d3f3824SCedric van Putten    /** Get the default environment variables used when running the package manager. */
258d3f3824SCedric van Putten    getDefaultEnvironment() {
268d3f3824SCedric van Putten        return {
278d3f3824SCedric van Putten            ADBLOCK: '1',
288d3f3824SCedric van Putten            DISABLE_OPENCOLLECTIVE: '1',
298d3f3824SCedric van Putten        };
308d3f3824SCedric van Putten    }
318d3f3824SCedric van Putten    /** Ensure the CWD is set to a non-empty string */
328d3f3824SCedric van Putten    ensureCwdDefined(method) {
338d3f3824SCedric van Putten        const cwd = this.options.cwd?.toString();
348d3f3824SCedric van Putten        const className = this.constructor.name;
358d3f3824SCedric van Putten        const methodName = method ? `.${method}` : '';
368d3f3824SCedric van Putten        (0, assert_1.default)(cwd, `cwd is required for ${className}${methodName}`);
378d3f3824SCedric van Putten        return cwd;
388d3f3824SCedric van Putten    }
398d3f3824SCedric van Putten    runAsync(command) {
408d3f3824SCedric van Putten        this.log?.(`> ${this.name} ${command.join(' ')}`);
41efdcf92fSCedric van Putten        return (0, spawn_async_1.default)(this.bin, command, this.options);
428d3f3824SCedric van Putten    }
438d3f3824SCedric van Putten    async versionAsync() {
448d3f3824SCedric van Putten        return await this.runAsync(['--version']).then(({ stdout }) => stdout.trim());
458d3f3824SCedric van Putten    }
468d3f3824SCedric van Putten    async getConfigAsync(key) {
478d3f3824SCedric van Putten        return await this.runAsync(['config', 'get', key]).then(({ stdout }) => stdout.trim());
488d3f3824SCedric van Putten    }
498d3f3824SCedric van Putten    async removeLockfileAsync() {
508d3f3824SCedric van Putten        const cwd = this.ensureCwdDefined('removeLockFile');
518d3f3824SCedric van Putten        const filePath = path_1.default.join(cwd, this.lockFile);
528d3f3824SCedric van Putten        await fs_1.default.promises.rm(filePath, { force: true });
538d3f3824SCedric van Putten    }
548d3f3824SCedric van Putten    installAsync(flags = []) {
558d3f3824SCedric van Putten        return this.runAsync(['install', ...flags]);
568d3f3824SCedric van Putten    }
578d3f3824SCedric van Putten    async uninstallAsync() {
588d3f3824SCedric van Putten        const cwd = this.ensureCwdDefined('uninstallAsync');
598d3f3824SCedric van Putten        const modulesPath = path_1.default.join(cwd, 'node_modules');
608d3f3824SCedric van Putten        await fs_1.default.promises.rm(modulesPath, { force: true, recursive: true });
618d3f3824SCedric van Putten    }
628d3f3824SCedric van Putten}
638d3f3824SCedric van Puttenexports.BasePackageManager = BasePackageManager;
648d3f3824SCedric van Putten//# sourceMappingURL=BasePackageManager.js.map