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 name = 'yarn'; 10 bin = 'yarnpkg'; 11 lockFile = nodeWorkspaces_1.YARN_LOCK_FILE; 12 /** Check if Yarn is running in offline mode, and add the `--offline` flag */ 13 async withOfflineFlagAsync(namesOrFlags) { 14 return (await (0, yarn_1.isYarnOfflineAsync)()) ? [...namesOrFlags, '--offline'] : namesOrFlags; 15 } 16 workspaceRoot() { 17 const root = (0, nodeWorkspaces_1.findYarnOrNpmWorkspaceRoot)(this.ensureCwdDefined('workspaceRoot')); 18 if (root) { 19 return new YarnPackageManager({ 20 ...this.options, 21 silent: this.silent, 22 log: this.log, 23 cwd: root, 24 }); 25 } 26 return null; 27 } 28 installAsync(flags = []) { 29 return (0, spawn_1.createPendingSpawnAsync)(() => this.withOfflineFlagAsync(['install']), (args) => this.runAsync([...args, ...flags])); 30 } 31 addAsync(namesOrFlags = []) { 32 if (!namesOrFlags.length) { 33 return this.installAsync(); 34 } 35 return (0, spawn_1.createPendingSpawnAsync)(() => this.withOfflineFlagAsync(['add', ...namesOrFlags]), (args) => this.runAsync(args)); 36 } 37 addDevAsync(namesOrFlags = []) { 38 if (!namesOrFlags.length) { 39 return this.installAsync(); 40 } 41 return (0, spawn_1.createPendingSpawnAsync)(() => this.withOfflineFlagAsync(['add', '--dev', ...namesOrFlags]), (args) => this.runAsync(args)); 42 } 43 addGlobalAsync(namesOrFlags = []) { 44 if (!namesOrFlags.length) { 45 return this.installAsync(); 46 } 47 return (0, spawn_1.createPendingSpawnAsync)(() => this.withOfflineFlagAsync(['global', 'add', ...namesOrFlags]), (args) => this.runAsync(args)); 48 } 49 removeAsync(namesOrFlags) { 50 return this.runAsync(['remove', ...namesOrFlags]); 51 } 52 removeDevAsync(namesOrFlags) { 53 return this.runAsync(['remove', ...namesOrFlags]); 54 } 55 removeGlobalAsync(namesOrFlags) { 56 return this.runAsync(['global', 'remove', ...namesOrFlags]); 57 } 58} 59exports.YarnPackageManager = YarnPackageManager; 60//# sourceMappingURL=YarnPackageManager.js.map