renovate 44.124.1 → 44.124.2
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.
- package/dist/modules/manager/bun/artifacts.js +1 -1
- package/dist/modules/manager/deno/artifacts.js +1 -1
- package/dist/modules/manager/fingerprint.generated.js +1 -1
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/npm/artifacts.js +34 -54
- package/dist/modules/manager/npm/artifacts.js.map +1 -1
- package/dist/modules/manager/npm/extract/common/dependency.js +2 -2
- package/dist/modules/manager/npm/extract/common/dependency.js.map +1 -1
- package/dist/modules/manager/npm/extract/common/package-file.js +1 -1
- package/dist/modules/manager/npm/extract/index.js +1 -1
- package/dist/modules/manager/npm/extract/post/locked-versions.js +1 -1
- package/dist/modules/manager/npm/extract/post/locked-versions.js.map +1 -1
- package/dist/modules/manager/npm/post-update/index.js +2 -2
- package/dist/modules/manager/npm/post-update/npm.js +1 -1
- package/dist/modules/manager/npm/post-update/yarn.js +1 -1
- package/package.json +1 -1
- package/renovate-schema.json +2 -2
|
@@ -4,8 +4,8 @@ import { logger } from "../../../logger/index.js";
|
|
|
4
4
|
import { readLocalFile } from "../../../util/fs/index.js";
|
|
5
5
|
import { exec } from "../../../util/exec/index.js";
|
|
6
6
|
import { artifactErrorResult, resolveToolConstraint, updateLockFile } from "../util.js";
|
|
7
|
-
import { processHostRules } from "../npm/post-update/rules.js";
|
|
8
7
|
import { withNpmrcHostRules } from "../npm/utils.js";
|
|
8
|
+
import { processHostRules } from "../npm/post-update/rules.js";
|
|
9
9
|
import { isEmptyArray } from "@sindresorhus/is";
|
|
10
10
|
import upath from "upath";
|
|
11
11
|
//#region lib/modules/manager/bun/artifacts.ts
|
|
@@ -4,8 +4,8 @@ import { findAll } from "../../../util/host-rules.js";
|
|
|
4
4
|
import { readLocalFile } from "../../../util/fs/index.js";
|
|
5
5
|
import { exec } from "../../../util/exec/index.js";
|
|
6
6
|
import { artifactError, artifactErrorResult, resolveToolConstraint, updateLockFile } from "../util.js";
|
|
7
|
-
import { processHostRules } from "../npm/post-update/rules.js";
|
|
8
7
|
import { withNpmrcHostRules } from "../npm/utils.js";
|
|
8
|
+
import { processHostRules } from "../npm/post-update/rules.js";
|
|
9
9
|
import { isEmptyArray } from "@sindresorhus/is";
|
|
10
10
|
import { quote } from "shlex";
|
|
11
11
|
import upath from "upath";
|
|
@@ -75,7 +75,7 @@ hashMap.set("mise", "3e68dcf95b79d51665c60edf565fd07f29f177f9a48129460e18fa16bd4
|
|
|
75
75
|
hashMap.set("mix", "0f79163dc2a1c896599d152be635c23beaf16812ae3d8fbfffec98c7bd0de872");
|
|
76
76
|
hashMap.set("nix", "9cbd96a29fe96e3df7418e422256380202f07970cf7f00b08388c181224a2b85");
|
|
77
77
|
hashMap.set("nodenv", "ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8");
|
|
78
|
-
hashMap.set("npm", "
|
|
78
|
+
hashMap.set("npm", "7b87ba7087d99dea194cc618426efd845bd400c1fb8fffe585e43ec3268c559c");
|
|
79
79
|
hashMap.set("nuget", "b81fb0ca6cfeb86b004592b38ce176673e056d6a2ed41a9807afb0eb7ad405d2");
|
|
80
80
|
hashMap.set("nvm", "3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322");
|
|
81
81
|
hashMap.set("ocb", "032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprint.generated.js","names":[],"sources":["../../../lib/modules/manager/fingerprint.generated.ts"],"sourcesContent":["export const hashMap = new Map<string, string>();\n\nhashMap.set('ansible','a52394a36ac5517f7330473c31d93aa05b2ce607c5e951b48f25a4693cd20a81');\nhashMap.set('ansible-galaxy','0a264d6be73953d801510fdeff271e4071c274339569c6dab4e2a128eaf4869f');\nhashMap.set('ant','2df5943cf0ed19a21b94df13729dbb925655548130caf37e3e22bebaed518e17');\nhashMap.set('apm','bdb6931cc03f4ac02ebfdb56c4b3483bb6c5250fa952545f1a25584d502bbffd');\nhashMap.set('argocd','cff9cd22257bc460ae4b9936570bf0ed5585f280a55d26629deaeeb0bfee8eb5');\nhashMap.set('asdf','430eb99b58171700c8a59c78b9e648575e9b176b781d90dd10a710f7b69015bb');\nhashMap.set('azure-pipelines','04a13dec4e08ba21004961c718072fde976226d65809fa3c838bf66ba93e5d5a');\nhashMap.set('batect','375d39b432013bedb1330cf40a2199dd822751b28578214f219e7bab98594b8d');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','c31bc0a0e23d32726bcc09aa67533ebc5058124bf89c88e09c837419f550801a');\nhashMap.set('bazel-module','9fbba0339f9f7785d52ab85c5f0f6385003093c063483c13feccba13ae438bef');\nhashMap.set('bazelisk','770f75a746dc6ba90c518788d5987d7df4243ef9eee122d1bb0556a93d6e1b11');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','59c0503494ab1442b127914503c01b97ac17b6742b19c632292d5aa24de115cd');\nhashMap.set('bitrise','478dfd316221fad7c29e177c70d1018d832fb2626b53308a5d0f1f0380e69f42');\nhashMap.set('buildkite','b8b404f53cd5d61c39153fddf93945e621471c4ac6aa9960c881cd868922bb4c');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','5820cfb6ebe018b8c336d481ea9ae319daaee6a2e368c45196fc8bc67cb3e755');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','6e4784dd98c1f86ef64cc8cbf3128df48aebf920032d7792b54fdedd3dd9d4d5');\nhashMap.set('cake','9ebd8b481220b30a8860121d26184540a1a2fcc05ef780df9295dea39b386fad');\nhashMap.set('cargo','fe8136135c895dd08819f91a60cf105f8b951251b057092700101ace991ae1d7');\nhashMap.set('cdnurl','9a81c8e3c6ad6c788498c99fc1067ffdfcd92a427c3afaf8c0130975d83131f2');\nhashMap.set('circleci','91cbeb33ea20f9838e2c81a1195eb806f0b38fa282bc3679f62552f20575ca85');\nhashMap.set('cloudbuild','f4e40388944652c8a19f8518771ac8d3f3c4ccf81ddef0e68b463aca833cb73c');\nhashMap.set('cocoapods','f832e2beef885bb3fd697ed9bb3e8cd742926bfec37ff41212edd2dbb4edb3ba');\nhashMap.set('composer','f1294fb3866ff65a75d98fdef80b1df3d3a8856535b8c690d1799e1205e4b639');\nhashMap.set('conan','8d46e9a30ae628e26118aea10a98d1b846f7c5d96d51ce24693437d555f6d125');\nhashMap.set('copier','10ae4d7f8ff35faf3a3f9f25bf4c969ea960e19aaf8c012aee11f93f4d10533e');\nhashMap.set('cpanfile','07813fec3f3c2197056500e9266a0553b9774c02f2c74d5ca2e213188c7c12d3');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deno','05e7ab60494a20a5e7477f06a9e723e443d37643b6e1d9ba8d3d87126a051175');\nhashMap.set('deps-edn','06783dbc8b9c7bb84e162d1f75b7db56dfa021cc6f809dfd2314cee8b64af08d');\nhashMap.set('devbox','a40050cc61bd9b5d500ec111abb17bb15d5f82ab5b7699f66f628307ba8382c9');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','fba87b82cb0f2bfd66526631fbe928b8153e7ca701a5790d02b944df17417bb9');\nhashMap.set('dockerfile','b5faeb8f31d238e0d05a4aeebf9a837273687908ab8078b34e738bb0e369c80c');\nhashMap.set('droneci','661d2a2d7295af8dd7a1234c7090c42a89306bd574c3adf1fc67782efaad3998');\nhashMap.set('fleet','ffa222820f72c4eb4cdc4c229ae8c50433bee96f3b974f0633d5a7d1f6427c97');\nhashMap.set('flux','842597c9083d82af99ef3d526101a3a53c4448414d2f53f7e969074757124811');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','df8bb92b2906d8cddda2d4b302ee503f8002e3554d32d74cef2f584fe891f38f');\nhashMap.set('github-actions','7bd984806fa6e33e0650d2f65d88758a9f4b972f366c6cd7c7698e22e6fb3ca3');\nhashMap.set('gitlabci','a5e1e66ef461e1c1e71062f85f35a212417e23627f4b002810f9a98295d6e672');\nhashMap.set('gitlabci-include','8860a15ab516fde00694f9bd9bf56fce4addafe5a55b5ddb9a4ec477d301d351');\nhashMap.set('glasskube','93e7b9000a17efa15a1abaaf320b5af9169b1ecd828fc0c881d98570ef9d9e30');\nhashMap.set('gleam','5e9b9f5f914afe5ed7b526c06c65111e3716d2dea9b0cbe7907bbc96db1064a3');\nhashMap.set('gomod','7db21962e60c8b5da397dd9d01550a398675d81877a34b08f1ab2dc95a7c249a');\nhashMap.set('gradle','9e3ff52ce4ad2555929acdd4d32c417c4ef8714c23a92f2893ecc580fa4d6064');\nhashMap.set('gradle-wrapper','73ba30c34955fab7737454b5cff9aca6d1b5607d53c17c9e13d8ad96f6eaae87');\nhashMap.set('haskell-cabal','f158b7725e3143dfd2950e3de0bbccc2a61cd7eba87f7a54c5057e01252348e2');\nhashMap.set('helm-requirements','22f61344565f87ca3512c0ba8fac32627fde8ee919b7badae07b2116e285f049');\nhashMap.set('helm-values','0aa79bb0257d0d72e54dfd2653e59bfef63b97e46c035b7443593bdf6e6382aa');\nhashMap.set('helmfile','28572dd24b6746ca7065ee467aa13bbc8c3e8c0f88ae48e33bce88468c600100');\nhashMap.set('helmsman','951deeb3355da751ef39c9e932b26ea749450e32e75759e4b5fc29359e100b37');\nhashMap.set('helmv3','d4ede7d5e170dec2b63b7d14c38b83c7b0dd540a2fbf9363c41fed3dcd355447');\nhashMap.set('hermit','0fb25b7766c3a264fbb765ff75b1542b24136c4c9f933696d4a5aecfed637071');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','dffe954a4e18c2dc4bfdaa12222fe8ddc3395869afd5afa603fc2b6264747984');\nhashMap.set('html','81fa6c2bf2b868596584a48b949645207a2aa3081951ed99183ee50b70b77d5f');\nhashMap.set('jenkins','7fda0e7e0f3d5e18088ccb3594f727f4cfc48b064706bdaaf1a0a075b6a2cff5');\nhashMap.set('jsonnet-bundler','4cedeb0394e5c38361d1868ff45b4f34747ab8c492378b6e63dcaf1f4f3c024d');\nhashMap.set('kotlin-script','95ebc844c040ca047321b207d525220e29774a2a1fe06f9639e8353c66908564');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','706cc4776ad6ec4df5bed0ac84e8324ad7328457b6743b082e444d4770756604');\nhashMap.set('leiningen','c8397e376f1717c2f771ae9ea3ba6b720d2422b133cf937e762c44e42be146a2');\nhashMap.set('maven','c110b99291c2a5bc82cf7a69330275e9bbd7dc8ba3e9e987611dfcffbe002d8d');\nhashMap.set('maven-wrapper','6e53b6e4abf1d20b75094c7a70d66b4a5ac39954f009aa401f5e55dada8be4d0');\nhashMap.set('meteor','4636a47ba4dcfff19fe662572ef7a40d17146be3c966e00ef437e1fc8de92776');\nhashMap.set('mint','248fe4f1ea5c985921c286785792c97e06fc41f402b2d45df82f6aecd17f710e');\nhashMap.set('mise','3e68dcf95b79d51665c60edf565fd07f29f177f9a48129460e18fa16bd4c3963');\nhashMap.set('mix','0f79163dc2a1c896599d152be635c23beaf16812ae3d8fbfffec98c7bd0de872');\nhashMap.set('nix','9cbd96a29fe96e3df7418e422256380202f07970cf7f00b08388c181224a2b85');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','ed4988307cb65fda072a361c08251a0f9f2e8b3e4651aaf52635abcaea9047e9');\nhashMap.set('nuget','b81fb0ca6cfeb86b004592b38ce176673e056d6a2ed41a9807afb0eb7ad405d2');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','d6567a733ef3983112b46fdccd7ceebfcd48411104e0c6b6e714d4310db48024');\nhashMap.set('pep621','52450676f8b0e05134b3e8947b832195ef40bcaec1ce43d71351a2f797b80d75');\nhashMap.set('pep723','77022a0eae6a3cbb74a1e6d596db1276e379768e40448192b3fa81edd14ca73f');\nhashMap.set('pip-compile','a98dc76a002e1dc21662237f009ff8fea36236bb4e24cb82ee30c6a78f57271f');\nhashMap.set('pip_requirements','bf3a407f72abf711230247bef94ba5dc84c08a35107b0f017912fad66afa716a');\nhashMap.set('pip_setup','df18fba2bdcf48f3ca12a8f7e5cd28df31e2368d5528127277038ef4206eca79');\nhashMap.set('pipenv','baf237cd77173c1a7a9c7fa2a8bfb214f3c488ba0cc27f0e8f334df192e3a398');\nhashMap.set('pixi','e31c397982ffa34222b061f23f3b3683f42523dd5dca45ecce2448b0ebc55ea2');\nhashMap.set('poetry','e9dea5d591c87956b9f018414cb3dab8f2e13580a13be00550fdce198fdf08e6');\nhashMap.set('pre-commit','760f2c291ae084db889f722390798a0e2d431ccdc3bc676e73b14901ebea19ac');\nhashMap.set('proto','412053d4550026b4ace490b46e970915b87ec1abf0b0a0c6c8c58ccf1fc16843');\nhashMap.set('pub','8e7c65dfd1999de4f7c44392e949a4d8f4701eb86df59d550e4657feb06b1872');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','40927b98dd2bac45dba60e66b5fd0e6b84b61d02db8be536fda7b14546a4feb7');\nhashMap.set('renovate-config','dfaf3f03ddaf70c332f7916106648f36dbfa6a36dd76d15dd27fa116ab3c174c');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('rust-toolchain','6ace53db02874d73620d2d872291839820a512a9529c42d174358c692e5db720');\nhashMap.set('sbt','e1eb5c7f0171a9bb1b6bd4a36a91039a31b6c84e0983d91d930be31a69506d9e');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','4a3a7c812d34739c07685691e7e64c7d3127f9d7d4aff99dc45a25df97ed9745');\nhashMap.set('smithy','9641b91d065ffb63be0dd888139a0402dba41e550f8b44c592db9daf52109100');\nhashMap.set('sveltos','60dd75bb53ace31217211100d622fdb65068c6162758b6ae7103a6ce8bdc9f90');\nhashMap.set('swift','cdf063debdbf36888523ff8cec6d2d1b0ec6f49b37b2fbcd80b0d4f6a31114e1');\nhashMap.set('tekton','33948f5bdf7553909fa63744adb26da97ddf366e9499bccab1250879570267c9');\nhashMap.set('terraform','6788a8569ba9c50c763ffa2bed952a4314ae8e696c29f93d3eb7c4a12d99ce20');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','300f8fb3c09667654412d2f5dd8ab4882e0f5d1d7a8bc39794993d2e7e58d1b7');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','f423bfa2b42a2bfc0e38a33ebd4f9d452473e7ed4e7ad6384a99eb9a35d97479');\nhashMap.set('travis','f3e2f38e699c390b00ff481be5e91dceaa81609e93caf9a4214933de759c84fc');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','7db907b3b77ef5f3465f3c4339fbab56bbcdfd1bf34b3d33e4c178d2e07e23e7');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('xcodegen','dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683');\nhashMap.set('jsonata','416bcf61144b276b3112814c6e6d261aa29608f46fbb0516c471d35c16f8f0d7');\nhashMap.set('regex','20be5247fdc164173871a051acb0527da017d0c155c653d7563601f55e7b3ff5');"],"mappings":";AAAA,MAAa,0BAAU,IAAI,IAAoB;AAE/C,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,mBAAkB,kEAAkE;AAChG,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,gBAAe,kEAAkE;AAC7F,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,uBAAsB,kEAAkE;AACpG,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,eAAc,kEAAkE;AAC5F,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,gBAAe,kEAAkE;AAC7F,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,oBAAmB,kEAAkE;AACjG,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,iBAAgB,kEAAkE;AAC9F,QAAQ,IAAI,qBAAoB,kEAAkE;AAClG,QAAQ,IAAI,eAAc,kEAAkE;AAC5F,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,0BAAyB,kEAAkE;AACvG,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,mBAAkB,kEAAkE;AAChG,QAAQ,IAAI,iBAAgB,kEAAkE;AAC9F,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,iBAAgB,kEAAkE;AAC9F,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,eAAc,kEAAkE;AAC5F,QAAQ,IAAI,oBAAmB,kEAAkE;AACjG,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,mBAAkB,kEAAkE;AAChG,QAAQ,IAAI,gBAAe,kEAAkE;AAC7F,QAAQ,IAAI,mBAAkB,kEAAkE;AAChG,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,qBAAoB,kEAAkE;AAClG,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,sBAAqB,kEAAkE;AACnG,QAAQ,IAAI,iBAAgB,kEAAkE;AAC9F,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,SAAQ,kEAAkE"}
|
|
1
|
+
{"version":3,"file":"fingerprint.generated.js","names":[],"sources":["../../../lib/modules/manager/fingerprint.generated.ts"],"sourcesContent":["export const hashMap = new Map<string, string>();\n\nhashMap.set('ansible','a52394a36ac5517f7330473c31d93aa05b2ce607c5e951b48f25a4693cd20a81');\nhashMap.set('ansible-galaxy','0a264d6be73953d801510fdeff271e4071c274339569c6dab4e2a128eaf4869f');\nhashMap.set('ant','2df5943cf0ed19a21b94df13729dbb925655548130caf37e3e22bebaed518e17');\nhashMap.set('apm','bdb6931cc03f4ac02ebfdb56c4b3483bb6c5250fa952545f1a25584d502bbffd');\nhashMap.set('argocd','cff9cd22257bc460ae4b9936570bf0ed5585f280a55d26629deaeeb0bfee8eb5');\nhashMap.set('asdf','430eb99b58171700c8a59c78b9e648575e9b176b781d90dd10a710f7b69015bb');\nhashMap.set('azure-pipelines','04a13dec4e08ba21004961c718072fde976226d65809fa3c838bf66ba93e5d5a');\nhashMap.set('batect','375d39b432013bedb1330cf40a2199dd822751b28578214f219e7bab98594b8d');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','c31bc0a0e23d32726bcc09aa67533ebc5058124bf89c88e09c837419f550801a');\nhashMap.set('bazel-module','9fbba0339f9f7785d52ab85c5f0f6385003093c063483c13feccba13ae438bef');\nhashMap.set('bazelisk','770f75a746dc6ba90c518788d5987d7df4243ef9eee122d1bb0556a93d6e1b11');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','59c0503494ab1442b127914503c01b97ac17b6742b19c632292d5aa24de115cd');\nhashMap.set('bitrise','478dfd316221fad7c29e177c70d1018d832fb2626b53308a5d0f1f0380e69f42');\nhashMap.set('buildkite','b8b404f53cd5d61c39153fddf93945e621471c4ac6aa9960c881cd868922bb4c');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','5820cfb6ebe018b8c336d481ea9ae319daaee6a2e368c45196fc8bc67cb3e755');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','6e4784dd98c1f86ef64cc8cbf3128df48aebf920032d7792b54fdedd3dd9d4d5');\nhashMap.set('cake','9ebd8b481220b30a8860121d26184540a1a2fcc05ef780df9295dea39b386fad');\nhashMap.set('cargo','fe8136135c895dd08819f91a60cf105f8b951251b057092700101ace991ae1d7');\nhashMap.set('cdnurl','9a81c8e3c6ad6c788498c99fc1067ffdfcd92a427c3afaf8c0130975d83131f2');\nhashMap.set('circleci','91cbeb33ea20f9838e2c81a1195eb806f0b38fa282bc3679f62552f20575ca85');\nhashMap.set('cloudbuild','f4e40388944652c8a19f8518771ac8d3f3c4ccf81ddef0e68b463aca833cb73c');\nhashMap.set('cocoapods','f832e2beef885bb3fd697ed9bb3e8cd742926bfec37ff41212edd2dbb4edb3ba');\nhashMap.set('composer','f1294fb3866ff65a75d98fdef80b1df3d3a8856535b8c690d1799e1205e4b639');\nhashMap.set('conan','8d46e9a30ae628e26118aea10a98d1b846f7c5d96d51ce24693437d555f6d125');\nhashMap.set('copier','10ae4d7f8ff35faf3a3f9f25bf4c969ea960e19aaf8c012aee11f93f4d10533e');\nhashMap.set('cpanfile','07813fec3f3c2197056500e9266a0553b9774c02f2c74d5ca2e213188c7c12d3');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deno','05e7ab60494a20a5e7477f06a9e723e443d37643b6e1d9ba8d3d87126a051175');\nhashMap.set('deps-edn','06783dbc8b9c7bb84e162d1f75b7db56dfa021cc6f809dfd2314cee8b64af08d');\nhashMap.set('devbox','a40050cc61bd9b5d500ec111abb17bb15d5f82ab5b7699f66f628307ba8382c9');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','fba87b82cb0f2bfd66526631fbe928b8153e7ca701a5790d02b944df17417bb9');\nhashMap.set('dockerfile','b5faeb8f31d238e0d05a4aeebf9a837273687908ab8078b34e738bb0e369c80c');\nhashMap.set('droneci','661d2a2d7295af8dd7a1234c7090c42a89306bd574c3adf1fc67782efaad3998');\nhashMap.set('fleet','ffa222820f72c4eb4cdc4c229ae8c50433bee96f3b974f0633d5a7d1f6427c97');\nhashMap.set('flux','842597c9083d82af99ef3d526101a3a53c4448414d2f53f7e969074757124811');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','df8bb92b2906d8cddda2d4b302ee503f8002e3554d32d74cef2f584fe891f38f');\nhashMap.set('github-actions','7bd984806fa6e33e0650d2f65d88758a9f4b972f366c6cd7c7698e22e6fb3ca3');\nhashMap.set('gitlabci','a5e1e66ef461e1c1e71062f85f35a212417e23627f4b002810f9a98295d6e672');\nhashMap.set('gitlabci-include','8860a15ab516fde00694f9bd9bf56fce4addafe5a55b5ddb9a4ec477d301d351');\nhashMap.set('glasskube','93e7b9000a17efa15a1abaaf320b5af9169b1ecd828fc0c881d98570ef9d9e30');\nhashMap.set('gleam','5e9b9f5f914afe5ed7b526c06c65111e3716d2dea9b0cbe7907bbc96db1064a3');\nhashMap.set('gomod','7db21962e60c8b5da397dd9d01550a398675d81877a34b08f1ab2dc95a7c249a');\nhashMap.set('gradle','9e3ff52ce4ad2555929acdd4d32c417c4ef8714c23a92f2893ecc580fa4d6064');\nhashMap.set('gradle-wrapper','73ba30c34955fab7737454b5cff9aca6d1b5607d53c17c9e13d8ad96f6eaae87');\nhashMap.set('haskell-cabal','f158b7725e3143dfd2950e3de0bbccc2a61cd7eba87f7a54c5057e01252348e2');\nhashMap.set('helm-requirements','22f61344565f87ca3512c0ba8fac32627fde8ee919b7badae07b2116e285f049');\nhashMap.set('helm-values','0aa79bb0257d0d72e54dfd2653e59bfef63b97e46c035b7443593bdf6e6382aa');\nhashMap.set('helmfile','28572dd24b6746ca7065ee467aa13bbc8c3e8c0f88ae48e33bce88468c600100');\nhashMap.set('helmsman','951deeb3355da751ef39c9e932b26ea749450e32e75759e4b5fc29359e100b37');\nhashMap.set('helmv3','d4ede7d5e170dec2b63b7d14c38b83c7b0dd540a2fbf9363c41fed3dcd355447');\nhashMap.set('hermit','0fb25b7766c3a264fbb765ff75b1542b24136c4c9f933696d4a5aecfed637071');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','dffe954a4e18c2dc4bfdaa12222fe8ddc3395869afd5afa603fc2b6264747984');\nhashMap.set('html','81fa6c2bf2b868596584a48b949645207a2aa3081951ed99183ee50b70b77d5f');\nhashMap.set('jenkins','7fda0e7e0f3d5e18088ccb3594f727f4cfc48b064706bdaaf1a0a075b6a2cff5');\nhashMap.set('jsonnet-bundler','4cedeb0394e5c38361d1868ff45b4f34747ab8c492378b6e63dcaf1f4f3c024d');\nhashMap.set('kotlin-script','95ebc844c040ca047321b207d525220e29774a2a1fe06f9639e8353c66908564');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','706cc4776ad6ec4df5bed0ac84e8324ad7328457b6743b082e444d4770756604');\nhashMap.set('leiningen','c8397e376f1717c2f771ae9ea3ba6b720d2422b133cf937e762c44e42be146a2');\nhashMap.set('maven','c110b99291c2a5bc82cf7a69330275e9bbd7dc8ba3e9e987611dfcffbe002d8d');\nhashMap.set('maven-wrapper','6e53b6e4abf1d20b75094c7a70d66b4a5ac39954f009aa401f5e55dada8be4d0');\nhashMap.set('meteor','4636a47ba4dcfff19fe662572ef7a40d17146be3c966e00ef437e1fc8de92776');\nhashMap.set('mint','248fe4f1ea5c985921c286785792c97e06fc41f402b2d45df82f6aecd17f710e');\nhashMap.set('mise','3e68dcf95b79d51665c60edf565fd07f29f177f9a48129460e18fa16bd4c3963');\nhashMap.set('mix','0f79163dc2a1c896599d152be635c23beaf16812ae3d8fbfffec98c7bd0de872');\nhashMap.set('nix','9cbd96a29fe96e3df7418e422256380202f07970cf7f00b08388c181224a2b85');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','7b87ba7087d99dea194cc618426efd845bd400c1fb8fffe585e43ec3268c559c');\nhashMap.set('nuget','b81fb0ca6cfeb86b004592b38ce176673e056d6a2ed41a9807afb0eb7ad405d2');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','d6567a733ef3983112b46fdccd7ceebfcd48411104e0c6b6e714d4310db48024');\nhashMap.set('pep621','52450676f8b0e05134b3e8947b832195ef40bcaec1ce43d71351a2f797b80d75');\nhashMap.set('pep723','77022a0eae6a3cbb74a1e6d596db1276e379768e40448192b3fa81edd14ca73f');\nhashMap.set('pip-compile','a98dc76a002e1dc21662237f009ff8fea36236bb4e24cb82ee30c6a78f57271f');\nhashMap.set('pip_requirements','bf3a407f72abf711230247bef94ba5dc84c08a35107b0f017912fad66afa716a');\nhashMap.set('pip_setup','df18fba2bdcf48f3ca12a8f7e5cd28df31e2368d5528127277038ef4206eca79');\nhashMap.set('pipenv','baf237cd77173c1a7a9c7fa2a8bfb214f3c488ba0cc27f0e8f334df192e3a398');\nhashMap.set('pixi','e31c397982ffa34222b061f23f3b3683f42523dd5dca45ecce2448b0ebc55ea2');\nhashMap.set('poetry','e9dea5d591c87956b9f018414cb3dab8f2e13580a13be00550fdce198fdf08e6');\nhashMap.set('pre-commit','760f2c291ae084db889f722390798a0e2d431ccdc3bc676e73b14901ebea19ac');\nhashMap.set('proto','412053d4550026b4ace490b46e970915b87ec1abf0b0a0c6c8c58ccf1fc16843');\nhashMap.set('pub','8e7c65dfd1999de4f7c44392e949a4d8f4701eb86df59d550e4657feb06b1872');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','40927b98dd2bac45dba60e66b5fd0e6b84b61d02db8be536fda7b14546a4feb7');\nhashMap.set('renovate-config','dfaf3f03ddaf70c332f7916106648f36dbfa6a36dd76d15dd27fa116ab3c174c');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('rust-toolchain','6ace53db02874d73620d2d872291839820a512a9529c42d174358c692e5db720');\nhashMap.set('sbt','e1eb5c7f0171a9bb1b6bd4a36a91039a31b6c84e0983d91d930be31a69506d9e');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','4a3a7c812d34739c07685691e7e64c7d3127f9d7d4aff99dc45a25df97ed9745');\nhashMap.set('smithy','9641b91d065ffb63be0dd888139a0402dba41e550f8b44c592db9daf52109100');\nhashMap.set('sveltos','60dd75bb53ace31217211100d622fdb65068c6162758b6ae7103a6ce8bdc9f90');\nhashMap.set('swift','cdf063debdbf36888523ff8cec6d2d1b0ec6f49b37b2fbcd80b0d4f6a31114e1');\nhashMap.set('tekton','33948f5bdf7553909fa63744adb26da97ddf366e9499bccab1250879570267c9');\nhashMap.set('terraform','6788a8569ba9c50c763ffa2bed952a4314ae8e696c29f93d3eb7c4a12d99ce20');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','300f8fb3c09667654412d2f5dd8ab4882e0f5d1d7a8bc39794993d2e7e58d1b7');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','f423bfa2b42a2bfc0e38a33ebd4f9d452473e7ed4e7ad6384a99eb9a35d97479');\nhashMap.set('travis','f3e2f38e699c390b00ff481be5e91dceaa81609e93caf9a4214933de759c84fc');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','7db907b3b77ef5f3465f3c4339fbab56bbcdfd1bf34b3d33e4c178d2e07e23e7');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('xcodegen','dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683');\nhashMap.set('jsonata','416bcf61144b276b3112814c6e6d261aa29608f46fbb0516c471d35c16f8f0d7');\nhashMap.set('regex','20be5247fdc164173871a051acb0527da017d0c155c653d7563601f55e7b3ff5');"],"mappings":";AAAA,MAAa,0BAAU,IAAI,IAAoB;AAE/C,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,mBAAkB,kEAAkE;AAChG,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,gBAAe,kEAAkE;AAC7F,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,uBAAsB,kEAAkE;AACpG,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,eAAc,kEAAkE;AAC5F,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,gBAAe,kEAAkE;AAC7F,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,oBAAmB,kEAAkE;AACjG,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,iBAAgB,kEAAkE;AAC9F,QAAQ,IAAI,qBAAoB,kEAAkE;AAClG,QAAQ,IAAI,eAAc,kEAAkE;AAC5F,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,0BAAyB,kEAAkE;AACvG,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,mBAAkB,kEAAkE;AAChG,QAAQ,IAAI,iBAAgB,kEAAkE;AAC9F,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,iBAAgB,kEAAkE;AAC9F,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,eAAc,kEAAkE;AAC5F,QAAQ,IAAI,oBAAmB,kEAAkE;AACjG,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,mBAAkB,kEAAkE;AAChG,QAAQ,IAAI,gBAAe,kEAAkE;AAC7F,QAAQ,IAAI,mBAAkB,kEAAkE;AAChG,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,qBAAoB,kEAAkE;AAClG,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,sBAAqB,kEAAkE;AACnG,QAAQ,IAAI,iBAAgB,kEAAkE;AAC9F,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,SAAQ,kEAAkE"}
|
|
@@ -2,79 +2,59 @@ import { coerceObject } from "../../../util/object.js";
|
|
|
2
2
|
import { regEx } from "../../../util/regex.js";
|
|
3
3
|
import { matchRegexOrGlob } from "../../../util/string-match.js";
|
|
4
4
|
import { logger } from "../../../logger/index.js";
|
|
5
|
-
import {
|
|
6
|
-
import { exec } from "../../../util/exec/index.js";
|
|
7
|
-
import { resolveToolConstraint } from "../util.js";
|
|
8
|
-
import { PNPM_CACHE_DIR, PNPM_STORE_DIR } from "./constants.js";
|
|
9
|
-
import { getNodeToolConstraint } from "./post-update/node-version.js";
|
|
10
|
-
import { processHostRules } from "./post-update/rules.js";
|
|
11
|
-
import { withNpmrcHostRules } from "./utils.js";
|
|
12
|
-
import { lazyLoadPackageJson } from "./post-update/utils.js";
|
|
5
|
+
import { localPathExists, readLocalFile, writeLocalFile } from "../../../util/fs/index.js";
|
|
13
6
|
import { isEmptyArray, isNonEmptyObject, isString } from "@sindresorhus/is";
|
|
14
7
|
import { isScalar, isSeq, parseDocument } from "yaml";
|
|
15
|
-
import { quote } from "shlex";
|
|
16
8
|
import upath from "upath";
|
|
17
9
|
//#region lib/modules/manager/npm/artifacts.ts
|
|
18
10
|
const versionWithHashRegString = "^(?<version>.*)\\+(?<hash>.*)";
|
|
11
|
+
const sriRegString = "^(?<algo>sha\\d+)-(?<hash>[A-Za-z0-9+/]+={0,2})$";
|
|
12
|
+
const packageManagerFieldRegString = "(\"packageManager\"\\s*:\\s*\")[^\"]*\"";
|
|
19
13
|
async function updateArtifacts(updateArtifactsConfig) {
|
|
20
14
|
logger.debug(`npm.updateArtifacts(${updateArtifactsConfig.packageFileName})`);
|
|
21
15
|
let res = [];
|
|
22
|
-
res.push(coerceObject(
|
|
16
|
+
res.push(coerceObject(handlePackageManagerUpdates(updateArtifactsConfig)));
|
|
23
17
|
res.push(coerceObject(await updatePnpmWorkspace(updateArtifactsConfig)));
|
|
24
18
|
res = res.filter(isNonEmptyObject);
|
|
25
19
|
if (res.length === 0) return null;
|
|
26
20
|
return res;
|
|
27
21
|
}
|
|
28
|
-
|
|
29
|
-
|
|
22
|
+
/**
|
|
23
|
+
* Updates the corepack hash of the `packageManager` field from the new version's integrity digest.
|
|
24
|
+
* @see https://github.com/nodejs/corepack/blob/57bfb67b062ea1b8746b302bcdbf9f8e8438c526/sources/corepackUtils.ts#L300
|
|
25
|
+
*/
|
|
26
|
+
function handlePackageManagerUpdates(updateArtifactsConfig) {
|
|
27
|
+
const { packageFileName, updatedDeps, newPackageFileContent } = updateArtifactsConfig;
|
|
30
28
|
const packageManagerUpdate = updatedDeps.find((dep) => dep.depType === "packageManager");
|
|
31
29
|
if (!packageManagerUpdate) {
|
|
32
30
|
logger.debug("No packageManager updates - returning null");
|
|
33
31
|
return null;
|
|
34
32
|
}
|
|
35
|
-
const { currentValue, depName, newVersion } = packageManagerUpdate;
|
|
33
|
+
const { currentValue, depName, newVersion, newDigest } = packageManagerUpdate;
|
|
36
34
|
if (!currentValue || !regEx(versionWithHashRegString).test(currentValue)) return null;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
try {
|
|
61
|
-
await exec(cmd, execOptions);
|
|
62
|
-
const newPackageFileContent = await readLocalFile(packageFileName, "utf8");
|
|
63
|
-
if (!newPackageFileContent || existingPackageFileContent === newPackageFileContent) return null;
|
|
64
|
-
logger.debug("Returning updated package.json");
|
|
65
|
-
return { file: {
|
|
66
|
-
type: "addition",
|
|
67
|
-
path: packageFileName,
|
|
68
|
-
contents: newPackageFileContent
|
|
69
|
-
} };
|
|
70
|
-
} catch (err) {
|
|
71
|
-
logger.warn({ err }, "Error updating package.json");
|
|
72
|
-
return { artifactError: {
|
|
73
|
-
fileName: packageFileName,
|
|
74
|
-
stderr: err.message
|
|
75
|
-
} };
|
|
76
|
-
}
|
|
77
|
-
});
|
|
35
|
+
const sriMatch = regEx(sriRegString).exec(newDigest ?? "");
|
|
36
|
+
if (!sriMatch?.groups) {
|
|
37
|
+
logger.warn({
|
|
38
|
+
packageFileName,
|
|
39
|
+
depName,
|
|
40
|
+
newVersion,
|
|
41
|
+
newDigest
|
|
42
|
+
}, "Cannot update packageManager hash: no valid digest available");
|
|
43
|
+
return { artifactError: {
|
|
44
|
+
fileName: packageFileName,
|
|
45
|
+
stderr: `Cannot update packageManager hash for ${depName}@${newVersion}: no valid digest available`
|
|
46
|
+
} };
|
|
47
|
+
}
|
|
48
|
+
const { algo, hash } = sriMatch.groups;
|
|
49
|
+
const newPackageManagerValue = `${depName}@${newVersion}+${algo}.${Buffer.from(hash, "base64").toString("hex")}`;
|
|
50
|
+
const newContent = newPackageFileContent.replace(regEx(packageManagerFieldRegString), `$1${newPackageManagerValue}"`);
|
|
51
|
+
if (newContent === newPackageFileContent) return null;
|
|
52
|
+
logger.debug("Returning updated package.json");
|
|
53
|
+
return { file: {
|
|
54
|
+
type: "addition",
|
|
55
|
+
path: packageFileName,
|
|
56
|
+
contents: newContent
|
|
57
|
+
} };
|
|
78
58
|
}
|
|
79
59
|
/**
|
|
80
60
|
* Update the minimumReleaseAgeExclude setting in pnpm-workspace.yaml if needed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts.js","names":[],"sources":["../../../../lib/modules/manager/npm/artifacts.ts"],"sourcesContent":["import { isEmptyArray, isNonEmptyObject, isString } from '@sindresorhus/is';\nimport { quote } from 'shlex';\nimport upath from 'upath';\nimport type { Scalar, YAMLSeq } from 'yaml';\nimport { isScalar, isSeq, parseDocument } from 'yaml';\nimport { logger } from '../../../logger/index.ts';\nimport { exec } from '../../../util/exec/index.ts';\nimport type { ExecOptions } from '../../../util/exec/types.ts';\nimport {\n ensureCacheDir,\n localPathExists,\n readLocalFile,\n writeLocalFile,\n} from '../../../util/fs/index.ts';\nimport { coerceObject } from '../../../util/object.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { matchRegexOrGlob } from '../../../util/string-match.ts';\nimport type { UpdateArtifact, UpdateArtifactsResult } from '../types.ts';\nimport { resolveToolConstraint } from '../util.ts';\nimport { PNPM_CACHE_DIR, PNPM_STORE_DIR } from './constants.ts';\nimport { getNodeToolConstraint } from './post-update/node-version.ts';\nimport { processHostRules } from './post-update/rules.ts';\nimport { lazyLoadPackageJson } from './post-update/utils.ts';\nimport { withNpmrcHostRules } from './utils.ts';\n\n// eg. 8.15.5+sha256.4b4efa12490e5055d59b9b9fc9438b7d581a6b7af3b5675eb5c5f447cee1a589\nconst versionWithHashRegString = '^(?<version>.*)\\\\+(?<hash>.*)';\n\n// Execute 'corepack use' command for npm manager updates\n// This step is necessary because Corepack recommends attaching a hash after the version\n// The hash is generated only after running 'corepack use' and cannot be fetched from the npm registry\nexport async function updateArtifacts(\n updateArtifactsConfig: UpdateArtifact,\n): Promise<UpdateArtifactsResult[] | null> {\n logger.debug(`npm.updateArtifacts(${updateArtifactsConfig.packageFileName})`);\n let res: UpdateArtifactsResult[] = [];\n res.push(\n coerceObject(await handlePackageManagerUpdates(updateArtifactsConfig)),\n );\n res.push(coerceObject(await updatePnpmWorkspace(updateArtifactsConfig)));\n\n res = res.filter(isNonEmptyObject);\n if (res.length === 0) {\n return null;\n }\n\n return res;\n}\n\nasync function handlePackageManagerUpdates(\n updateArtifactsConfig: UpdateArtifact,\n): Promise<UpdateArtifactsResult | null> {\n const {\n packageFileName,\n config,\n updatedDeps,\n newPackageFileContent: existingPackageFileContent,\n } = updateArtifactsConfig;\n const packageManagerUpdate = updatedDeps.find(\n (dep) => dep.depType === 'packageManager',\n );\n\n if (!packageManagerUpdate) {\n logger.debug('No packageManager updates - returning null');\n return null;\n }\n\n const { currentValue, depName, newVersion } = packageManagerUpdate;\n\n // Execute 'corepack use' command only if the currentValue already has hash in it\n if (!currentValue || !regEx(versionWithHashRegString).test(currentValue)) {\n return null;\n }\n\n // write old updates before executing corepack update so that they are not removed from package file\n await writeLocalFile(packageFileName, existingPackageFileContent);\n\n // Asumming that corepack only needs to modify the package.json file in the root folder\n // As it should not be regular practice to have different package managers in different workspaces\n const pkgFileDir = upath.dirname(packageFileName);\n const { additionalNpmrcContent } = processHostRules();\n const lazyPkgJson = lazyLoadPackageJson(pkgFileDir);\n const cmd = `corepack use ${quote(`${depName}@${newVersion}`)}`;\n\n const nodeConstraints = await getNodeToolConstraint(\n config,\n updatedDeps,\n pkgFileDir,\n lazyPkgJson,\n );\n\n const pnpmConfigCacheDir = await ensureCacheDir(PNPM_CACHE_DIR);\n const pnpmConfigStoreDir = await ensureCacheDir(PNPM_STORE_DIR);\n const execOptions: ExecOptions = {\n cwdFile: packageFileName,\n extraEnv: {\n // To make sure pnpm store location is consistent between \"corepack use\"\n // here and the pnpm commands in ./post-update/pnpm.ts. Check\n // ./post-update/pnpm.ts for more details.\n npm_config_cache_dir: pnpmConfigCacheDir,\n npm_config_store_dir: pnpmConfigStoreDir,\n pnpm_config_cache_dir: pnpmConfigCacheDir,\n pnpm_config_store_dir: pnpmConfigStoreDir,\n },\n toolConstraints: [\n nodeConstraints,\n {\n toolName: 'corepack',\n constraint: await resolveToolConstraint(config, 'corepack'),\n },\n ],\n docker: {},\n };\n\n return await withNpmrcHostRules(\n pkgFileDir,\n additionalNpmrcContent,\n async () => {\n try {\n await exec(cmd, execOptions);\n const newPackageFileContent = await readLocalFile(\n packageFileName,\n 'utf8',\n );\n if (\n !newPackageFileContent ||\n existingPackageFileContent === newPackageFileContent\n ) {\n return null;\n }\n logger.debug('Returning updated package.json');\n return {\n file: {\n type: 'addition',\n path: packageFileName,\n contents: newPackageFileContent,\n },\n };\n } catch (err) {\n logger.warn({ err }, 'Error updating package.json');\n return {\n artifactError: {\n fileName: packageFileName,\n stderr: err.message,\n },\n };\n }\n },\n );\n}\n\n/**\n * Update the minimumReleaseAgeExclude setting in pnpm-workspace.yaml if needed\n */\nasync function updatePnpmWorkspace(\n updateArtifactsConfig: UpdateArtifact,\n): Promise<UpdateArtifactsResult | null> {\n const upgrades = updateArtifactsConfig.updatedDeps.filter(\n (u) => u.isVulnerabilityAlert,\n );\n // return early if no security updates are present\n if (isEmptyArray(upgrades)) {\n return null;\n }\n\n const pnpmLockFile = upgrades[0].managerData?.pnpmLockFile;\n if (!isString(pnpmLockFile)) {\n logger.debug(\n 'No pnpm shrinkwrap found, not attempting to update pnpm-workspace.yaml',\n );\n return null;\n }\n const lockFileDir = upath.dirname(pnpmLockFile);\n const pnpmWorkspaceFilePath = upath.join(lockFileDir, 'pnpm-workspace.yaml');\n\n if (!(await localPathExists(pnpmWorkspaceFilePath))) {\n return null;\n }\n\n // use already-updated content when updating the workspace file itself\n const packageFileContent =\n updateArtifactsConfig.packageFileName === pnpmWorkspaceFilePath\n ? updateArtifactsConfig.newPackageFileContent\n : (await readLocalFile(pnpmWorkspaceFilePath, 'utf8'))!;\n const doc = parseDocument(packageFileContent);\n\n if (!doc.get('minimumReleaseAge')) {\n return null;\n }\n\n let updated = false;\n\n for (const upgrade of upgrades) {\n let excludeNode = doc.getIn(['minimumReleaseAgeExclude']) as YAMLSeq | null;\n // v8 ignore next -- TODO: add test #40625\n const newVersion = upgrade.newVersion ?? upgrade.newValue;\n // For pnpm overrides with range selectors (e.g. \"pkg@<=1.0.0\"), depName contains\n // the full key including the selector. Use packageName (bare package name) for\n // minimumReleaseAgeExclude entries which require exact versions only.\n const excludeDepName = upgrade.packageName ?? upgrade.depName;\n\n /* v8 ignore if -- should not happen, adding for type narrowing*/\n if (excludeNode && !isSeq(excludeNode)) {\n return null;\n }\n\n if (!excludeNode) {\n logger.debug('Adding new exclude block');\n excludeNode = doc.createNode([]);\n const newItem = doc.createNode(`${excludeDepName}@${newVersion}`);\n newItem.commentBefore = ` Renovate security update: ${excludeDepName}@${newVersion}`;\n excludeNode.items.push(newItem);\n doc.set('minimumReleaseAgeExclude', excludeNode);\n updated = true;\n continue;\n }\n\n const {\n item: matchedItem,\n allExcluded,\n malformed,\n } = getMatchedItem(excludeDepName!, excludeNode.items);\n\n if (allExcluded) {\n // still clean up any malformed entries even when a wildcard covers the package\n } else if (malformed && isScalar<string>(matchedItem)) {\n logger.debug(\n { entry: matchedItem.value, excludeDepName, newVersion },\n 'Replacing malformed minimumReleaseAgeExclude entry',\n );\n matchedItem.value = `${excludeDepName}@${newVersion}`;\n matchedItem.commentBefore = ` Renovate security update: ${excludeDepName}@${newVersion}`;\n updated = true;\n } else if (isScalar<string>(matchedItem)) {\n // if we have a comment before the list, which includes the dependency\n if (excludeNode?.commentBefore?.includes(`${excludeDepName}@`)) {\n // and it doesn't already have the version included in it\n if (\n !minimumReleaseAgeExcludeIncludesDepNameAndVersion(\n excludeNode.commentBefore,\n excludeDepName,\n newVersion,\n )\n ) {\n // then append it\n\n // normalize value (no quote handling needed)\n excludeNode.commentBefore = `${excludeNode.commentBefore} || ${newVersion}`;\n updated = true;\n }\n }\n // otherwise, if it's in our matched item's comment\n else if (matchedItem.commentBefore) {\n // add it\n if (\n !minimumReleaseAgeExcludeIncludesDepNameAndVersion(\n matchedItem.commentBefore,\n excludeDepName,\n newVersion,\n )\n ) {\n // normalize value (no quote handling needed)\n matchedItem.commentBefore = `${matchedItem.commentBefore} || ${newVersion}`;\n updated = true;\n }\n } else {\n matchedItem.commentBefore = ` Renovate security update: ${excludeDepName}@${newVersion}`;\n updated = true;\n }\n\n if (\n !minimumReleaseAgeExcludeIncludesDepNameAndVersion(\n matchedItem.value,\n excludeDepName,\n newVersion,\n )\n ) {\n matchedItem.value = `${matchedItem.value} || ${newVersion}`;\n updated = true;\n }\n } else {\n // add new entry\n const newItem = doc.createNode(`${excludeDepName}@${newVersion}`);\n newItem.commentBefore = ` Renovate security update: ${excludeDepName}@${newVersion}`;\n\n excludeNode.items.push(newItem);\n updated = true;\n }\n\n // Remove any malformed entries for the same package left over from the prior bug\n for (let i = excludeNode.items.length - 1; i >= 0; i--) {\n const item = excludeNode.items[i];\n if (\n item !== matchedItem &&\n isScalar(item) &&\n isString(item.value) &&\n item.value.startsWith(`${excludeDepName}@`) &&\n !isValidMinimumReleaseAgeExcludeEntry(item.value, excludeDepName!)\n ) {\n excludeNode.items.splice(i, 1);\n updated = true;\n }\n }\n }\n\n if (!updated) {\n return null;\n }\n\n const newContent = doc.toString();\n await writeLocalFile(pnpmWorkspaceFilePath, newContent);\n\n return {\n file: {\n type: 'addition',\n path: pnpmWorkspaceFilePath,\n contents: newContent,\n },\n };\n}\n\nfunction getMatchedItem(\n depName: string,\n items: unknown[],\n): {\n item: Scalar | null;\n allExcluded: boolean;\n malformed?: boolean;\n} {\n let malformedItem: Scalar | null = null;\n\n for (const item of items) {\n /* v8 ignore if -- should not happen */\n if (!isScalar(item) || !isString(item.value)) {\n continue;\n }\n\n if (item.value.startsWith(`${depName}@`)) {\n if (isValidMinimumReleaseAgeExcludeEntry(item.value, depName)) {\n return {\n allExcluded: false,\n item,\n };\n }\n malformedItem ??= item;\n continue;\n }\n\n if (item.value === depName || matchRegexOrGlob(depName, item.value)) {\n return {\n allExcluded: true,\n item,\n };\n }\n }\n\n if (malformedItem) {\n return {\n allExcluded: false,\n item: malformedItem,\n malformed: true,\n };\n }\n\n return {\n item: null,\n allExcluded: false,\n };\n}\n\n/** pnpm requires package@version entries without range selectors or extra @ in the version part */\nfunction isValidMinimumReleaseAgeExcludeEntry(\n value: string,\n packageName: string,\n): boolean {\n return !value.slice(`${packageName}@`.length).includes('@');\n}\n\n/** determine whether a comment or a list item contains the depName at a given newVersion */\nfunction minimumReleaseAgeExcludeIncludesDepNameAndVersion(\n line: string,\n depName: string | undefined,\n newVersion: string | undefined,\n): boolean {\n if (line.includes(`${depName}@${newVersion}`)) {\n return true;\n }\n\n if (line.includes(`|| ${newVersion}`)) {\n return true;\n }\n\n return false;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"artifacts.js","names":[],"sources":["../../../../lib/modules/manager/npm/artifacts.ts"],"sourcesContent":["import { isEmptyArray, isNonEmptyObject, isString } from '@sindresorhus/is';\nimport upath from 'upath';\nimport type { Scalar, YAMLSeq } from 'yaml';\nimport { isScalar, isSeq, parseDocument } from 'yaml';\nimport { logger } from '../../../logger/index.ts';\nimport {\n localPathExists,\n readLocalFile,\n writeLocalFile,\n} from '../../../util/fs/index.ts';\nimport { coerceObject } from '../../../util/object.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { matchRegexOrGlob } from '../../../util/string-match.ts';\nimport type { UpdateArtifact, UpdateArtifactsResult } from '../types.ts';\n\n// eg. 8.15.5+sha256.4b4efa12490e5055d59b9b9fc9438b7d581a6b7af3b5675eb5c5f447cee1a589\nconst versionWithHashRegString = '^(?<version>.*)\\\\+(?<hash>.*)';\n\n// Matches a Subresource Integrity string, eg. sha512-<base64 digest>\nconst sriRegString = '^(?<algo>sha\\\\d+)-(?<hash>[A-Za-z0-9+/]+={0,2})$';\n\nconst packageManagerFieldRegString = '(\"packageManager\"\\\\s*:\\\\s*\")[^\"]*\"';\n\nexport async function updateArtifacts(\n updateArtifactsConfig: UpdateArtifact,\n): Promise<UpdateArtifactsResult[] | null> {\n logger.debug(`npm.updateArtifacts(${updateArtifactsConfig.packageFileName})`);\n let res: UpdateArtifactsResult[] = [];\n res.push(coerceObject(handlePackageManagerUpdates(updateArtifactsConfig)));\n res.push(coerceObject(await updatePnpmWorkspace(updateArtifactsConfig)));\n\n res = res.filter(isNonEmptyObject);\n if (res.length === 0) {\n return null;\n }\n\n return res;\n}\n\n/**\n * Updates the corepack hash of the `packageManager` field from the new version's integrity digest.\n * @see https://github.com/nodejs/corepack/blob/57bfb67b062ea1b8746b302bcdbf9f8e8438c526/sources/corepackUtils.ts#L300\n */\nfunction handlePackageManagerUpdates(\n updateArtifactsConfig: UpdateArtifact,\n): UpdateArtifactsResult | null {\n const { packageFileName, updatedDeps, newPackageFileContent } =\n updateArtifactsConfig;\n const packageManagerUpdate = updatedDeps.find(\n (dep) => dep.depType === 'packageManager',\n );\n\n if (!packageManagerUpdate) {\n logger.debug('No packageManager updates - returning null');\n return null;\n }\n\n const { currentValue, depName, newVersion, newDigest } = packageManagerUpdate;\n\n // Only rewrite the hash if the current value already has one\n if (!currentValue || !regEx(versionWithHashRegString).test(currentValue)) {\n return null;\n }\n\n const sriMatch = regEx(sriRegString).exec(newDigest ?? '');\n if (!sriMatch?.groups) {\n logger.warn(\n { packageFileName, depName, newVersion, newDigest },\n 'Cannot update packageManager hash: no valid digest available',\n );\n return {\n artifactError: {\n fileName: packageFileName,\n stderr: `Cannot update packageManager hash for ${depName}@${newVersion}: no valid digest available`,\n },\n };\n }\n\n const { algo, hash } = sriMatch.groups;\n const hexHash = Buffer.from(hash, 'base64').toString('hex');\n const newPackageManagerValue = `${depName}@${newVersion}+${algo}.${hexHash}`;\n\n const newContent = newPackageFileContent.replace(\n regEx(packageManagerFieldRegString),\n `$1${newPackageManagerValue}\"`,\n );\n\n if (newContent === newPackageFileContent) {\n return null;\n }\n\n logger.debug('Returning updated package.json');\n return {\n file: {\n type: 'addition',\n path: packageFileName,\n contents: newContent,\n },\n };\n}\n\n/**\n * Update the minimumReleaseAgeExclude setting in pnpm-workspace.yaml if needed\n */\nasync function updatePnpmWorkspace(\n updateArtifactsConfig: UpdateArtifact,\n): Promise<UpdateArtifactsResult | null> {\n const upgrades = updateArtifactsConfig.updatedDeps.filter(\n (u) => u.isVulnerabilityAlert,\n );\n // return early if no security updates are present\n if (isEmptyArray(upgrades)) {\n return null;\n }\n\n const pnpmLockFile = upgrades[0].managerData?.pnpmLockFile;\n if (!isString(pnpmLockFile)) {\n logger.debug(\n 'No pnpm shrinkwrap found, not attempting to update pnpm-workspace.yaml',\n );\n return null;\n }\n const lockFileDir = upath.dirname(pnpmLockFile);\n const pnpmWorkspaceFilePath = upath.join(lockFileDir, 'pnpm-workspace.yaml');\n\n if (!(await localPathExists(pnpmWorkspaceFilePath))) {\n return null;\n }\n\n // use already-updated content when updating the workspace file itself\n const packageFileContent =\n updateArtifactsConfig.packageFileName === pnpmWorkspaceFilePath\n ? updateArtifactsConfig.newPackageFileContent\n : (await readLocalFile(pnpmWorkspaceFilePath, 'utf8'))!;\n const doc = parseDocument(packageFileContent);\n\n if (!doc.get('minimumReleaseAge')) {\n return null;\n }\n\n let updated = false;\n\n for (const upgrade of upgrades) {\n let excludeNode = doc.getIn(['minimumReleaseAgeExclude']) as YAMLSeq | null;\n // v8 ignore next -- TODO: add test #40625\n const newVersion = upgrade.newVersion ?? upgrade.newValue;\n // For pnpm overrides with range selectors (e.g. \"pkg@<=1.0.0\"), depName contains\n // the full key including the selector. Use packageName (bare package name) for\n // minimumReleaseAgeExclude entries which require exact versions only.\n const excludeDepName = upgrade.packageName ?? upgrade.depName;\n\n /* v8 ignore if -- should not happen, adding for type narrowing*/\n if (excludeNode && !isSeq(excludeNode)) {\n return null;\n }\n\n if (!excludeNode) {\n logger.debug('Adding new exclude block');\n excludeNode = doc.createNode([]);\n const newItem = doc.createNode(`${excludeDepName}@${newVersion}`);\n newItem.commentBefore = ` Renovate security update: ${excludeDepName}@${newVersion}`;\n excludeNode.items.push(newItem);\n doc.set('minimumReleaseAgeExclude', excludeNode);\n updated = true;\n continue;\n }\n\n const {\n item: matchedItem,\n allExcluded,\n malformed,\n } = getMatchedItem(excludeDepName!, excludeNode.items);\n\n if (allExcluded) {\n // still clean up any malformed entries even when a wildcard covers the package\n } else if (malformed && isScalar<string>(matchedItem)) {\n logger.debug(\n { entry: matchedItem.value, excludeDepName, newVersion },\n 'Replacing malformed minimumReleaseAgeExclude entry',\n );\n matchedItem.value = `${excludeDepName}@${newVersion}`;\n matchedItem.commentBefore = ` Renovate security update: ${excludeDepName}@${newVersion}`;\n updated = true;\n } else if (isScalar<string>(matchedItem)) {\n // if we have a comment before the list, which includes the dependency\n if (excludeNode?.commentBefore?.includes(`${excludeDepName}@`)) {\n // and it doesn't already have the version included in it\n if (\n !minimumReleaseAgeExcludeIncludesDepNameAndVersion(\n excludeNode.commentBefore,\n excludeDepName,\n newVersion,\n )\n ) {\n // then append it\n\n // normalize value (no quote handling needed)\n excludeNode.commentBefore = `${excludeNode.commentBefore} || ${newVersion}`;\n updated = true;\n }\n }\n // otherwise, if it's in our matched item's comment\n else if (matchedItem.commentBefore) {\n // add it\n if (\n !minimumReleaseAgeExcludeIncludesDepNameAndVersion(\n matchedItem.commentBefore,\n excludeDepName,\n newVersion,\n )\n ) {\n // normalize value (no quote handling needed)\n matchedItem.commentBefore = `${matchedItem.commentBefore} || ${newVersion}`;\n updated = true;\n }\n } else {\n matchedItem.commentBefore = ` Renovate security update: ${excludeDepName}@${newVersion}`;\n updated = true;\n }\n\n if (\n !minimumReleaseAgeExcludeIncludesDepNameAndVersion(\n matchedItem.value,\n excludeDepName,\n newVersion,\n )\n ) {\n matchedItem.value = `${matchedItem.value} || ${newVersion}`;\n updated = true;\n }\n } else {\n // add new entry\n const newItem = doc.createNode(`${excludeDepName}@${newVersion}`);\n newItem.commentBefore = ` Renovate security update: ${excludeDepName}@${newVersion}`;\n\n excludeNode.items.push(newItem);\n updated = true;\n }\n\n // Remove any malformed entries for the same package left over from the prior bug\n for (let i = excludeNode.items.length - 1; i >= 0; i--) {\n const item = excludeNode.items[i];\n if (\n item !== matchedItem &&\n isScalar(item) &&\n isString(item.value) &&\n item.value.startsWith(`${excludeDepName}@`) &&\n !isValidMinimumReleaseAgeExcludeEntry(item.value, excludeDepName!)\n ) {\n excludeNode.items.splice(i, 1);\n updated = true;\n }\n }\n }\n\n if (!updated) {\n return null;\n }\n\n const newContent = doc.toString();\n await writeLocalFile(pnpmWorkspaceFilePath, newContent);\n\n return {\n file: {\n type: 'addition',\n path: pnpmWorkspaceFilePath,\n contents: newContent,\n },\n };\n}\n\nfunction getMatchedItem(\n depName: string,\n items: unknown[],\n): {\n item: Scalar | null;\n allExcluded: boolean;\n malformed?: boolean;\n} {\n let malformedItem: Scalar | null = null;\n\n for (const item of items) {\n /* v8 ignore if -- should not happen */\n if (!isScalar(item) || !isString(item.value)) {\n continue;\n }\n\n if (item.value.startsWith(`${depName}@`)) {\n if (isValidMinimumReleaseAgeExcludeEntry(item.value, depName)) {\n return {\n allExcluded: false,\n item,\n };\n }\n malformedItem ??= item;\n continue;\n }\n\n if (item.value === depName || matchRegexOrGlob(depName, item.value)) {\n return {\n allExcluded: true,\n item,\n };\n }\n }\n\n if (malformedItem) {\n return {\n allExcluded: false,\n item: malformedItem,\n malformed: true,\n };\n }\n\n return {\n item: null,\n allExcluded: false,\n };\n}\n\n/** pnpm requires package@version entries without range selectors or extra @ in the version part */\nfunction isValidMinimumReleaseAgeExcludeEntry(\n value: string,\n packageName: string,\n): boolean {\n return !value.slice(`${packageName}@`.length).includes('@');\n}\n\n/** determine whether a comment or a list item contains the depName at a given newVersion */\nfunction minimumReleaseAgeExcludeIncludesDepNameAndVersion(\n line: string,\n depName: string | undefined,\n newVersion: string | undefined,\n): boolean {\n if (line.includes(`${depName}@${newVersion}`)) {\n return true;\n }\n\n if (line.includes(`|| ${newVersion}`)) {\n return true;\n }\n\n return false;\n}\n"],"mappings":"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"}
|
|
@@ -43,7 +43,7 @@ function extractDependency(depType, depName, input) {
|
|
|
43
43
|
dep.datasource = NpmDatasource.id;
|
|
44
44
|
dep.commitMessageTopic = "Yarn";
|
|
45
45
|
const major = isVersion(dep.currentValue) && api.getMajor(dep.currentValue);
|
|
46
|
-
if (major && major > 1) dep.packageName = "@yarnpkg/cli";
|
|
46
|
+
if (major && major > 1) dep.packageName = "@yarnpkg/cli-dist";
|
|
47
47
|
} else if (depName === "npm") {
|
|
48
48
|
dep.datasource = NpmDatasource.id;
|
|
49
49
|
dep.commitMessageTopic = "npm";
|
|
@@ -67,7 +67,7 @@ function extractDependency(depType, depName, input) {
|
|
|
67
67
|
dep.datasource = NpmDatasource.id;
|
|
68
68
|
dep.commitMessageTopic = "Yarn";
|
|
69
69
|
const major = isVersion(dep.currentValue) && api.getMajor(dep.currentValue);
|
|
70
|
-
if (major && major > 1) dep.packageName = "@yarnpkg/cli";
|
|
70
|
+
if (major && major > 1) dep.packageName = "@yarnpkg/cli-dist";
|
|
71
71
|
} else if (depName === "npm") dep.datasource = NpmDatasource.id;
|
|
72
72
|
else if (depName === "pnpm") {
|
|
73
73
|
dep.datasource = NpmDatasource.id;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency.js","names":[],"sources":["../../../../../../lib/modules/manager/npm/extract/common/dependency.ts"],"sourcesContent":["import { isString } from '@sindresorhus/is';\nimport validateNpmPackageName from 'validate-npm-package-name';\nimport { logger } from '../../../../../logger/index.ts';\nimport { coerceArray } from '../../../../../util/array.ts';\nimport type { ConstraintName } from '../../../../../util/exec/types.ts';\nimport { isConstraintName } from '../../../../../util/exec/types.ts';\nimport { regEx } from '../../../../../util/regex.ts';\nimport { coerceString } from '../../../../../util/string.ts';\nimport { GithubTagsDatasource } from '../../../../datasource/github-tags/index.ts';\nimport { NodeVersionDatasource } from '../../../../datasource/node-version/index.ts';\nimport { NpmDatasource } from '../../../../datasource/npm/index.ts';\nimport {\n api,\n isValid,\n isVersion,\n id as npmVersioningId,\n} from '../../../../versioning/npm/index.ts';\nimport type { PackageDependency } from '../../../types.ts';\n\nconst RE_REPOSITORY_GITHUB_SSH_FORMAT = regEx(\n /(?:git@)github.com:(?<owner>[^/]+)\\/(?<repo>[^/]+?)(?:\\.git)?$/,\n);\n\nexport function parseDepName(depType: string, key: string): string {\n if (depType !== 'resolutions') {\n return key;\n }\n\n // Yarn selective dependency resolutions may nest a path of parent\n // packages before the target package, e.g. `parent/child` or\n // `@scope/parent/child`, and any segment (including the last) may carry\n // a `@range` suffix used to disambiguate which version of that package\n // to match, e.g. `@cypress/request/qs@~6.14.1`.\n const parts = key.split('/');\n const segments: string[] = [];\n for (let i = 0; i < parts.length; i += 1) {\n const part = parts[i];\n if (part.startsWith('@') && i + 1 < parts.length) {\n i += 1;\n segments.push(`${part}/${parts[i]}`);\n } else {\n segments.push(part);\n }\n }\n\n const lastSegment = segments.at(-1);\n const [, depName] = coerceArray(\n regEx(/^(?<depName>(?:@[^/]+\\/)?[^@]+)/).exec(coerceString(lastSegment)),\n );\n return depName;\n}\n\nexport function extractDependency(\n depType: string,\n depName: string,\n input: string,\n): PackageDependency {\n const dep: PackageDependency = {};\n if (!validateNpmPackageName(depName).validForOldPackages) {\n dep.skipReason = 'invalid-name';\n return dep;\n }\n if (!isString(input)) {\n dep.skipReason = 'invalid-value';\n return dep;\n }\n dep.currentValue = input.trim();\n if (depType === 'engines' || depType === 'packageManager') {\n if (depName === 'node') {\n dep.datasource = NodeVersionDatasource.id;\n } else if (depName === 'yarn') {\n dep.datasource = NpmDatasource.id;\n dep.commitMessageTopic = 'Yarn';\n const major =\n isVersion(dep.currentValue) && api.getMajor(dep.currentValue);\n if (major && major > 1) {\n dep.packageName = '@yarnpkg/cli';\n }\n } else if (depName === 'npm') {\n dep.datasource = NpmDatasource.id;\n dep.commitMessageTopic = 'npm';\n } else if (depName === 'pnpm') {\n dep.datasource = NpmDatasource.id;\n dep.commitMessageTopic = 'pnpm';\n } else if (depName === 'vscode') {\n dep.datasource = GithubTagsDatasource.id;\n dep.packageName = 'microsoft/vscode';\n dep.versioning = npmVersioningId;\n } else if (depName === 'bun') {\n dep.datasource = NpmDatasource.id;\n dep.commitMessageTopic = 'Bun';\n } else {\n dep.skipReason = 'unknown-engines';\n }\n if (!isValid(dep.currentValue)) {\n dep.skipReason = 'unspecified-version';\n }\n return dep;\n }\n\n // support for volta\n if (depType === 'volta') {\n if (depName === 'node') {\n dep.datasource = NodeVersionDatasource.id;\n } else if (depName === 'yarn') {\n dep.datasource = NpmDatasource.id;\n dep.commitMessageTopic = 'Yarn';\n const major =\n isVersion(dep.currentValue) && api.getMajor(dep.currentValue);\n if (major && major > 1) {\n dep.packageName = '@yarnpkg/cli';\n }\n } else if (depName === 'npm') {\n dep.datasource = NpmDatasource.id;\n } else if (depName === 'pnpm') {\n dep.datasource = NpmDatasource.id;\n dep.commitMessageTopic = 'pnpm';\n } else {\n dep.skipReason = 'unknown-volta';\n }\n if (!isValid(dep.currentValue)) {\n dep.skipReason = 'unspecified-version';\n }\n return dep;\n }\n\n if (dep.currentValue.startsWith('npm:')) {\n dep.npmPackageAlias = true;\n const valSplit = dep.currentValue.replace('npm:', '').split('@');\n if (valSplit.length === 1) {\n dep.packageName = depName;\n dep.currentValue = valSplit[0];\n } else if (valSplit.length === 2) {\n dep.packageName = valSplit[0];\n dep.currentValue = valSplit[1];\n } else if (valSplit.length === 3) {\n dep.packageName = `${valSplit[0]}@${valSplit[1]}`;\n dep.currentValue = valSplit[2];\n } else {\n logger.debug(\n `Invalid npm package alias for dependency: \"${depName}\":\"${dep.currentValue}\"`,\n );\n }\n }\n if (dep.currentValue.startsWith('file:')) {\n dep.skipReason = 'file';\n return dep;\n }\n\n if (isValid(dep.currentValue)) {\n dep.datasource = NpmDatasource.id;\n if (dep.currentValue === '') {\n dep.skipReason = 'empty';\n }\n return dep;\n }\n const hashSplit = dep.currentValue.split('#');\n if (hashSplit.length !== 2) {\n dep.skipReason = 'unspecified-version';\n return dep;\n }\n const [depNamePart, depRefPart] = hashSplit;\n\n let githubOwnerRepo: string;\n let githubOwner: string;\n let githubRepo: string;\n const matchUrlSshFormat = RE_REPOSITORY_GITHUB_SSH_FORMAT.exec(depNamePart);\n if (matchUrlSshFormat === null) {\n githubOwnerRepo = depNamePart\n .replace(regEx(/^github:/), '')\n .replace(regEx(/^git\\+/), '')\n .replace(regEx(/^https:\\/\\/github\\.com\\//), '')\n .replace(regEx(/\\.git$/), '');\n const githubRepoSplit = githubOwnerRepo.split('/');\n if (githubRepoSplit.length !== 2) {\n dep.skipReason = 'unspecified-version';\n return dep;\n }\n [githubOwner, githubRepo] = githubRepoSplit;\n } else {\n githubOwner = matchUrlSshFormat.groups!.owner;\n githubRepo = matchUrlSshFormat.groups!.repo;\n githubOwnerRepo = `${githubOwner}/${githubRepo}`;\n }\n // combined with the length check below, this is equivalent to\n // /^[a-z\\d](?:[a-z\\d]|-(?=[a-z\\d])){0,38}$/i without the lookahead\n const githubOwnerRegex = regEx(/^[a-z\\d](?:-?[a-z\\d]){0,38}$/i);\n const githubRepoRegex = regEx(/^[a-zA-Z0-9._-]{1,100}$/);\n if (\n githubOwner.length > 39 ||\n !githubOwnerRegex.test(githubOwner) ||\n !githubRepoRegex.test(githubRepo)\n ) {\n dep.skipReason = 'unspecified-version';\n return dep;\n }\n if (isVersion(depRefPart)) {\n dep.currentRawValue = dep.currentValue;\n dep.currentValue = depRefPart;\n dep.datasource = GithubTagsDatasource.id;\n dep.versioning = npmVersioningId;\n dep.packageName = githubOwnerRepo;\n dep.pinDigests = false;\n } else if (\n regEx(/^[0-9a-f]{7}$/).test(depRefPart) ||\n regEx(/^[0-9a-f]{40}$/).test(depRefPart)\n ) {\n dep.currentRawValue = dep.currentValue;\n dep.currentValue = null;\n dep.currentDigest = depRefPart;\n dep.datasource = GithubTagsDatasource.id;\n dep.versioning = npmVersioningId;\n dep.packageName = githubOwnerRepo;\n } else {\n // <protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish> | #semver:<semver>]\n // https://docs.npmjs.com/cli/v10/configuring-npm/package-json#git-urls-as-dependencies\n const len = 7; // length of 'semver:'\n const maybeVersion = depRefPart.substring(len);\n\n if (depRefPart.startsWith('semver:') && isValid(maybeVersion)) {\n dep.currentRawValue = dep.currentValue;\n dep.currentValue = maybeVersion;\n dep.datasource = GithubTagsDatasource.id;\n dep.versioning = npmVersioningId;\n dep.packageName = githubOwnerRepo;\n dep.pinDigests = false;\n } else {\n dep.skipReason = 'unversioned-reference';\n return dep;\n }\n }\n dep.sourceUrl = `https://github.com/${githubOwnerRepo}`;\n dep.gitRef = true;\n return dep;\n}\n\nexport function getExtractedConstraints(\n deps: PackageDependency[],\n): Partial<Record<ConstraintName, string>> {\n const extractedConstraints: Partial<Record<ConstraintName, string>> = {};\n const constraints: ConstraintName[] = [\n 'bun',\n 'node',\n 'yarn',\n 'npm',\n 'pnpm',\n 'vscode',\n ];\n for (const dep of deps) {\n if (\n !dep.skipReason &&\n (dep.depType === 'engines' || dep.depType === 'packageManager') &&\n dep.depName &&\n isConstraintName(dep.depName) &&\n constraints.includes(dep.depName) &&\n isString(dep.currentValue)\n ) {\n extractedConstraints[dep.depName] = dep.currentValue;\n }\n }\n return extractedConstraints;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dependency.js","names":[],"sources":["../../../../../../lib/modules/manager/npm/extract/common/dependency.ts"],"sourcesContent":["import { isString } from '@sindresorhus/is';\nimport validateNpmPackageName from 'validate-npm-package-name';\nimport { logger } from '../../../../../logger/index.ts';\nimport { coerceArray } from '../../../../../util/array.ts';\nimport type { ConstraintName } from '../../../../../util/exec/types.ts';\nimport { isConstraintName } from '../../../../../util/exec/types.ts';\nimport { regEx } from '../../../../../util/regex.ts';\nimport { coerceString } from '../../../../../util/string.ts';\nimport { GithubTagsDatasource } from '../../../../datasource/github-tags/index.ts';\nimport { NodeVersionDatasource } from '../../../../datasource/node-version/index.ts';\nimport { NpmDatasource } from '../../../../datasource/npm/index.ts';\nimport {\n api,\n isValid,\n isVersion,\n id as npmVersioningId,\n} from '../../../../versioning/npm/index.ts';\nimport type { PackageDependency } from '../../../types.ts';\n\nconst RE_REPOSITORY_GITHUB_SSH_FORMAT = regEx(\n /(?:git@)github.com:(?<owner>[^/]+)\\/(?<repo>[^/]+?)(?:\\.git)?$/,\n);\n\nexport function parseDepName(depType: string, key: string): string {\n if (depType !== 'resolutions') {\n return key;\n }\n\n // Yarn selective dependency resolutions may nest a path of parent\n // packages before the target package, e.g. `parent/child` or\n // `@scope/parent/child`, and any segment (including the last) may carry\n // a `@range` suffix used to disambiguate which version of that package\n // to match, e.g. `@cypress/request/qs@~6.14.1`.\n const parts = key.split('/');\n const segments: string[] = [];\n for (let i = 0; i < parts.length; i += 1) {\n const part = parts[i];\n if (part.startsWith('@') && i + 1 < parts.length) {\n i += 1;\n segments.push(`${part}/${parts[i]}`);\n } else {\n segments.push(part);\n }\n }\n\n const lastSegment = segments.at(-1);\n const [, depName] = coerceArray(\n regEx(/^(?<depName>(?:@[^/]+\\/)?[^@]+)/).exec(coerceString(lastSegment)),\n );\n return depName;\n}\n\nexport function extractDependency(\n depType: string,\n depName: string,\n input: string,\n): PackageDependency {\n const dep: PackageDependency = {};\n if (!validateNpmPackageName(depName).validForOldPackages) {\n dep.skipReason = 'invalid-name';\n return dep;\n }\n if (!isString(input)) {\n dep.skipReason = 'invalid-value';\n return dep;\n }\n dep.currentValue = input.trim();\n if (depType === 'engines' || depType === 'packageManager') {\n if (depName === 'node') {\n dep.datasource = NodeVersionDatasource.id;\n } else if (depName === 'yarn') {\n dep.datasource = NpmDatasource.id;\n dep.commitMessageTopic = 'Yarn';\n const major =\n isVersion(dep.currentValue) && api.getMajor(dep.currentValue);\n if (major && major > 1) {\n dep.packageName = '@yarnpkg/cli-dist';\n }\n } else if (depName === 'npm') {\n dep.datasource = NpmDatasource.id;\n dep.commitMessageTopic = 'npm';\n } else if (depName === 'pnpm') {\n dep.datasource = NpmDatasource.id;\n dep.commitMessageTopic = 'pnpm';\n } else if (depName === 'vscode') {\n dep.datasource = GithubTagsDatasource.id;\n dep.packageName = 'microsoft/vscode';\n dep.versioning = npmVersioningId;\n } else if (depName === 'bun') {\n dep.datasource = NpmDatasource.id;\n dep.commitMessageTopic = 'Bun';\n } else {\n dep.skipReason = 'unknown-engines';\n }\n if (!isValid(dep.currentValue)) {\n dep.skipReason = 'unspecified-version';\n }\n return dep;\n }\n\n // support for volta\n if (depType === 'volta') {\n if (depName === 'node') {\n dep.datasource = NodeVersionDatasource.id;\n } else if (depName === 'yarn') {\n dep.datasource = NpmDatasource.id;\n dep.commitMessageTopic = 'Yarn';\n const major =\n isVersion(dep.currentValue) && api.getMajor(dep.currentValue);\n if (major && major > 1) {\n dep.packageName = '@yarnpkg/cli-dist';\n }\n } else if (depName === 'npm') {\n dep.datasource = NpmDatasource.id;\n } else if (depName === 'pnpm') {\n dep.datasource = NpmDatasource.id;\n dep.commitMessageTopic = 'pnpm';\n } else {\n dep.skipReason = 'unknown-volta';\n }\n if (!isValid(dep.currentValue)) {\n dep.skipReason = 'unspecified-version';\n }\n return dep;\n }\n\n if (dep.currentValue.startsWith('npm:')) {\n dep.npmPackageAlias = true;\n const valSplit = dep.currentValue.replace('npm:', '').split('@');\n if (valSplit.length === 1) {\n dep.packageName = depName;\n dep.currentValue = valSplit[0];\n } else if (valSplit.length === 2) {\n dep.packageName = valSplit[0];\n dep.currentValue = valSplit[1];\n } else if (valSplit.length === 3) {\n dep.packageName = `${valSplit[0]}@${valSplit[1]}`;\n dep.currentValue = valSplit[2];\n } else {\n logger.debug(\n `Invalid npm package alias for dependency: \"${depName}\":\"${dep.currentValue}\"`,\n );\n }\n }\n if (dep.currentValue.startsWith('file:')) {\n dep.skipReason = 'file';\n return dep;\n }\n\n if (isValid(dep.currentValue)) {\n dep.datasource = NpmDatasource.id;\n if (dep.currentValue === '') {\n dep.skipReason = 'empty';\n }\n return dep;\n }\n const hashSplit = dep.currentValue.split('#');\n if (hashSplit.length !== 2) {\n dep.skipReason = 'unspecified-version';\n return dep;\n }\n const [depNamePart, depRefPart] = hashSplit;\n\n let githubOwnerRepo: string;\n let githubOwner: string;\n let githubRepo: string;\n const matchUrlSshFormat = RE_REPOSITORY_GITHUB_SSH_FORMAT.exec(depNamePart);\n if (matchUrlSshFormat === null) {\n githubOwnerRepo = depNamePart\n .replace(regEx(/^github:/), '')\n .replace(regEx(/^git\\+/), '')\n .replace(regEx(/^https:\\/\\/github\\.com\\//), '')\n .replace(regEx(/\\.git$/), '');\n const githubRepoSplit = githubOwnerRepo.split('/');\n if (githubRepoSplit.length !== 2) {\n dep.skipReason = 'unspecified-version';\n return dep;\n }\n [githubOwner, githubRepo] = githubRepoSplit;\n } else {\n githubOwner = matchUrlSshFormat.groups!.owner;\n githubRepo = matchUrlSshFormat.groups!.repo;\n githubOwnerRepo = `${githubOwner}/${githubRepo}`;\n }\n // combined with the length check below, this is equivalent to\n // /^[a-z\\d](?:[a-z\\d]|-(?=[a-z\\d])){0,38}$/i without the lookahead\n const githubOwnerRegex = regEx(/^[a-z\\d](?:-?[a-z\\d]){0,38}$/i);\n const githubRepoRegex = regEx(/^[a-zA-Z0-9._-]{1,100}$/);\n if (\n githubOwner.length > 39 ||\n !githubOwnerRegex.test(githubOwner) ||\n !githubRepoRegex.test(githubRepo)\n ) {\n dep.skipReason = 'unspecified-version';\n return dep;\n }\n if (isVersion(depRefPart)) {\n dep.currentRawValue = dep.currentValue;\n dep.currentValue = depRefPart;\n dep.datasource = GithubTagsDatasource.id;\n dep.versioning = npmVersioningId;\n dep.packageName = githubOwnerRepo;\n dep.pinDigests = false;\n } else if (\n regEx(/^[0-9a-f]{7}$/).test(depRefPart) ||\n regEx(/^[0-9a-f]{40}$/).test(depRefPart)\n ) {\n dep.currentRawValue = dep.currentValue;\n dep.currentValue = null;\n dep.currentDigest = depRefPart;\n dep.datasource = GithubTagsDatasource.id;\n dep.versioning = npmVersioningId;\n dep.packageName = githubOwnerRepo;\n } else {\n // <protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish> | #semver:<semver>]\n // https://docs.npmjs.com/cli/v10/configuring-npm/package-json#git-urls-as-dependencies\n const len = 7; // length of 'semver:'\n const maybeVersion = depRefPart.substring(len);\n\n if (depRefPart.startsWith('semver:') && isValid(maybeVersion)) {\n dep.currentRawValue = dep.currentValue;\n dep.currentValue = maybeVersion;\n dep.datasource = GithubTagsDatasource.id;\n dep.versioning = npmVersioningId;\n dep.packageName = githubOwnerRepo;\n dep.pinDigests = false;\n } else {\n dep.skipReason = 'unversioned-reference';\n return dep;\n }\n }\n dep.sourceUrl = `https://github.com/${githubOwnerRepo}`;\n dep.gitRef = true;\n return dep;\n}\n\nexport function getExtractedConstraints(\n deps: PackageDependency[],\n): Partial<Record<ConstraintName, string>> {\n const extractedConstraints: Partial<Record<ConstraintName, string>> = {};\n const constraints: ConstraintName[] = [\n 'bun',\n 'node',\n 'yarn',\n 'npm',\n 'pnpm',\n 'vscode',\n ];\n for (const dep of deps) {\n if (\n !dep.skipReason &&\n (dep.depType === 'engines' || dep.depType === 'packageManager') &&\n dep.depName &&\n isConstraintName(dep.depName) &&\n constraints.includes(dep.depName) &&\n isString(dep.currentValue)\n ) {\n extractedConstraints[dep.depName] = dep.currentValue;\n }\n }\n return extractedConstraints;\n}\n"],"mappings":";;;;;;;;;;;;AAmBA,MAAM,kCAAkC,MACtC,gEACF;AAEA,SAAgB,aAAa,SAAiB,KAAqB;CACjE,IAAI,YAAY,eACd,OAAO;CAQT,MAAM,QAAQ,IAAI,MAAM,GAAG;CAC3B,MAAM,WAAqB,CAAC;CAC5B,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;EACxC,MAAM,OAAO,MAAM;EACnB,IAAI,KAAK,WAAW,GAAG,KAAK,IAAI,IAAI,MAAM,QAAQ;GAChD,KAAK;GACL,SAAS,KAAK,GAAG,KAAK,GAAG,MAAM,IAAI;EACrC,OACE,SAAS,KAAK,IAAI;CAEtB;CAEA,MAAM,cAAc,SAAS,GAAG,EAAE;CAClC,MAAM,GAAG,WAAW,YAClB,MAAM,iCAAiC,CAAC,CAAC,KAAK,aAAa,WAAW,CAAC,CACzE;CACA,OAAO;AACT;AAEA,SAAgB,kBACd,SACA,SACA,OACmB;CACnB,MAAM,MAAyB,CAAC;CAChC,IAAI,CAAC,uBAAuB,OAAO,CAAC,CAAC,qBAAqB;EACxD,IAAI,aAAa;EACjB,OAAO;CACT;CACA,IAAI,CAAC,SAAS,KAAK,GAAG;EACpB,IAAI,aAAa;EACjB,OAAO;CACT;CACA,IAAI,eAAe,MAAM,KAAK;CAC9B,IAAI,YAAY,aAAa,YAAY,kBAAkB;EACzD,IAAI,YAAY,QACd,IAAI,aAAa,sBAAsB;OAClC,IAAI,YAAY,QAAQ;GAC7B,IAAI,aAAa,cAAc;GAC/B,IAAI,qBAAqB;GACzB,MAAM,QACJ,UAAU,IAAI,YAAY,KAAK,IAAI,SAAS,IAAI,YAAY;GAC9D,IAAI,SAAS,QAAQ,GACnB,IAAI,cAAc;EAEtB,OAAO,IAAI,YAAY,OAAO;GAC5B,IAAI,aAAa,cAAc;GAC/B,IAAI,qBAAqB;EAC3B,OAAO,IAAI,YAAY,QAAQ;GAC7B,IAAI,aAAa,cAAc;GAC/B,IAAI,qBAAqB;EAC3B,OAAO,IAAI,YAAY,UAAU;GAC/B,IAAI,aAAa,qBAAqB;GACtC,IAAI,cAAc;GAClB,IAAI,aAAA;EACN,OAAO,IAAI,YAAY,OAAO;GAC5B,IAAI,aAAa,cAAc;GAC/B,IAAI,qBAAqB;EAC3B,OACE,IAAI,aAAa;EAEnB,IAAI,CAAC,QAAQ,IAAI,YAAY,GAC3B,IAAI,aAAa;EAEnB,OAAO;CACT;CAGA,IAAI,YAAY,SAAS;EACvB,IAAI,YAAY,QACd,IAAI,aAAa,sBAAsB;OAClC,IAAI,YAAY,QAAQ;GAC7B,IAAI,aAAa,cAAc;GAC/B,IAAI,qBAAqB;GACzB,MAAM,QACJ,UAAU,IAAI,YAAY,KAAK,IAAI,SAAS,IAAI,YAAY;GAC9D,IAAI,SAAS,QAAQ,GACnB,IAAI,cAAc;EAEtB,OAAO,IAAI,YAAY,OACrB,IAAI,aAAa,cAAc;OAC1B,IAAI,YAAY,QAAQ;GAC7B,IAAI,aAAa,cAAc;GAC/B,IAAI,qBAAqB;EAC3B,OACE,IAAI,aAAa;EAEnB,IAAI,CAAC,QAAQ,IAAI,YAAY,GAC3B,IAAI,aAAa;EAEnB,OAAO;CACT;CAEA,IAAI,IAAI,aAAa,WAAW,MAAM,GAAG;EACvC,IAAI,kBAAkB;EACtB,MAAM,WAAW,IAAI,aAAa,QAAQ,QAAQ,EAAE,CAAC,CAAC,MAAM,GAAG;EAC/D,IAAI,SAAS,WAAW,GAAG;GACzB,IAAI,cAAc;GAClB,IAAI,eAAe,SAAS;EAC9B,OAAO,IAAI,SAAS,WAAW,GAAG;GAChC,IAAI,cAAc,SAAS;GAC3B,IAAI,eAAe,SAAS;EAC9B,OAAO,IAAI,SAAS,WAAW,GAAG;GAChC,IAAI,cAAc,GAAG,SAAS,GAAG,GAAG,SAAS;GAC7C,IAAI,eAAe,SAAS;EAC9B,OACE,OAAO,MACL,8CAA8C,QAAQ,KAAK,IAAI,aAAa,EAC9E;CAEJ;CACA,IAAI,IAAI,aAAa,WAAW,OAAO,GAAG;EACxC,IAAI,aAAa;EACjB,OAAO;CACT;CAEA,IAAI,QAAQ,IAAI,YAAY,GAAG;EAC7B,IAAI,aAAa,cAAc;EAC/B,IAAI,IAAI,iBAAiB,IACvB,IAAI,aAAa;EAEnB,OAAO;CACT;CACA,MAAM,YAAY,IAAI,aAAa,MAAM,GAAG;CAC5C,IAAI,UAAU,WAAW,GAAG;EAC1B,IAAI,aAAa;EACjB,OAAO;CACT;CACA,MAAM,CAAC,aAAa,cAAc;CAElC,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,MAAM,oBAAoB,gCAAgC,KAAK,WAAW;CAC1E,IAAI,sBAAsB,MAAM;EAC9B,kBAAkB,YACf,QAAQ,MAAM,UAAU,GAAG,EAAE,CAAC,CAC9B,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC,CAC5B,QAAQ,MAAM,0BAA0B,GAAG,EAAE,CAAC,CAC9C,QAAQ,MAAM,QAAQ,GAAG,EAAE;EAC9B,MAAM,kBAAkB,gBAAgB,MAAM,GAAG;EACjD,IAAI,gBAAgB,WAAW,GAAG;GAChC,IAAI,aAAa;GACjB,OAAO;EACT;EACA,CAAC,aAAa,cAAc;CAC9B,OAAO;EACL,cAAc,kBAAkB,OAAQ;EACxC,aAAa,kBAAkB,OAAQ;EACvC,kBAAkB,GAAG,YAAY,GAAG;CACtC;CAGA,MAAM,mBAAmB,MAAM,+BAA+B;CAC9D,MAAM,kBAAkB,MAAM,yBAAyB;CACvD,IACE,YAAY,SAAS,MACrB,CAAC,iBAAiB,KAAK,WAAW,KAClC,CAAC,gBAAgB,KAAK,UAAU,GAChC;EACA,IAAI,aAAa;EACjB,OAAO;CACT;CACA,IAAI,UAAU,UAAU,GAAG;EACzB,IAAI,kBAAkB,IAAI;EAC1B,IAAI,eAAe;EACnB,IAAI,aAAa,qBAAqB;EACtC,IAAI,aAAA;EACJ,IAAI,cAAc;EAClB,IAAI,aAAa;CACnB,OAAO,IACL,MAAM,eAAe,CAAC,CAAC,KAAK,UAAU,KACtC,MAAM,gBAAgB,CAAC,CAAC,KAAK,UAAU,GACvC;EACA,IAAI,kBAAkB,IAAI;EAC1B,IAAI,eAAe;EACnB,IAAI,gBAAgB;EACpB,IAAI,aAAa,qBAAqB;EACtC,IAAI,aAAA;EACJ,IAAI,cAAc;CACpB,OAAO;EAIL,MAAM,eAAe,WAAW,UAAU,CAAG;EAE7C,IAAI,WAAW,WAAW,SAAS,KAAK,QAAQ,YAAY,GAAG;GAC7D,IAAI,kBAAkB,IAAI;GAC1B,IAAI,eAAe;GACnB,IAAI,aAAa,qBAAqB;GACtC,IAAI,aAAA;GACJ,IAAI,cAAc;GAClB,IAAI,aAAa;EACnB,OAAO;GACL,IAAI,aAAa;GACjB,OAAO;EACT;CACF;CACA,IAAI,YAAY,sBAAsB;CACtC,IAAI,SAAS;CACb,OAAO;AACT;AAEA,SAAgB,wBACd,MACyC;CACzC,MAAM,uBAAgE,CAAC;CACvE,MAAM,cAAgC;EACpC;EACA;EACA;EACA;EACA;EACA;CACF;CACA,KAAK,MAAM,OAAO,MAChB,IACE,CAAC,IAAI,eACJ,IAAI,YAAY,aAAa,IAAI,YAAY,qBAC9C,IAAI,WACJ,iBAAiB,IAAI,OAAO,KAC5B,YAAY,SAAS,IAAI,OAAO,KAChC,SAAS,IAAI,YAAY,GAEzB,qBAAqB,IAAI,WAAW,IAAI;CAG5C,OAAO;AACT"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { CONFIG_VALIDATION } from "../../../../../constants/error-messages.js";
|
|
2
2
|
import { regEx } from "../../../../../util/regex.js";
|
|
3
3
|
import { logger } from "../../../../../logger/index.js";
|
|
4
|
-
import { loadPackageJson } from "../../utils.js";
|
|
5
4
|
import { extractDependency, getExtractedConstraints, parseDepName } from "./dependency.js";
|
|
5
|
+
import { loadPackageJson } from "../../utils.js";
|
|
6
6
|
import { setNodeCommitTopic } from "./node.js";
|
|
7
7
|
import { extractOverrideDepsRec } from "./overrides.js";
|
|
8
8
|
import { isNonEmptyObject, isNonEmptyString, isNonEmptyStringAndNotWhitespace, isObject, isString } from "@sindresorhus/is";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { logger } from "../../../../logger/index.js";
|
|
2
2
|
import { findLocalSiblingOrParent, getSiblingFileName, readLocalFile } from "../../../../util/fs/index.js";
|
|
3
3
|
import { NpmDatasource } from "../../../datasource/npm/index.js";
|
|
4
|
-
import { PnpmWorkspaceFile } from "../schema.js";
|
|
5
4
|
import { resolveNpmrc } from "../npmrc.js";
|
|
5
|
+
import { PnpmWorkspaceFile } from "../schema.js";
|
|
6
6
|
import { getExtractedConstraints } from "./common/dependency.js";
|
|
7
7
|
import { extractPackageJson, hasPackageManager } from "./common/package-file.js";
|
|
8
8
|
import { applyPnpmWorkspaceRegistries, extractPnpmWorkspaceFile } from "./pnpm.js";
|
|
@@ -32,7 +32,7 @@ async function getLockedVersions(packageFiles) {
|
|
|
32
32
|
}
|
|
33
33
|
for (const dep of packageFile.deps) {
|
|
34
34
|
dep.lockedVersion = lockFileCache[yarnLock].lockedVersions?.[`${dep.depName}@${dep.currentValue}`];
|
|
35
|
-
if ((dep.depType === "engines" || dep.depType === "packageManager") && dep.depName === "yarn" && !isYarn1) dep.packageName = "@yarnpkg/cli";
|
|
35
|
+
if ((dep.depType === "engines" || dep.depType === "packageManager") && dep.depName === "yarn" && !isYarn1) dep.packageName = "@yarnpkg/cli-dist";
|
|
36
36
|
}
|
|
37
37
|
} else if (npmLock) {
|
|
38
38
|
logger.debug(`Found ${npmLock} for ${packageFile.packageFile}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locked-versions.js","names":[],"sources":["../../../../../../lib/modules/manager/npm/extract/post/locked-versions.ts"],"sourcesContent":["import { isString } from '@sindresorhus/is';\nimport semver from 'semver';\nimport upath from 'upath';\nimport { logger } from '../../../../../logger/index.ts';\nimport { regEx } from '../../../../../util/regex.ts';\nimport type { PackageFile } from '../../../types.ts';\nimport type { NpmManagerData } from '../../types.ts';\nimport { getNpmLock } from '../npm.ts';\nimport { getPnpmLock } from '../pnpm.ts';\nimport type { LockFile } from '../types.ts';\nimport { getYarnLock, getYarnVersionFromLock } from '../yarn.ts';\n\nconst pnpmCatalogDepTypeRe = regEx(/pnpm\\.catalog\\.(?<version>.*)/);\n\nexport async function getLockedVersions(\n packageFiles: PackageFile<NpmManagerData>[],\n): Promise<void> {\n const lockFileCache: Record<string, LockFile> = {};\n logger.debug('Finding locked versions');\n for (const packageFile of packageFiles) {\n const { managerData = {} } = packageFile;\n const { yarnLock, npmLock, pnpmLockFile } = managerData;\n const lockFiles: string[] = [];\n if (yarnLock) {\n logger.trace('Found yarnLock');\n lockFiles.push(yarnLock);\n // v8 ignore else -- TODO: add test #40625\n if (!lockFileCache[yarnLock]) {\n logger.trace(`Retrieving/parsing ${yarnLock}`);\n lockFileCache[yarnLock] = await getYarnLock(yarnLock);\n }\n const { isYarn1 } = lockFileCache[yarnLock];\n let yarn: string | undefined;\n if (!isYarn1 && !packageFile.extractedConstraints?.yarn) {\n yarn = getYarnVersionFromLock(lockFileCache[yarnLock]);\n }\n if (yarn) {\n packageFile.extractedConstraints ??= {};\n packageFile.extractedConstraints.yarn = yarn;\n }\n for (const dep of packageFile.deps) {\n dep.lockedVersion =\n lockFileCache[yarnLock].lockedVersions?.[\n // TODO: types (#22198)\n `${dep.depName}@${dep.currentValue}`\n ];\n if (\n (dep.depType === 'engines' || dep.depType === 'packageManager') &&\n dep.depName === 'yarn' &&\n !isYarn1\n ) {\n dep.packageName = '@yarnpkg/cli';\n }\n }\n } else if (npmLock) {\n logger.debug(`Found ${npmLock} for ${packageFile.packageFile}`);\n lockFiles.push(npmLock);\n if (!lockFileCache[npmLock]) {\n logger.trace(`Retrieving/parsing ${npmLock}`);\n const cache = await getNpmLock(npmLock);\n /* v8 ignore next -- needs test */\n if (!cache) {\n logger.warn({ npmLock }, 'Npm: unable to get lockfile');\n return;\n }\n lockFileCache[npmLock] = cache;\n }\n\n const { lockfileVersion } = lockFileCache[npmLock];\n let npm: string | undefined;\n if (lockfileVersion === 1) {\n if (packageFile.extractedConstraints?.npm) {\n // Add a <7 constraint if it's not already a fixed version\n if (\n semver.satisfies('6.14.18', packageFile.extractedConstraints.npm)\n ) {\n npm = `${packageFile.extractedConstraints.npm} <7`;\n }\n } else {\n npm = '<7';\n }\n } else if (lockfileVersion === 2) {\n if (packageFile.extractedConstraints?.npm) {\n // Add a <9 constraint if the latest 8.x is compatible\n if (\n semver.satisfies('8.19.3', packageFile.extractedConstraints.npm)\n ) {\n npm = `${packageFile.extractedConstraints.npm} <9`;\n }\n } else {\n npm = '<9';\n }\n } else if (lockfileVersion === 3) {\n if (!packageFile.extractedConstraints?.npm) {\n npm = '>=7';\n }\n } else {\n logger.warn(\n { lockfileVersion, npmLock },\n 'Found unsupported npm lockfile version',\n );\n return;\n }\n if (npm) {\n packageFile.extractedConstraints ??= {};\n packageFile.extractedConstraints.npm = npm;\n }\n\n const packageDir = upath.dirname(packageFile.packageFile);\n const npmRootDir = upath.dirname(npmLock);\n const relativeDir = upath.relative(npmRootDir, packageDir);\n\n for (const dep of packageFile.deps) {\n // Skip dependency types which are not locked in the lock file\n if (\n dep.depType === 'engines' ||\n dep.depType === 'packageManager' ||\n dep.depType === 'volta'\n ) {\n continue;\n }\n\n // TODO: types (#22198)\n let lockedDepName = dep.depName!;\n if (relativeDir && relativeDir !== '.') {\n lockedDepName = `${relativeDir}/node_modules/${dep.depName}`;\n }\n\n dep.lockedVersion = semver.valid(\n lockFileCache[npmLock].lockedVersions?.[lockedDepName],\n )!;\n }\n } else if (pnpmLockFile) {\n logger.debug('Found pnpm lock-file');\n lockFiles.push(pnpmLockFile);\n if (!lockFileCache[pnpmLockFile]) {\n logger.trace(`Retrieving/parsing ${pnpmLockFile}`);\n lockFileCache[pnpmLockFile] = await getPnpmLock(pnpmLockFile);\n }\n\n const packageDir = upath.dirname(packageFile.packageFile);\n const pnpmRootDir = upath.dirname(pnpmLockFile);\n const relativeDir = upath.relative(pnpmRootDir, packageDir) || '.';\n\n for (const dep of packageFile.deps) {\n const { depName, depType } = dep;\n\n const catalogName = pnpmCatalogDepTypeRe.exec(depType!)?.groups\n ?.version;\n\n if (catalogName) {\n const lockedVersion = semver.valid(\n lockFileCache[pnpmLockFile].lockedVersionsWithCatalog?.[\n catalogName\n ]?.[depName!],\n );\n\n // v8 ignore else -- TODO: add test #40625\n if (isString(lockedVersion)) {\n dep.lockedVersion = lockedVersion;\n }\n } else {\n // TODO: types (#22198)\n const lockedVersion = semver.valid(\n lockFileCache[pnpmLockFile].lockedVersionsWithPath?.[relativeDir]?.[\n depType!\n ]?.[depName!],\n );\n\n // v8 ignore else -- TODO: add test #40625\n if (isString(lockedVersion)) {\n dep.lockedVersion = lockedVersion;\n }\n }\n }\n }\n if (lockFiles.length) {\n packageFile.lockFiles = lockFiles;\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"locked-versions.js","names":[],"sources":["../../../../../../lib/modules/manager/npm/extract/post/locked-versions.ts"],"sourcesContent":["import { isString } from '@sindresorhus/is';\nimport semver from 'semver';\nimport upath from 'upath';\nimport { logger } from '../../../../../logger/index.ts';\nimport { regEx } from '../../../../../util/regex.ts';\nimport type { PackageFile } from '../../../types.ts';\nimport type { NpmManagerData } from '../../types.ts';\nimport { getNpmLock } from '../npm.ts';\nimport { getPnpmLock } from '../pnpm.ts';\nimport type { LockFile } from '../types.ts';\nimport { getYarnLock, getYarnVersionFromLock } from '../yarn.ts';\n\nconst pnpmCatalogDepTypeRe = regEx(/pnpm\\.catalog\\.(?<version>.*)/);\n\nexport async function getLockedVersions(\n packageFiles: PackageFile<NpmManagerData>[],\n): Promise<void> {\n const lockFileCache: Record<string, LockFile> = {};\n logger.debug('Finding locked versions');\n for (const packageFile of packageFiles) {\n const { managerData = {} } = packageFile;\n const { yarnLock, npmLock, pnpmLockFile } = managerData;\n const lockFiles: string[] = [];\n if (yarnLock) {\n logger.trace('Found yarnLock');\n lockFiles.push(yarnLock);\n // v8 ignore else -- TODO: add test #40625\n if (!lockFileCache[yarnLock]) {\n logger.trace(`Retrieving/parsing ${yarnLock}`);\n lockFileCache[yarnLock] = await getYarnLock(yarnLock);\n }\n const { isYarn1 } = lockFileCache[yarnLock];\n let yarn: string | undefined;\n if (!isYarn1 && !packageFile.extractedConstraints?.yarn) {\n yarn = getYarnVersionFromLock(lockFileCache[yarnLock]);\n }\n if (yarn) {\n packageFile.extractedConstraints ??= {};\n packageFile.extractedConstraints.yarn = yarn;\n }\n for (const dep of packageFile.deps) {\n dep.lockedVersion =\n lockFileCache[yarnLock].lockedVersions?.[\n // TODO: types (#22198)\n `${dep.depName}@${dep.currentValue}`\n ];\n if (\n (dep.depType === 'engines' || dep.depType === 'packageManager') &&\n dep.depName === 'yarn' &&\n !isYarn1\n ) {\n dep.packageName = '@yarnpkg/cli-dist';\n }\n }\n } else if (npmLock) {\n logger.debug(`Found ${npmLock} for ${packageFile.packageFile}`);\n lockFiles.push(npmLock);\n if (!lockFileCache[npmLock]) {\n logger.trace(`Retrieving/parsing ${npmLock}`);\n const cache = await getNpmLock(npmLock);\n /* v8 ignore next -- needs test */\n if (!cache) {\n logger.warn({ npmLock }, 'Npm: unable to get lockfile');\n return;\n }\n lockFileCache[npmLock] = cache;\n }\n\n const { lockfileVersion } = lockFileCache[npmLock];\n let npm: string | undefined;\n if (lockfileVersion === 1) {\n if (packageFile.extractedConstraints?.npm) {\n // Add a <7 constraint if it's not already a fixed version\n if (\n semver.satisfies('6.14.18', packageFile.extractedConstraints.npm)\n ) {\n npm = `${packageFile.extractedConstraints.npm} <7`;\n }\n } else {\n npm = '<7';\n }\n } else if (lockfileVersion === 2) {\n if (packageFile.extractedConstraints?.npm) {\n // Add a <9 constraint if the latest 8.x is compatible\n if (\n semver.satisfies('8.19.3', packageFile.extractedConstraints.npm)\n ) {\n npm = `${packageFile.extractedConstraints.npm} <9`;\n }\n } else {\n npm = '<9';\n }\n } else if (lockfileVersion === 3) {\n if (!packageFile.extractedConstraints?.npm) {\n npm = '>=7';\n }\n } else {\n logger.warn(\n { lockfileVersion, npmLock },\n 'Found unsupported npm lockfile version',\n );\n return;\n }\n if (npm) {\n packageFile.extractedConstraints ??= {};\n packageFile.extractedConstraints.npm = npm;\n }\n\n const packageDir = upath.dirname(packageFile.packageFile);\n const npmRootDir = upath.dirname(npmLock);\n const relativeDir = upath.relative(npmRootDir, packageDir);\n\n for (const dep of packageFile.deps) {\n // Skip dependency types which are not locked in the lock file\n if (\n dep.depType === 'engines' ||\n dep.depType === 'packageManager' ||\n dep.depType === 'volta'\n ) {\n continue;\n }\n\n // TODO: types (#22198)\n let lockedDepName = dep.depName!;\n if (relativeDir && relativeDir !== '.') {\n lockedDepName = `${relativeDir}/node_modules/${dep.depName}`;\n }\n\n dep.lockedVersion = semver.valid(\n lockFileCache[npmLock].lockedVersions?.[lockedDepName],\n )!;\n }\n } else if (pnpmLockFile) {\n logger.debug('Found pnpm lock-file');\n lockFiles.push(pnpmLockFile);\n if (!lockFileCache[pnpmLockFile]) {\n logger.trace(`Retrieving/parsing ${pnpmLockFile}`);\n lockFileCache[pnpmLockFile] = await getPnpmLock(pnpmLockFile);\n }\n\n const packageDir = upath.dirname(packageFile.packageFile);\n const pnpmRootDir = upath.dirname(pnpmLockFile);\n const relativeDir = upath.relative(pnpmRootDir, packageDir) || '.';\n\n for (const dep of packageFile.deps) {\n const { depName, depType } = dep;\n\n const catalogName = pnpmCatalogDepTypeRe.exec(depType!)?.groups\n ?.version;\n\n if (catalogName) {\n const lockedVersion = semver.valid(\n lockFileCache[pnpmLockFile].lockedVersionsWithCatalog?.[\n catalogName\n ]?.[depName!],\n );\n\n // v8 ignore else -- TODO: add test #40625\n if (isString(lockedVersion)) {\n dep.lockedVersion = lockedVersion;\n }\n } else {\n // TODO: types (#22198)\n const lockedVersion = semver.valid(\n lockFileCache[pnpmLockFile].lockedVersionsWithPath?.[relativeDir]?.[\n depType!\n ]?.[depName!],\n );\n\n // v8 ignore else -- TODO: add test #40625\n if (isString(lockedVersion)) {\n dep.lockedVersion = lockedVersion;\n }\n }\n }\n }\n if (lockFiles.length) {\n packageFile.lockFiles = lockFiles;\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -9,11 +9,11 @@ import { ensureCacheDir, getSiblingFileName, readLocalFile, writeLocalFile } fro
|
|
|
9
9
|
import { getFile, getRepoStatus } from "../../../../util/git/index.js";
|
|
10
10
|
import { NpmDatasource } from "../../../datasource/npm/index.js";
|
|
11
11
|
import { artifactErrorMessageFromExecError } from "../../util.js";
|
|
12
|
-
import { PNPM_CACHE_BASE_DIR, YARN_CACHE_DIR, YARN_GLOBAL_DIR } from "../constants.js";
|
|
13
|
-
import { processHostRules } from "./rules.js";
|
|
14
12
|
import { composeLockFile, parseLockFile, withNpmrcHostRules } from "../utils.js";
|
|
15
13
|
import { getZeroInstallPaths } from "../extract/yarn.js";
|
|
14
|
+
import { processHostRules } from "./rules.js";
|
|
16
15
|
import { scm } from "../../../platform/scm.js";
|
|
16
|
+
import { PNPM_CACHE_BASE_DIR, YARN_CACHE_DIR, YARN_GLOBAL_DIR } from "../constants.js";
|
|
17
17
|
import { generateLockFile } from "./npm.js";
|
|
18
18
|
import { generateLockFile as generateLockFile$1 } from "./pnpm.js";
|
|
19
19
|
import { fuzzyMatchAdditionalYarnrcYml, generateLockFile as generateLockFile$2, isYarnUpdate } from "./yarn.js";
|
|
@@ -9,9 +9,9 @@ import { deleteLocalFile, localPathExists, readLocalFile, renameLocalFile } from
|
|
|
9
9
|
import { Result } from "../../../../util/result.js";
|
|
10
10
|
import { exec, getToolSettingsOptions } from "../../../../util/exec/index.js";
|
|
11
11
|
import { resolveToolConstraint } from "../../util.js";
|
|
12
|
-
import { getNodeToolConstraint } from "./node-version.js";
|
|
13
12
|
import { PackageLock } from "../schema.js";
|
|
14
13
|
import { composeLockFile, parseLockFile } from "../utils.js";
|
|
14
|
+
import { getNodeToolConstraint } from "./node-version.js";
|
|
15
15
|
import { getNodeOptions, getPackageManagerVersion, lazyLoadPackageJson } from "./utils.js";
|
|
16
16
|
import { isNonEmptyString, isNumber, isString } from "@sindresorhus/is";
|
|
17
17
|
import { DateTime } from "luxon";
|
|
@@ -10,9 +10,9 @@ import { localPathIsFile, readLocalFile, writeLocalFile } from "../../../../util
|
|
|
10
10
|
import { exec, getToolSettingsOptions } from "../../../../util/exec/index.js";
|
|
11
11
|
import { NpmDatasource } from "../../../datasource/npm/index.js";
|
|
12
12
|
import { resolveToolConstraint } from "../../util.js";
|
|
13
|
+
import { getYarnLock, getYarnVersionFromLock } from "../extract/yarn.js";
|
|
13
14
|
import { getNodeToolConstraint } from "./node-version.js";
|
|
14
15
|
import { getNodeOptions, getPackageManagerVersion, lazyLoadPackageJson } from "./utils.js";
|
|
15
|
-
import { getYarnLock, getYarnVersionFromLock } from "../extract/yarn.js";
|
|
16
16
|
import { isString } from "@sindresorhus/is";
|
|
17
17
|
import { quote } from "shlex";
|
|
18
18
|
import upath from "upath";
|
package/package.json
CHANGED
package/renovate-schema.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$id": "https://docs.renovatebot.com/renovate-schema.json",
|
|
3
|
-
"title": "JSON schema for Renovate 44.124.
|
|
3
|
+
"title": "JSON schema for Renovate 44.124.2 config files (https://renovatebot.com/)",
|
|
4
4
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
5
|
-
"x-renovate-version": "44.124.
|
|
5
|
+
"x-renovate-version": "44.124.2",
|
|
6
6
|
"allowComments": true,
|
|
7
7
|
"type": "object",
|
|
8
8
|
"definitions": {
|