"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
};
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("@pnpm/utils");
const path = require("path");
const pnpmPkgJson_1 = require("../pnpmPkgJson");
const defaults = (opts) => __awaiter(this, void 0, void 0, function* () {
    const packageManager = opts.packageManager || {
        name: pnpmPkgJson_1.default.name,
        version: pnpmPkgJson_1.default.version,
    };
    const prefix = opts.prefix || process.cwd();
    const shrinkwrapDirectory = opts.shrinkwrapDirectory || prefix;
    return {
        bin: path.join(prefix, 'node_modules', '.bin'),
        force: false,
        forceSharedShrinkwrap: false,
        independentLeaves: false,
        lock: true,
        locks: path.join(opts.store, '_locks'),
        lockStaleDuration: 5 * 60 * 1000,
        packageManager,
        prefix,
        registries: utils_1.DEFAULT_REGISTRIES,
        shamefullyFlatten: false,
        shrinkwrap: true,
        shrinkwrapDirectory,
        store: opts.store,
        storeController: opts.storeController,
    };
});
exports.default = (opts) => __awaiter(this, void 0, void 0, function* () {
    if (opts) {
        for (const key in opts) {
            if (opts[key] === undefined) {
                delete opts[key];
            }
        }
    }
    const defaultOpts = yield defaults(opts);
    const extendedOpts = Object.assign({}, defaultOpts, opts, { store: defaultOpts.store });
    extendedOpts.registries = utils_1.normalizeRegistries(extendedOpts.registries);
    return extendedOpts;
});
//# sourceMappingURL=extendUninstallOptions.js.map