1"use strict"; 2Object.defineProperty(exports, "__esModule", { value: true }); 3exports.YarnPackageManager = void 0; 4const BasePackageManager_1 = require("./BasePackageManager"); 5const nodeWorkspaces_1 = require("../utils/nodeWorkspaces"); 6const spawn_1 = require("../utils/spawn"); 7const yarn_1 = require("../utils/yarn"); 8class YarnPackageManager extends BasePackageManager_1.BasePackageManager { 9 constructor() { 10 super(...arguments); 11 this.name = 'yarn'; 12 this.bin = 'yarnpkg'; 13 this.lockFile = nodeWorkspaces_1.YARN_LOCK_FILE; 14 } 15 /** Check if Yarn is running in offline mode, and add the `--offline` flag */ 16 async withOfflineFlagAsync(namesOrFlags) { 17 return (await (0, yarn_1.isYarnOfflineAsync)()) ? [...namesOrFlags, '--offline'] : namesOrFlags; 18 } 19 workspaceRoot() { 20 const root = (0, nodeWorkspaces_1.findYarnOrNpmWorkspaceRoot)(this.ensureCwdDefined('workspaceRoot')); 21 if (root) { 22 return new YarnPackageManager({ 23 ...this.options, 24 silent: this.silent, 25 log: this.log, 26 cwd: root, 27 }); 28 } 29 return null; 30 } 31 installAsync(flags = []) { 32 return (0, spawn_1.createPendingSpawnAsync)(() => this.withOfflineFlagAsync(['install']), (args) => this.runAsync([...args, ...flags])); 33 } 34 addAsync(namesOrFlags = []) { 35 if (!namesOrFlags.length) { 36 return this.installAsync(); 37 } 38 return (0, spawn_1.createPendingSpawnAsync)(() => this.withOfflineFlagAsync(['add', ...namesOrFlags]), (args) => this.runAsync(args)); 39 } 40 addDevAsync(namesOrFlags = []) { 41 if (!namesOrFlags.length) { 42 return this.installAsync(); 43 } 44 return (0, spawn_1.createPendingSpawnAsync)(() => this.withOfflineFlagAsync(['add', '--dev', ...namesOrFlags]), (args) => this.runAsync(args)); 45 } 46 addGlobalAsync(namesOrFlags = []) { 47 if (!namesOrFlags.length) { 48 return this.installAsync(); 49 } 50 return (0, spawn_1.createPendingSpawnAsync)(() => this.withOfflineFlagAsync(['global', 'add', ...namesOrFlags]), (args) => this.runAsync(args)); 51 } 52 removeAsync(namesOrFlags) { 53 return this.runAsync(['remove', ...namesOrFlags]); 54 } 55 removeDevAsync(namesOrFlags) { 56 return this.runAsync(['remove', ...namesOrFlags]); 57 } 58 removeGlobalAsync(namesOrFlags) { 59 return this.runAsync(['global', 'remove', ...namesOrFlags]); 60 } 61} 62exports.YarnPackageManager = YarnPackageManager; 63//# sourceMappingURL=YarnPackageManager.js.map