renovate 42.19.10 → 42.20.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/dist/config/migrate-validate.js +1 -2
  2. package/dist/config/migrate-validate.js.map +1 -1
  3. package/dist/config/migration.js +0 -1
  4. package/dist/config/migration.js.map +1 -1
  5. package/dist/config/options/index.js +1 -1
  6. package/dist/config/options/index.js.map +1 -1
  7. package/dist/instrumentation/index.js +3 -4
  8. package/dist/instrumentation/index.js.map +1 -1
  9. package/dist/modules/datasource/crate/index.js +1 -1
  10. package/dist/modules/datasource/crate/index.js.map +1 -1
  11. package/dist/modules/datasource/docker/common.js +6 -0
  12. package/dist/modules/datasource/docker/common.js.map +1 -1
  13. package/dist/modules/datasource/docker/schema.js +1 -1
  14. package/dist/modules/datasource/docker/schema.js.map +1 -1
  15. package/dist/modules/datasource/go/index.js +1 -2
  16. package/dist/modules/datasource/go/index.js.map +1 -1
  17. package/dist/modules/datasource/maven/index.js +2 -2
  18. package/dist/modules/datasource/maven/index.js.map +1 -1
  19. package/dist/modules/datasource/maven/util.js +2 -2
  20. package/dist/modules/datasource/maven/util.js.map +1 -1
  21. package/dist/modules/manager/bazel/artifacts.js +2 -2
  22. package/dist/modules/manager/bazel/artifacts.js.map +1 -1
  23. package/dist/modules/manager/maven-wrapper/artifacts.js +2 -2
  24. package/dist/modules/manager/maven-wrapper/artifacts.js.map +1 -1
  25. package/dist/modules/manager/npm/extract/common/package-file.js +2 -2
  26. package/dist/modules/manager/npm/extract/common/package-file.js.map +1 -1
  27. package/dist/modules/manager/npm/extract/yarn.js +2 -2
  28. package/dist/modules/manager/npm/extract/yarn.js.map +1 -1
  29. package/dist/modules/manager/npm/post-update/index.js +14 -18
  30. package/dist/modules/manager/npm/post-update/index.js.map +1 -1
  31. package/dist/modules/manager/npm/post-update/npm.js +4 -4
  32. package/dist/modules/manager/npm/post-update/npm.js.map +1 -1
  33. package/dist/modules/manager/npm/post-update/pnpm.js +4 -4
  34. package/dist/modules/manager/npm/post-update/pnpm.js.map +1 -1
  35. package/dist/modules/manager/npm/post-update/yarn.js +6 -6
  36. package/dist/modules/manager/npm/post-update/yarn.js.map +1 -1
  37. package/dist/modules/manager/npm/update/dependency/index.js +3 -4
  38. package/dist/modules/manager/npm/update/dependency/index.js.map +1 -1
  39. package/dist/modules/manager/npm/update/dependency/pnpm.js +2 -2
  40. package/dist/modules/manager/npm/update/dependency/pnpm.js.map +1 -1
  41. package/dist/modules/manager/npm/update/index.js +1 -0
  42. package/dist/modules/manager/npm/update/index.js.map +1 -1
  43. package/dist/modules/manager/npm/update/locked-dependency/common/parent-version.js +8 -8
  44. package/dist/modules/manager/npm/update/locked-dependency/common/parent-version.js.map +1 -1
  45. package/dist/modules/manager/npm/update/locked-dependency/package-lock/dep-constraints.js +2 -2
  46. package/dist/modules/manager/npm/update/locked-dependency/package-lock/dep-constraints.js.map +1 -1
  47. package/dist/modules/manager/npm/update/locked-dependency/package-lock/index.js +5 -5
  48. package/dist/modules/manager/npm/update/locked-dependency/package-lock/index.js.map +1 -1
  49. package/dist/modules/manager/npm/update/locked-dependency/yarn-lock/get-locked.js +4 -4
  50. package/dist/modules/manager/npm/update/locked-dependency/yarn-lock/get-locked.js.map +1 -1
  51. package/dist/modules/manager/npm/update/locked-dependency/yarn-lock/index.js +2 -2
  52. package/dist/modules/manager/npm/update/locked-dependency/yarn-lock/index.js.map +1 -1
  53. package/dist/modules/manager/npm/update/locked-dependency/yarn-lock/replace.js +2 -2
  54. package/dist/modules/manager/npm/update/locked-dependency/yarn-lock/replace.js.map +1 -1
  55. package/dist/modules/manager/npm/update/package-version/index.js +1 -2
  56. package/dist/modules/manager/npm/update/package-version/index.js.map +1 -1
  57. package/dist/modules/manager/npm/utils.js +8 -8
  58. package/dist/modules/manager/npm/utils.js.map +1 -1
  59. package/dist/modules/platform/azure/azure-helper.js +2 -2
  60. package/dist/modules/platform/azure/azure-helper.js.map +1 -1
  61. package/dist/modules/platform/azure/index.js +14 -14
  62. package/dist/modules/platform/azure/index.js.map +1 -1
  63. package/dist/modules/platform/bitbucket/comments.js +4 -4
  64. package/dist/modules/platform/bitbucket/comments.js.map +1 -1
  65. package/dist/modules/platform/bitbucket/index.js +31 -31
  66. package/dist/modules/platform/bitbucket/index.js.map +1 -1
  67. package/dist/modules/platform/bitbucket/utils.js +2 -2
  68. package/dist/modules/platform/bitbucket/utils.js.map +1 -1
  69. package/dist/modules/platform/bitbucket-server/index.js +32 -34
  70. package/dist/modules/platform/bitbucket-server/index.js.map +1 -1
  71. package/dist/modules/platform/bitbucket-server/utils.js +2 -4
  72. package/dist/modules/platform/bitbucket-server/utils.js.map +1 -1
  73. package/dist/modules/platform/codecommit/codecommit-client.js +6 -6
  74. package/dist/modules/platform/codecommit/codecommit-client.js.map +1 -1
  75. package/dist/modules/platform/codecommit/index.js +24 -24
  76. package/dist/modules/platform/codecommit/index.js.map +1 -1
  77. package/dist/modules/platform/gitea/index.js +4 -4
  78. package/dist/modules/platform/gitea/index.js.map +1 -1
  79. package/dist/modules/platform/github/index.js +68 -68
  80. package/dist/modules/platform/github/index.js.map +1 -1
  81. package/dist/modules/platform/github/massage-markdown-links.js +2 -2
  82. package/dist/modules/platform/github/massage-markdown-links.js.map +1 -1
  83. package/dist/modules/platform/github/pr.js +2 -2
  84. package/dist/modules/platform/github/pr.js.map +1 -1
  85. package/dist/modules/platform/github/schema.js +1 -2
  86. package/dist/modules/platform/github/schema.js.map +1 -1
  87. package/dist/modules/platform/gitlab/index.js +29 -30
  88. package/dist/modules/platform/gitlab/index.js.map +1 -1
  89. package/dist/modules/platform/utils/pr-body.js +7 -3
  90. package/dist/modules/platform/utils/pr-body.js.map +1 -1
  91. package/dist/proxy.js +1 -2
  92. package/dist/proxy.js.map +1 -1
  93. package/dist/util/cache/package/index.js +2 -2
  94. package/dist/util/cache/package/index.js.map +1 -1
  95. package/dist/util/cache/package/namespaces.js +1 -1
  96. package/dist/util/cache/package/namespaces.js.map +1 -1
  97. package/dist/util/git/error.js +5 -4
  98. package/dist/util/git/error.js.map +1 -1
  99. package/dist/util/git/index.js +10 -12
  100. package/dist/util/git/index.js.map +1 -1
  101. package/dist/util/git/private-key.js +2 -0
  102. package/dist/util/git/private-key.js.map +1 -1
  103. package/dist/util/http/bitbucket.js +1 -2
  104. package/dist/util/http/bitbucket.js.map +1 -1
  105. package/dist/util/http/cache/abstract-http-cache-provider.js +2 -2
  106. package/dist/util/http/cache/abstract-http-cache-provider.js.map +1 -1
  107. package/dist/util/http/http.js +1 -1
  108. package/dist/util/http/http.js.map +1 -1
  109. package/dist/util/stats.js +1 -1
  110. package/dist/util/stats.js.map +1 -1
  111. package/dist/workers/global/config/parse/codespaces.js +1 -2
  112. package/dist/workers/global/config/parse/codespaces.js.map +1 -1
  113. package/dist/workers/repository/update/branch/auto-replace.js +4 -2
  114. package/dist/workers/repository/update/branch/auto-replace.js.map +1 -1
  115. package/dist/workers/repository/update/branch/automerge.js +4 -1
  116. package/dist/workers/repository/update/branch/automerge.js.map +1 -1
  117. package/dist/workers/repository/update/branch/execute-post-upgrade-commands.js +1 -0
  118. package/dist/workers/repository/update/branch/execute-post-upgrade-commands.js.map +1 -1
  119. package/dist/workers/repository/update/branch/index.js +16 -8
  120. package/dist/workers/repository/update/branch/index.js.map +1 -1
  121. package/package.json +3 -2
  122. package/renovate-schema.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"yarn.js","sourceRoot":"","sources":["../../../../../lib/modules/manager/npm/post-update/yarn.ts"],"names":[],"mappings":"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","sourcesContent":["import { isString } from '@sindresorhus/is';\nimport semver from 'semver';\nimport { quote } from 'shlex';\nimport upath from 'upath';\nimport { GlobalConfig } from '../../../../config/global';\nimport {\n SYSTEM_INSUFFICIENT_DISK_SPACE,\n TEMPORARY_ERROR,\n} from '../../../../constants/error-messages';\nimport { logger } from '../../../../logger';\nimport { ExternalHostError } from '../../../../types/errors/external-host-error';\nimport { getEnv } from '../../../../util/env';\nimport { exec } from '../../../../util/exec';\nimport type {\n ExecOptions,\n ExtraEnv,\n ToolConstraint,\n} from '../../../../util/exec/types';\nimport {\n localPathIsFile,\n readLocalFile,\n writeLocalFile,\n} from '../../../../util/fs';\nimport { newlineRegex, regEx } from '../../../../util/regex';\nimport { uniqueStrings } from '../../../../util/string';\nimport { NpmDatasource } from '../../../datasource/npm';\nimport type { PostUpdateConfig, Upgrade } from '../../types';\nimport { getYarnLock, getYarnVersionFromLock } from '../extract/yarn';\nimport type { NpmManagerData } from '../types';\nimport { getNodeToolConstraint } from './node-version';\nimport type { GenerateLockFileResult } from './types';\nimport { getPackageManagerVersion, lazyLoadPackageJson } from './utils';\n\nexport async function checkYarnrc(\n lockFileDir: string,\n): Promise<{ offlineMirror: boolean; yarnPath: string | null }> {\n let offlineMirror = false;\n let yarnPath: string | null = null;\n try {\n const yarnrc = await readLocalFile(\n upath.join(lockFileDir, '.yarnrc'),\n 'utf8',\n );\n if (isString(yarnrc)) {\n const mirrorLine = yarnrc\n .split(newlineRegex)\n .find((line) => line.startsWith('yarn-offline-mirror '));\n offlineMirror = !!mirrorLine;\n const pathLine = yarnrc\n .split(newlineRegex)\n .find((line) => line.startsWith('yarn-path '));\n if (pathLine) {\n yarnPath = pathLine.replace(regEx(/^yarn-path\\s+\"?(.+?)\"?$/), '$1');\n }\n if (yarnPath) {\n // resolve binary relative to `yarnrc`\n yarnPath = upath.join(lockFileDir, yarnPath);\n }\n const yarnBinaryExists = yarnPath\n ? await localPathIsFile(yarnPath)\n : false;\n let scrubbedYarnrc = yarnrc\n .replace('--install.pure-lockfile true', '')\n .replace('--install.frozen-lockfile true', '');\n if (!yarnBinaryExists) {\n scrubbedYarnrc = scrubbedYarnrc.replace(\n regEx(/^yarn-path\\s+\"?.+?\"?$/gm),\n '',\n );\n yarnPath = null;\n }\n if (yarnrc !== scrubbedYarnrc) {\n logger.debug(`Writing scrubbed .yarnrc to ${lockFileDir}`);\n await writeLocalFile(\n upath.join(lockFileDir, '.yarnrc'),\n scrubbedYarnrc,\n );\n }\n }\n /* v8 ignore start -- needs test */\n } catch {\n // not found\n } /* v8 ignore stop -- needs test */\n return { offlineMirror, yarnPath };\n}\n\nexport function getOptimizeCommand(fileName: string): string {\n return `sed -i 's/ steps,/ steps.slice(0,1),/' ${quote(fileName)}`;\n}\n\nexport function isYarnUpdate(upgrade: Upgrade): boolean {\n return upgrade.depType === 'packageManager' && upgrade.depName === 'yarn';\n}\n\nexport async function generateLockFile(\n lockFileDir: string,\n env: NodeJS.ProcessEnv,\n config: Partial<PostUpdateConfig<NpmManagerData>> = {},\n upgrades: Upgrade[] = [],\n): Promise<GenerateLockFileResult> {\n const lockFileName = upath.join(lockFileDir, 'yarn.lock');\n logger.debug(`Spawning yarn install to create ${lockFileName}`);\n let lockFile: string | null = null;\n try {\n const lazyPgkJson = lazyLoadPackageJson(lockFileDir);\n const toolConstraints: ToolConstraint[] = [\n await getNodeToolConstraint(config, upgrades, lockFileDir, lazyPgkJson),\n ];\n const yarnUpdate = upgrades.find(isYarnUpdate);\n const yarnCompatibility =\n (yarnUpdate ? yarnUpdate.newValue : config.constraints?.yarn) ??\n getPackageManagerVersion('yarn', await lazyPgkJson.getValue()) ??\n getYarnVersionFromLock(await getYarnLock(lockFileName));\n const minYarnVersion =\n semver.validRange(yarnCompatibility) &&\n semver.minVersion(yarnCompatibility);\n const isYarn1 = !minYarnVersion || minYarnVersion.major === 1;\n const isYarnDedupeAvailable =\n minYarnVersion && semver.gte(minYarnVersion, '2.2.0');\n const isYarnModeAvailable =\n minYarnVersion && semver.gte(minYarnVersion, '3.0.0');\n\n const yarnTool: ToolConstraint = {\n toolName: 'yarn',\n constraint: '^1.22.18', // needs to be a v1 yarn, otherwise v2 will be installed\n };\n\n // check first upgrade, see #17786\n const hasPackageManager =\n !!config.managerData?.hasPackageManager ||\n !!upgrades[0]?.managerData?.hasPackageManager;\n\n if (!isYarn1 && hasPackageManager) {\n toolConstraints.push({\n toolName: 'corepack',\n constraint: config.constraints?.corepack,\n });\n } else {\n toolConstraints.push(yarnTool);\n if (isYarn1 && minYarnVersion) {\n yarnTool.constraint = yarnCompatibility;\n }\n }\n\n const extraEnv: ExtraEnv = {\n NPM_CONFIG_CACHE: env.NPM_CONFIG_CACHE,\n npm_config_store: env.npm_config_store,\n CI: 'true',\n };\n\n const commands: string[] = [];\n let cmdOptions = ''; // should have a leading space\n if (config.skipInstalls !== false) {\n if (isYarn1) {\n const { offlineMirror, yarnPath } = await checkYarnrc(lockFileDir);\n if (!offlineMirror) {\n logger.debug('Updating yarn.lock only - skipping node_modules');\n // The following change causes Yarn 1.x to exit gracefully after updating the lock file but without installing node_modules\n yarnTool.toolName = 'yarn-slim';\n if (yarnPath) {\n commands.push(getOptimizeCommand(yarnPath) + ' || true');\n }\n }\n } else if (isYarnModeAvailable) {\n // Don't run the link step and only fetch what's necessary to compute an updated lockfile\n cmdOptions += ' --mode=update-lockfile';\n }\n }\n\n if (isYarn1) {\n cmdOptions +=\n ' --ignore-engines --ignore-platform --network-timeout 100000';\n extraEnv.YARN_CACHE_FOLDER = env.YARN_CACHE_FOLDER;\n } else {\n extraEnv.YARN_ENABLE_IMMUTABLE_INSTALLS = 'false';\n extraEnv.YARN_HTTP_TIMEOUT = '100000';\n extraEnv.YARN_GLOBAL_FOLDER = env.YARN_GLOBAL_FOLDER;\n if (!config.managerData?.yarnZeroInstall) {\n logger.debug('Enabling global cache as zero-install is not detected');\n extraEnv.YARN_ENABLE_GLOBAL_CACHE = '1';\n }\n }\n if (!GlobalConfig.get('allowScripts') || config.ignoreScripts) {\n if (isYarn1) {\n cmdOptions += ' --ignore-scripts';\n } else if (isYarnModeAvailable) {\n if (config.skipInstalls === false) {\n // Don't run the build scripts\n cmdOptions += ' --mode=skip-build';\n }\n } else {\n extraEnv.YARN_ENABLE_SCRIPTS = '0';\n }\n }\n\n const execOptions: ExecOptions = {\n cwdFile: lockFileName,\n extraEnv,\n docker: {},\n toolConstraints,\n };\n /* v8 ignore next 4 -- needs test */\n if (GlobalConfig.get('exposeAllEnv')) {\n extraEnv.NPM_AUTH = env.NPM_AUTH;\n extraEnv.NPM_EMAIL = env.NPM_EMAIL;\n }\n\n if (yarnUpdate && !isYarn1) {\n logger.debug('Updating Yarn binary');\n // TODO: types (#22198)\n commands.push(`yarn set version ${quote(yarnUpdate.newValue!)}`);\n }\n\n const allEnv = getEnv();\n if (allEnv.RENOVATE_X_YARN_PROXY) {\n if (allEnv.HTTP_PROXY && !isYarn1) {\n commands.push('yarn config unset --home httpProxy');\n commands.push(\n `yarn config set --home httpProxy ${quote(allEnv.HTTP_PROXY)}`,\n );\n }\n if (allEnv.HTTPS_PROXY && !isYarn1) {\n commands.push('yarn config unset --home httpsProxy');\n commands.push(\n `yarn config set --home httpsProxy ${quote(allEnv.HTTPS_PROXY)}`,\n );\n }\n }\n\n // This command updates the lock file based on package.json\n commands.push(`yarn install${cmdOptions}`);\n\n // rangeStrategy = update-lockfile\n const lockUpdates = upgrades.filter((upgrade) => upgrade.isLockfileUpdate);\n if (lockUpdates.length) {\n logger.debug('Performing lockfileUpdate (yarn)');\n if (isYarn1) {\n // `yarn upgrade` updates based on the version range specified in the package file\n // note - this can hit a yarn bug, see https://github.com/yarnpkg/yarn/issues/8236\n commands.push(\n `yarn upgrade ${lockUpdates\n .map((update) => update.depName)\n .filter(isString)\n .filter(uniqueStrings)\n .map(quote)\n .join(' ')}${cmdOptions}`,\n );\n } else {\n // `yarn up -R` updates to the latest release in each range\n commands.push(\n `yarn up -R ${lockUpdates\n // TODO: types (#22198)\n .map((update) => `${update.depName!}`)\n .filter(uniqueStrings)\n .map(quote)\n .join(' ')}${cmdOptions}`,\n );\n }\n }\n\n // postUpdateOptions\n ['fewer', 'highest'].forEach((s) => {\n if (\n config.postUpdateOptions?.includes(\n `yarnDedupe${s.charAt(0).toUpperCase()}${s.slice(1)}`,\n )\n ) {\n logger.debug(`Performing yarn dedupe ${s}`);\n if (isYarn1) {\n commands.push(`npx yarn-deduplicate --strategy ${s}`);\n // Run yarn again in case any changes are necessary\n commands.push(`yarn install${cmdOptions}`);\n } else if (isYarnDedupeAvailable && s === 'highest') {\n commands.push(`yarn dedupe --strategy ${s}${cmdOptions}`);\n } else {\n logger.debug(`yarn dedupe ${s} not available`);\n }\n }\n });\n\n if (upgrades.find((upgrade) => upgrade.isLockFileMaintenance)) {\n logger.debug(\n `Removing ${lockFileName} first due to lock file maintenance upgrade`,\n );\n\n // Note: Instead of just deleting the `yarn.lock` file, we just wipe it\n // and keep an empty lock file. Deleting the lock file could result in different\n // Yarn semantics. e.g. Yarn 2+ will error when `yarn install` is executed in\n // a subdirectory which is not part of a Yarn workspace. Yarn suggests to create\n // an empty lock file if a subdirectory should be treated as its own workspace.\n // https://github.com/yarnpkg/berry/blob/20612e82d26ead5928cc27bf482bb8d62dde87d3/packages/yarnpkg-core/sources/Project.ts#L284.\n try {\n await writeLocalFile(lockFileName, '');\n /* v8 ignore start -- needs test */\n } catch (err) {\n logger.debug(\n { err, lockFileName },\n 'Error clearing `yarn.lock` for lock file maintenance',\n );\n } /* v8 ignore stop -- needs test */\n }\n\n // Run the commands\n await exec(commands, execOptions);\n\n // Read the result\n lockFile = await readLocalFile(lockFileName, 'utf8');\n /* v8 ignore start -- needs test */\n } catch (err) {\n if (err.message === TEMPORARY_ERROR) {\n throw err;\n }\n logger.debug(\n {\n err,\n type: 'yarn',\n },\n 'lock file error',\n );\n const stdouterr = String(err.stdout) + String(err.stderr);\n if (\n stdouterr.includes('ENOSPC: no space left on device') ||\n stdouterr.includes('Out of diskspace')\n ) {\n throw new Error(SYSTEM_INSUFFICIENT_DISK_SPACE);\n }\n if (\n stdouterr.includes('The registry may be down.') ||\n stdouterr.includes('getaddrinfo ENOTFOUND registry.yarnpkg.com') ||\n stdouterr.includes('getaddrinfo ENOTFOUND registry.npmjs.org')\n ) {\n throw new ExternalHostError(err, NpmDatasource.id);\n }\n return { error: true, stderr: err.stderr, stdout: err.stdout };\n } /* v8 ignore stop -- needs test */\n return { lockFile };\n}\n\nexport function fuzzyMatchAdditionalYarnrcYml<\n T extends { npmRegistries?: Record<string, unknown> },\n>(additionalYarnRcYml: T, existingYarnrRcYml: T): T {\n const keys = new Map(\n Object.keys(existingYarnrRcYml.npmRegistries ?? {}).map((x) => [\n x.replace(/\\/$/, '').replace(/^https?:/, ''),\n x,\n ]),\n );\n\n return {\n ...additionalYarnRcYml,\n npmRegistries: Object.entries(additionalYarnRcYml.npmRegistries ?? {})\n .map(([k, v]) => {\n const key = keys.get(k.replace(/\\/$/, '')) ?? k;\n return { [key]: v };\n })\n .reduce((acc, cur) => ({ ...acc, ...cur }), {}),\n };\n}\n"]}
1
+ {"version":3,"file":"yarn.js","sourceRoot":"","sources":["../../../../../lib/modules/manager/npm/post-update/yarn.ts"],"names":[],"mappings":"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","sourcesContent":["import { isString } from '@sindresorhus/is';\nimport semver from 'semver';\nimport { quote } from 'shlex';\nimport upath from 'upath';\nimport { GlobalConfig } from '../../../../config/global';\nimport {\n SYSTEM_INSUFFICIENT_DISK_SPACE,\n TEMPORARY_ERROR,\n} from '../../../../constants/error-messages';\nimport { logger } from '../../../../logger';\nimport { ExternalHostError } from '../../../../types/errors/external-host-error';\nimport { getEnv } from '../../../../util/env';\nimport { exec } from '../../../../util/exec';\nimport type {\n ExecOptions,\n ExtraEnv,\n ToolConstraint,\n} from '../../../../util/exec/types';\nimport {\n localPathIsFile,\n readLocalFile,\n writeLocalFile,\n} from '../../../../util/fs';\nimport { newlineRegex, regEx } from '../../../../util/regex';\nimport { uniqueStrings } from '../../../../util/string';\nimport { NpmDatasource } from '../../../datasource/npm';\nimport type { PostUpdateConfig, Upgrade } from '../../types';\nimport { getYarnLock, getYarnVersionFromLock } from '../extract/yarn';\nimport type { NpmManagerData } from '../types';\nimport { getNodeToolConstraint } from './node-version';\nimport type { GenerateLockFileResult } from './types';\nimport { getPackageManagerVersion, lazyLoadPackageJson } from './utils';\n\nexport async function checkYarnrc(\n lockFileDir: string,\n): Promise<{ offlineMirror: boolean; yarnPath: string | null }> {\n let offlineMirror = false;\n let yarnPath: string | null = null;\n try {\n const yarnrc = await readLocalFile(\n upath.join(lockFileDir, '.yarnrc'),\n 'utf8',\n );\n if (isString(yarnrc)) {\n const mirrorLine = yarnrc\n .split(newlineRegex)\n .find((line) => line.startsWith('yarn-offline-mirror '));\n offlineMirror = !!mirrorLine;\n const pathLine = yarnrc\n .split(newlineRegex)\n .find((line) => line.startsWith('yarn-path '));\n if (pathLine) {\n yarnPath = pathLine.replace(regEx(/^yarn-path\\s+\"?(.+?)\"?$/), '$1');\n }\n if (yarnPath) {\n // resolve binary relative to `yarnrc`\n yarnPath = upath.join(lockFileDir, yarnPath);\n }\n const yarnBinaryExists = yarnPath\n ? await localPathIsFile(yarnPath)\n : false;\n let scrubbedYarnrc = yarnrc\n .replace('--install.pure-lockfile true', '')\n .replace('--install.frozen-lockfile true', '');\n if (!yarnBinaryExists) {\n scrubbedYarnrc = scrubbedYarnrc.replace(\n regEx(/^yarn-path\\s+\"?.+?\"?$/gm),\n '',\n );\n yarnPath = null;\n }\n if (yarnrc !== scrubbedYarnrc) {\n logger.debug(`Writing scrubbed .yarnrc to ${lockFileDir}`);\n await writeLocalFile(\n upath.join(lockFileDir, '.yarnrc'),\n scrubbedYarnrc,\n );\n }\n }\n /* v8 ignore next -- needs test */\n } catch {\n // not found\n }\n return { offlineMirror, yarnPath };\n}\n\nexport function getOptimizeCommand(fileName: string): string {\n return `sed -i 's/ steps,/ steps.slice(0,1),/' ${quote(fileName)}`;\n}\n\nexport function isYarnUpdate(upgrade: Upgrade): boolean {\n return upgrade.depType === 'packageManager' && upgrade.depName === 'yarn';\n}\n\nexport async function generateLockFile(\n lockFileDir: string,\n env: NodeJS.ProcessEnv,\n config: Partial<PostUpdateConfig<NpmManagerData>> = {},\n upgrades: Upgrade[] = [],\n): Promise<GenerateLockFileResult> {\n const lockFileName = upath.join(lockFileDir, 'yarn.lock');\n logger.debug(`Spawning yarn install to create ${lockFileName}`);\n let lockFile: string | null = null;\n try {\n const lazyPgkJson = lazyLoadPackageJson(lockFileDir);\n const toolConstraints: ToolConstraint[] = [\n await getNodeToolConstraint(config, upgrades, lockFileDir, lazyPgkJson),\n ];\n const yarnUpdate = upgrades.find(isYarnUpdate);\n const yarnCompatibility =\n (yarnUpdate ? yarnUpdate.newValue : config.constraints?.yarn) ??\n getPackageManagerVersion('yarn', await lazyPgkJson.getValue()) ??\n getYarnVersionFromLock(await getYarnLock(lockFileName));\n const minYarnVersion =\n semver.validRange(yarnCompatibility) &&\n semver.minVersion(yarnCompatibility);\n const isYarn1 = !minYarnVersion || minYarnVersion.major === 1;\n const isYarnDedupeAvailable =\n minYarnVersion && semver.gte(minYarnVersion, '2.2.0');\n const isYarnModeAvailable =\n minYarnVersion && semver.gte(minYarnVersion, '3.0.0');\n\n const yarnTool: ToolConstraint = {\n toolName: 'yarn',\n constraint: '^1.22.18', // needs to be a v1 yarn, otherwise v2 will be installed\n };\n\n // check first upgrade, see #17786\n const hasPackageManager =\n !!config.managerData?.hasPackageManager ||\n !!upgrades[0]?.managerData?.hasPackageManager;\n\n if (!isYarn1 && hasPackageManager) {\n toolConstraints.push({\n toolName: 'corepack',\n constraint: config.constraints?.corepack,\n });\n } else {\n toolConstraints.push(yarnTool);\n if (isYarn1 && minYarnVersion) {\n yarnTool.constraint = yarnCompatibility;\n }\n }\n\n const extraEnv: ExtraEnv = {\n NPM_CONFIG_CACHE: env.NPM_CONFIG_CACHE,\n npm_config_store: env.npm_config_store,\n CI: 'true',\n };\n\n const commands: string[] = [];\n let cmdOptions = ''; // should have a leading space\n if (config.skipInstalls !== false) {\n if (isYarn1) {\n const { offlineMirror, yarnPath } = await checkYarnrc(lockFileDir);\n if (!offlineMirror) {\n logger.debug('Updating yarn.lock only - skipping node_modules');\n // The following change causes Yarn 1.x to exit gracefully after updating the lock file but without installing node_modules\n yarnTool.toolName = 'yarn-slim';\n if (yarnPath) {\n commands.push(getOptimizeCommand(yarnPath) + ' || true');\n }\n }\n } else if (isYarnModeAvailable) {\n // Don't run the link step and only fetch what's necessary to compute an updated lockfile\n cmdOptions += ' --mode=update-lockfile';\n }\n }\n\n if (isYarn1) {\n cmdOptions +=\n ' --ignore-engines --ignore-platform --network-timeout 100000';\n extraEnv.YARN_CACHE_FOLDER = env.YARN_CACHE_FOLDER;\n } else {\n extraEnv.YARN_ENABLE_IMMUTABLE_INSTALLS = 'false';\n extraEnv.YARN_HTTP_TIMEOUT = '100000';\n extraEnv.YARN_GLOBAL_FOLDER = env.YARN_GLOBAL_FOLDER;\n if (!config.managerData?.yarnZeroInstall) {\n logger.debug('Enabling global cache as zero-install is not detected');\n extraEnv.YARN_ENABLE_GLOBAL_CACHE = '1';\n }\n }\n if (!GlobalConfig.get('allowScripts') || config.ignoreScripts) {\n if (isYarn1) {\n cmdOptions += ' --ignore-scripts';\n } else if (isYarnModeAvailable) {\n if (config.skipInstalls === false) {\n // Don't run the build scripts\n cmdOptions += ' --mode=skip-build';\n }\n } else {\n extraEnv.YARN_ENABLE_SCRIPTS = '0';\n }\n }\n\n const execOptions: ExecOptions = {\n cwdFile: lockFileName,\n extraEnv,\n docker: {},\n toolConstraints,\n };\n /* v8 ignore next 4 -- needs test */\n if (GlobalConfig.get('exposeAllEnv')) {\n extraEnv.NPM_AUTH = env.NPM_AUTH;\n extraEnv.NPM_EMAIL = env.NPM_EMAIL;\n }\n\n if (yarnUpdate && !isYarn1) {\n logger.debug('Updating Yarn binary');\n // TODO: types (#22198)\n commands.push(`yarn set version ${quote(yarnUpdate.newValue!)}`);\n }\n\n const allEnv = getEnv();\n if (allEnv.RENOVATE_X_YARN_PROXY) {\n if (allEnv.HTTP_PROXY && !isYarn1) {\n commands.push('yarn config unset --home httpProxy');\n commands.push(\n `yarn config set --home httpProxy ${quote(allEnv.HTTP_PROXY)}`,\n );\n }\n if (allEnv.HTTPS_PROXY && !isYarn1) {\n commands.push('yarn config unset --home httpsProxy');\n commands.push(\n `yarn config set --home httpsProxy ${quote(allEnv.HTTPS_PROXY)}`,\n );\n }\n }\n\n // This command updates the lock file based on package.json\n commands.push(`yarn install${cmdOptions}`);\n\n // rangeStrategy = update-lockfile\n const lockUpdates = upgrades.filter((upgrade) => upgrade.isLockfileUpdate);\n if (lockUpdates.length) {\n logger.debug('Performing lockfileUpdate (yarn)');\n if (isYarn1) {\n // `yarn upgrade` updates based on the version range specified in the package file\n // note - this can hit a yarn bug, see https://github.com/yarnpkg/yarn/issues/8236\n commands.push(\n `yarn upgrade ${lockUpdates\n .map((update) => update.depName)\n .filter(isString)\n .filter(uniqueStrings)\n .map(quote)\n .join(' ')}${cmdOptions}`,\n );\n } else {\n // `yarn up -R` updates to the latest release in each range\n commands.push(\n `yarn up -R ${lockUpdates\n // TODO: types (#22198)\n .map((update) => `${update.depName!}`)\n .filter(uniqueStrings)\n .map(quote)\n .join(' ')}${cmdOptions}`,\n );\n }\n }\n\n // postUpdateOptions\n ['fewer', 'highest'].forEach((s) => {\n if (\n config.postUpdateOptions?.includes(\n `yarnDedupe${s.charAt(0).toUpperCase()}${s.slice(1)}`,\n )\n ) {\n logger.debug(`Performing yarn dedupe ${s}`);\n if (isYarn1) {\n commands.push(`npx yarn-deduplicate --strategy ${s}`);\n // Run yarn again in case any changes are necessary\n commands.push(`yarn install${cmdOptions}`);\n } else if (isYarnDedupeAvailable && s === 'highest') {\n commands.push(`yarn dedupe --strategy ${s}${cmdOptions}`);\n } else {\n logger.debug(`yarn dedupe ${s} not available`);\n }\n }\n });\n\n if (upgrades.find((upgrade) => upgrade.isLockFileMaintenance)) {\n logger.debug(\n `Removing ${lockFileName} first due to lock file maintenance upgrade`,\n );\n\n // Note: Instead of just deleting the `yarn.lock` file, we just wipe it\n // and keep an empty lock file. Deleting the lock file could result in different\n // Yarn semantics. e.g. Yarn 2+ will error when `yarn install` is executed in\n // a subdirectory which is not part of a Yarn workspace. Yarn suggests to create\n // an empty lock file if a subdirectory should be treated as its own workspace.\n // https://github.com/yarnpkg/berry/blob/20612e82d26ead5928cc27bf482bb8d62dde87d3/packages/yarnpkg-core/sources/Project.ts#L284.\n try {\n await writeLocalFile(lockFileName, '');\n /* v8 ignore next -- needs test */\n } catch (err) {\n logger.debug(\n { err, lockFileName },\n 'Error clearing `yarn.lock` for lock file maintenance',\n );\n }\n }\n\n // Run the commands\n await exec(commands, execOptions);\n\n // Read the result\n lockFile = await readLocalFile(lockFileName, 'utf8');\n /* v8 ignore next -- needs test */\n } catch (err) {\n if (err.message === TEMPORARY_ERROR) {\n throw err;\n }\n logger.debug(\n {\n err,\n type: 'yarn',\n },\n 'lock file error',\n );\n const stdouterr = String(err.stdout) + String(err.stderr);\n if (\n stdouterr.includes('ENOSPC: no space left on device') ||\n stdouterr.includes('Out of diskspace')\n ) {\n throw new Error(SYSTEM_INSUFFICIENT_DISK_SPACE);\n }\n if (\n stdouterr.includes('The registry may be down.') ||\n stdouterr.includes('getaddrinfo ENOTFOUND registry.yarnpkg.com') ||\n stdouterr.includes('getaddrinfo ENOTFOUND registry.npmjs.org')\n ) {\n throw new ExternalHostError(err, NpmDatasource.id);\n }\n return { error: true, stderr: err.stderr, stdout: err.stdout };\n }\n return { lockFile };\n}\n\nexport function fuzzyMatchAdditionalYarnrcYml<\n T extends { npmRegistries?: Record<string, unknown> },\n>(additionalYarnRcYml: T, existingYarnrRcYml: T): T {\n const keys = new Map(\n Object.keys(existingYarnrRcYml.npmRegistries ?? {}).map((x) => [\n x.replace(/\\/$/, '').replace(/^https?:/, ''),\n x,\n ]),\n );\n\n return {\n ...additionalYarnRcYml,\n npmRegistries: Object.entries(additionalYarnRcYml.npmRegistries ?? {})\n .map(([k, v]) => {\n const key = keys.get(k.replace(/\\/$/, '')) ?? k;\n return { [key]: v };\n })\n .reduce((acc, cur) => ({ ...acc, ...cur }), {}),\n };\n}\n"]}
@@ -135,12 +135,11 @@ function updateDependency({ fileContent, upgrade, }) {
135
135
  newFileContent = replaceAsString(parsedContents, newFileContent, depType, depName, depName, upgrade.newName, overrideDepParents);
136
136
  }
137
137
  }
138
- /* v8 ignore start -- needs test */
138
+ /* v8 ignore next -- needs test */
139
139
  if (!newFileContent) {
140
140
  logger_1.logger.debug({ fileContent, parsedContents, depType, depName, newValue }, 'Warning: updateDependency error');
141
141
  return fileContent;
142
142
  }
143
- /* v8 ignore stop -- needs test */
144
143
  if (parsedContents?.resolutions) {
145
144
  let depKey;
146
145
  if (parsedContents.resolutions[depName]) {
@@ -150,7 +149,7 @@ function updateDependency({ fileContent, upgrade, }) {
150
149
  depKey = `**/${depName}`;
151
150
  }
152
151
  if (depKey) {
153
- /* v8 ignore start -- needs test */
152
+ /* v8 ignore next -- needs test */
154
153
  if (parsedContents.resolutions[depKey] !== oldVersion) {
155
154
  logger_1.logger.debug({
156
155
  depName,
@@ -158,7 +157,7 @@ function updateDependency({ fileContent, upgrade, }) {
158
157
  oldVersion,
159
158
  resolutionsVersion: parsedContents.resolutions[depKey],
160
159
  }, 'Upgraded dependency exists in yarn resolutions but is different version');
161
- } /* v8 ignore stop -- needs test */
160
+ }
162
161
  newFileContent = replaceAsString(parsedContents, newFileContent, 'resolutions', depKey,
163
162
  // TODO #22198
164
163
  parsedContents.resolutions[depKey],
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../lib/modules/manager/npm/update/dependency/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { isArray, isNonEmptyStringAndNotWhitespace } from '@sindresorhus/is';\nimport { dequal } from 'dequal';\nimport { logger } from '../../../../../logger';\nimport { escapeRegExp, regEx } from '../../../../../util/regex';\nimport { matchAt, replaceAt } from '../../../../../util/string';\nimport type { UpdateDependencyConfig, Upgrade } from '../../../types';\nimport type {\n DependenciesMeta,\n NpmPackage,\n OverrideDependency,\n RecursiveOverride,\n} from '../../extract/types';\nimport type { NpmDepType, NpmManagerData } from '../../types';\nimport { getNewGitValue, getNewNpmAliasValue } from './common';\nimport { updatePnpmCatalogDependency } from './pnpm';\nimport { updateYarnrcCatalogDependency } from './yarn';\n\nfunction renameObjKey(\n oldObj: DependenciesMeta,\n oldKey: string,\n newKey: string,\n): DependenciesMeta {\n const keys = Object.keys(oldObj);\n return keys.reduce((acc, key) => {\n if (key === oldKey) {\n acc[newKey] = oldObj[oldKey];\n } else {\n acc[key] = oldObj[key];\n }\n return acc;\n }, {} as DependenciesMeta);\n}\n\nfunction replaceAsString(\n parsedContents: NpmPackage,\n fileContent: string,\n depType:\n | NpmDepType\n | 'dependenciesMeta'\n | 'packageManager'\n | 'pnpm.overrides',\n depName: string,\n oldValue: string,\n newValue: string,\n parents?: string[],\n): string {\n if (depType === 'packageManager') {\n parsedContents[depType] = newValue;\n } else if (depType === 'pnpm.overrides') {\n parsedContents.pnpm!.overrides![depName] = newValue;\n } else if (depName === oldValue) {\n // The old value is the name of the dependency itself\n delete Object.assign(parsedContents[depType]!, {\n [newValue]: parsedContents[depType]![oldValue],\n })[oldValue];\n } else if (depType === 'dependenciesMeta') {\n if (oldValue !== newValue) {\n parsedContents.dependenciesMeta = renameObjKey(\n // TODO #22198\n parsedContents.dependenciesMeta!,\n oldValue,\n newValue,\n );\n }\n } else if (parents && depType === 'overrides') {\n // there is an object as a value in overrides block\n const { depObjectReference, overrideDepName } = overrideDepPosition(\n parsedContents[depType]!,\n parents,\n depName,\n );\n if (depObjectReference) {\n depObjectReference[overrideDepName] = newValue;\n }\n } else {\n // The old value is the version of the dependency\n parsedContents[depType]![depName] = newValue;\n }\n // Look for the old version number\n const searchString = `\"${oldValue}\"`;\n let newString = `\"${newValue}\"`;\n\n const escapedDepName = escapeRegExp(depName);\n const patchRe = regEx(`^(patch:${escapedDepName}@(npm:)?).*#`);\n const match = patchRe.exec(oldValue);\n if (match && depType === 'resolutions') {\n const patch = oldValue.replace(match[0], `${match[1]}${newValue}#`);\n parsedContents[depType]![depName] = patch;\n newString = `\"${patch}\"`;\n }\n\n // Skip ahead to depType section\n let searchIndex = fileContent.indexOf(`\"${depType}\"`) + depType.length;\n logger.trace(`Starting search at index ${searchIndex}`);\n // Iterate through the rest of the file\n for (; searchIndex < fileContent.length; searchIndex += 1) {\n // First check if we have a hit for the old version\n if (matchAt(fileContent, searchIndex, searchString)) {\n logger.trace(`Found match at index ${searchIndex}`);\n // Now test if the result matches\n const testContent = replaceAt(\n fileContent,\n searchIndex,\n searchString,\n newString,\n );\n // Compare the parsed JSON structure of old and new\n if (dequal(parsedContents, JSON.parse(testContent))) {\n return testContent;\n }\n }\n /* v8 ignore next 3 -- needs test */\n }\n throw new Error();\n}\n\nexport function updateDependency({\n fileContent,\n upgrade,\n}: UpdateDependencyConfig): string | null {\n if (upgrade.depType?.startsWith('pnpm.catalog')) {\n return updatePnpmCatalogDependency({ fileContent, upgrade });\n }\n if (upgrade.depType?.startsWith('yarn.catalog')) {\n return updateYarnrcCatalogDependency({ fileContent, upgrade });\n }\n\n const { depType, managerData } = upgrade;\n const depName: string = managerData?.key ?? upgrade.depName;\n let { newValue } = upgrade;\n\n newValue = getNewGitValue(upgrade) ?? newValue;\n newValue = getNewNpmAliasValue(newValue, upgrade) ?? newValue;\n\n logger.debug(`npm.updateDependency(): ${depType}.${depName} = ${newValue}`);\n try {\n const parsedContents: NpmPackage = JSON.parse(fileContent);\n let overrideDepParents: string[] | undefined = undefined;\n // Save the old version\n let oldVersion: string | undefined;\n if (depType === 'packageManager') {\n oldVersion = parsedContents[depType];\n newValue = `${depName}@${newValue}`;\n } else if (isOverrideObject(upgrade)) {\n overrideDepParents = managerData?.parents;\n if (overrideDepParents) {\n // old version when there is an object as a value in overrides block\n const { depObjectReference, overrideDepName } = overrideDepPosition(\n parsedContents.overrides!,\n overrideDepParents,\n depName,\n );\n if (depObjectReference) {\n oldVersion = depObjectReference[overrideDepName]!;\n }\n }\n } else if (depType === 'pnpm.overrides') {\n oldVersion = parsedContents.pnpm?.overrides?.[depName];\n } else {\n oldVersion = parsedContents[depType as NpmDepType]![depName] as string;\n }\n if (oldVersion === newValue) {\n logger.trace('Version is already updated');\n return fileContent;\n }\n\n // TODO #22198\n let newFileContent: string;\n if (upgrade.newName && upgrade.replacementApproach === 'alias') {\n newFileContent = replaceAsString(\n parsedContents,\n fileContent,\n depType as NpmDepType,\n depName,\n oldVersion!,\n `npm:${upgrade.newName}@${newValue}`,\n overrideDepParents,\n );\n } else {\n newFileContent = replaceAsString(\n parsedContents,\n fileContent,\n depType as NpmDepType,\n depName,\n oldVersion!,\n newValue!,\n overrideDepParents,\n );\n if (upgrade.newName) {\n newFileContent = replaceAsString(\n parsedContents,\n newFileContent,\n depType as NpmDepType,\n depName,\n depName,\n upgrade.newName,\n overrideDepParents,\n );\n }\n }\n /* v8 ignore start -- needs test */\n if (!newFileContent) {\n logger.debug(\n { fileContent, parsedContents, depType, depName, newValue },\n 'Warning: updateDependency error',\n );\n return fileContent;\n }\n /* v8 ignore stop -- needs test */\n if (parsedContents?.resolutions) {\n let depKey: string | undefined;\n if (parsedContents.resolutions[depName]) {\n depKey = depName;\n } else if (parsedContents.resolutions[`**/${depName}`]) {\n depKey = `**/${depName}`;\n }\n if (depKey) {\n /* v8 ignore start -- needs test */\n if (parsedContents.resolutions[depKey] !== oldVersion) {\n logger.debug(\n {\n depName,\n depKey,\n oldVersion,\n resolutionsVersion: parsedContents.resolutions[depKey],\n },\n 'Upgraded dependency exists in yarn resolutions but is different version',\n );\n } /* v8 ignore stop -- needs test */\n newFileContent = replaceAsString(\n parsedContents,\n newFileContent,\n 'resolutions',\n depKey,\n // TODO #22198\n parsedContents.resolutions[depKey]!,\n // TODO #22198\n newValue!,\n );\n if (upgrade.newName) {\n if (depKey === `**/${depName}`) {\n // handles the case where a replacement is in a resolution\n upgrade.newName = `**/${upgrade.newName}`;\n }\n newFileContent = replaceAsString(\n parsedContents,\n newFileContent,\n 'resolutions',\n depKey,\n depKey,\n upgrade.newName,\n );\n }\n }\n }\n if (parsedContents?.dependenciesMeta) {\n for (const [depKey] of Object.entries(parsedContents.dependenciesMeta)) {\n if (depKey.startsWith(depName + '@')) {\n newFileContent = replaceAsString(\n parsedContents,\n newFileContent,\n 'dependenciesMeta',\n depName,\n depKey,\n // TODO: types (#22198)\n `${depName}@${newValue}`,\n );\n }\n }\n }\n return newFileContent;\n } catch (err) {\n logger.debug({ err }, 'updateDependency error');\n return null;\n }\n}\n\nfunction overrideDepPosition(\n overrideBlock: OverrideDependency,\n parents: string[],\n depName: string,\n): {\n depObjectReference: Record<string, string>;\n overrideDepName: string;\n} {\n // get override dep position when its nested in an object\n const lastParent = parents[parents.length - 1];\n let overrideDep: OverrideDependency = overrideBlock;\n for (const parent of parents) {\n if (overrideDep) {\n overrideDep = overrideDep[parent] as Record<string, RecursiveOverride>;\n }\n }\n const overrideDepName = depName === lastParent ? '.' : depName;\n const depObjectReference = overrideDep as Record<string, string>;\n return { depObjectReference, overrideDepName };\n}\n\nfunction isOverrideObject(upgrade: Upgrade<NpmManagerData>): boolean {\n return (\n isArray(upgrade.managerData?.parents, isNonEmptyStringAndNotWhitespace) &&\n upgrade.depType === 'overrides'\n );\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../lib/modules/manager/npm/update/dependency/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { isArray, isNonEmptyStringAndNotWhitespace } from '@sindresorhus/is';\nimport { dequal } from 'dequal';\nimport { logger } from '../../../../../logger';\nimport { escapeRegExp, regEx } from '../../../../../util/regex';\nimport { matchAt, replaceAt } from '../../../../../util/string';\nimport type { UpdateDependencyConfig, Upgrade } from '../../../types';\nimport type {\n DependenciesMeta,\n NpmPackage,\n OverrideDependency,\n RecursiveOverride,\n} from '../../extract/types';\nimport type { NpmDepType, NpmManagerData } from '../../types';\nimport { getNewGitValue, getNewNpmAliasValue } from './common';\nimport { updatePnpmCatalogDependency } from './pnpm';\nimport { updateYarnrcCatalogDependency } from './yarn';\n\nfunction renameObjKey(\n oldObj: DependenciesMeta,\n oldKey: string,\n newKey: string,\n): DependenciesMeta {\n const keys = Object.keys(oldObj);\n return keys.reduce((acc, key) => {\n if (key === oldKey) {\n acc[newKey] = oldObj[oldKey];\n } else {\n acc[key] = oldObj[key];\n }\n return acc;\n }, {} as DependenciesMeta);\n}\n\nfunction replaceAsString(\n parsedContents: NpmPackage,\n fileContent: string,\n depType:\n | NpmDepType\n | 'dependenciesMeta'\n | 'packageManager'\n | 'pnpm.overrides',\n depName: string,\n oldValue: string,\n newValue: string,\n parents?: string[],\n): string {\n if (depType === 'packageManager') {\n parsedContents[depType] = newValue;\n } else if (depType === 'pnpm.overrides') {\n parsedContents.pnpm!.overrides![depName] = newValue;\n } else if (depName === oldValue) {\n // The old value is the name of the dependency itself\n delete Object.assign(parsedContents[depType]!, {\n [newValue]: parsedContents[depType]![oldValue],\n })[oldValue];\n } else if (depType === 'dependenciesMeta') {\n if (oldValue !== newValue) {\n parsedContents.dependenciesMeta = renameObjKey(\n // TODO #22198\n parsedContents.dependenciesMeta!,\n oldValue,\n newValue,\n );\n }\n } else if (parents && depType === 'overrides') {\n // there is an object as a value in overrides block\n const { depObjectReference, overrideDepName } = overrideDepPosition(\n parsedContents[depType]!,\n parents,\n depName,\n );\n if (depObjectReference) {\n depObjectReference[overrideDepName] = newValue;\n }\n } else {\n // The old value is the version of the dependency\n parsedContents[depType]![depName] = newValue;\n }\n // Look for the old version number\n const searchString = `\"${oldValue}\"`;\n let newString = `\"${newValue}\"`;\n\n const escapedDepName = escapeRegExp(depName);\n const patchRe = regEx(`^(patch:${escapedDepName}@(npm:)?).*#`);\n const match = patchRe.exec(oldValue);\n if (match && depType === 'resolutions') {\n const patch = oldValue.replace(match[0], `${match[1]}${newValue}#`);\n parsedContents[depType]![depName] = patch;\n newString = `\"${patch}\"`;\n }\n\n // Skip ahead to depType section\n let searchIndex = fileContent.indexOf(`\"${depType}\"`) + depType.length;\n logger.trace(`Starting search at index ${searchIndex}`);\n // Iterate through the rest of the file\n for (; searchIndex < fileContent.length; searchIndex += 1) {\n // First check if we have a hit for the old version\n if (matchAt(fileContent, searchIndex, searchString)) {\n logger.trace(`Found match at index ${searchIndex}`);\n // Now test if the result matches\n const testContent = replaceAt(\n fileContent,\n searchIndex,\n searchString,\n newString,\n );\n // Compare the parsed JSON structure of old and new\n if (dequal(parsedContents, JSON.parse(testContent))) {\n return testContent;\n }\n }\n /* v8 ignore next 3 -- needs test */\n }\n throw new Error();\n}\n\nexport function updateDependency({\n fileContent,\n upgrade,\n}: UpdateDependencyConfig): string | null {\n if (upgrade.depType?.startsWith('pnpm.catalog')) {\n return updatePnpmCatalogDependency({ fileContent, upgrade });\n }\n if (upgrade.depType?.startsWith('yarn.catalog')) {\n return updateYarnrcCatalogDependency({ fileContent, upgrade });\n }\n\n const { depType, managerData } = upgrade;\n const depName: string = managerData?.key ?? upgrade.depName;\n let { newValue } = upgrade;\n\n newValue = getNewGitValue(upgrade) ?? newValue;\n newValue = getNewNpmAliasValue(newValue, upgrade) ?? newValue;\n\n logger.debug(`npm.updateDependency(): ${depType}.${depName} = ${newValue}`);\n try {\n const parsedContents: NpmPackage = JSON.parse(fileContent);\n let overrideDepParents: string[] | undefined = undefined;\n // Save the old version\n let oldVersion: string | undefined;\n if (depType === 'packageManager') {\n oldVersion = parsedContents[depType];\n newValue = `${depName}@${newValue}`;\n } else if (isOverrideObject(upgrade)) {\n overrideDepParents = managerData?.parents;\n if (overrideDepParents) {\n // old version when there is an object as a value in overrides block\n const { depObjectReference, overrideDepName } = overrideDepPosition(\n parsedContents.overrides!,\n overrideDepParents,\n depName,\n );\n if (depObjectReference) {\n oldVersion = depObjectReference[overrideDepName]!;\n }\n }\n } else if (depType === 'pnpm.overrides') {\n oldVersion = parsedContents.pnpm?.overrides?.[depName];\n } else {\n oldVersion = parsedContents[depType as NpmDepType]![depName] as string;\n }\n if (oldVersion === newValue) {\n logger.trace('Version is already updated');\n return fileContent;\n }\n\n // TODO #22198\n let newFileContent: string;\n if (upgrade.newName && upgrade.replacementApproach === 'alias') {\n newFileContent = replaceAsString(\n parsedContents,\n fileContent,\n depType as NpmDepType,\n depName,\n oldVersion!,\n `npm:${upgrade.newName}@${newValue}`,\n overrideDepParents,\n );\n } else {\n newFileContent = replaceAsString(\n parsedContents,\n fileContent,\n depType as NpmDepType,\n depName,\n oldVersion!,\n newValue!,\n overrideDepParents,\n );\n if (upgrade.newName) {\n newFileContent = replaceAsString(\n parsedContents,\n newFileContent,\n depType as NpmDepType,\n depName,\n depName,\n upgrade.newName,\n overrideDepParents,\n );\n }\n }\n /* v8 ignore next -- needs test */\n if (!newFileContent) {\n logger.debug(\n { fileContent, parsedContents, depType, depName, newValue },\n 'Warning: updateDependency error',\n );\n return fileContent;\n }\n\n if (parsedContents?.resolutions) {\n let depKey: string | undefined;\n if (parsedContents.resolutions[depName]) {\n depKey = depName;\n } else if (parsedContents.resolutions[`**/${depName}`]) {\n depKey = `**/${depName}`;\n }\n if (depKey) {\n /* v8 ignore next -- needs test */\n if (parsedContents.resolutions[depKey] !== oldVersion) {\n logger.debug(\n {\n depName,\n depKey,\n oldVersion,\n resolutionsVersion: parsedContents.resolutions[depKey],\n },\n 'Upgraded dependency exists in yarn resolutions but is different version',\n );\n }\n newFileContent = replaceAsString(\n parsedContents,\n newFileContent,\n 'resolutions',\n depKey,\n // TODO #22198\n parsedContents.resolutions[depKey]!,\n // TODO #22198\n newValue!,\n );\n if (upgrade.newName) {\n if (depKey === `**/${depName}`) {\n // handles the case where a replacement is in a resolution\n upgrade.newName = `**/${upgrade.newName}`;\n }\n newFileContent = replaceAsString(\n parsedContents,\n newFileContent,\n 'resolutions',\n depKey,\n depKey,\n upgrade.newName,\n );\n }\n }\n }\n if (parsedContents?.dependenciesMeta) {\n for (const [depKey] of Object.entries(parsedContents.dependenciesMeta)) {\n if (depKey.startsWith(depName + '@')) {\n newFileContent = replaceAsString(\n parsedContents,\n newFileContent,\n 'dependenciesMeta',\n depName,\n depKey,\n // TODO: types (#22198)\n `${depName}@${newValue}`,\n );\n }\n }\n }\n return newFileContent;\n } catch (err) {\n logger.debug({ err }, 'updateDependency error');\n return null;\n }\n}\n\nfunction overrideDepPosition(\n overrideBlock: OverrideDependency,\n parents: string[],\n depName: string,\n): {\n depObjectReference: Record<string, string>;\n overrideDepName: string;\n} {\n // get override dep position when its nested in an object\n const lastParent = parents[parents.length - 1];\n let overrideDep: OverrideDependency = overrideBlock;\n for (const parent of parents) {\n if (overrideDep) {\n overrideDep = overrideDep[parent] as Record<string, RecursiveOverride>;\n }\n }\n const overrideDepName = depName === lastParent ? '.' : depName;\n const depObjectReference = overrideDep as Record<string, string>;\n return { depObjectReference, overrideDepName };\n}\n\nfunction isOverrideObject(upgrade: Upgrade<NpmManagerData>): boolean {\n return (\n isArray(upgrade.managerData?.parents, isNonEmptyStringAndNotWhitespace) &&\n upgrade.depType === 'overrides'\n );\n}\n"]}
@@ -9,11 +9,11 @@ const common_1 = require("./common");
9
9
  function updatePnpmCatalogDependency({ fileContent, upgrade, }) {
10
10
  const { depType, managerData, depName } = upgrade;
11
11
  const catalogName = depType?.split('.').at(-1);
12
- /* v8 ignore start -- needs test */
12
+ /* v8 ignore next -- needs test */
13
13
  if (!(0, is_1.isString)(catalogName)) {
14
14
  logger_1.logger.error('No catalogName was found; this is likely an extraction error.');
15
15
  return null;
16
- } /* v8 ignore stop -- needs test */
16
+ }
17
17
  let { newValue } = upgrade;
18
18
  newValue = (0, common_1.getNewGitValue)(upgrade) ?? newValue;
19
19
  newValue = (0, common_1.getNewNpmAliasValue)(newValue, upgrade) ?? newValue;
@@ -1 +1 @@
1
- {"version":3,"file":"pnpm.js","sourceRoot":"","sources":["../../../../../../lib/modules/manager/npm/update/dependency/pnpm.ts"],"names":[],"mappings":"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","sourcesContent":["import { isString } from '@sindresorhus/is';\nimport type { Document } from 'yaml';\nimport { CST, isCollection, isPair, isScalar, parseDocument } from 'yaml';\nimport { logger } from '../../../../../logger';\nimport type { UpdateDependencyConfig } from '../../../types';\nimport { PnpmCatalogs } from '../../schema';\nimport { getNewGitValue, getNewNpmAliasValue } from './common';\n\nexport function updatePnpmCatalogDependency({\n fileContent,\n upgrade,\n}: UpdateDependencyConfig): string | null {\n const { depType, managerData, depName } = upgrade;\n\n const catalogName = depType?.split('.').at(-1);\n\n /* v8 ignore start -- needs test */\n if (!isString(catalogName)) {\n logger.error(\n 'No catalogName was found; this is likely an extraction error.',\n );\n return null;\n } /* v8 ignore stop -- needs test */\n\n let { newValue } = upgrade;\n\n newValue = getNewGitValue(upgrade) ?? newValue;\n newValue = getNewNpmAliasValue(newValue, upgrade) ?? newValue;\n\n logger.trace(\n `npm.updatePnpmCatalogDependency(): ${depType}:${/* v8 ignore next -- needs test */ managerData?.catalogName}.${depName} = ${newValue}`,\n );\n\n let document;\n let parsedContents;\n\n try {\n // In order to preserve the original formatting as much as possible, we want\n // manipulate the CST directly. Using the AST (the result of parseDocument)\n // does not guarantee that formatting would be the same after\n // stringification. However, the CST is more annoying to query for certain\n // values. Thus, we use both an annotated AST and a JS representation; the\n // former for manipulation, and the latter for querying/validation.\n document = parseDocument(fileContent, { keepSourceTokens: true });\n parsedContents = PnpmCatalogs.parse(document.toJS());\n } catch (err) {\n logger.debug({ err }, 'Could not parse pnpm-workspace YAML file.');\n return null;\n }\n\n // In pnpm-workspace.yaml, the default catalog can be either `catalog` or\n // `catalog.default`, but not both (pnpm throws outright with a config error).\n // Thus, we must check which entry is being used, to reference it from / set\n // it in the right place.\n const usesImplicitDefaultCatalog = parsedContents.catalog !== undefined;\n\n const oldVersion =\n catalogName === 'default' && usesImplicitDefaultCatalog\n ? parsedContents.catalog?.[depName!]\n : parsedContents.catalogs?.[catalogName]?.[depName!];\n\n if (oldVersion === newValue) {\n logger.trace('Version is already updated');\n return fileContent;\n }\n\n // Update the value\n const path = getDepPath({\n depName: depName!,\n catalogName,\n usesImplicitDefaultCatalog,\n });\n\n const modifiedDocument = changeDependencyIn(document, path, {\n newValue,\n newName: upgrade.newName,\n });\n\n if (!modifiedDocument) {\n // Case where we are explicitly unable to substitute the key/value, for\n // example if the value was an alias.\n return null;\n }\n\n /* v8 ignore next 3 -- this should not happen in practice, but we must satisfy the types */\n if (!modifiedDocument.contents?.srcToken) {\n return null;\n }\n\n return CST.stringify(modifiedDocument.contents.srcToken);\n}\n\n/**\n * Change the scalar name and/or value of a collection item in a YAML document,\n * while keeping formatting consistent. Mutates the given document.\n */\nfunction changeDependencyIn(\n document: Document,\n path: string[],\n { newName, newValue }: { newName?: string; newValue?: string },\n): Document | null {\n const parentPath = path.slice(0, -1);\n const relevantItemKey = path.at(-1);\n\n const parentNode = document.getIn(parentPath);\n\n if (!parentNode || !isCollection(parentNode)) {\n return null;\n }\n\n const relevantNode = parentNode.items.find(\n (item) =>\n isPair(item) && isScalar(item.key) && item.key.value === relevantItemKey,\n );\n\n if (!relevantNode || !isPair(relevantNode)) {\n return null;\n }\n\n if (newName) {\n /* v8 ignore next 3 -- the try..catch block above already throws if a key is an alias */\n if (!CST.isScalar(relevantNode.srcToken?.key)) {\n return null;\n }\n CST.setScalarValue(relevantNode.srcToken.key, newName);\n }\n\n if (newValue) {\n // We only support scalar values when substituting. This explicitly avoids\n // substituting aliases, since those can be resolved from a shared location,\n // and replacing either the referrent anchor or the alias would be wrong in\n // the general case. We leave this up to the user, e.g. via a Regex custom\n // manager.\n if (!CST.isScalar(relevantNode.srcToken?.value)) {\n return null;\n }\n CST.setScalarValue(relevantNode.srcToken.value, newValue);\n }\n\n return document;\n}\n\nfunction getDepPath({\n catalogName,\n depName,\n usesImplicitDefaultCatalog,\n}: {\n usesImplicitDefaultCatalog: boolean;\n catalogName: string;\n depName: string;\n}): string[] {\n if (catalogName === 'default' && usesImplicitDefaultCatalog) {\n return ['catalog', depName];\n } else {\n return ['catalogs', catalogName, depName];\n }\n}\n"]}
1
+ {"version":3,"file":"pnpm.js","sourceRoot":"","sources":["../../../../../../lib/modules/manager/npm/update/dependency/pnpm.ts"],"names":[],"mappings":"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","sourcesContent":["import { isString } from '@sindresorhus/is';\nimport type { Document } from 'yaml';\nimport { CST, isCollection, isPair, isScalar, parseDocument } from 'yaml';\nimport { logger } from '../../../../../logger';\nimport type { UpdateDependencyConfig } from '../../../types';\nimport { PnpmCatalogs } from '../../schema';\nimport { getNewGitValue, getNewNpmAliasValue } from './common';\n\nexport function updatePnpmCatalogDependency({\n fileContent,\n upgrade,\n}: UpdateDependencyConfig): string | null {\n const { depType, managerData, depName } = upgrade;\n\n const catalogName = depType?.split('.').at(-1);\n\n /* v8 ignore next -- needs test */\n if (!isString(catalogName)) {\n logger.error(\n 'No catalogName was found; this is likely an extraction error.',\n );\n return null;\n }\n\n let { newValue } = upgrade;\n\n newValue = getNewGitValue(upgrade) ?? newValue;\n newValue = getNewNpmAliasValue(newValue, upgrade) ?? newValue;\n\n logger.trace(\n `npm.updatePnpmCatalogDependency(): ${depType}:${/* v8 ignore next -- needs test */ managerData?.catalogName}.${depName} = ${newValue}`,\n );\n\n let document;\n let parsedContents;\n\n try {\n // In order to preserve the original formatting as much as possible, we want\n // manipulate the CST directly. Using the AST (the result of parseDocument)\n // does not guarantee that formatting would be the same after\n // stringification. However, the CST is more annoying to query for certain\n // values. Thus, we use both an annotated AST and a JS representation; the\n // former for manipulation, and the latter for querying/validation.\n document = parseDocument(fileContent, { keepSourceTokens: true });\n parsedContents = PnpmCatalogs.parse(document.toJS());\n } catch (err) {\n logger.debug({ err }, 'Could not parse pnpm-workspace YAML file.');\n return null;\n }\n\n // In pnpm-workspace.yaml, the default catalog can be either `catalog` or\n // `catalog.default`, but not both (pnpm throws outright with a config error).\n // Thus, we must check which entry is being used, to reference it from / set\n // it in the right place.\n const usesImplicitDefaultCatalog = parsedContents.catalog !== undefined;\n\n const oldVersion =\n catalogName === 'default' && usesImplicitDefaultCatalog\n ? parsedContents.catalog?.[depName!]\n : parsedContents.catalogs?.[catalogName]?.[depName!];\n\n if (oldVersion === newValue) {\n logger.trace('Version is already updated');\n return fileContent;\n }\n\n // Update the value\n const path = getDepPath({\n depName: depName!,\n catalogName,\n usesImplicitDefaultCatalog,\n });\n\n const modifiedDocument = changeDependencyIn(document, path, {\n newValue,\n newName: upgrade.newName,\n });\n\n if (!modifiedDocument) {\n // Case where we are explicitly unable to substitute the key/value, for\n // example if the value was an alias.\n return null;\n }\n\n /* v8 ignore next 3 -- this should not happen in practice, but we must satisfy the types */\n if (!modifiedDocument.contents?.srcToken) {\n return null;\n }\n\n return CST.stringify(modifiedDocument.contents.srcToken);\n}\n\n/**\n * Change the scalar name and/or value of a collection item in a YAML document,\n * while keeping formatting consistent. Mutates the given document.\n */\nfunction changeDependencyIn(\n document: Document,\n path: string[],\n { newName, newValue }: { newName?: string; newValue?: string },\n): Document | null {\n const parentPath = path.slice(0, -1);\n const relevantItemKey = path.at(-1);\n\n const parentNode = document.getIn(parentPath);\n\n if (!parentNode || !isCollection(parentNode)) {\n return null;\n }\n\n const relevantNode = parentNode.items.find(\n (item) =>\n isPair(item) && isScalar(item.key) && item.key.value === relevantItemKey,\n );\n\n if (!relevantNode || !isPair(relevantNode)) {\n return null;\n }\n\n if (newName) {\n /* v8 ignore next 3 -- the try..catch block above already throws if a key is an alias */\n if (!CST.isScalar(relevantNode.srcToken?.key)) {\n return null;\n }\n CST.setScalarValue(relevantNode.srcToken.key, newName);\n }\n\n if (newValue) {\n // We only support scalar values when substituting. This explicitly avoids\n // substituting aliases, since those can be resolved from a shared location,\n // and replacing either the referrent anchor or the alias would be wrong in\n // the general case. We leave this up to the user, e.g. via a Regex custom\n // manager.\n if (!CST.isScalar(relevantNode.srcToken?.value)) {\n return null;\n }\n CST.setScalarValue(relevantNode.srcToken.value, newValue);\n }\n\n return document;\n}\n\nfunction getDepPath({\n catalogName,\n depName,\n usesImplicitDefaultCatalog,\n}: {\n usesImplicitDefaultCatalog: boolean;\n catalogName: string;\n depName: string;\n}): string[] {\n if (catalogName === 'default' && usesImplicitDefaultCatalog) {\n return ['catalog', depName];\n } else {\n return ['catalogs', catalogName, depName];\n }\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.bumpPackageVersion = exports.updateLockedDependency = exports.updateDependency = void 0;
4
+ /* v8 ignore file -- only re-exports */
4
5
  var dependency_1 = require("./dependency");
5
6
  Object.defineProperty(exports, "updateDependency", { enumerable: true, get: function () { return dependency_1.updateDependency; } });
6
7
  var locked_dependency_1 = require("./locked-dependency");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lib/modules/manager/npm/update/index.ts"],"names":[],"mappings":";;;AAAA,2CAAgD;AAAvC,8GAAA,gBAAgB,OAAA;AACzB,yDAA6D;AAApD,2HAAA,sBAAsB,OAAA;AAC/B,qDAAuD;AAA9C,qHAAA,kBAAkB,OAAA","sourcesContent":["export { updateDependency } from './dependency';\nexport { updateLockedDependency } from './locked-dependency';\nexport { bumpPackageVersion } from './package-version';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lib/modules/manager/npm/update/index.ts"],"names":[],"mappings":";;;AAAA,uCAAuC;AACvC,2CAAgD;AAAvC,8GAAA,gBAAgB,OAAA;AACzB,yDAA6D;AAApD,2HAAA,sBAAsB,OAAA;AAC/B,qDAAuD;AAA9C,qHAAA,kBAAkB,OAAA","sourcesContent":["/* v8 ignore file -- only re-exports */\nexport { updateDependency } from './dependency';\nexport { updateLockedDependency } from './locked-dependency';\nexport { bumpPackageVersion } from './package-version';\n"]}
@@ -24,19 +24,19 @@ function getPkgReleasesCached(packageName) {
24
24
  * - depends on any version of targetDepName higher than targetVersion
25
25
  */
26
26
  async function findFirstParentVersion(parentName, parentStartingVersion, targetDepName, targetVersion) {
27
- /* v8 ignore start -- needs test */
27
+ /* v8 ignore next -- needs test */
28
28
  if (!npm_1.api.isVersion(parentStartingVersion)) {
29
29
  logger_1.logger.debug('parentStartingVersion is not a version - cannot remediate');
30
30
  return null;
31
- } /* v8 ignore stop -- needs test */
31
+ }
32
32
  logger_1.logger.debug(`Finding first version of ${parentName} starting with ${parentStartingVersion} which supports >= ${targetDepName}@${targetVersion}`);
33
33
  try {
34
34
  const targetDep = await getPkgReleasesCached(targetDepName);
35
- /* v8 ignore start -- needs test */
35
+ /* v8 ignore next -- needs test */
36
36
  if (!targetDep) {
37
37
  logger_1.logger.info({ targetDepName }, 'Could not look up target dependency for remediation');
38
38
  return null;
39
- } /* v8 ignore stop -- needs test */
39
+ }
40
40
  const targetVersions = targetDep.releases
41
41
  .map((release) => release.version)
42
42
  .filter((version) => npm_1.api.isVersion(version) &&
@@ -44,11 +44,11 @@ async function findFirstParentVersion(parentName, parentStartingVersion, targetD
44
44
  (version === targetVersion ||
45
45
  npm_1.api.isGreaterThan(version, targetVersion)));
46
46
  const parentDep = await getPkgReleasesCached(parentName);
47
- /* v8 ignore start -- needs test */
47
+ /* v8 ignore next -- needs test */
48
48
  if (!parentDep) {
49
49
  logger_1.logger.info({ parentName }, 'Could not look up parent dependency for remediation');
50
50
  return null;
51
- } /* v8 ignore stop -- needs test */
51
+ }
52
52
  const parentVersions = parentDep.releases
53
53
  .map((release) => release.version)
54
54
  .filter((version) => npm_1.api.isVersion(version) &&
@@ -83,12 +83,12 @@ async function findFirstParentVersion(parentName, parentStartingVersion, targetD
83
83
  return parentVersion;
84
84
  }
85
85
  }
86
- /* v8 ignore start -- needs test */
86
+ /* v8 ignore next -- needs test */
87
87
  }
88
88
  catch (err) {
89
89
  logger_1.logger.warn({ parentName, parentStartingVersion, targetDepName, targetVersion, err }, 'findFirstParentVersion error');
90
90
  return null;
91
- } /* v8 ignore stop -- needs test */
91
+ }
92
92
  logger_1.logger.debug(`Could not find a matching version`);
93
93
  return null;
94
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parent-version.js","sourceRoot":"","sources":["../../../../../../../lib/modules/manager/npm/update/locked-dependency/common/parent-version.ts"],"names":[],"mappings":"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","sourcesContent":["import { logger } from '../../../../../../logger';\nimport type {\n GetPkgReleasesConfig,\n ReleaseResult,\n} from '../../../../../datasource';\nimport { getPkgReleases } from '../../../../../datasource';\nimport { api as semver } from '../../../../../versioning/npm';\n\nconst pkgCache = new Map<string, Promise<ReleaseResult | null>>();\n\nfunction getPkgReleasesCached(\n packageName: string,\n): Promise<ReleaseResult | null> {\n let cachedResult = pkgCache.get(packageName);\n if (!cachedResult) {\n const lookupConfig: GetPkgReleasesConfig = {\n datasource: 'npm',\n packageName,\n };\n cachedResult = getPkgReleases(lookupConfig);\n pkgCache.set(packageName, cachedResult);\n }\n return cachedResult;\n}\n\n/**\n * Finds the first stable version of parentName after parentStartingVersion which either:\n * - depends on targetDepName@targetVersion or a range which it satisfies, OR\n * - removes the dependency targetDepName altogether, OR\n * - depends on any version of targetDepName higher than targetVersion\n */\nexport async function findFirstParentVersion(\n parentName: string,\n parentStartingVersion: string,\n targetDepName: string,\n targetVersion: string,\n): Promise<string | null> {\n /* v8 ignore start -- needs test */\n if (!semver.isVersion(parentStartingVersion)) {\n logger.debug('parentStartingVersion is not a version - cannot remediate');\n return null;\n } /* v8 ignore stop -- needs test */\n logger.debug(\n `Finding first version of ${parentName} starting with ${parentStartingVersion} which supports >= ${targetDepName}@${targetVersion}`,\n );\n try {\n const targetDep = await getPkgReleasesCached(targetDepName);\n /* v8 ignore start -- needs test */\n if (!targetDep) {\n logger.info(\n { targetDepName },\n 'Could not look up target dependency for remediation',\n );\n return null;\n } /* v8 ignore stop -- needs test */\n const targetVersions = targetDep.releases\n .map((release) => release.version)\n .filter(\n (version) =>\n semver.isVersion(version) &&\n semver.isStable(version) &&\n (version === targetVersion ||\n semver.isGreaterThan(version, targetVersion)),\n );\n const parentDep = await getPkgReleasesCached(parentName);\n /* v8 ignore start -- needs test */\n if (!parentDep) {\n logger.info(\n { parentName },\n 'Could not look up parent dependency for remediation',\n );\n return null;\n } /* v8 ignore stop -- needs test */\n const parentVersions = parentDep.releases\n .map((release) => release.version)\n .filter(\n (version) =>\n semver.isVersion(version) &&\n semver.isStable(version) &&\n (version === parentStartingVersion ||\n semver.isGreaterThan(version, parentStartingVersion)),\n )\n .sort((v1, v2) => semver.sortVersions(v1, v2));\n // iterate through parentVersions in sorted order\n for (const parentVersion of parentVersions) {\n const constraint = parentDep.releases.find(\n (release) => release.version === parentVersion,\n )?.dependencies?.[targetDepName];\n if (!constraint) {\n logger.debug(\n `${targetDepName} has been removed from ${parentName}@${parentVersion}`,\n );\n return parentVersion;\n }\n if (semver.matches(targetVersion, constraint)) {\n // could be version or range\n logger.debug(\n `${targetDepName} needs ${parentName}@${parentVersion} which uses constraint \"${constraint}\" in order to update to ${targetVersion}`,\n );\n return parentVersion;\n }\n if (semver.isVersion(constraint)) {\n if (semver.isGreaterThan(constraint, targetVersion)) {\n // it's not the version we were after - the parent skipped to a higher version\n logger.debug(\n `${targetDepName} needs ${parentName}@${parentVersion} which uses version \"${constraint}\" in order to update to greater than ${targetVersion}`,\n );\n return parentVersion;\n }\n } else if (\n // check the range against all versions\n targetVersions.some((version) => semver.matches(version, constraint))\n ) {\n // the constraint didn't match the version we wanted, but it matches one of the versions higher\n logger.debug(\n `${targetDepName} needs ${parentName}@${parentVersion} which uses constraint \"${constraint}\" in order to update to greater than ${targetVersion}`,\n );\n return parentVersion;\n }\n }\n /* v8 ignore start -- needs test */\n } catch (err) {\n logger.warn(\n { parentName, parentStartingVersion, targetDepName, targetVersion, err },\n 'findFirstParentVersion error',\n );\n return null;\n } /* v8 ignore stop -- needs test */\n logger.debug(`Could not find a matching version`);\n return null;\n}\n"]}
1
+ {"version":3,"file":"parent-version.js","sourceRoot":"","sources":["../../../../../../../lib/modules/manager/npm/update/locked-dependency/common/parent-version.ts"],"names":[],"mappings":"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","sourcesContent":["import { logger } from '../../../../../../logger';\nimport type {\n GetPkgReleasesConfig,\n ReleaseResult,\n} from '../../../../../datasource';\nimport { getPkgReleases } from '../../../../../datasource';\nimport { api as semver } from '../../../../../versioning/npm';\n\nconst pkgCache = new Map<string, Promise<ReleaseResult | null>>();\n\nfunction getPkgReleasesCached(\n packageName: string,\n): Promise<ReleaseResult | null> {\n let cachedResult = pkgCache.get(packageName);\n if (!cachedResult) {\n const lookupConfig: GetPkgReleasesConfig = {\n datasource: 'npm',\n packageName,\n };\n cachedResult = getPkgReleases(lookupConfig);\n pkgCache.set(packageName, cachedResult);\n }\n return cachedResult;\n}\n\n/**\n * Finds the first stable version of parentName after parentStartingVersion which either:\n * - depends on targetDepName@targetVersion or a range which it satisfies, OR\n * - removes the dependency targetDepName altogether, OR\n * - depends on any version of targetDepName higher than targetVersion\n */\nexport async function findFirstParentVersion(\n parentName: string,\n parentStartingVersion: string,\n targetDepName: string,\n targetVersion: string,\n): Promise<string | null> {\n /* v8 ignore next -- needs test */\n if (!semver.isVersion(parentStartingVersion)) {\n logger.debug('parentStartingVersion is not a version - cannot remediate');\n return null;\n }\n logger.debug(\n `Finding first version of ${parentName} starting with ${parentStartingVersion} which supports >= ${targetDepName}@${targetVersion}`,\n );\n try {\n const targetDep = await getPkgReleasesCached(targetDepName);\n /* v8 ignore next -- needs test */\n if (!targetDep) {\n logger.info(\n { targetDepName },\n 'Could not look up target dependency for remediation',\n );\n return null;\n }\n const targetVersions = targetDep.releases\n .map((release) => release.version)\n .filter(\n (version) =>\n semver.isVersion(version) &&\n semver.isStable(version) &&\n (version === targetVersion ||\n semver.isGreaterThan(version, targetVersion)),\n );\n const parentDep = await getPkgReleasesCached(parentName);\n /* v8 ignore next -- needs test */\n if (!parentDep) {\n logger.info(\n { parentName },\n 'Could not look up parent dependency for remediation',\n );\n return null;\n }\n const parentVersions = parentDep.releases\n .map((release) => release.version)\n .filter(\n (version) =>\n semver.isVersion(version) &&\n semver.isStable(version) &&\n (version === parentStartingVersion ||\n semver.isGreaterThan(version, parentStartingVersion)),\n )\n .sort((v1, v2) => semver.sortVersions(v1, v2));\n // iterate through parentVersions in sorted order\n for (const parentVersion of parentVersions) {\n const constraint = parentDep.releases.find(\n (release) => release.version === parentVersion,\n )?.dependencies?.[targetDepName];\n if (!constraint) {\n logger.debug(\n `${targetDepName} has been removed from ${parentName}@${parentVersion}`,\n );\n return parentVersion;\n }\n if (semver.matches(targetVersion, constraint)) {\n // could be version or range\n logger.debug(\n `${targetDepName} needs ${parentName}@${parentVersion} which uses constraint \"${constraint}\" in order to update to ${targetVersion}`,\n );\n return parentVersion;\n }\n if (semver.isVersion(constraint)) {\n if (semver.isGreaterThan(constraint, targetVersion)) {\n // it's not the version we were after - the parent skipped to a higher version\n logger.debug(\n `${targetDepName} needs ${parentName}@${parentVersion} which uses version \"${constraint}\" in order to update to greater than ${targetVersion}`,\n );\n return parentVersion;\n }\n } else if (\n // check the range against all versions\n targetVersions.some((version) => semver.matches(version, constraint))\n ) {\n // the constraint didn't match the version we wanted, but it matches one of the versions higher\n logger.debug(\n `${targetDepName} needs ${parentName}@${parentVersion} which uses constraint \"${constraint}\" in order to update to greater than ${targetVersion}`,\n );\n return parentVersion;\n }\n }\n /* v8 ignore next -- needs test */\n } catch (err) {\n logger.warn(\n { parentName, parentStartingVersion, targetDepName, targetVersion, err },\n 'findFirstParentVersion error',\n );\n return null;\n }\n logger.debug(`Could not find a matching version`);\n return null;\n}\n"]}
@@ -40,10 +40,10 @@ function findDepConstraints(packageJson, lockEntry, depName, currentVersion, new
40
40
  constraint,
41
41
  });
42
42
  }
43
- } /* v8 ignore start -- needs test */
43
+ } /* v8 ignore next -- needs test */
44
44
  else {
45
45
  logger_1.logger.warn({ parentDepName, depName, currentVersion, constraint }, 'Parent constraint is invalid');
46
- } /* v8 ignore stop -- needs test */
46
+ }
47
47
  }
48
48
  }
49
49
  if (dependencies) {
@@ -1 +1 @@
1
- {"version":3,"file":"dep-constraints.js","sourceRoot":"","sources":["../../../../../../../lib/modules/manager/npm/update/locked-dependency/package-lock/dep-constraints.ts"],"names":[],"mappings":";;AAOA,gDA6EC;AAnFD,qDAAkD;AAClD,wDAAqD;AACrD,uDAA8D;AAG9D,mEAAmE;AACnE,SAAgB,kBAAkB,CAChC,WAAwB,EACxB,SAA6B,EAC7B,OAAe,EACf,cAAsB,EACtB,UAAkB,EAClB,aAAsB;IAEtB,IAAI,OAAO,GAAuB,EAAE,CAAC;IACrC,IAAI,qBAAqB,GAAG,WAAW,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC;IAChE,IACE,qBAAqB;QACrB,SAAM,CAAC,OAAO,CAAC,cAAc,EAAE,qBAAqB,CAAC,EACrD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC;YACX,OAAO,EAAE,cAAc;YACvB,UAAU,EAAE,qBAAqB;SAClC,CAAC,CAAC;IACL,CAAC;IACD,qBAAqB,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC;IAC/D,IACE,qBAAqB;QACrB,SAAM,CAAC,OAAO,CAAC,cAAc,EAAE,qBAAqB,CAAC,EACrD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC;YACX,OAAO,EAAE,iBAAiB;YAC1B,UAAU,EAAE,qBAAqB;SAClC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;IACtD,IAAI,aAAa,IAAI,QAAQ,EAAE,CAAC;QAC9B,IAAI,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,IAAA,aAAK,EAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;YAC3D,IAAI,SAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC/B,IAAI,SAAM,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,CAAC,EAAE,CAAC;oBAC/C,IAAI,UAAU,KAAK,cAAc,EAAE,CAAC;wBAClC,yGAAyG;wBACzG,QAAQ,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC;oBACjC,CAAC;oBACD,OAAO,CAAC,IAAI,CAAC;wBACX,aAAa;wBACb,aAAa,EAAE,OAAO;wBACtB,UAAU;qBACX,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,mCAAmC;iBAAM,CAAC;gBAC1C,eAAM,CAAC,IAAI,CACT,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,EACtD,8BAA8B,CAC/B,CAAC;YACJ,CAAC,CAAC,kCAAkC;QACtC,CAAC;IACH,CAAC;IACD,IAAI,YAAY,EAAE,CAAC;QACjB,KAAK,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YACrE,OAAO,GAAG,OAAO,CAAC,MAAM,CACtB,kBAAkB,CAChB,WAAW,EACX,UAAU,EACV,OAAO,EACP,cAAc,EACd,UAAU,EACV,WAAW,CACZ,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,SAAS;IACT,MAAM,GAAG,GAAuB,EAAE,CAAC;IACnC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC","sourcesContent":["import type { PackageJson } from 'type-fest';\nimport { logger } from '../../../../../../logger';\nimport { regEx } from '../../../../../../util/regex';\nimport { api as semver } from '../../../../../versioning/npm';\nimport type { PackageLockOrEntry, ParentDependency } from './types';\n\n// Finds all parent dependencies for a given depName@currentVersion\nexport function findDepConstraints(\n packageJson: PackageJson,\n lockEntry: PackageLockOrEntry,\n depName: string,\n currentVersion: string,\n newVersion: string,\n parentDepName?: string,\n): ParentDependency[] {\n let parents: ParentDependency[] = [];\n let packageJsonConstraint = packageJson.dependencies?.[depName];\n if (\n packageJsonConstraint &&\n semver.matches(currentVersion, packageJsonConstraint)\n ) {\n parents.push({\n depType: 'dependencies',\n constraint: packageJsonConstraint,\n });\n }\n packageJsonConstraint = packageJson.devDependencies?.[depName];\n if (\n packageJsonConstraint &&\n semver.matches(currentVersion, packageJsonConstraint)\n ) {\n parents.push({\n depType: 'devDependencies',\n constraint: packageJsonConstraint,\n });\n }\n const { dependencies, requires, version } = lockEntry;\n if (parentDepName && requires) {\n let constraint = requires[depName];\n if (constraint) {\n constraint = constraint.replace(regEx(/(\\d)rc$/), '$1-rc');\n if (semver.isValid(constraint)) {\n if (semver.matches(currentVersion, constraint)) {\n if (constraint === currentVersion) {\n // Workaround for old versions of npm which wrote the exact version in requires instead of the constraint\n requires[depName] = newVersion;\n }\n parents.push({\n parentDepName,\n parentVersion: version,\n constraint,\n });\n }\n } /* v8 ignore start -- needs test */ else {\n logger.warn(\n { parentDepName, depName, currentVersion, constraint },\n 'Parent constraint is invalid',\n );\n } /* v8 ignore stop -- needs test */\n }\n }\n if (dependencies) {\n for (const [packageName, dependency] of Object.entries(dependencies)) {\n parents = parents.concat(\n findDepConstraints(\n packageJson,\n dependency,\n depName,\n currentVersion,\n newVersion,\n packageName,\n ),\n );\n }\n }\n // dedupe\n const res: ParentDependency[] = [];\n for (const req of parents) {\n const reqStringified = JSON.stringify(req);\n if (!res.find((i) => JSON.stringify(i) === reqStringified)) {\n res.push(req);\n }\n }\n return res;\n}\n"]}
1
+ {"version":3,"file":"dep-constraints.js","sourceRoot":"","sources":["../../../../../../../lib/modules/manager/npm/update/locked-dependency/package-lock/dep-constraints.ts"],"names":[],"mappings":";;AAOA,gDA6EC;AAnFD,qDAAkD;AAClD,wDAAqD;AACrD,uDAA8D;AAG9D,mEAAmE;AACnE,SAAgB,kBAAkB,CAChC,WAAwB,EACxB,SAA6B,EAC7B,OAAe,EACf,cAAsB,EACtB,UAAkB,EAClB,aAAsB;IAEtB,IAAI,OAAO,GAAuB,EAAE,CAAC;IACrC,IAAI,qBAAqB,GAAG,WAAW,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC;IAChE,IACE,qBAAqB;QACrB,SAAM,CAAC,OAAO,CAAC,cAAc,EAAE,qBAAqB,CAAC,EACrD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC;YACX,OAAO,EAAE,cAAc;YACvB,UAAU,EAAE,qBAAqB;SAClC,CAAC,CAAC;IACL,CAAC;IACD,qBAAqB,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC;IAC/D,IACE,qBAAqB;QACrB,SAAM,CAAC,OAAO,CAAC,cAAc,EAAE,qBAAqB,CAAC,EACrD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC;YACX,OAAO,EAAE,iBAAiB;YAC1B,UAAU,EAAE,qBAAqB;SAClC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;IACtD,IAAI,aAAa,IAAI,QAAQ,EAAE,CAAC;QAC9B,IAAI,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,IAAA,aAAK,EAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;YAC3D,IAAI,SAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC/B,IAAI,SAAM,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,CAAC,EAAE,CAAC;oBAC/C,IAAI,UAAU,KAAK,cAAc,EAAE,CAAC;wBAClC,yGAAyG;wBACzG,QAAQ,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC;oBACjC,CAAC;oBACD,OAAO,CAAC,IAAI,CAAC;wBACX,aAAa;wBACb,aAAa,EAAE,OAAO;wBACtB,UAAU;qBACX,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,kCAAkC;iBAAM,CAAC;gBACzC,eAAM,CAAC,IAAI,CACT,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,EACtD,8BAA8B,CAC/B,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,YAAY,EAAE,CAAC;QACjB,KAAK,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YACrE,OAAO,GAAG,OAAO,CAAC,MAAM,CACtB,kBAAkB,CAChB,WAAW,EACX,UAAU,EACV,OAAO,EACP,cAAc,EACd,UAAU,EACV,WAAW,CACZ,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,SAAS;IACT,MAAM,GAAG,GAAuB,EAAE,CAAC;IACnC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC","sourcesContent":["import type { PackageJson } from 'type-fest';\nimport { logger } from '../../../../../../logger';\nimport { regEx } from '../../../../../../util/regex';\nimport { api as semver } from '../../../../../versioning/npm';\nimport type { PackageLockOrEntry, ParentDependency } from './types';\n\n// Finds all parent dependencies for a given depName@currentVersion\nexport function findDepConstraints(\n packageJson: PackageJson,\n lockEntry: PackageLockOrEntry,\n depName: string,\n currentVersion: string,\n newVersion: string,\n parentDepName?: string,\n): ParentDependency[] {\n let parents: ParentDependency[] = [];\n let packageJsonConstraint = packageJson.dependencies?.[depName];\n if (\n packageJsonConstraint &&\n semver.matches(currentVersion, packageJsonConstraint)\n ) {\n parents.push({\n depType: 'dependencies',\n constraint: packageJsonConstraint,\n });\n }\n packageJsonConstraint = packageJson.devDependencies?.[depName];\n if (\n packageJsonConstraint &&\n semver.matches(currentVersion, packageJsonConstraint)\n ) {\n parents.push({\n depType: 'devDependencies',\n constraint: packageJsonConstraint,\n });\n }\n const { dependencies, requires, version } = lockEntry;\n if (parentDepName && requires) {\n let constraint = requires[depName];\n if (constraint) {\n constraint = constraint.replace(regEx(/(\\d)rc$/), '$1-rc');\n if (semver.isValid(constraint)) {\n if (semver.matches(currentVersion, constraint)) {\n if (constraint === currentVersion) {\n // Workaround for old versions of npm which wrote the exact version in requires instead of the constraint\n requires[depName] = newVersion;\n }\n parents.push({\n parentDepName,\n parentVersion: version,\n constraint,\n });\n }\n } /* v8 ignore next -- needs test */ else {\n logger.warn(\n { parentDepName, depName, currentVersion, constraint },\n 'Parent constraint is invalid',\n );\n }\n }\n }\n if (dependencies) {\n for (const [packageName, dependency] of Object.entries(dependencies)) {\n parents = parents.concat(\n findDepConstraints(\n packageJson,\n dependency,\n depName,\n currentVersion,\n newVersion,\n packageName,\n ),\n );\n }\n }\n // dedupe\n const res: ParentDependency[] = [];\n for (const req of parents) {\n const reqStringified = JSON.stringify(req);\n if (!res.find((i) => JSON.stringify(i) === reqStringified)) {\n res.push(req);\n }\n }\n return res;\n}\n"]}
@@ -71,7 +71,7 @@ async function updateLockedDependency(config, isParentUpdate = false) {
71
71
  }
72
72
  }
73
73
  // Don't return {} if we're a parent update or else the whole update will fail
74
- /* v8 ignore start -- too hard to replicate */
74
+ /* v8 ignore next -- too hard to replicate */
75
75
  if (isParentUpdate) {
76
76
  const files = {};
77
77
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
@@ -158,13 +158,13 @@ async function updateLockedDependency(config, isParentUpdate = false) {
158
158
  packageFileContent: newPackageJsonContent ?? packageFileContent,
159
159
  };
160
160
  const parentUpdateResult = await updateLockedDependency(parentUpdateConfig, true);
161
- /* v8 ignore start -- hard to test due to recursion */
161
+ /* v8 ignore next -- hard to test due to recursion */
162
162
  if (!parentUpdateResult.files) {
163
163
  logger_1.logger.debug(
164
164
  // TODO: types (#22198)
165
165
  `Update of ${depName} to ${newVersion} impossible due to failed update of parent ${parentUpdate.depName} to ${parentUpdate.newVersion}`);
166
166
  return { status: 'update-failed' };
167
- } /* v8 ignore stop -- needs test */
167
+ }
168
168
  newPackageJsonContent =
169
169
  parentUpdateResult.files[packageFile] || newPackageJsonContent;
170
170
  /* v8 ignore next 2 -- hard to test */
@@ -183,11 +183,11 @@ async function updateLockedDependency(config, isParentUpdate = false) {
183
183
  return { status: 'unsupported' };
184
184
  }
185
185
  return { status: 'updated', files };
186
- /* v8 ignore start -- needs test */
186
+ /* v8 ignore next -- needs test */
187
187
  }
188
188
  catch (err) {
189
189
  logger_1.logger.error({ err }, 'updateLockedDependency() error');
190
190
  return { status: 'update-failed' };
191
- } /* v8 ignore stop -- needs test */
191
+ }
192
192
  }
193
193
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../lib/modules/manager/npm/update/locked-dependency/package-lock/index.ts"],"names":[],"mappings":";;AAWA,wDA+PC;;AA1QD,0EAAyC;AAEzC,qDAAkD;AAClD,uDAA8D;AAE9D,iDAAoD;AACpD,6DAAkE;AAClE,uDAAuD;AACvD,6CAAqD;AAG9C,KAAK,UAAU,sBAAsB,CAC1C,MAA0B,EAC1B,cAAc,GAAG,KAAK;IAEtB,MAAM,EACJ,OAAO,EACP,cAAc,EACd,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,QAAQ,EACR,eAAe,EACf,kBAAkB,GAAG,IAAI,EACzB,oBAAoB,GAAG,KAAK,GAC7B,GAAG,MAAM,CAAC;IACX,eAAM,CAAC,KAAK,CACV,+BAA+B,OAAO,IAAI,cAAc,OAAO,UAAU,KAAK,QAAQ,GAAG,CAC1F,CAAC;IACF,IAAI,CAAC;QACH,IAAI,WAAwB,CAAC;QAC7B,IAAI,eAAmC,CAAC;QACxC,cAAc;QACd,MAAM,cAAc,GAAG,IAAA,uBAAY,EAAC,eAAgB,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC;QACrE,IAAI,qBAAgD,CAAC;QACrD,IAAI,CAAC;YACH,cAAc;YACd,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAmB,CAAC,CAAC;YAC9C,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,eAAgB,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,eAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,uBAAuB,CAAC,CAAC;YAC9C,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;QACrC,CAAC;QACD,MAAM,EAAE,eAAe,EAAE,GAAG,eAAe,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAA,kCAAqB,EACtC,eAAe,EACf,OAAO,EACP,cAAc,CACf,CAAC;QACF,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1C,eAAM,CAAC,KAAK,CACV,WAAW,OAAO,IAAI,cAAc,mCAAmC,CACxE,CAAC;YACF,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;QACrC,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,aAAa,GAAG,IAAA,kCAAqB,EACzC,eAAe,EACf,OAAO,EACP,UAAU,CACX,CAAC;YACF,IAAI,MAA2C,CAAC;YAChD,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;gBACzB,eAAM,CAAC,KAAK,CACV,GAAG,OAAO,IAAI,cAAc,iBAAiB,QAAQ,QAAQ,OAAO,IAAI,UAAU,wCAAwC,CAC3H,CAAC;gBACF,MAAM,GAAG,iBAAiB,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,IAAI,eAAe,KAAK,CAAC,EAAE,CAAC;oBAC1B,eAAM,CAAC,KAAK;oBACV,uBAAuB;oBACvB,yBAAyB,eAAe,CAAC,eAAgB,EAAE,CAC5D,CAAC;oBACF,MAAM,GAAG,eAAe,CAAC;gBAC3B,CAAC;qBAAM,IAAI,oBAAoB,EAAE,CAAC;oBAChC,sDAAsD;oBACtD,MAAM,gBAAgB,GAAG,IAAA,kCAAqB,EAC5C,eAAe,EACf,OAAO,EACP,IAAI,CACL,CAAC;oBACF,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;wBAC5B,IACE,gBAAgB,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAC7B,SAAM,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAC9C,EACD,CAAC;4BACD,eAAM,CAAC,KAAK,CACV,GAAG,OAAO,aAAa,QAAQ,wDAAwD,CACxF,CAAC;4BACF,MAAM,GAAG,iBAAiB,CAAC;wBAC7B,CAAC;6BAAM,CAAC;4BACN,eAAM,CAAC,KAAK,CACV,EAAE,gBAAgB,EAAE,EACpB,kCAAkC,CACnC,CAAC;4BACF,MAAM,GAAG,eAAe,CAAC;wBAC3B,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,eAAM,CAAC,KAAK,CACV,GAAG,OAAO,iBAAiB,QAAQ,oCAAoC,CACxE,CAAC;wBACF,MAAM,GAAG,iBAAiB,CAAC;oBAC7B,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,eAAM,CAAC,KAAK,CACV,GAAG,OAAO,IAAI,cAAc,iBAAiB,QAAQ,kBAAkB,CACxE,CAAC;oBACF,MAAM,GAAG,eAAe,CAAC;gBAC3B,CAAC;YACH,CAAC;YACD,8EAA8E;YAC9E,8CAA8C;YAC9C,IAAI,cAAc,EAAE,CAAC;gBACnB,MAAM,KAAK,GAA2B,EAAE,CAAC;gBACzC,4EAA4E;gBAC5E,KAAK,CAAC,WAAY,CAAC,GAAG,kBAAmB,CAAC;gBAC1C,4EAA4E;gBAC5E,KAAK,CAAC,QAAS,CAAC,GAAG,eAAgB,CAAC;gBACpC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YAC3B,CAAC,CAAC,6CAA6C;YAC/C,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,CAAC;QACD,eAAM,CAAC,KAAK,CACV,2CAA2C,UAAU,CAAC,MAAM,EAAE,CAC/D,CAAC;QACF,MAAM,WAAW,GAAG,IAAA,oCAAkB,EACpC,WAAW,EACX,eAAe,EACf,OAAO,EACP,cAAc,EACd,UAAU,CACX,CAAC;QACF,eAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,kBAAkB,CAAC,CAAC;QACpE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YACxB,eAAM,CAAC,IAAI,CACT,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,EACvC,yEAAyE,CAC1E,CAAC;YACF,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;QACrC,CAAC;QACD,MAAM,aAAa,GAAkC,EAAE,CAAC;QACxD,KAAK,MAAM,EACT,aAAa,EACb,aAAa,EACb,UAAU,EACV,OAAO,GACR,IAAI,WAAW,EAAE,CAAC;YACjB,IAAI,SAAM,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC;gBAC3C,+DAA+D;gBAC/D,eAAM,CAAC,KAAK,CACV,GAAG,OAAO,sBAAsB,UAAU,uCAAuC,UAAU,QAAQ;gBACjG,uBAAuB;gBACvB,oCAAoC;gBACpC,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,IAAI,aAAc,EAAE,CAAC,CAAC,CAAC,WACzD,EAAE,CACH,CAAC;YACJ,CAAC;iBAAM,IAAI,aAAa,IAAI,aAAa,EAAE,CAAC;gBAC1C,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBACxB,eAAM,CAAC,KAAK,CACV,iBAAiB,OAAO,OAAO,UAAU,yBAAyB,aAAa,EAAE,CAClF,CAAC;oBACF,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;gBACrC,CAAC;gBACD,uCAAuC;gBACvC,MAAM,gBAAgB,GAAG,MAAM,IAAA,uCAAsB,EACnD,aAAa,EACb,aAAa,EACb,OAAO,EACP,UAAU,CACX,CAAC;gBACF,IAAI,gBAAgB,EAAE,CAAC;oBACrB,IAAI,gBAAgB,KAAK,aAAa,EAAE,CAAC;wBACvC,eAAM,CAAC,KAAK,CACV,aAAa,OAAO,OAAO,UAAU,+BAA+B,aAAa,IAAI,gBAAgB,EAAE,CACxG,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,qEAAqE;wBACrE,eAAM,CAAC,KAAK,CACV,aAAa,OAAO,OAAO,UAAU,kCAAkC,aAAa,EAAE,CACvF,CAAC;wBACF,MAAM,YAAY,GAAgC;4BAChD,OAAO,EAAE,aAAa;4BACtB,cAAc,EAAE,aAAa;4BAC7B,UAAU,EAAE,gBAAgB;yBAC7B,CAAC;wBACF,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACnC,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,8GAA8G;oBAC9G,eAAM,CAAC,KAAK,CACV,aAAa,OAAO,OAAO,UAAU,qCAAqC,aAAa,EAAE,CAC1F,CAAC;oBACF,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;gBACrC,CAAC;YACH,CAAC;iBAAM,IAAI,OAAO,EAAE,CAAC;gBACnB,qCAAqC;gBACrC,2EAA2E;gBAC3E,MAAM,QAAQ,GAAG,SAAM,CAAC,WAAW,CAAC;oBAClC,YAAY,EAAE,UAAU;oBACxB,aAAa,EAAE,SAAS;oBACxB,cAAc;oBACd,UAAU;iBACX,CAAE,CAAC;gBACJ,qBAAqB,GAAG,IAAA,6BAAgB,EAAC;oBACvC,cAAc;oBACd,WAAW,EAAE,kBAAmB;oBAChC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE;iBACxC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,KAAK,MAAM,UAAU,IAAI,UAAU,EAAE,CAAC;YACpC,0DAA0D;YAC1D,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC;YAChC,OAAO,UAAU,CAAC,QAAQ,CAAC;YAC3B,OAAO,UAAU,CAAC,SAAS,CAAC;QAC9B,CAAC;QACD,IAAI,kBAAkB,GAAG,IAAI,CAAC,SAAS,CACrC,eAAe,EACf,IAAI,EACJ,cAAc,CACf,CAAC;QACF,2CAA2C;QAC3C,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACzC,MAAM,kBAAkB,GAAG;gBACzB,GAAG,MAAM;gBACT,GAAG,YAAY;gBACf,eAAe,EAAE,kBAAkB;gBACnC,kBAAkB,EAAE,qBAAqB,IAAI,kBAAkB;aAChE,CAAC;YACF,MAAM,kBAAkB,GAAG,MAAM,sBAAsB,CACrD,kBAAkB,EAClB,IAAI,CACL,CAAC;YACF,sDAAsD;YACtD,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;gBAC9B,eAAM,CAAC,KAAK;gBACV,uBAAuB;gBACvB,aAAa,OAAO,OAAO,UAAU,8CAA8C,YAAY,CAAC,OAAO,OAAO,YAAY,CAAC,UAAU,EAAE,CACxI,CAAC;gBACF,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;YACrC,CAAC,CAAC,kCAAkC;YACpC,qBAAqB;gBACnB,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,qBAAqB,CAAC;YACjE,sCAAsC;YACtC,kBAAkB;gBAChB,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC;QAC7D,CAAC;QACD,MAAM,KAAK,GAA2B,EAAE,CAAC;QACzC,IAAI,kBAAkB,EAAE,CAAC;YACvB,KAAK,CAAC,QAAQ,CAAC,GAAG,kBAAkB,CAAC;QACvC,CAAC;QACD,IAAI,qBAAqB,EAAE,CAAC;YAC1B,KAAK,CAAC,WAAW,CAAC,GAAG,qBAAqB,CAAC;QAC7C,CAAC;aAAM,IAAI,eAAe,KAAK,CAAC,EAAE,CAAC;YACjC,eAAM,CAAC,KAAK,CACV,6FAA6F,CAC9F,CAAC;YACF,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;QACnC,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACpC,mCAAmC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,gCAAgC,CAAC,CAAC;QACxD,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IACrC,CAAC,CAAC,kCAAkC;AACtC,CAAC","sourcesContent":["import detectIndent from 'detect-indent';\nimport type { PackageJson } from 'type-fest';\nimport { logger } from '../../../../../../logger';\nimport { api as semver } from '../../../../../versioning/npm';\nimport type { UpdateLockedConfig, UpdateLockedResult } from '../../../../types';\nimport { updateDependency } from '../../dependency';\nimport { findFirstParentVersion } from '../common/parent-version';\nimport { findDepConstraints } from './dep-constraints';\nimport { getLockedDependencies } from './get-locked';\nimport type { PackageLockOrEntry } from './types';\n\nexport async function updateLockedDependency(\n config: UpdateLockedConfig,\n isParentUpdate = false,\n): Promise<UpdateLockedResult> {\n const {\n depName,\n currentVersion,\n newVersion,\n packageFile,\n packageFileContent,\n lockFile,\n lockFileContent,\n allowParentUpdates = true,\n allowHigherOrRemoved = false,\n } = config;\n logger.debug(\n `npm.updateLockedDependency: ${depName}@${currentVersion} -> ${newVersion} [${lockFile}]`,\n );\n try {\n let packageJson: PackageJson;\n let packageLockJson: PackageLockOrEntry;\n // TODO #22198\n const detectedIndent = detectIndent(lockFileContent!).indent || ' ';\n let newPackageJsonContent: string | null | undefined;\n try {\n // TODO #22198\n packageJson = JSON.parse(packageFileContent!);\n packageLockJson = JSON.parse(lockFileContent!);\n } catch (err) {\n logger.warn({ err }, 'Failed to parse files');\n return { status: 'update-failed' };\n }\n const { lockfileVersion } = packageLockJson;\n const lockedDeps = getLockedDependencies(\n packageLockJson,\n depName,\n currentVersion,\n );\n if (lockedDeps.some((dep) => dep.bundled)) {\n logger.debug(\n `Package ${depName}@${currentVersion} is bundled and cannot be updated`,\n );\n return { status: 'update-failed' };\n }\n if (!lockedDeps.length) {\n const newLockedDeps = getLockedDependencies(\n packageLockJson,\n depName,\n newVersion,\n );\n let status: 'update-failed' | 'already-updated';\n if (newLockedDeps.length) {\n logger.debug(\n `${depName}@${currentVersion} not found in ${lockFile} but ${depName}@${newVersion} was - looks like it's already updated`,\n );\n status = 'already-updated';\n } else {\n if (lockfileVersion !== 1) {\n logger.debug(\n // TODO: types (#22198)\n `Found lockfileVersion ${packageLockJson.lockfileVersion!}`,\n );\n status = 'update-failed';\n } else if (allowHigherOrRemoved) {\n // it's acceptable if the package is no longer present\n const anyVersionLocked = getLockedDependencies(\n packageLockJson,\n depName,\n null,\n );\n if (anyVersionLocked.length) {\n if (\n anyVersionLocked.every((dep) =>\n semver.isGreaterThan(dep.version, newVersion),\n )\n ) {\n logger.debug(\n `${depName} found in ${lockFile} with higher version - looks like it's already updated`,\n );\n status = 'already-updated';\n } else {\n logger.debug(\n { anyVersionLocked },\n `Found alternative versions of qs`,\n );\n status = 'update-failed';\n }\n } else {\n logger.debug(\n `${depName} not found in ${lockFile} - looks like it's already removed`,\n );\n status = 'already-updated';\n }\n } else {\n logger.debug(\n `${depName}@${currentVersion} not found in ${lockFile} - cannot update`,\n );\n status = 'update-failed';\n }\n }\n // Don't return {} if we're a parent update or else the whole update will fail\n /* v8 ignore start -- too hard to replicate */\n if (isParentUpdate) {\n const files: Record<string, string> = {};\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n files[packageFile!] = packageFileContent!;\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n files[lockFile!] = lockFileContent!;\n return { status, files };\n } /* v8 ignore stop -- too hard to replicate */\n return { status };\n }\n logger.debug(\n `Found matching dependencies with length ${lockedDeps.length}`,\n );\n const constraints = findDepConstraints(\n packageJson,\n packageLockJson,\n depName,\n currentVersion,\n newVersion,\n );\n logger.trace({ deps: lockedDeps, constraints }, 'Matching details');\n if (!constraints.length) {\n logger.info(\n { depName, currentVersion, newVersion },\n 'Could not find constraints for the locked dependency - cannot remediate',\n );\n return { status: 'update-failed' };\n }\n const parentUpdates: Partial<UpdateLockedConfig>[] = [];\n for (const {\n parentDepName,\n parentVersion,\n constraint,\n depType,\n } of constraints) {\n if (semver.matches(newVersion, constraint)) {\n // Parent dependency is compatible with the new version we want\n logger.debug(\n `${depName} can be updated to ${newVersion} in-range with matching constraint \"${constraint}\" in ${\n // TODO: types (#22198)\n /* v8 ignore next -- hard to test */\n parentDepName ? `${parentDepName}@${parentVersion!}` : packageFile\n }`,\n );\n } else if (parentDepName && parentVersion) {\n if (!allowParentUpdates) {\n logger.debug(\n `Cannot update ${depName} to ${newVersion} without an update to ${parentDepName}`,\n );\n return { status: 'update-failed' };\n }\n // Parent dependency needs updating too\n const parentNewVersion = await findFirstParentVersion(\n parentDepName,\n parentVersion,\n depName,\n newVersion,\n );\n if (parentNewVersion) {\n if (parentNewVersion === parentVersion) {\n logger.debug(\n `Update of ${depName} to ${newVersion} already achieved in parent ${parentDepName}@${parentNewVersion}`,\n );\n } else {\n // Update the parent dependency so that we can update this dependency\n logger.debug(\n `Update of ${depName} to ${newVersion} can be achieved due to parent ${parentDepName}`,\n );\n const parentUpdate: Partial<UpdateLockedConfig> = {\n depName: parentDepName,\n currentVersion: parentVersion,\n newVersion: parentNewVersion,\n };\n parentUpdates.push(parentUpdate);\n }\n } else {\n // For some reason it's not possible to update the parent to a version compatible with our desired dep version\n logger.debug(\n `Update of ${depName} to ${newVersion} cannot be achieved due to parent ${parentDepName}`,\n );\n return { status: 'update-failed' };\n }\n } else if (depType) {\n // TODO: `newValue` can probably null\n // The constraint comes from the package.json file, so we need to update it\n const newValue = semver.getNewValue({\n currentValue: constraint,\n rangeStrategy: 'replace',\n currentVersion,\n newVersion,\n })!;\n newPackageJsonContent = updateDependency({\n // TODO #22198\n fileContent: packageFileContent!,\n upgrade: { depName, depType, newValue },\n });\n }\n }\n for (const dependency of lockedDeps) {\n // Remove resolved and integrity fields for npm to fill in\n dependency.version = newVersion;\n delete dependency.resolved;\n delete dependency.integrity;\n }\n let newLockFileContent = JSON.stringify(\n packageLockJson,\n null,\n detectedIndent,\n );\n // iterate through the parent updates first\n for (const parentUpdate of parentUpdates) {\n const parentUpdateConfig = {\n ...config,\n ...parentUpdate,\n lockFileContent: newLockFileContent,\n packageFileContent: newPackageJsonContent ?? packageFileContent,\n };\n const parentUpdateResult = await updateLockedDependency(\n parentUpdateConfig,\n true,\n );\n /* v8 ignore start -- hard to test due to recursion */\n if (!parentUpdateResult.files) {\n logger.debug(\n // TODO: types (#22198)\n `Update of ${depName} to ${newVersion} impossible due to failed update of parent ${parentUpdate.depName} to ${parentUpdate.newVersion}`,\n );\n return { status: 'update-failed' };\n } /* v8 ignore stop -- needs test */\n newPackageJsonContent =\n parentUpdateResult.files[packageFile] || newPackageJsonContent;\n /* v8 ignore next 2 -- hard to test */\n newLockFileContent =\n parentUpdateResult.files[lockFile] || newLockFileContent;\n }\n const files: Record<string, string> = {};\n if (newLockFileContent) {\n files[lockFile] = newLockFileContent;\n }\n if (newPackageJsonContent) {\n files[packageFile] = newPackageJsonContent;\n } else if (lockfileVersion !== 1) {\n logger.debug(\n 'Remediations which change package-lock.json only are not supported unless lockfileVersion=1',\n );\n return { status: 'unsupported' };\n }\n return { status: 'updated', files };\n /* v8 ignore start -- needs test */\n } catch (err) {\n logger.error({ err }, 'updateLockedDependency() error');\n return { status: 'update-failed' };\n } /* v8 ignore stop -- needs test */\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../lib/modules/manager/npm/update/locked-dependency/package-lock/index.ts"],"names":[],"mappings":"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","sourcesContent":["import detectIndent from 'detect-indent';\nimport type { PackageJson } from 'type-fest';\nimport { logger } from '../../../../../../logger';\nimport { api as semver } from '../../../../../versioning/npm';\nimport type { UpdateLockedConfig, UpdateLockedResult } from '../../../../types';\nimport { updateDependency } from '../../dependency';\nimport { findFirstParentVersion } from '../common/parent-version';\nimport { findDepConstraints } from './dep-constraints';\nimport { getLockedDependencies } from './get-locked';\nimport type { PackageLockOrEntry } from './types';\n\nexport async function updateLockedDependency(\n config: UpdateLockedConfig,\n isParentUpdate = false,\n): Promise<UpdateLockedResult> {\n const {\n depName,\n currentVersion,\n newVersion,\n packageFile,\n packageFileContent,\n lockFile,\n lockFileContent,\n allowParentUpdates = true,\n allowHigherOrRemoved = false,\n } = config;\n logger.debug(\n `npm.updateLockedDependency: ${depName}@${currentVersion} -> ${newVersion} [${lockFile}]`,\n );\n try {\n let packageJson: PackageJson;\n let packageLockJson: PackageLockOrEntry;\n // TODO #22198\n const detectedIndent = detectIndent(lockFileContent!).indent || ' ';\n let newPackageJsonContent: string | null | undefined;\n try {\n // TODO #22198\n packageJson = JSON.parse(packageFileContent!);\n packageLockJson = JSON.parse(lockFileContent!);\n } catch (err) {\n logger.warn({ err }, 'Failed to parse files');\n return { status: 'update-failed' };\n }\n const { lockfileVersion } = packageLockJson;\n const lockedDeps = getLockedDependencies(\n packageLockJson,\n depName,\n currentVersion,\n );\n if (lockedDeps.some((dep) => dep.bundled)) {\n logger.debug(\n `Package ${depName}@${currentVersion} is bundled and cannot be updated`,\n );\n return { status: 'update-failed' };\n }\n if (!lockedDeps.length) {\n const newLockedDeps = getLockedDependencies(\n packageLockJson,\n depName,\n newVersion,\n );\n let status: 'update-failed' | 'already-updated';\n if (newLockedDeps.length) {\n logger.debug(\n `${depName}@${currentVersion} not found in ${lockFile} but ${depName}@${newVersion} was - looks like it's already updated`,\n );\n status = 'already-updated';\n } else {\n if (lockfileVersion !== 1) {\n logger.debug(\n // TODO: types (#22198)\n `Found lockfileVersion ${packageLockJson.lockfileVersion!}`,\n );\n status = 'update-failed';\n } else if (allowHigherOrRemoved) {\n // it's acceptable if the package is no longer present\n const anyVersionLocked = getLockedDependencies(\n packageLockJson,\n depName,\n null,\n );\n if (anyVersionLocked.length) {\n if (\n anyVersionLocked.every((dep) =>\n semver.isGreaterThan(dep.version, newVersion),\n )\n ) {\n logger.debug(\n `${depName} found in ${lockFile} with higher version - looks like it's already updated`,\n );\n status = 'already-updated';\n } else {\n logger.debug(\n { anyVersionLocked },\n `Found alternative versions of qs`,\n );\n status = 'update-failed';\n }\n } else {\n logger.debug(\n `${depName} not found in ${lockFile} - looks like it's already removed`,\n );\n status = 'already-updated';\n }\n } else {\n logger.debug(\n `${depName}@${currentVersion} not found in ${lockFile} - cannot update`,\n );\n status = 'update-failed';\n }\n }\n // Don't return {} if we're a parent update or else the whole update will fail\n /* v8 ignore next -- too hard to replicate */\n if (isParentUpdate) {\n const files: Record<string, string> = {};\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n files[packageFile!] = packageFileContent!;\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n files[lockFile!] = lockFileContent!;\n return { status, files };\n } /* v8 ignore stop -- too hard to replicate */\n return { status };\n }\n logger.debug(\n `Found matching dependencies with length ${lockedDeps.length}`,\n );\n const constraints = findDepConstraints(\n packageJson,\n packageLockJson,\n depName,\n currentVersion,\n newVersion,\n );\n logger.trace({ deps: lockedDeps, constraints }, 'Matching details');\n if (!constraints.length) {\n logger.info(\n { depName, currentVersion, newVersion },\n 'Could not find constraints for the locked dependency - cannot remediate',\n );\n return { status: 'update-failed' };\n }\n const parentUpdates: Partial<UpdateLockedConfig>[] = [];\n for (const {\n parentDepName,\n parentVersion,\n constraint,\n depType,\n } of constraints) {\n if (semver.matches(newVersion, constraint)) {\n // Parent dependency is compatible with the new version we want\n logger.debug(\n `${depName} can be updated to ${newVersion} in-range with matching constraint \"${constraint}\" in ${\n // TODO: types (#22198)\n /* v8 ignore next -- hard to test */\n parentDepName ? `${parentDepName}@${parentVersion!}` : packageFile\n }`,\n );\n } else if (parentDepName && parentVersion) {\n if (!allowParentUpdates) {\n logger.debug(\n `Cannot update ${depName} to ${newVersion} without an update to ${parentDepName}`,\n );\n return { status: 'update-failed' };\n }\n // Parent dependency needs updating too\n const parentNewVersion = await findFirstParentVersion(\n parentDepName,\n parentVersion,\n depName,\n newVersion,\n );\n if (parentNewVersion) {\n if (parentNewVersion === parentVersion) {\n logger.debug(\n `Update of ${depName} to ${newVersion} already achieved in parent ${parentDepName}@${parentNewVersion}`,\n );\n } else {\n // Update the parent dependency so that we can update this dependency\n logger.debug(\n `Update of ${depName} to ${newVersion} can be achieved due to parent ${parentDepName}`,\n );\n const parentUpdate: Partial<UpdateLockedConfig> = {\n depName: parentDepName,\n currentVersion: parentVersion,\n newVersion: parentNewVersion,\n };\n parentUpdates.push(parentUpdate);\n }\n } else {\n // For some reason it's not possible to update the parent to a version compatible with our desired dep version\n logger.debug(\n `Update of ${depName} to ${newVersion} cannot be achieved due to parent ${parentDepName}`,\n );\n return { status: 'update-failed' };\n }\n } else if (depType) {\n // TODO: `newValue` can probably null\n // The constraint comes from the package.json file, so we need to update it\n const newValue = semver.getNewValue({\n currentValue: constraint,\n rangeStrategy: 'replace',\n currentVersion,\n newVersion,\n })!;\n newPackageJsonContent = updateDependency({\n // TODO #22198\n fileContent: packageFileContent!,\n upgrade: { depName, depType, newValue },\n });\n }\n }\n for (const dependency of lockedDeps) {\n // Remove resolved and integrity fields for npm to fill in\n dependency.version = newVersion;\n delete dependency.resolved;\n delete dependency.integrity;\n }\n let newLockFileContent = JSON.stringify(\n packageLockJson,\n null,\n detectedIndent,\n );\n // iterate through the parent updates first\n for (const parentUpdate of parentUpdates) {\n const parentUpdateConfig = {\n ...config,\n ...parentUpdate,\n lockFileContent: newLockFileContent,\n packageFileContent: newPackageJsonContent ?? packageFileContent,\n };\n const parentUpdateResult = await updateLockedDependency(\n parentUpdateConfig,\n true,\n );\n /* v8 ignore next -- hard to test due to recursion */\n if (!parentUpdateResult.files) {\n logger.debug(\n // TODO: types (#22198)\n `Update of ${depName} to ${newVersion} impossible due to failed update of parent ${parentUpdate.depName} to ${parentUpdate.newVersion}`,\n );\n return { status: 'update-failed' };\n }\n newPackageJsonContent =\n parentUpdateResult.files[packageFile] || newPackageJsonContent;\n /* v8 ignore next 2 -- hard to test */\n newLockFileContent =\n parentUpdateResult.files[lockFile] || newLockFileContent;\n }\n const files: Record<string, string> = {};\n if (newLockFileContent) {\n files[lockFile] = newLockFileContent;\n }\n if (newPackageJsonContent) {\n files[packageFile] = newPackageJsonContent;\n } else if (lockfileVersion !== 1) {\n logger.debug(\n 'Remediations which change package-lock.json only are not supported unless lockfileVersion=1',\n );\n return { status: 'unsupported' };\n }\n return { status: 'updated', files };\n /* v8 ignore next -- needs test */\n } catch (err) {\n logger.error({ err }, 'updateLockedDependency() error');\n return { status: 'update-failed' };\n }\n}\n"]}
@@ -35,11 +35,11 @@ function getYarn1LockedDependencies(yarnLock, depName, currentVersion) {
35
35
  if (entryName === depName && entry?.version === currentVersion) {
36
36
  res.push({ entry, depNameConstraint, depName, constraint });
37
37
  }
38
- } /* v8 ignore start -- needs test */
38
+ } /* v8 ignore next -- needs test */
39
39
  }
40
40
  catch (err) {
41
41
  logger_1.logger.warn({ err }, 'getLockedDependencies() error');
42
- } /* v8 ignore stop -- needs test */
42
+ }
43
43
  return res;
44
44
  }
45
45
  function getYarn2LockedDependencies(yarnLock, depName, currentVersion) {
@@ -62,11 +62,11 @@ function getYarn2LockedDependencies(yarnLock, depName, currentVersion) {
62
62
  res.push({ entry, depNameConstraint, depName, constraint });
63
63
  }
64
64
  }
65
- } /* v8 ignore start -- needs test */
65
+ } /* v8 ignore next -- needs test */
66
66
  }
67
67
  catch (err) {
68
68
  logger_1.logger.warn({ err }, 'getLockedDependencies() error');
69
- } /* v8 ignore stop -- needs test */
69
+ }
70
70
  return res;
71
71
  }
72
72
  // Finds matching dependencies withing a package lock file of sub-entry