JezK
Edit File: upgrade.js.map
{"version":3,"file":"upgrade.js","names":["basicSemverOperatorRegex","RegExp","validScopeRegex","setUserRequestedPackageVersions","deps","args","latest","packagePatterns","reporter","forEach","requestedPattern","found","normalized","normalizePattern","hasVersion","packagePattern","packageNormalized","pattern","name","newPattern","range","dep","upgradeTo","verbose","lang","push","wanted","url","hint","current","workspaceName","workspaceLoc","getRangeOperator","version","result","exec","buildPatternToUpgradeTo","flags","toLatest","toVersion","rangeOperator","caret","tilde","exact","scopeFilter","test","scope","startsWith","cleanLockfile","lockfile","cleanDepFromLockfile","depth","lockManifest","getLocked","some","dependencies","Object","assign","optionalDependencies","depPatterns","keys","map","key","removePattern","patterns","setFlags","commander","description","usage","option","hasWrapper","requireLockfile","run","config","addArgs","upgradeAll","length","addFlags","force","ignoreWorkspaceRootCheck","workspaceRootIsCwd","cwd","lockfileFolder","Lockfile","fromDirectory","getOutdated","install","Install","fetchRequestFromCwd","requests","filter","depName","add","Add","init","outdatedFieldName","normalizeScope","endsWith","versionFilter","PackageRequest","getOutdatedPackages","bind"],"sourceRoot":"../../../src","sources":["cli/commands/upgrade.js"],"sourcesContent":["/* @flow */\n\nimport type {Dependency} from '../../types.js';\nimport type {Reporter} from '../../reporters/index.js';\nimport type Config from '../../config.js';\nimport type {DependencyRequestPatterns} from '../../types.js';\nimport {Add} from './add.js';\nimport Lockfile from '../../lockfile';\nimport PackageRequest from '../../package-request.js';\nimport {normalizePattern} from '../../util/normalize-pattern.js';\nimport {Install} from './install.js';\n\n// used to detect whether a semver range is simple enough to preserve when doing a --latest upgrade.\n// when not matched, the upgraded version range will default to `^` the same as the `add` command would.\nconst basicSemverOperatorRegex = new RegExp('^(\\\\^|~|>=|<=)?[^ |&,]+$');\n\n// used to detect if a passed parameter is a scope or a package name.\nconst validScopeRegex = /^@[a-zA-Z0-9-][a-zA-Z0-9_.-]*\\/$/;\n\n// If specific versions were requested for packages, override what getOutdated reported as the latest to install\n// Also add ones that are missing, since the requested packages may not have been outdated at all.\nfunction setUserRequestedPackageVersions(\n deps: Array<Dependency>,\n args: Array<string>,\n latest: boolean,\n packagePatterns,\n reporter: Reporter,\n) {\n args.forEach(requestedPattern => {\n let found = false;\n let normalized = normalizePattern(requestedPattern);\n\n // if the user specified a package name without a version range, then that implies \"latest\"\n // but if the latest flag is not passed then we need to use the version range from package.json\n if (!normalized.hasVersion && !latest) {\n packagePatterns.forEach(packagePattern => {\n const packageNormalized = normalizePattern(packagePattern.pattern);\n if (packageNormalized.name === normalized.name) {\n normalized = packageNormalized;\n }\n });\n }\n\n const newPattern = `${normalized.name}@${normalized.range}`;\n\n // if this dependency is already in the outdated list,\n // just update the upgradeTo to whatever version the user requested.\n deps.forEach(dep => {\n if (normalized.hasVersion && dep.name === normalized.name) {\n found = true;\n dep.upgradeTo = newPattern;\n reporter.verbose(reporter.lang('verboseUpgradeBecauseRequested', requestedPattern, newPattern));\n }\n });\n\n // if this dependency was not in the outdated list,\n // then add a new entry\n if (normalized.hasVersion && !found) {\n deps.push({\n name: normalized.name,\n wanted: '',\n latest: '',\n url: '',\n hint: '',\n range: '',\n current: '',\n upgradeTo: newPattern,\n workspaceName: '',\n workspaceLoc: '',\n });\n reporter.verbose(reporter.lang('verboseUpgradeBecauseRequested', requestedPattern, newPattern));\n }\n });\n}\n\n// this function attempts to determine the range operator on the semver range.\n// this will only handle the simple cases of a semver starting with '^', '~', '>=', '<=', or an exact version.\n// \"exotic\" semver ranges will not be handled.\nfunction getRangeOperator(version): string {\n const result = basicSemverOperatorRegex.exec(version);\n return result ? result[1] || '' : '^';\n}\n\n// Attempt to preserve the range operator from the package.json specified semver range.\n// If an explicit operator was specified using --exact, --tilde, --caret, then that will take precedence.\nfunction buildPatternToUpgradeTo(dep, flags): string {\n if (dep.latest === 'exotic') {\n return `${dep.name}@${dep.url}`;\n }\n\n const toLatest = flags.latest;\n const toVersion = toLatest ? dep.latest : dep.range;\n let rangeOperator = '';\n\n if (toLatest) {\n if (flags.caret) {\n rangeOperator = '^';\n } else if (flags.tilde) {\n rangeOperator = '~';\n } else if (flags.exact) {\n rangeOperator = '';\n } else {\n rangeOperator = getRangeOperator(dep.range);\n }\n }\n\n return `${dep.name}@${rangeOperator}${toVersion}`;\n}\n\nfunction scopeFilter(flags: Object, dep: Dependency): boolean {\n if (validScopeRegex.test(flags.scope)) {\n return dep.name.startsWith(flags.scope);\n }\n return true;\n}\n\n// Remove deps being upgraded from the lockfile, or else Add will use the already-installed version\n// instead of the latest for the range.\n// We do this recursively so that when Yarn installs the potentially updated transitive deps,\n// it may upgrade them too instead of just using the \"locked\" version from the lockfile.\n// Transitive dependencies that are also a direct dependency are skipped.\nexport function cleanLockfile(\n lockfile: Lockfile,\n deps: Array<Dependency>,\n packagePatterns: DependencyRequestPatterns,\n reporter: Reporter,\n) {\n function cleanDepFromLockfile(pattern: string, depth: number) {\n const lockManifest = lockfile.getLocked(pattern);\n if (!lockManifest || (depth > 1 && packagePatterns.some(packagePattern => packagePattern.pattern === pattern))) {\n reporter.verbose(reporter.lang('verboseUpgradeNotUnlocking', pattern));\n return;\n }\n\n const dependencies = Object.assign({}, lockManifest.dependencies || {}, lockManifest.optionalDependencies || {});\n const depPatterns = Object.keys(dependencies).map(key => `${key}@${dependencies[key]}`);\n reporter.verbose(reporter.lang('verboseUpgradeUnlocking', pattern));\n lockfile.removePattern(pattern);\n depPatterns.forEach(pattern => cleanDepFromLockfile(pattern, depth + 1));\n }\n\n const patterns = deps.map(dep => dep.upgradeTo);\n patterns.forEach(pattern => cleanDepFromLockfile(pattern, 1));\n}\n\nexport function setFlags(commander: Object) {\n commander.description('Upgrades packages to their latest version based on the specified range.');\n commander.usage('upgrade [flags]');\n commander.option('-S, --scope <scope>', 'upgrade packages under the specified scope');\n commander.option('-L, --latest', 'list the latest version of packages, ignoring version ranges in package.json');\n commander.option('-E, --exact', 'install exact version. Only used when --latest is specified.');\n commander.option('-P, --pattern [pattern]', 'upgrade packages that match pattern');\n commander.option(\n '-T, --tilde',\n 'install most recent release with the same minor version. Only used when --latest is specified.',\n );\n commander.option(\n '-C, --caret',\n 'install most recent release with the same major version. Only used when --latest is specified.',\n );\n commander.option('-A, --audit', 'Run vulnerability audit on installed packages');\n}\n\nexport function hasWrapper(commander: Object, args: Array<string>): boolean {\n return true;\n}\n\nexport const requireLockfile = true;\n\nexport async function run(config: Config, reporter: Reporter, commander: Object, flags: Object, args: Array<string>): Promise<void> {\n let addArgs = [];\n const upgradeAll = args.length === 0 && typeof flags.scope === 'undefined' && typeof flags.pattern === 'undefined';\n const addFlags = Object.assign({}, flags, {\n force: true,\n ignoreWorkspaceRootCheck: true,\n workspaceRootIsCwd: config.cwd === config.lockfileFolder,\n });\n const lockfile = await Lockfile.fromDirectory(config.lockfileFolder, reporter);\n const deps = await getOutdated(config, reporter, flags, lockfile, args);\n const install = new Install(flags, config, reporter, lockfile);\n const {requests: packagePatterns} = await install.fetchRequestFromCwd();\n\n setUserRequestedPackageVersions(deps, args, flags.latest, packagePatterns, reporter);\n cleanLockfile(lockfile, deps, packagePatterns, reporter);\n addArgs = deps.map(dep => dep.upgradeTo);\n\n if (flags.scope && validScopeRegex.test(flags.scope)) {\n addArgs = addArgs.filter(depName => depName.startsWith(flags.scope));\n }\n\n const add = new Add(addArgs, addFlags, config, reporter, upgradeAll ? new Lockfile() : lockfile);\n await add.init();\n}\n\nexport async function getOutdated(\n config: Config,\n reporter: Reporter,\n flags: Object,\n lockfile: Lockfile,\n patterns: Array<string>,\n): Promise<Array<Dependency>> {\n const install = new Install(flags, config, reporter, lockfile);\n const outdatedFieldName = flags.latest ? 'latest' : 'wanted';\n\n // ensure scope is of the form `@scope/`\n const normalizeScope = function() {\n if (flags.scope) {\n if (!flags.scope.startsWith('@')) {\n flags.scope = '@' + flags.scope;\n }\n\n if (!flags.scope.endsWith('/')) {\n flags.scope += '/';\n }\n }\n };\n\n const versionFilter = function(dep: Dependency): boolean {\n return dep.current !== dep[outdatedFieldName];\n };\n\n if (!flags.latest) {\n // these flags only have an affect when --latest is used\n flags.tilde = false;\n flags.exact = false;\n flags.caret = false;\n }\n\n normalizeScope();\n\n const deps = (await PackageRequest.getOutdatedPackages(lockfile, install, config, reporter, patterns, flags))\n .filter(versionFilter)\n .filter(scopeFilter.bind(this, flags));\n deps.forEach(dep => {\n dep.upgradeTo = buildPatternToUpgradeTo(dep, flags);\n reporter.verbose(reporter.lang('verboseUpgradeBecauseOutdated', dep.name, dep.upgradeTo));\n });\n\n return deps;\n}\n"],"mappings":"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"}