renovate 43.109.5 → 43.110.0
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/fingerprint.generated.js +1 -1
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/npm/artifacts.js +1 -0
- package/dist/modules/manager/npm/artifacts.js.map +1 -1
- package/dist/modules/manager/npm/dep-types.js +7 -1
- package/dist/modules/manager/npm/dep-types.js.map +1 -1
- package/dist/modules/manager/npm/detect.js +1 -0
- package/dist/modules/manager/npm/detect.js.map +1 -1
- package/dist/modules/manager/npm/extract/common/package-file.js +2 -1
- package/dist/modules/manager/npm/extract/common/package-file.js.map +1 -1
- package/dist/modules/manager/npm/extract/index.js +36 -24
- package/dist/modules/manager/npm/extract/index.js.map +1 -1
- package/dist/modules/manager/npm/extract/pnpm.js +16 -14
- package/dist/modules/manager/npm/extract/pnpm.js.map +1 -1
- package/dist/modules/manager/npm/extract/post/locked-versions.js +3 -0
- package/dist/modules/manager/npm/extract/post/locked-versions.js.map +1 -1
- package/dist/modules/manager/npm/extract/yarn.js +2 -1
- package/dist/modules/manager/npm/extract/yarn.js.map +1 -1
- package/dist/modules/manager/npm/index.js +1 -1
- package/dist/modules/manager/npm/npmrc.js +1 -0
- package/dist/modules/manager/npm/npmrc.js.map +1 -1
- package/dist/modules/manager/npm/post-update/index.js +13 -7
- package/dist/modules/manager/npm/post-update/index.js.map +1 -1
- package/dist/modules/manager/npm/post-update/node-version.js +2 -0
- package/dist/modules/manager/npm/post-update/node-version.js.map +1 -1
- package/dist/modules/manager/npm/post-update/npm.js +7 -1
- package/dist/modules/manager/npm/post-update/npm.js.map +1 -1
- package/dist/modules/manager/npm/post-update/pnpm.js +2 -1
- package/dist/modules/manager/npm/post-update/pnpm.js.map +1 -1
- package/dist/modules/manager/npm/post-update/rules.js +1 -0
- package/dist/modules/manager/npm/post-update/rules.js.map +1 -1
- package/dist/modules/manager/npm/post-update/utils.js +1 -0
- package/dist/modules/manager/npm/post-update/utils.js.map +1 -1
- package/dist/modules/manager/npm/post-update/yarn.js +7 -0
- package/dist/modules/manager/npm/post-update/yarn.js.map +1 -1
- package/dist/modules/manager/npm/schema.js +6 -5
- package/dist/modules/manager/npm/schema.js.map +1 -1
- package/dist/modules/manager/npm/update/dependency/index.js +11 -3
- package/dist/modules/manager/npm/update/dependency/index.js.map +1 -1
- package/dist/modules/manager/npm/update/dependency/pnpm.js +16 -14
- package/dist/modules/manager/npm/update/dependency/pnpm.js.map +1 -1
- package/dist/modules/manager/npm/update/dependency/yarn.js +1 -0
- package/dist/modules/manager/npm/update/dependency/yarn.js.map +1 -1
- package/dist/modules/manager/npm/update/locked-dependency/common/parent-version.js +1 -1
- package/dist/modules/manager/npm/update/locked-dependency/common/parent-version.js.map +1 -1
- package/dist/modules/manager/npm/update/locked-dependency/package-lock/dep-constraints.js +1 -0
- package/dist/modules/manager/npm/update/locked-dependency/package-lock/dep-constraints.js.map +1 -1
- package/dist/modules/manager/npm/update/locked-dependency/package-lock/index.js +5 -2
- package/dist/modules/manager/npm/update/locked-dependency/package-lock/index.js.map +1 -1
- package/dist/modules/manager/npm/update/locked-dependency/yarn-lock/get-locked.js +2 -2
- package/dist/modules/manager/npm/update/locked-dependency/yarn-lock/get-locked.js.map +1 -1
- package/dist/modules/manager/npm/update/locked-dependency/yarn-lock/index.js +1 -1
- package/dist/modules/manager/npm/update/locked-dependency/yarn-lock/index.js.map +1 -1
- package/dist/modules/manager/npm/utils.js +3 -5
- package/dist/modules/manager/npm/utils.js.map +1 -1
- package/package.json +1 -1
- package/renovate-schema.json +2 -2
|
@@ -73,7 +73,7 @@ hashMap.set("mise", "6192273014bff02a3e0c68aa8a52c3563398adb4c7d3f7141c25f8736f4
|
|
|
73
73
|
hashMap.set("mix", "1116e1adf1c18c866f0a9e6fa065c4fb9da055d8d150e625344899bb94095481");
|
|
74
74
|
hashMap.set("nix", "f3ffec2f14e7261de8068895b91392e992dcef208fbaf52110d6862e4712c031");
|
|
75
75
|
hashMap.set("nodenv", "ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8");
|
|
76
|
-
hashMap.set("npm", "
|
|
76
|
+
hashMap.set("npm", "eaf9fe4981de8f7504227f3be88445f60f87ba74f9b9c7e54284bc2bb41320b3");
|
|
77
77
|
hashMap.set("nuget", "42175b1906e8e91ae0731a13d92d0df065108063665f8a36150aeae73aafdc78");
|
|
78
78
|
hashMap.set("nvm", "3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322");
|
|
79
79
|
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','1fbc76f78daa14a8c9ab1142e9d1e05c746c0419a9f1455e4279f476590d0c04');\nhashMap.set('ansible-galaxy','8226d47128f2018825d4d6f84794e3183eb79c706045fa7e88491edd5e64106f');\nhashMap.set('ant','7d6414a195345c60a25a9d92c4b17c0b6df90be086fc5559150e2e5496976890');\nhashMap.set('argocd','5d35b1992e53130bf83b0e59a0f90ccd3a78919974c69044f306dc5d162f48ce');\nhashMap.set('asdf','1f6fcf620e9c6cd35991380cb6eafb94ec60cd77cbd13335ebe3a1d9727416c9');\nhashMap.set('azure-pipelines','4f635b0ecd388ee266d992e8281fd40e3db2f5867d86fc1cbce72dc33a66e796');\nhashMap.set('batect','fad98996bea8626525ab925f83a6ae0ce9262c53770e7aa7cb448a1e0f1ddf21');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','c6e0ad88ea468664c3a33263baf7452d83d2d37ff09ba920e18f64ee81fd0acb');\nhashMap.set('bazel-module','ff071fcf8b53036956627d2a430ccdf256e30bee4d7e80c329379879d836a931');\nhashMap.set('bazelisk','b6ec532dfa7c8f82ad4084df864ac6276e87c27285369323902afc146d3537ac');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','09eb044219d74331fea135f50121b7d4d146333eb97e4ccbfa9ddf0eb4012963');\nhashMap.set('bitrise','afdb46fe37fc0307943089e18b6724065394805e628b4b6c4430a6068c494030');\nhashMap.set('buildkite','a93effb1f1c5d65b3277c3b4709924eacde282e8efd028a8e3d8c1ce3ef69407');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','1322232bf1d0c4fa796e31a00488453bdcd00d4958431d9e424c1635e60a99bd');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','6d7e9d2018ac03e15f19e8b40ef70dd87d509d5affca24bc464d085899880a25');\nhashMap.set('cake','288c3c36a50371b26957fa71992cc335228d53563c75597b36919ac7286e96eb');\nhashMap.set('cargo','308d7ab4c6d24027b050bf659dfab0e510d9a22f8134695a7c68214908ee4634');\nhashMap.set('cdnurl','d3edf6cdc38e92eb43ff5a2b4e8df6a6a13154cf83244725c39e28d7e6ea9177');\nhashMap.set('circleci','135937d4720718304adb0ba998516f8ce38c3220ccd18b00b8c70c62b45df4da');\nhashMap.set('cloudbuild','8c0c739f7e4082bbfe8e3fdffebaf43e26f70a1314d95b306e9b93e4f4297886');\nhashMap.set('cocoapods','b6ac3b4a6b8a5b32daed37bf695fe177cdb1b4a94ae7f7fb2f4c4c096c0a004c');\nhashMap.set('composer','cdb6895574020cec402e0b878e4078b62f1acfd0392a861cbb523036634f6383');\nhashMap.set('conan','aecc3917d77146db4e57dd12944be1beff860e90b7ebdd2d8fbc449fc1a06574');\nhashMap.set('copier','faa3b79991256a6fc0957fdcd530a1bc8aee65913d5aff2b1b4d226dcd44d008');\nhashMap.set('cpanfile','6a1d67d9c8751123deaf0c7f3ac38a07024e960c140f8228fcbcb93954fdca01');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deps-edn','c87dd5e88587147ad1a78f047b814f3c4aa60d6de30d0c49d849391eeaf1b64c');\nhashMap.set('devbox','bcf5334e8a21190baaa25436acf2f17fbf095504262a4e9ee7c62ffb644eb716');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','5441af5b5abf8d347e46002d47f02f85743401bda28232f49fb7b3bbb772a4fb');\nhashMap.set('dockerfile','322b95f7e55dd78d7fe71306a6f649479eca61c60d75bb10b23604a230dbdd08');\nhashMap.set('droneci','237c8de87b9bf653fb943b56e84e99c45f6d86ae27d86e599b3f3f99c35ba8ee');\nhashMap.set('fleet','d73d5d35f10df0599a561d9c8d25f3935350407d0e3bd3a1d1545295f278912e');\nhashMap.set('flux','427e0c1a5b1d8337503a9a568a76532fbde0bab8b355fa8f47312de50eadf2f6');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','fbbf1c7b7b6f4166fa3beee96a3283d007b388e9ecb6a14f76123c8ab8c78071');\nhashMap.set('github-actions','99c975bf92692f8ae50306146589419b7f75a9c2020a1fa600774b960f3a8bfb');\nhashMap.set('gitlabci','0dec44dd398bfc5b3c19d0929bea2fef7f386c94acfd1b1d7bc2a31d81d96fd6');\nhashMap.set('gitlabci-include','354cfc4ea327c6d5cd5bee1f17763832efc7f5402e9fd22c579239fccb9c6dab');\nhashMap.set('glasskube','253d6db30bdec75ed5ab5d26f31d69bc07813ba10089a28da12c6a29eff4ec70');\nhashMap.set('gleam','b717a48c525ad6b1d434c6a9db828ddebbb85e94519e89ddc4040878e3600e84');\nhashMap.set('gomod','82e877b22c0dd0217368760bb5d38430657fff63d07c289793a866f0845d2976');\nhashMap.set('gradle','f430d8d768b56889ad1e5a69965841e85cc700e364d15db7bce680e8a5d6f821');\nhashMap.set('gradle-wrapper','90d2ecb9d0b113f8e946d4ea221c040f17f91af846e1ff4f9fc1514ad4324b74');\nhashMap.set('haskell-cabal','d796ec6859e63ab4f1b7030c4016071202c3a44c7c11d4a9131d7e2ba19b396d');\nhashMap.set('helm-requirements','4d90e5e18a380876ad48e21e1ad88ea62e25d973a1ddaa3763447fc0a9f9915b');\nhashMap.set('helm-values','b5c52c6a27d805557418c585c5d3030c95ee641d53057021f3fe060f81b6e1af');\nhashMap.set('helmfile','e5783484b81247279563da3c835afe4002edfc412e13fb91877818ca44ae65f2');\nhashMap.set('helmsman','ef9680c612f702c7f07aea9b6e5d811e91214dcfa5755c9f3803e9528090935e');\nhashMap.set('helmv3','7724bf6cc3ff4afec1809899f619a332f4350049b9578b5c4634514b4448cf2b');\nhashMap.set('hermit','672c328e4baea3a1ccd2cde2364db01c8033a8c077bf63a5b914fc20ee1de838');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','56ef90301143874355fd2ed25dff7c646875f701f97422d02e01d45608a88f31');\nhashMap.set('html','67c5f3c5c58e96f5dd257ba5987d900cf7fef81d667c3640e96c847b37de35a8');\nhashMap.set('jenkins','268ebfc8a1caf3edeb2192c2b1b2fa4bf18a78a3e731ba20a6c104940a5539f3');\nhashMap.set('jsonnet-bundler','4b73c32ddc3fe45d9777106d45b116777a2960e6e631256a6553060e602f893c');\nhashMap.set('kotlin-script','99ef296792a0ca575ed31d3defb514b05a58083dc01c52ea0890c69d867ba1dd');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','1e44d6ef8622252dac6d9649fb04badd12d4827eb2a55f74792aa9de2b915775');\nhashMap.set('leiningen','133fca2c3423f53f2ccc22518153ddbcafbf0f4812376c77e952eb3d24d81f85');\nhashMap.set('maven','fd6bfc21be851ed076eabea1a91a89b25eb82129734c7cb0c2e684385cf1ea69');\nhashMap.set('maven-wrapper','9a868d1328f911eb72f9e65a64d46c86ae347aab0153d1cf4e9a62ad9e0d6cb0');\nhashMap.set('meteor','4a93a326b27bedfe52118e27e06f39fecd7c55bd4cd7fccec4cb120cac14cec4');\nhashMap.set('mint','b816a49c8525716454d0a2bc9127916d5b27e5cca7b2aa2030312f218942af3e');\nhashMap.set('mise','6192273014bff02a3e0c68aa8a52c3563398adb4c7d3f7141c25f8736f488748');\nhashMap.set('mix','1116e1adf1c18c866f0a9e6fa065c4fb9da055d8d150e625344899bb94095481');\nhashMap.set('nix','f3ffec2f14e7261de8068895b91392e992dcef208fbaf52110d6862e4712c031');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','36ca540aae66652d99f08b2c8bc91d190e8e74323626f5b34832a4e7e5094f02');\nhashMap.set('nuget','42175b1906e8e91ae0731a13d92d0df065108063665f8a36150aeae73aafdc78');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','32233a1a8a2725699d7448ba438e3d0b78141f7799cd2b588de278d41e26ed10');\nhashMap.set('pep621','f503497a4adef31b29572176e9a69d52fa9b0bfe3477b6e228c906aeb4861de5');\nhashMap.set('pep723','b96683163de63ed93207ec0538066705b1e58a1cd5b8bd11c63fc28b26bddba1');\nhashMap.set('pip-compile','89152ad6c89f278395f32d289dc3890823c233366547d228e97dd1319aa144b5');\nhashMap.set('pip_requirements','d5c474c524bc7adc1aae065da0531bd22d9f7f52523b018f2461f6c29e12fdf3');\nhashMap.set('pip_setup','0175fe550c19d9bd31c978bd83fdc088cb40fcacd5d6751f640164274ae64e61');\nhashMap.set('pipenv','50f5a54ed714fd3d738c1aa9a353cf3aab767899acdcb763088d4bd04f3a737b');\nhashMap.set('pixi','b17af6eaa33e7babcc52cfc9a617c7801c0efb1125bbd6d0d4e9f6fe33afd353');\nhashMap.set('poetry','7f227b8b912b405df7735e9dc7c178f03021844f0c027d4b321c023c330c390a');\nhashMap.set('pre-commit','a6a6e847fdb0f56650e66ef7d69e68de752b390913f79ac31d1a7ec5955d03da');\nhashMap.set('pub','0fbad9f77579fcec3a623c6feab56e71934c67a79bb8f4f0f847452051d2a0ba');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','e355e13e104351a8b3516a8e272fc5f7e625c9f39b0c492ba27283a36227c2d4');\nhashMap.set('renovate-config-presets','a394fe55f8b6ba356f29f76efd9f0d34b56baceb111e6d92f95b29b5ca50ac67');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('sbt','61f9323c91c45227da71d43120fa1eddc41685502be017118975f77b44fb1b8e');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','7dea08c5708625e753bd56918bc214df7fb4d8543a26e936926a21ab43b5f785');\nhashMap.set('sveltos','167a5cc79098803be3b815a28cc40ef3361c455751e1d6a7a99ba91bfce26709');\nhashMap.set('swift','79ec9a6a2a8bb4853bb78bbb3a2a6e64e3b32b0ddeb312385abb3a14366ad505');\nhashMap.set('tekton','4e35c75bba4abc9c3cf49c55da6c19db4f4e9181d1fd9583288ab55ef7c944fd');\nhashMap.set('terraform','5bd62ce12c23896b8ecb2385a60a3cb9eb72badf10f9984bfed38f50f9262266');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','b8474c65383a702602eee432cc1434f9a49a1ef886d1213de92d7a84fb98b9cd');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','4a975f0cc1aa22cd258aa835de3dc98d7a5c0d1cee0a1092324338968e08a827');\nhashMap.set('travis','bb482a0195cd009ec3896a6227bb95617f5c84bedb518c7d971e50c62235d9ca');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','4627230d3b7698c41aac192d57b65b091c860c8f858c89d6af4b06ed6a32fae6');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('jsonata','3b5f465b586993f92c8490e70885e7eecce9b6556bcc376dd9c11db8ee9e6960');\nhashMap.set('regex','7b643b49e498465cf91b25b8b840bb1fec8c8a3a59bfa8f97a39c976675325a0');"],"mappings":";AAAA,MAAa,0BAAU,IAAI,KAAqB;AAEhD,QAAQ,IAAI,WAAU,mEAAmE;AACzF,QAAQ,IAAI,kBAAiB,mEAAmE;AAChG,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,QAAO,mEAAmE;AACtF,QAAQ,IAAI,mBAAkB,mEAAmE;AACjG,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,kBAAiB,mEAAmE;AAChG,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,gBAAe,mEAAmE;AAC9F,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,uBAAsB,mEAAmE;AACrG,QAAQ,IAAI,WAAU,mEAAmE;AACzF,QAAQ,IAAI,aAAY,mEAAmE;AAC3F,QAAQ,IAAI,cAAa,mEAAmE;AAC5F,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,eAAc,mEAAmE;AAC7F,QAAQ,IAAI,WAAU,mEAAmE;AACzF,QAAQ,IAAI,QAAO,mEAAmE;AACtF,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,cAAa,mEAAmE;AAC5F,QAAQ,IAAI,aAAY,mEAAmE;AAC3F,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,cAAa,mEAAmE;AAC5F,QAAQ,IAAI,QAAO,mEAAmE;AACtF,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,gBAAe,mEAAmE;AAC9F,QAAQ,IAAI,kBAAiB,mEAAmE;AAChG,QAAQ,IAAI,cAAa,mEAAmE;AAC5F,QAAQ,IAAI,WAAU,mEAAmE;AACzF,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,QAAO,mEAAmE;AACtF,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,kBAAiB,mEAAmE;AAChG,QAAQ,IAAI,kBAAiB,mEAAmE;AAChG,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,oBAAmB,mEAAmE;AAClG,QAAQ,IAAI,aAAY,mEAAmE;AAC3F,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,kBAAiB,mEAAmE;AAChG,QAAQ,IAAI,iBAAgB,mEAAmE;AAC/F,QAAQ,IAAI,qBAAoB,mEAAmE;AACnG,QAAQ,IAAI,eAAc,mEAAmE;AAC7F,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,0BAAyB,mEAAmE;AACxG,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,QAAO,mEAAmE;AACtF,QAAQ,IAAI,WAAU,mEAAmE;AACzF,QAAQ,IAAI,mBAAkB,mEAAmE;AACjG,QAAQ,IAAI,iBAAgB,mEAAmE;AAC/F,QAAQ,IAAI,cAAa,mEAAmE;AAC5F,QAAQ,IAAI,aAAY,mEAAmE;AAC3F,QAAQ,IAAI,aAAY,mEAAmE;AAC3F,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,iBAAgB,mEAAmE;AAC/F,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,QAAO,mEAAmE;AACtF,QAAQ,IAAI,QAAO,mEAAmE;AACtF,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,QAAO,mEAAmE;AACtF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,eAAc,mEAAmE;AAC7F,QAAQ,IAAI,oBAAmB,mEAAmE;AAClG,QAAQ,IAAI,aAAY,mEAAmE;AAC3F,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,QAAO,mEAAmE;AACtF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,cAAa,mEAAmE;AAC5F,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,WAAU,mEAAmE;AACzF,QAAQ,IAAI,2BAA0B,mEAAmE;AACzG,QAAQ,IAAI,gBAAe,mEAAmE;AAC9F,QAAQ,IAAI,mBAAkB,mEAAmE;AACjG,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,aAAY,mEAAmE;AAC3F,QAAQ,IAAI,WAAU,mEAAmE;AACzF,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,aAAY,mEAAmE;AAC3F,QAAQ,IAAI,qBAAoB,mEAAmE;AACnG,QAAQ,IAAI,cAAa,mEAAmE;AAC5F,QAAQ,IAAI,sBAAqB,mEAAmE;AACpG,QAAQ,IAAI,iBAAgB,mEAAmE;AAC/F,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,WAAU,mEAAmE;AACzF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,cAAa,mEAAmE;AAC5F,QAAQ,IAAI,WAAU,mEAAmE;AACzF,QAAQ,IAAI,SAAQ,mEAAmE"}
|
|
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','1fbc76f78daa14a8c9ab1142e9d1e05c746c0419a9f1455e4279f476590d0c04');\nhashMap.set('ansible-galaxy','8226d47128f2018825d4d6f84794e3183eb79c706045fa7e88491edd5e64106f');\nhashMap.set('ant','7d6414a195345c60a25a9d92c4b17c0b6df90be086fc5559150e2e5496976890');\nhashMap.set('argocd','5d35b1992e53130bf83b0e59a0f90ccd3a78919974c69044f306dc5d162f48ce');\nhashMap.set('asdf','1f6fcf620e9c6cd35991380cb6eafb94ec60cd77cbd13335ebe3a1d9727416c9');\nhashMap.set('azure-pipelines','4f635b0ecd388ee266d992e8281fd40e3db2f5867d86fc1cbce72dc33a66e796');\nhashMap.set('batect','fad98996bea8626525ab925f83a6ae0ce9262c53770e7aa7cb448a1e0f1ddf21');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','c6e0ad88ea468664c3a33263baf7452d83d2d37ff09ba920e18f64ee81fd0acb');\nhashMap.set('bazel-module','ff071fcf8b53036956627d2a430ccdf256e30bee4d7e80c329379879d836a931');\nhashMap.set('bazelisk','b6ec532dfa7c8f82ad4084df864ac6276e87c27285369323902afc146d3537ac');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','09eb044219d74331fea135f50121b7d4d146333eb97e4ccbfa9ddf0eb4012963');\nhashMap.set('bitrise','afdb46fe37fc0307943089e18b6724065394805e628b4b6c4430a6068c494030');\nhashMap.set('buildkite','a93effb1f1c5d65b3277c3b4709924eacde282e8efd028a8e3d8c1ce3ef69407');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','1322232bf1d0c4fa796e31a00488453bdcd00d4958431d9e424c1635e60a99bd');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','6d7e9d2018ac03e15f19e8b40ef70dd87d509d5affca24bc464d085899880a25');\nhashMap.set('cake','288c3c36a50371b26957fa71992cc335228d53563c75597b36919ac7286e96eb');\nhashMap.set('cargo','308d7ab4c6d24027b050bf659dfab0e510d9a22f8134695a7c68214908ee4634');\nhashMap.set('cdnurl','d3edf6cdc38e92eb43ff5a2b4e8df6a6a13154cf83244725c39e28d7e6ea9177');\nhashMap.set('circleci','135937d4720718304adb0ba998516f8ce38c3220ccd18b00b8c70c62b45df4da');\nhashMap.set('cloudbuild','8c0c739f7e4082bbfe8e3fdffebaf43e26f70a1314d95b306e9b93e4f4297886');\nhashMap.set('cocoapods','b6ac3b4a6b8a5b32daed37bf695fe177cdb1b4a94ae7f7fb2f4c4c096c0a004c');\nhashMap.set('composer','cdb6895574020cec402e0b878e4078b62f1acfd0392a861cbb523036634f6383');\nhashMap.set('conan','aecc3917d77146db4e57dd12944be1beff860e90b7ebdd2d8fbc449fc1a06574');\nhashMap.set('copier','faa3b79991256a6fc0957fdcd530a1bc8aee65913d5aff2b1b4d226dcd44d008');\nhashMap.set('cpanfile','6a1d67d9c8751123deaf0c7f3ac38a07024e960c140f8228fcbcb93954fdca01');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deps-edn','c87dd5e88587147ad1a78f047b814f3c4aa60d6de30d0c49d849391eeaf1b64c');\nhashMap.set('devbox','bcf5334e8a21190baaa25436acf2f17fbf095504262a4e9ee7c62ffb644eb716');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','5441af5b5abf8d347e46002d47f02f85743401bda28232f49fb7b3bbb772a4fb');\nhashMap.set('dockerfile','322b95f7e55dd78d7fe71306a6f649479eca61c60d75bb10b23604a230dbdd08');\nhashMap.set('droneci','237c8de87b9bf653fb943b56e84e99c45f6d86ae27d86e599b3f3f99c35ba8ee');\nhashMap.set('fleet','d73d5d35f10df0599a561d9c8d25f3935350407d0e3bd3a1d1545295f278912e');\nhashMap.set('flux','427e0c1a5b1d8337503a9a568a76532fbde0bab8b355fa8f47312de50eadf2f6');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','fbbf1c7b7b6f4166fa3beee96a3283d007b388e9ecb6a14f76123c8ab8c78071');\nhashMap.set('github-actions','99c975bf92692f8ae50306146589419b7f75a9c2020a1fa600774b960f3a8bfb');\nhashMap.set('gitlabci','0dec44dd398bfc5b3c19d0929bea2fef7f386c94acfd1b1d7bc2a31d81d96fd6');\nhashMap.set('gitlabci-include','354cfc4ea327c6d5cd5bee1f17763832efc7f5402e9fd22c579239fccb9c6dab');\nhashMap.set('glasskube','253d6db30bdec75ed5ab5d26f31d69bc07813ba10089a28da12c6a29eff4ec70');\nhashMap.set('gleam','b717a48c525ad6b1d434c6a9db828ddebbb85e94519e89ddc4040878e3600e84');\nhashMap.set('gomod','82e877b22c0dd0217368760bb5d38430657fff63d07c289793a866f0845d2976');\nhashMap.set('gradle','f430d8d768b56889ad1e5a69965841e85cc700e364d15db7bce680e8a5d6f821');\nhashMap.set('gradle-wrapper','90d2ecb9d0b113f8e946d4ea221c040f17f91af846e1ff4f9fc1514ad4324b74');\nhashMap.set('haskell-cabal','d796ec6859e63ab4f1b7030c4016071202c3a44c7c11d4a9131d7e2ba19b396d');\nhashMap.set('helm-requirements','4d90e5e18a380876ad48e21e1ad88ea62e25d973a1ddaa3763447fc0a9f9915b');\nhashMap.set('helm-values','b5c52c6a27d805557418c585c5d3030c95ee641d53057021f3fe060f81b6e1af');\nhashMap.set('helmfile','e5783484b81247279563da3c835afe4002edfc412e13fb91877818ca44ae65f2');\nhashMap.set('helmsman','ef9680c612f702c7f07aea9b6e5d811e91214dcfa5755c9f3803e9528090935e');\nhashMap.set('helmv3','7724bf6cc3ff4afec1809899f619a332f4350049b9578b5c4634514b4448cf2b');\nhashMap.set('hermit','672c328e4baea3a1ccd2cde2364db01c8033a8c077bf63a5b914fc20ee1de838');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','56ef90301143874355fd2ed25dff7c646875f701f97422d02e01d45608a88f31');\nhashMap.set('html','67c5f3c5c58e96f5dd257ba5987d900cf7fef81d667c3640e96c847b37de35a8');\nhashMap.set('jenkins','268ebfc8a1caf3edeb2192c2b1b2fa4bf18a78a3e731ba20a6c104940a5539f3');\nhashMap.set('jsonnet-bundler','4b73c32ddc3fe45d9777106d45b116777a2960e6e631256a6553060e602f893c');\nhashMap.set('kotlin-script','99ef296792a0ca575ed31d3defb514b05a58083dc01c52ea0890c69d867ba1dd');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','1e44d6ef8622252dac6d9649fb04badd12d4827eb2a55f74792aa9de2b915775');\nhashMap.set('leiningen','133fca2c3423f53f2ccc22518153ddbcafbf0f4812376c77e952eb3d24d81f85');\nhashMap.set('maven','fd6bfc21be851ed076eabea1a91a89b25eb82129734c7cb0c2e684385cf1ea69');\nhashMap.set('maven-wrapper','9a868d1328f911eb72f9e65a64d46c86ae347aab0153d1cf4e9a62ad9e0d6cb0');\nhashMap.set('meteor','4a93a326b27bedfe52118e27e06f39fecd7c55bd4cd7fccec4cb120cac14cec4');\nhashMap.set('mint','b816a49c8525716454d0a2bc9127916d5b27e5cca7b2aa2030312f218942af3e');\nhashMap.set('mise','6192273014bff02a3e0c68aa8a52c3563398adb4c7d3f7141c25f8736f488748');\nhashMap.set('mix','1116e1adf1c18c866f0a9e6fa065c4fb9da055d8d150e625344899bb94095481');\nhashMap.set('nix','f3ffec2f14e7261de8068895b91392e992dcef208fbaf52110d6862e4712c031');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','eaf9fe4981de8f7504227f3be88445f60f87ba74f9b9c7e54284bc2bb41320b3');\nhashMap.set('nuget','42175b1906e8e91ae0731a13d92d0df065108063665f8a36150aeae73aafdc78');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','32233a1a8a2725699d7448ba438e3d0b78141f7799cd2b588de278d41e26ed10');\nhashMap.set('pep621','f503497a4adef31b29572176e9a69d52fa9b0bfe3477b6e228c906aeb4861de5');\nhashMap.set('pep723','b96683163de63ed93207ec0538066705b1e58a1cd5b8bd11c63fc28b26bddba1');\nhashMap.set('pip-compile','89152ad6c89f278395f32d289dc3890823c233366547d228e97dd1319aa144b5');\nhashMap.set('pip_requirements','d5c474c524bc7adc1aae065da0531bd22d9f7f52523b018f2461f6c29e12fdf3');\nhashMap.set('pip_setup','0175fe550c19d9bd31c978bd83fdc088cb40fcacd5d6751f640164274ae64e61');\nhashMap.set('pipenv','50f5a54ed714fd3d738c1aa9a353cf3aab767899acdcb763088d4bd04f3a737b');\nhashMap.set('pixi','b17af6eaa33e7babcc52cfc9a617c7801c0efb1125bbd6d0d4e9f6fe33afd353');\nhashMap.set('poetry','7f227b8b912b405df7735e9dc7c178f03021844f0c027d4b321c023c330c390a');\nhashMap.set('pre-commit','a6a6e847fdb0f56650e66ef7d69e68de752b390913f79ac31d1a7ec5955d03da');\nhashMap.set('pub','0fbad9f77579fcec3a623c6feab56e71934c67a79bb8f4f0f847452051d2a0ba');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','e355e13e104351a8b3516a8e272fc5f7e625c9f39b0c492ba27283a36227c2d4');\nhashMap.set('renovate-config-presets','a394fe55f8b6ba356f29f76efd9f0d34b56baceb111e6d92f95b29b5ca50ac67');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('sbt','61f9323c91c45227da71d43120fa1eddc41685502be017118975f77b44fb1b8e');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','7dea08c5708625e753bd56918bc214df7fb4d8543a26e936926a21ab43b5f785');\nhashMap.set('sveltos','167a5cc79098803be3b815a28cc40ef3361c455751e1d6a7a99ba91bfce26709');\nhashMap.set('swift','79ec9a6a2a8bb4853bb78bbb3a2a6e64e3b32b0ddeb312385abb3a14366ad505');\nhashMap.set('tekton','4e35c75bba4abc9c3cf49c55da6c19db4f4e9181d1fd9583288ab55ef7c944fd');\nhashMap.set('terraform','5bd62ce12c23896b8ecb2385a60a3cb9eb72badf10f9984bfed38f50f9262266');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','b8474c65383a702602eee432cc1434f9a49a1ef886d1213de92d7a84fb98b9cd');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','4a975f0cc1aa22cd258aa835de3dc98d7a5c0d1cee0a1092324338968e08a827');\nhashMap.set('travis','bb482a0195cd009ec3896a6227bb95617f5c84bedb518c7d971e50c62235d9ca');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','4627230d3b7698c41aac192d57b65b091c860c8f858c89d6af4b06ed6a32fae6');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('jsonata','3b5f465b586993f92c8490e70885e7eecce9b6556bcc376dd9c11db8ee9e6960');\nhashMap.set('regex','7b643b49e498465cf91b25b8b840bb1fec8c8a3a59bfa8f97a39c976675325a0');"],"mappings":";AAAA,MAAa,0BAAU,IAAI,KAAqB;AAEhD,QAAQ,IAAI,WAAU,mEAAmE;AACzF,QAAQ,IAAI,kBAAiB,mEAAmE;AAChG,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,QAAO,mEAAmE;AACtF,QAAQ,IAAI,mBAAkB,mEAAmE;AACjG,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,kBAAiB,mEAAmE;AAChG,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,gBAAe,mEAAmE;AAC9F,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,uBAAsB,mEAAmE;AACrG,QAAQ,IAAI,WAAU,mEAAmE;AACzF,QAAQ,IAAI,aAAY,mEAAmE;AAC3F,QAAQ,IAAI,cAAa,mEAAmE;AAC5F,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,eAAc,mEAAmE;AAC7F,QAAQ,IAAI,WAAU,mEAAmE;AACzF,QAAQ,IAAI,QAAO,mEAAmE;AACtF,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,cAAa,mEAAmE;AAC5F,QAAQ,IAAI,aAAY,mEAAmE;AAC3F,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,cAAa,mEAAmE;AAC5F,QAAQ,IAAI,QAAO,mEAAmE;AACtF,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,gBAAe,mEAAmE;AAC9F,QAAQ,IAAI,kBAAiB,mEAAmE;AAChG,QAAQ,IAAI,cAAa,mEAAmE;AAC5F,QAAQ,IAAI,WAAU,mEAAmE;AACzF,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,QAAO,mEAAmE;AACtF,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,kBAAiB,mEAAmE;AAChG,QAAQ,IAAI,kBAAiB,mEAAmE;AAChG,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,oBAAmB,mEAAmE;AAClG,QAAQ,IAAI,aAAY,mEAAmE;AAC3F,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,kBAAiB,mEAAmE;AAChG,QAAQ,IAAI,iBAAgB,mEAAmE;AAC/F,QAAQ,IAAI,qBAAoB,mEAAmE;AACnG,QAAQ,IAAI,eAAc,mEAAmE;AAC7F,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,0BAAyB,mEAAmE;AACxG,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,QAAO,mEAAmE;AACtF,QAAQ,IAAI,WAAU,mEAAmE;AACzF,QAAQ,IAAI,mBAAkB,mEAAmE;AACjG,QAAQ,IAAI,iBAAgB,mEAAmE;AAC/F,QAAQ,IAAI,cAAa,mEAAmE;AAC5F,QAAQ,IAAI,aAAY,mEAAmE;AAC3F,QAAQ,IAAI,aAAY,mEAAmE;AAC3F,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,iBAAgB,mEAAmE;AAC/F,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,QAAO,mEAAmE;AACtF,QAAQ,IAAI,QAAO,mEAAmE;AACtF,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,QAAO,mEAAmE;AACtF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,eAAc,mEAAmE;AAC7F,QAAQ,IAAI,oBAAmB,mEAAmE;AAClG,QAAQ,IAAI,aAAY,mEAAmE;AAC3F,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,QAAO,mEAAmE;AACtF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,cAAa,mEAAmE;AAC5F,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,WAAU,mEAAmE;AACzF,QAAQ,IAAI,2BAA0B,mEAAmE;AACzG,QAAQ,IAAI,gBAAe,mEAAmE;AAC9F,QAAQ,IAAI,mBAAkB,mEAAmE;AACjG,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,aAAY,mEAAmE;AAC3F,QAAQ,IAAI,WAAU,mEAAmE;AACzF,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,aAAY,mEAAmE;AAC3F,QAAQ,IAAI,qBAAoB,mEAAmE;AACnG,QAAQ,IAAI,cAAa,mEAAmE;AAC5F,QAAQ,IAAI,sBAAqB,mEAAmE;AACpG,QAAQ,IAAI,iBAAgB,mEAAmE;AAC/F,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,WAAU,mEAAmE;AACzF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,cAAa,mEAAmE;AAC5F,QAAQ,IAAI,WAAU,mEAAmE;AACzF,QAAQ,IAAI,SAAQ,mEAAmE"}
|
|
@@ -94,6 +94,7 @@ async function updatePnpmWorkspace(updateArtifactsConfig) {
|
|
|
94
94
|
let updated = false;
|
|
95
95
|
for (const upgrade of upgrades) {
|
|
96
96
|
let excludeNode = doc.getIn(["minimumReleaseAgeExclude"]);
|
|
97
|
+
// v8 ignore next -- TODO: add test #40625
|
|
97
98
|
const newVersion = upgrade.newVersion ?? upgrade.newValue;
|
|
98
99
|
/* v8 ignore if -- should not happen, adding for type narrowing*/
|
|
99
100
|
if (excludeNode && !isSeq(excludeNode)) return null;
|
|
@@ -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 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 { regEx } from '../../../util/regex.ts';\nimport { matchRegexOrGlob } from '../../../util/string-match.ts';\nimport type { UpdateArtifact, UpdateArtifactsResult } from '../types.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 {\n getNpmrcContent,\n resetNpmrcContent,\n updateNpmrcContent,\n} 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((await handlePackageManagerUpdates(updateArtifactsConfig)) ?? {});\n res.push((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 npmrcContent = await getNpmrcContent(pkgFileDir);\n const lazyPkgJson = lazyLoadPackageJson(pkgFileDir);\n const cmd = `corepack use ${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: config.constraints?.corepack,\n },\n ],\n docker: {},\n };\n\n await updateNpmrcContent(pkgFileDir, npmrcContent, additionalNpmrcContent);\n try {\n await exec(cmd, execOptions);\n await resetNpmrcContent(pkgFileDir, npmrcContent);\n const newPackageFileContent = await readLocalFile(packageFileName, 'utf8');\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 await resetNpmrcContent(pkgFileDir, npmrcContent);\n return {\n artifactError: {\n fileName: packageFileName,\n stderr: err.message,\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 pnpmShrinkwrap = upgrades[0].managerData?.pnpmShrinkwrap;\n if (!isString(pnpmShrinkwrap)) {\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(pnpmShrinkwrap);\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 const newVersion = upgrade.newVersion ?? upgrade.newValue;\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([]) as YAMLSeq;\n const newItem = doc.createNode(`${upgrade.depName}@${newVersion}`);\n newItem.commentBefore = ` Renovate security update: ${upgrade.depName}@${newVersion}`;\n excludeNode.items.push(newItem);\n doc.set('minimumReleaseAgeExclude', excludeNode);\n updated = true;\n continue;\n }\n\n const { item: matchedItem, allExcluded } = getMatchedItem(\n upgrade.depName!,\n excludeNode.items,\n );\n\n if (allExcluded) {\n continue;\n }\n\n if (isScalar<string>(matchedItem)) {\n // if we have a comment before the list, which includes the dependency\n if (excludeNode?.commentBefore?.includes(`${upgrade.depName}@`)) {\n // and it doesn't already have the version included in it\n if (\n !minimumReleaseAgeExcludeIncludesDepNameAndVersion(\n excludeNode.commentBefore,\n upgrade.depName,\n newVersion,\n )\n ) {\n // then append it\n\n // normalize value (no quote handling needed)\n excludeNode.commentBefore =\n 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 upgrade.depName,\n newVersion,\n )\n ) {\n // normalize value (no quote handling needed)\n matchedItem.commentBefore =\n matchedItem.commentBefore + ` || ${newVersion}`;\n updated = true;\n }\n } else {\n matchedItem.commentBefore = ` Renovate security update: ${upgrade.depName}@${newVersion}`;\n updated = true;\n }\n\n if (\n !minimumReleaseAgeExcludeIncludesDepNameAndVersion(\n matchedItem.value,\n upgrade.depName,\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(`${upgrade.depName}@${newVersion}`);\n newItem.commentBefore = ` Renovate security update: ${upgrade.depName}@${newVersion}`;\n\n excludeNode.items.push(newItem);\n updated = true;\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} {\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 return {\n allExcluded: false,\n item,\n };\n }\n\n if (item.value === depName || matchRegexOrGlob(depName, item.value)) {\n return {\n allExcluded: true,\n item,\n };\n }\n }\n\n return {\n item: null,\n allExcluded: false,\n };\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 { 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 { regEx } from '../../../util/regex.ts';\nimport { matchRegexOrGlob } from '../../../util/string-match.ts';\nimport type { UpdateArtifact, UpdateArtifactsResult } from '../types.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 {\n getNpmrcContent,\n resetNpmrcContent,\n updateNpmrcContent,\n} 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((await handlePackageManagerUpdates(updateArtifactsConfig)) ?? {});\n res.push((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 npmrcContent = await getNpmrcContent(pkgFileDir);\n const lazyPkgJson = lazyLoadPackageJson(pkgFileDir);\n const cmd = `corepack use ${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: config.constraints?.corepack,\n },\n ],\n docker: {},\n };\n\n await updateNpmrcContent(pkgFileDir, npmrcContent, additionalNpmrcContent);\n try {\n await exec(cmd, execOptions);\n await resetNpmrcContent(pkgFileDir, npmrcContent);\n const newPackageFileContent = await readLocalFile(packageFileName, 'utf8');\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 await resetNpmrcContent(pkgFileDir, npmrcContent);\n return {\n artifactError: {\n fileName: packageFileName,\n stderr: err.message,\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 pnpmShrinkwrap = upgrades[0].managerData?.pnpmShrinkwrap;\n if (!isString(pnpmShrinkwrap)) {\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(pnpmShrinkwrap);\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\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([]) as YAMLSeq;\n const newItem = doc.createNode(`${upgrade.depName}@${newVersion}`);\n newItem.commentBefore = ` Renovate security update: ${upgrade.depName}@${newVersion}`;\n excludeNode.items.push(newItem);\n doc.set('minimumReleaseAgeExclude', excludeNode);\n updated = true;\n continue;\n }\n\n const { item: matchedItem, allExcluded } = getMatchedItem(\n upgrade.depName!,\n excludeNode.items,\n );\n\n if (allExcluded) {\n continue;\n }\n\n if (isScalar<string>(matchedItem)) {\n // if we have a comment before the list, which includes the dependency\n if (excludeNode?.commentBefore?.includes(`${upgrade.depName}@`)) {\n // and it doesn't already have the version included in it\n if (\n !minimumReleaseAgeExcludeIncludesDepNameAndVersion(\n excludeNode.commentBefore,\n upgrade.depName,\n newVersion,\n )\n ) {\n // then append it\n\n // normalize value (no quote handling needed)\n excludeNode.commentBefore =\n 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 upgrade.depName,\n newVersion,\n )\n ) {\n // normalize value (no quote handling needed)\n matchedItem.commentBefore =\n matchedItem.commentBefore + ` || ${newVersion}`;\n updated = true;\n }\n } else {\n matchedItem.commentBefore = ` Renovate security update: ${upgrade.depName}@${newVersion}`;\n updated = true;\n }\n\n if (\n !minimumReleaseAgeExcludeIncludesDepNameAndVersion(\n matchedItem.value,\n upgrade.depName,\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(`${upgrade.depName}@${newVersion}`);\n newItem.commentBefore = ` Renovate security update: ${upgrade.depName}@${newVersion}`;\n\n excludeNode.items.push(newItem);\n updated = true;\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} {\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 return {\n allExcluded: false,\n item,\n };\n }\n\n if (item.value === depName || matchRegexOrGlob(depName, item.value)) {\n return {\n allExcluded: true,\n item,\n };\n }\n }\n\n return {\n item: null,\n allExcluded: false,\n };\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,4 +1,5 @@
|
|
|
1
1
|
//#region lib/modules/manager/npm/dep-types.ts
|
|
2
|
+
const pnpmWorkspaceOverrides = "pnpm-workspace.overrides";
|
|
2
3
|
const knownDepTypes = [
|
|
3
4
|
{
|
|
4
5
|
depType: "dependencies",
|
|
@@ -54,10 +55,15 @@ const knownDepTypes = [
|
|
|
54
55
|
depType: "pnpm.overrides",
|
|
55
56
|
prettyDepType: "overrides",
|
|
56
57
|
description: "Listed under `pnpm.overrides`"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
depType: pnpmWorkspaceOverrides,
|
|
61
|
+
prettyDepType: "overrides",
|
|
62
|
+
description: "Listed under `overrides` in a pnpm workspace YAML file"
|
|
57
63
|
}
|
|
58
64
|
];
|
|
59
65
|
const supportsDynamicDepTypesNote = "Additionally, catalog dependencies produce dynamic `depType` values: `pnpm.catalog.<name>` for [pnpm catalogs](https://pnpm.io/catalogs#defining-catalogs) and `yarn.catalog.<name>` for [yarn catalogs](https://yarnpkg.com/features/catalogs).";
|
|
60
66
|
//#endregion
|
|
61
|
-
export { knownDepTypes, supportsDynamicDepTypesNote };
|
|
67
|
+
export { knownDepTypes, pnpmWorkspaceOverrides, supportsDynamicDepTypesNote };
|
|
62
68
|
|
|
63
69
|
//# sourceMappingURL=dep-types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dep-types.js","names":[],"sources":["../../../../lib/modules/manager/npm/dep-types.ts"],"sourcesContent":["import type { DepTypeMetadata } from '../types.ts';\n\nexport const knownDepTypes = [\n {\n depType: 'dependencies',\n prettyDepType: 'dependency',\n description: 'Listed under `dependencies`',\n },\n {\n depType: 'devDependencies',\n prettyDepType: 'devDependency',\n description: 'Listed under `devDependencies`',\n },\n {\n depType: 'optionalDependencies',\n prettyDepType: 'optionalDependency',\n description: 'Listed under `optionalDependencies`',\n },\n {\n depType: 'peerDependencies',\n prettyDepType: 'peerDependency',\n description: 'Listed under `peerDependencies`',\n },\n {\n depType: 'engines',\n prettyDepType: 'engine',\n description: 'Listed under `engines`',\n },\n {\n depType: 'volta',\n prettyDepType: 'volta',\n description: 'Listed under `volta`',\n },\n {\n depType: 'resolutions',\n prettyDepType: 'resolutions',\n description: 'Listed under `resolutions` (Yarn)',\n },\n {\n depType: 'packageManager',\n prettyDepType: 'packageManager',\n description: 'Listed under `packageManager`',\n },\n {\n depType: 'overrides',\n prettyDepType: 'overrides',\n description: 'Listed under `overrides`',\n },\n {\n depType: 'pnpm',\n prettyDepType: 'pnpm',\n description: 'Listed under the top-level `pnpm` field',\n },\n {\n depType: 'pnpm.overrides',\n prettyDepType: 'overrides',\n description: 'Listed under `pnpm.overrides`',\n },\n] as const satisfies readonly DepTypeMetadata[];\n\nexport const supportsDynamicDepTypesNote =\n 'Additionally, catalog dependencies produce dynamic `depType` values: `pnpm.catalog.<name>` for [pnpm catalogs](https://pnpm.io/catalogs#defining-catalogs) and `yarn.catalog.<name>` for [yarn catalogs](https://yarnpkg.com/features/catalogs).';\n"],"mappings":";AAEA,MAAa,gBAAgB;CAC3B;EACE,SAAS;EACT,eAAe;EACf,aAAa;EACd;CACD;EACE,SAAS;EACT,eAAe;EACf,aAAa;EACd;CACD;EACE,SAAS;EACT,eAAe;EACf,aAAa;EACd;CACD;EACE,SAAS;EACT,eAAe;EACf,aAAa;EACd;CACD;EACE,SAAS;EACT,eAAe;EACf,aAAa;EACd;CACD;EACE,SAAS;EACT,eAAe;EACf,aAAa;EACd;CACD;EACE,SAAS;EACT,eAAe;EACf,aAAa;EACd;CACD;EACE,SAAS;EACT,eAAe;EACf,aAAa;EACd;CACD;EACE,SAAS;EACT,eAAe;EACf,aAAa;EACd;CACD;EACE,SAAS;EACT,eAAe;EACf,aAAa;EACd;CACD;EACE,SAAS;EACT,eAAe;EACf,aAAa;EACd;CACF;AAED,MAAa,8BACX"}
|
|
1
|
+
{"version":3,"file":"dep-types.js","names":[],"sources":["../../../../lib/modules/manager/npm/dep-types.ts"],"sourcesContent":["import type { DepTypeMetadata } from '../types.ts';\n\nexport const pnpmWorkspaceOverrides = 'pnpm-workspace.overrides' as const;\n\nexport const knownDepTypes = [\n {\n depType: 'dependencies',\n prettyDepType: 'dependency',\n description: 'Listed under `dependencies`',\n },\n {\n depType: 'devDependencies',\n prettyDepType: 'devDependency',\n description: 'Listed under `devDependencies`',\n },\n {\n depType: 'optionalDependencies',\n prettyDepType: 'optionalDependency',\n description: 'Listed under `optionalDependencies`',\n },\n {\n depType: 'peerDependencies',\n prettyDepType: 'peerDependency',\n description: 'Listed under `peerDependencies`',\n },\n {\n depType: 'engines',\n prettyDepType: 'engine',\n description: 'Listed under `engines`',\n },\n {\n depType: 'volta',\n prettyDepType: 'volta',\n description: 'Listed under `volta`',\n },\n {\n depType: 'resolutions',\n prettyDepType: 'resolutions',\n description: 'Listed under `resolutions` (Yarn)',\n },\n {\n depType: 'packageManager',\n prettyDepType: 'packageManager',\n description: 'Listed under `packageManager`',\n },\n {\n depType: 'overrides',\n prettyDepType: 'overrides',\n description: 'Listed under `overrides`',\n },\n {\n depType: 'pnpm',\n prettyDepType: 'pnpm',\n description: 'Listed under the top-level `pnpm` field',\n },\n {\n depType: 'pnpm.overrides',\n prettyDepType: 'overrides',\n description: 'Listed under `pnpm.overrides`',\n },\n {\n depType: pnpmWorkspaceOverrides,\n prettyDepType: 'overrides',\n description: 'Listed under `overrides` in a pnpm workspace YAML file',\n },\n] as const satisfies readonly DepTypeMetadata[];\n\nexport const supportsDynamicDepTypesNote =\n 'Additionally, catalog dependencies produce dynamic `depType` values: `pnpm.catalog.<name>` for [pnpm catalogs](https://pnpm.io/catalogs#defining-catalogs) and `yarn.catalog.<name>` for [yarn catalogs](https://yarnpkg.com/features/catalogs).';\n"],"mappings":";AAEA,MAAa,yBAAyB;AAEtC,MAAa,gBAAgB;CAC3B;EACE,SAAS;EACT,eAAe;EACf,aAAa;EACd;CACD;EACE,SAAS;EACT,eAAe;EACf,aAAa;EACd;CACD;EACE,SAAS;EACT,eAAe;EACf,aAAa;EACd;CACD;EACE,SAAS;EACT,eAAe;EACf,aAAa;EACd;CACD;EACE,SAAS;EACT,eAAe;EACf,aAAa;EACd;CACD;EACE,SAAS;EACT,eAAe;EACf,aAAa;EACd;CACD;EACE,SAAS;EACT,eAAe;EACf,aAAa;EACd;CACD;EACE,SAAS;EACT,eAAe;EACf,aAAa;EACd;CACD;EACE,SAAS;EACT,eAAe;EACf,aAAa;EACd;CACD;EACE,SAAS;EACT,eAAe;EACf,aAAa;EACd;CACD;EACE,SAAS;EACT,eAAe;EACf,aAAa;EACd;CACD;EACE,SAAS;EACT,eAAe;EACf,aAAa;EACd;CACF;AAED,MAAa,8BACX"}
|
|
@@ -10,6 +10,7 @@ async function detectGlobalConfig() {
|
|
|
10
10
|
const npmrcFileName = upath.join(homedir, ".npmrc");
|
|
11
11
|
try {
|
|
12
12
|
const npmrc = await readSystemFile(npmrcFileName, "utf8");
|
|
13
|
+
// v8 ignore else -- TODO: add test #40625
|
|
13
14
|
if (isNonEmptyString(npmrc)) {
|
|
14
15
|
res.npmrc = npmrc;
|
|
15
16
|
res.npmrcMerge = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.js","names":[],"sources":["../../../../lib/modules/manager/npm/detect.ts"],"sourcesContent":["import os from 'node:os';\nimport { isNonEmptyString } from '@sindresorhus/is';\nimport upath from 'upath';\nimport { logger } from '../../../logger/index.ts';\nimport { readSystemFile } from '../../../util/fs/index.ts';\nimport type { GlobalManagerConfig } from '../types.ts';\n\nexport async function detectGlobalConfig(): Promise<GlobalManagerConfig> {\n const res: GlobalManagerConfig = {};\n const homedir = os.homedir();\n const npmrcFileName = upath.join(homedir, '.npmrc');\n try {\n const npmrc = await readSystemFile(npmrcFileName, 'utf8');\n if (isNonEmptyString(npmrc)) {\n res.npmrc = npmrc;\n res.npmrcMerge = true;\n logger.debug(`Detected ${npmrcFileName} and adding it to global config`);\n }\n } catch {\n logger.warn({ npmrcFileName }, 'Error reading .npmrc file');\n }\n return res;\n}\n"],"mappings":";;;;;;AAOA,eAAsB,qBAAmD;CACvE,MAAM,MAA2B,EAAE;CACnC,MAAM,UAAU,GAAG,SAAS;CAC5B,MAAM,gBAAgB,MAAM,KAAK,SAAS,SAAS;AACnD,KAAI;EACF,MAAM,QAAQ,MAAM,eAAe,eAAe,OAAO
|
|
1
|
+
{"version":3,"file":"detect.js","names":[],"sources":["../../../../lib/modules/manager/npm/detect.ts"],"sourcesContent":["import os from 'node:os';\nimport { isNonEmptyString } from '@sindresorhus/is';\nimport upath from 'upath';\nimport { logger } from '../../../logger/index.ts';\nimport { readSystemFile } from '../../../util/fs/index.ts';\nimport type { GlobalManagerConfig } from '../types.ts';\n\nexport async function detectGlobalConfig(): Promise<GlobalManagerConfig> {\n const res: GlobalManagerConfig = {};\n const homedir = os.homedir();\n const npmrcFileName = upath.join(homedir, '.npmrc');\n try {\n const npmrc = await readSystemFile(npmrcFileName, 'utf8');\n // v8 ignore else -- TODO: add test #40625\n if (isNonEmptyString(npmrc)) {\n res.npmrc = npmrc;\n res.npmrcMerge = true;\n logger.debug(`Detected ${npmrcFileName} and adding it to global config`);\n }\n } catch {\n logger.warn({ npmrcFileName }, 'Error reading .npmrc file');\n }\n return res;\n}\n"],"mappings":";;;;;;AAOA,eAAsB,qBAAmD;CACvE,MAAM,MAA2B,EAAE;CACnC,MAAM,UAAU,GAAG,SAAS;CAC5B,MAAM,gBAAgB,MAAM,KAAK,SAAS,SAAS;AACnD,KAAI;EACF,MAAM,QAAQ,MAAM,eAAe,eAAe,OAAO;;AAEzD,MAAI,iBAAiB,MAAM,EAAE;AAC3B,OAAI,QAAQ;AACZ,OAAI,aAAa;AACjB,UAAO,MAAM,YAAY,cAAc,iCAAiC;;SAEpE;AACN,SAAO,KAAK,EAAE,eAAe,EAAE,4BAA4B;;AAE7D,QAAO"}
|
|
@@ -52,6 +52,7 @@ function extractPackageJson(packageJson, packageFile) {
|
|
|
52
52
|
depName
|
|
53
53
|
};
|
|
54
54
|
if (depName !== key) dep.managerData = { key };
|
|
55
|
+
// v8 ignore else -- TODO: add test #40625
|
|
55
56
|
if (depType === "overrides" && !isString(val)) deps.push(...extractOverrideDepsRec([depName], val));
|
|
56
57
|
else if (depType === "pnpm" && depName === "overrides") {
|
|
57
58
|
for (const [overridesKey, overridesVal] of Object.entries(val)) if (isString(overridesVal)) {
|
|
@@ -76,7 +77,7 @@ function extractPackageJson(packageJson, packageFile) {
|
|
|
76
77
|
deps.push(dep);
|
|
77
78
|
}
|
|
78
79
|
}
|
|
79
|
-
} catch (err) {
|
|
80
|
+
} catch (err) /* v8 ignore next -- TODO: add test #40625 */ {
|
|
80
81
|
logger.debug({
|
|
81
82
|
fileName: packageFile,
|
|
82
83
|
depType,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-file.js","names":[],"sources":["../../../../../../lib/modules/manager/npm/extract/common/package-file.ts"],"sourcesContent":["import { parsePkgAndParentSelector } from '@pnpm/parse-overrides';\nimport {\n isNonEmptyObject,\n isNonEmptyString,\n isNonEmptyStringAndNotWhitespace,\n isObject,\n isString,\n} from '@sindresorhus/is';\nimport { CONFIG_VALIDATION } from '../../../../../constants/error-messages.ts';\nimport { logger } from '../../../../../logger/index.ts';\nimport { regEx } from '../../../../../util/regex.ts';\nimport type { PackageDependency, PackageFileContent } from '../../../types.ts';\nimport type { NpmManagerData } from '../../types.ts';\nimport { loadPackageJson } from '../../utils.ts';\nimport type { NpmPackage, NpmPackageDependency } from '../types.ts';\nimport {\n extractDependency,\n getExtractedConstraints,\n parseDepName,\n} from './dependency.ts';\nimport { setNodeCommitTopic } from './node.ts';\nimport { extractOverrideDepsRec } from './overrides.ts';\n\nexport function extractPackageJson(\n packageJson: NpmPackage,\n packageFile: string,\n): PackageFileContent<NpmManagerData> | null {\n logger.trace(`npm.extractPackageJson(${packageFile})`);\n const deps: PackageDependency[] = [];\n\n if (packageJson._id && packageJson._args && packageJson._from) {\n logger.debug({ packageFile }, 'Ignoring vendorised package.json');\n return null;\n }\n if (packageFile !== 'package.json' && packageJson.renovate) {\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = packageFile;\n error.validationError =\n 'Nested package.json must not contain Renovate configuration. Please use `packageRules` with `matchFileNames` in your main config instead.';\n throw error;\n }\n const packageJsonName = packageJson.name;\n logger.debug(\n `npm file ${packageFile} has name ${JSON.stringify(packageJsonName)}`,\n );\n const packageFileVersion = packageJson.version;\n\n const depTypes = {\n dependencies: 'dependency',\n devDependencies: 'devDependency',\n optionalDependencies: 'optionalDependency',\n peerDependencies: 'peerDependency',\n engines: 'engine',\n volta: 'volta',\n resolutions: 'resolutions',\n packageManager: 'packageManager',\n overrides: 'overrides',\n pnpm: 'pnpm',\n };\n\n for (const depType of Object.keys(depTypes) as (keyof typeof depTypes)[]) {\n let dependencies = packageJson[depType];\n if (dependencies) {\n try {\n if (depType === 'packageManager') {\n const match = regEx('^(?<name>.+)@(?<range>.+)$').exec(\n dependencies as string,\n );\n /* v8 ignore next 3 -- needs test */\n if (!match?.groups) {\n break;\n }\n dependencies = { [match.groups.name]: match.groups.range };\n }\n for (const [key, val] of Object.entries(\n dependencies as NpmPackageDependency,\n )) {\n const depName = parseDepName(depType, key);\n let dep: PackageDependency = {\n depType,\n depName,\n };\n if (depName !== key) {\n dep.managerData = { key };\n }\n if (depType === 'overrides' && !isString(val)) {\n // TODO: fix type #22198\n deps.push(\n ...extractOverrideDepsRec(\n [depName],\n val as unknown as NpmManagerData,\n ),\n );\n } else if (depType === 'pnpm' && depName === 'overrides') {\n // pnpm overrides\n // https://pnpm.io/package_json#pnpmoverrides\n for (const [overridesKey, overridesVal] of Object.entries(\n val as unknown as NpmPackageDependency,\n )) {\n if (isString(overridesVal)) {\n // Newer flat syntax: `parent>parent>child`\n const packageName =\n parsePkgAndParentSelector(overridesKey).targetPkg.name;\n dep = {\n depName: overridesKey,\n packageName,\n depType: 'pnpm.overrides',\n ...extractDependency(depName, packageName, overridesVal),\n };\n setNodeCommitTopic(dep);\n // TODO: Is this expected? It's always 'overrides'.\n dep.prettyDepType = depTypes[depName];\n deps.push(dep);\n } else if (isObject(overridesVal)) {\n // Older nested object syntax: `parent: { parent: { child: version } }`\n deps.push(\n ...extractOverrideDepsRec(\n [overridesKey],\n overridesVal as unknown as NpmManagerData,\n ),\n );\n }\n }\n } else {\n // TODO: fix type #22198\n dep = { ...dep, ...extractDependency(depType, depName, val!) };\n setNodeCommitTopic(dep);\n dep.prettyDepType = depTypes[depType];\n deps.push(dep);\n }\n } /* v8 ignore next --
|
|
1
|
+
{"version":3,"file":"package-file.js","names":[],"sources":["../../../../../../lib/modules/manager/npm/extract/common/package-file.ts"],"sourcesContent":["import { parsePkgAndParentSelector } from '@pnpm/parse-overrides';\nimport {\n isNonEmptyObject,\n isNonEmptyString,\n isNonEmptyStringAndNotWhitespace,\n isObject,\n isString,\n} from '@sindresorhus/is';\nimport { CONFIG_VALIDATION } from '../../../../../constants/error-messages.ts';\nimport { logger } from '../../../../../logger/index.ts';\nimport { regEx } from '../../../../../util/regex.ts';\nimport type { PackageDependency, PackageFileContent } from '../../../types.ts';\nimport type { NpmManagerData } from '../../types.ts';\nimport { loadPackageJson } from '../../utils.ts';\nimport type { NpmPackage, NpmPackageDependency } from '../types.ts';\nimport {\n extractDependency,\n getExtractedConstraints,\n parseDepName,\n} from './dependency.ts';\nimport { setNodeCommitTopic } from './node.ts';\nimport { extractOverrideDepsRec } from './overrides.ts';\n\nexport function extractPackageJson(\n packageJson: NpmPackage,\n packageFile: string,\n): PackageFileContent<NpmManagerData> | null {\n logger.trace(`npm.extractPackageJson(${packageFile})`);\n const deps: PackageDependency[] = [];\n\n if (packageJson._id && packageJson._args && packageJson._from) {\n logger.debug({ packageFile }, 'Ignoring vendorised package.json');\n return null;\n }\n if (packageFile !== 'package.json' && packageJson.renovate) {\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = packageFile;\n error.validationError =\n 'Nested package.json must not contain Renovate configuration. Please use `packageRules` with `matchFileNames` in your main config instead.';\n throw error;\n }\n const packageJsonName = packageJson.name;\n logger.debug(\n `npm file ${packageFile} has name ${JSON.stringify(packageJsonName)}`,\n );\n const packageFileVersion = packageJson.version;\n\n const depTypes = {\n dependencies: 'dependency',\n devDependencies: 'devDependency',\n optionalDependencies: 'optionalDependency',\n peerDependencies: 'peerDependency',\n engines: 'engine',\n volta: 'volta',\n resolutions: 'resolutions',\n packageManager: 'packageManager',\n overrides: 'overrides',\n pnpm: 'pnpm',\n };\n\n for (const depType of Object.keys(depTypes) as (keyof typeof depTypes)[]) {\n let dependencies = packageJson[depType];\n if (dependencies) {\n try {\n if (depType === 'packageManager') {\n const match = regEx('^(?<name>.+)@(?<range>.+)$').exec(\n dependencies as string,\n );\n /* v8 ignore next 3 -- needs test */\n if (!match?.groups) {\n break;\n }\n dependencies = { [match.groups.name]: match.groups.range };\n }\n for (const [key, val] of Object.entries(\n dependencies as NpmPackageDependency,\n )) {\n const depName = parseDepName(depType, key);\n let dep: PackageDependency = {\n depType,\n depName,\n };\n if (depName !== key) {\n dep.managerData = { key };\n }\n // v8 ignore else -- TODO: add test #40625\n if (depType === 'overrides' && !isString(val)) {\n // TODO: fix type #22198\n deps.push(\n ...extractOverrideDepsRec(\n [depName],\n val as unknown as NpmManagerData,\n ),\n );\n } else if (depType === 'pnpm' && depName === 'overrides') {\n // pnpm overrides\n // https://pnpm.io/package_json#pnpmoverrides\n for (const [overridesKey, overridesVal] of Object.entries(\n val as unknown as NpmPackageDependency,\n )) {\n if (isString(overridesVal)) {\n // Newer flat syntax: `parent>parent>child`\n const packageName =\n parsePkgAndParentSelector(overridesKey).targetPkg.name;\n dep = {\n depName: overridesKey,\n packageName,\n depType: 'pnpm.overrides',\n ...extractDependency(depName, packageName, overridesVal),\n };\n setNodeCommitTopic(dep);\n // TODO: Is this expected? It's always 'overrides'.\n dep.prettyDepType = depTypes[depName];\n deps.push(dep);\n } else if (isObject(overridesVal)) {\n // Older nested object syntax: `parent: { parent: { child: version } }`\n deps.push(\n ...extractOverrideDepsRec(\n [overridesKey],\n overridesVal as unknown as NpmManagerData,\n ),\n );\n }\n }\n } else {\n // TODO: fix type #22198\n dep = { ...dep, ...extractDependency(depType, depName, val!) };\n setNodeCommitTopic(dep);\n dep.prettyDepType = depTypes[depType];\n deps.push(dep);\n }\n }\n } catch (err) /* v8 ignore next -- TODO: add test #40625 */ {\n logger.debug(\n { fileName: packageFile, depType, err },\n 'Error parsing package.json',\n );\n return null;\n }\n }\n }\n\n const extractedConstraints = getExtractedConstraints(deps);\n\n return {\n deps,\n extractedConstraints,\n packageFileVersion,\n managerData: {\n packageJsonName,\n hasPackageManager:\n isNonEmptyStringAndNotWhitespace(packageJson.packageManager) ||\n isNonEmptyObject(packageJson.devEngines?.packageManager),\n workspaces: packageJson.workspaces,\n },\n };\n}\n\nexport async function hasPackageManager(\n packageJsonDir: string,\n): Promise<boolean> {\n logger.trace(`npm.hasPackageManager from package.json`);\n\n const packageJsonResult = await loadPackageJson(packageJsonDir);\n\n return (\n isNonEmptyString(packageJsonResult?.packageManager?.name) &&\n isNonEmptyString(packageJsonResult?.packageManager?.version)\n );\n}\n"],"mappings":";;;;;;;;;;AAuBA,SAAgB,mBACd,aACA,aAC2C;AAC3C,QAAO,MAAM,0BAA0B,YAAY,GAAG;CACtD,MAAM,OAA4B,EAAE;AAEpC,KAAI,YAAY,OAAO,YAAY,SAAS,YAAY,OAAO;AAC7D,SAAO,MAAM,EAAE,aAAa,EAAE,mCAAmC;AACjE,SAAO;;AAET,KAAI,gBAAgB,kBAAkB,YAAY,UAAU;EAC1D,MAAM,QAAQ,IAAI,MAAM,kBAAkB;AAC1C,QAAM,mBAAmB;AACzB,QAAM,kBACJ;AACF,QAAM;;CAER,MAAM,kBAAkB,YAAY;AACpC,QAAO,MACL,YAAY,YAAY,YAAY,KAAK,UAAU,gBAAgB,GACpE;CACD,MAAM,qBAAqB,YAAY;CAEvC,MAAM,WAAW;EACf,cAAc;EACd,iBAAiB;EACjB,sBAAsB;EACtB,kBAAkB;EAClB,SAAS;EACT,OAAO;EACP,aAAa;EACb,gBAAgB;EAChB,WAAW;EACX,MAAM;EACP;AAED,MAAK,MAAM,WAAW,OAAO,KAAK,SAAS,EAA+B;EACxE,IAAI,eAAe,YAAY;AAC/B,MAAI,aACF,KAAI;AACF,OAAI,YAAY,kBAAkB;IAChC,MAAM,QAAQ,MAAM,6BAA6B,CAAC,KAChD,aACD;;AAED,QAAI,CAAC,OAAO,OACV;AAEF,mBAAe,GAAG,MAAM,OAAO,OAAO,MAAM,OAAO,OAAO;;AAE5D,QAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAC9B,aACD,EAAE;IACD,MAAM,UAAU,aAAa,SAAS,IAAI;IAC1C,IAAI,MAAyB;KAC3B;KACA;KACD;AACD,QAAI,YAAY,IACd,KAAI,cAAc,EAAE,KAAK;;AAG3B,QAAI,YAAY,eAAe,CAAC,SAAS,IAAI,CAE3C,MAAK,KACH,GAAG,uBACD,CAAC,QAAQ,EACT,IACD,CACF;aACQ,YAAY,UAAU,YAAY;UAGtC,MAAM,CAAC,cAAc,iBAAiB,OAAO,QAChD,IACD,CACC,KAAI,SAAS,aAAa,EAAE;MAE1B,MAAM,cACJ,0BAA0B,aAAa,CAAC,UAAU;AACpD,YAAM;OACJ,SAAS;OACT;OACA,SAAS;OACT,GAAG,kBAAkB,SAAS,aAAa,aAAa;OACzD;AACD,yBAAmB,IAAI;AAEvB,UAAI,gBAAgB,SAAS;AAC7B,WAAK,KAAK,IAAI;gBACL,SAAS,aAAa,CAE/B,MAAK,KACH,GAAG,uBACD,CAAC,aAAa,EACd,aACD,CACF;WAGA;AAEL,WAAM;MAAE,GAAG;MAAK,GAAG,kBAAkB,SAAS,SAAS,IAAK;MAAE;AAC9D,wBAAmB,IAAI;AACvB,SAAI,gBAAgB,SAAS;AAC7B,UAAK,KAAK,IAAI;;;WAGX,qDAAmD;AAC1D,UAAO,MACL;IAAE,UAAU;IAAa;IAAS;IAAK,EACvC,6BACD;AACD,UAAO;;;AAOb,QAAO;EACL;EACA,sBAJ2B,wBAAwB,KAAK;EAKxD;EACA,aAAa;GACX;GACA,mBACE,iCAAiC,YAAY,eAAe,IAC5D,iBAAiB,YAAY,YAAY,eAAe;GAC1D,YAAY,YAAY;GACzB;EACF;;AAGH,eAAsB,kBACpB,gBACkB;AAClB,QAAO,MAAM,0CAA0C;CAEvD,MAAM,oBAAoB,MAAM,gBAAgB,eAAe;AAE/D,QACE,iBAAiB,mBAAmB,gBAAgB,KAAK,IACzD,iBAAiB,mBAAmB,gBAAgB,QAAQ"}
|
|
@@ -1,10 +1,11 @@
|
|
|
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";
|
|
4
5
|
import { resolveNpmrc } from "../npmrc.js";
|
|
5
6
|
import { getExtractedConstraints } from "./common/dependency.js";
|
|
6
7
|
import { extractPackageJson, hasPackageManager } from "./common/package-file.js";
|
|
7
|
-
import { extractPnpmWorkspaceFile
|
|
8
|
+
import { extractPnpmWorkspaceFile } from "./pnpm.js";
|
|
8
9
|
import { extractYarnCatalogs, isZeroInstall } from "./yarn.js";
|
|
9
10
|
import { postExtract } from "./post/index.js";
|
|
10
11
|
import { loadConfigFromLegacyYarnrc, loadConfigFromYarnrcYml, resolveRegistryUrl } from "./yarnrc.js";
|
|
@@ -67,7 +68,9 @@ async function extractPackageFile(content, packageFile, config) {
|
|
|
67
68
|
} else skipInstalls = true;
|
|
68
69
|
const extractedConstraints = getExtractedConstraints(res.deps);
|
|
69
70
|
if (yarnrcConfig) {
|
|
70
|
-
for (const dep of res.deps)
|
|
71
|
+
for (const dep of res.deps)
|
|
72
|
+
// v8 ignore else -- TODO: add tests #40625
|
|
73
|
+
if (dep.depName) {
|
|
71
74
|
const registryUrlFromYarnrcConfig = resolveRegistryUrl(dep.packageName ?? dep.depName, yarnrcConfig);
|
|
72
75
|
if (registryUrlFromYarnrcConfig && dep.datasource === NpmDatasource.id) dep.registryUrls = [registryUrlFromYarnrcConfig];
|
|
73
76
|
}
|
|
@@ -91,38 +94,47 @@ async function extractAllPackageFiles(config, packageFiles) {
|
|
|
91
94
|
const npmFiles = [];
|
|
92
95
|
for (const packageFile of packageFiles) {
|
|
93
96
|
const content = await readLocalFile(packageFile, "utf8");
|
|
94
|
-
if (content) {
|
|
95
|
-
|
|
97
|
+
if (content) if (packageFile.endsWith("pnpm-workspace.yaml")) {
|
|
98
|
+
logger.trace({ packageFile }, `Extracting as a pnpm-workspace.yaml file`);
|
|
99
|
+
const parsedPnpmWorkspaceYaml = await PnpmWorkspaceFile.safeParseAsync(content);
|
|
96
100
|
if (parsedPnpmWorkspaceYaml.success) {
|
|
97
101
|
logger.trace({ packageFile }, `Extracting file as a pnpm workspace YAML file`);
|
|
98
102
|
const deps = await extractPnpmWorkspaceFile(parsedPnpmWorkspaceYaml.data, packageFile);
|
|
103
|
+
// v8 ignore else -- TODO: add test #40625
|
|
99
104
|
if (deps) npmFiles.push({
|
|
100
105
|
...deps,
|
|
101
106
|
packageFile
|
|
102
107
|
});
|
|
103
|
-
} else
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
+
} else logger.warn({
|
|
109
|
+
packageFile,
|
|
110
|
+
err: parsedPnpmWorkspaceYaml.error
|
|
111
|
+
}, `Failed to parse pnpm-workspace.yaml file`);
|
|
112
|
+
} else if (packageFile.endsWith("json")) {
|
|
113
|
+
logger.trace({ packageFile }, `Extracting as a package.json file`);
|
|
114
|
+
const deps = await extractPackageFile(content, packageFile, config);
|
|
115
|
+
// v8 ignore else -- TODO: add tests #40625
|
|
116
|
+
if (deps) npmFiles.push({
|
|
117
|
+
...deps,
|
|
118
|
+
packageFile
|
|
119
|
+
});
|
|
120
|
+
} else {
|
|
121
|
+
logger.trace({ packageFile }, `Extracting as a .yarnrc.yml file`);
|
|
122
|
+
const yarnConfig = loadConfigFromYarnrcYml(content);
|
|
123
|
+
// v8 ignore else -- TODO: add tests #40625
|
|
124
|
+
if (yarnConfig?.catalogs || yarnConfig?.catalog) {
|
|
125
|
+
const hasPackageManagerResult = await hasPackageManager(upath.dirname(packageFile));
|
|
126
|
+
const catalogsDeps = await extractYarnCatalogs({
|
|
127
|
+
catalog: yarnConfig.catalog,
|
|
128
|
+
catalogs: yarnConfig.catalogs
|
|
129
|
+
}, packageFile, hasPackageManagerResult);
|
|
130
|
+
// v8 ignore else -- TODO: add tests #40625
|
|
131
|
+
if (catalogsDeps) npmFiles.push({
|
|
132
|
+
...catalogsDeps,
|
|
108
133
|
packageFile
|
|
109
134
|
});
|
|
110
|
-
} else {
|
|
111
|
-
logger.trace({ packageFile }, `Extracting as a .yarnrc.yml file`);
|
|
112
|
-
const yarnConfig = loadConfigFromYarnrcYml(content);
|
|
113
|
-
if (yarnConfig?.catalogs || yarnConfig?.catalog) {
|
|
114
|
-
const hasPackageManagerResult = await hasPackageManager(upath.dirname(packageFile));
|
|
115
|
-
const catalogsDeps = await extractYarnCatalogs({
|
|
116
|
-
catalog: yarnConfig.catalog,
|
|
117
|
-
catalogs: yarnConfig.catalogs
|
|
118
|
-
}, packageFile, hasPackageManagerResult);
|
|
119
|
-
if (catalogsDeps) npmFiles.push({
|
|
120
|
-
...catalogsDeps,
|
|
121
|
-
packageFile
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
135
|
}
|
|
125
|
-
}
|
|
136
|
+
}
|
|
137
|
+
else logger.debug({ packageFile }, `No content found`);
|
|
126
138
|
}
|
|
127
139
|
await postExtract(npmFiles);
|
|
128
140
|
return npmFiles;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../../lib/modules/manager/npm/extract/index.ts"],"sourcesContent":["import {\n isArray,\n isNonEmptyObject,\n isNonEmptyStringAndNotWhitespace,\n isString,\n} from '@sindresorhus/is';\nimport upath from 'upath';\nimport { logger } from '../../../../logger/index.ts';\nimport {\n findLocalSiblingOrParent,\n getSiblingFileName,\n readLocalFile,\n} from '../../../../util/fs/index.ts';\nimport { NpmDatasource } from '../../../datasource/npm/index.ts';\n\nimport type {\n ExtractConfig,\n PackageFile,\n PackageFileContent,\n} from '../../types.ts';\nimport { resolveNpmrc } from '../npmrc.ts';\nimport type { YarnConfig } from '../schema.ts';\nimport type { NpmLockFiles, NpmManagerData } from '../types.ts';\nimport { getExtractedConstraints } from './common/dependency.ts';\nimport {\n extractPackageJson,\n hasPackageManager,\n} from './common/package-file.ts';\nimport { extractPnpmWorkspaceFile, tryParsePnpmWorkspaceYaml } from './pnpm.ts';\nimport { postExtract } from './post/index.ts';\nimport type { NpmPackage } from './types.ts';\nimport { extractYarnCatalogs, isZeroInstall } from './yarn.ts';\nimport {\n loadConfigFromLegacyYarnrc,\n loadConfigFromYarnrcYml,\n resolveRegistryUrl,\n} from './yarnrc.ts';\n\nfunction hasMultipleLockFiles(lockFiles: NpmLockFiles): boolean {\n return Object.values(lockFiles).filter(isString).length > 1;\n}\n\nexport async function extractPackageFile(\n content: string,\n packageFile: string,\n config: ExtractConfig,\n): Promise<PackageFileContent<NpmManagerData> | null> {\n logger.trace(`npm.extractPackageFile(${packageFile})`);\n logger.trace({ content });\n let packageJson: NpmPackage;\n try {\n packageJson = JSON.parse(content);\n } catch {\n logger.debug({ packageFile }, `Invalid JSON`);\n return null;\n }\n\n const res = extractPackageJson(packageJson, packageFile);\n if (!res) {\n return null;\n }\n\n let workspacesPackages: string[] | undefined;\n if (isArray(packageJson.workspaces)) {\n workspacesPackages = packageJson.workspaces;\n } else {\n workspacesPackages = packageJson.workspaces?.packages;\n }\n\n const lockFiles: NpmLockFiles = {\n yarnLock: 'yarn.lock',\n packageLock: 'package-lock.json',\n shrinkwrapJson: 'npm-shrinkwrap.json',\n pnpmShrinkwrap: 'pnpm-lock.yaml',\n };\n\n for (const [key, val] of Object.entries(lockFiles) as [\n 'yarnLock' | 'packageLock' | 'shrinkwrapJson' | 'pnpmShrinkwrap',\n string,\n ][]) {\n const filePath = getSiblingFileName(packageFile, val);\n if (await readLocalFile(filePath, 'utf8')) {\n lockFiles[key] = filePath;\n } else {\n lockFiles[key] = undefined;\n }\n }\n lockFiles.npmLock = lockFiles.packageLock ?? lockFiles.shrinkwrapJson;\n delete lockFiles.packageLock;\n delete lockFiles.shrinkwrapJson;\n\n if (hasMultipleLockFiles(lockFiles)) {\n logger.warn(\n 'Updating multiple npm lock files is deprecated and support will be removed in future versions.',\n );\n }\n\n const { npmrc, npmrcFileName } = await resolveNpmrc(packageFile, config);\n\n const yarnrcYmlFileName = await findLocalSiblingOrParent(\n packageFile,\n '.yarnrc.yml',\n );\n const yarnZeroInstall = yarnrcYmlFileName\n ? await isZeroInstall(yarnrcYmlFileName)\n : false;\n\n let yarnrcConfig: YarnConfig | null = null;\n const repoYarnrcYml = yarnrcYmlFileName\n ? await readLocalFile(yarnrcYmlFileName, 'utf8')\n : null;\n if (isString(repoYarnrcYml) && repoYarnrcYml.trim().length > 0) {\n yarnrcConfig = loadConfigFromYarnrcYml(repoYarnrcYml);\n }\n\n const legacyYarnrcFileName = await findLocalSiblingOrParent(\n packageFile,\n '.yarnrc',\n );\n const repoLegacyYarnrc = legacyYarnrcFileName\n ? await readLocalFile(legacyYarnrcFileName, 'utf8')\n : null;\n if (isString(repoLegacyYarnrc) && repoLegacyYarnrc.trim().length > 0) {\n yarnrcConfig = loadConfigFromLegacyYarnrc(repoLegacyYarnrc);\n }\n\n if (res.deps.length === 0) {\n logger.debug('Package file has no deps');\n if (\n !(\n !!res.managerData?.packageJsonName ||\n !!res.packageFileVersion ||\n !!npmrc ||\n workspacesPackages\n )\n ) {\n logger.debug('Skipping file');\n return null;\n }\n }\n let skipInstalls = config.skipInstalls;\n if (skipInstalls === null) {\n const hasFancyRefs = !!res.deps.some(\n (dep) =>\n !!dep.currentValue?.startsWith('file:') ||\n !!dep.currentValue?.startsWith('npm:'),\n );\n if ((hasFancyRefs && !!lockFiles.npmLock) || yarnZeroInstall) {\n // https://github.com/npm/cli/issues/1432\n // Explanation:\n // - npm install --package-lock-only is buggy for transitive deps in file: and npm: references\n // - So we set skipInstalls to false if file: or npm: refs are found *and* the user hasn't explicitly set the value already\n // - Also, do not skip install if Yarn zero-install is used\n logger.debug('Automatically setting skipInstalls to false');\n skipInstalls = false;\n } else {\n skipInstalls = true;\n }\n }\n\n const extractedConstraints = getExtractedConstraints(res.deps);\n\n if (yarnrcConfig) {\n for (const dep of res.deps) {\n if (dep.depName) {\n const registryUrlFromYarnrcConfig = resolveRegistryUrl(\n dep.packageName ?? dep.depName,\n yarnrcConfig,\n );\n if (\n registryUrlFromYarnrcConfig &&\n dep.datasource === NpmDatasource.id\n ) {\n dep.registryUrls = [registryUrlFromYarnrcConfig];\n }\n }\n }\n }\n\n return {\n ...res,\n npmrc,\n managerData: {\n ...res.managerData,\n ...lockFiles,\n yarnZeroInstall,\n hasPackageManager:\n isNonEmptyStringAndNotWhitespace(packageJson.packageManager) ||\n isNonEmptyObject(packageJson.devEngines?.packageManager),\n workspacesPackages,\n npmrcFileName, // store npmrc file name so we can later tell if it came from the workspace or not\n },\n skipInstalls,\n extractedConstraints,\n };\n}\n\nexport async function extractAllPackageFiles(\n config: ExtractConfig,\n packageFiles: string[],\n): Promise<PackageFile<NpmManagerData>[]> {\n const npmFiles: PackageFile<NpmManagerData>[] = [];\n for (const packageFile of packageFiles) {\n const content = await readLocalFile(packageFile, 'utf8');\n if (content) {\n // pnpm workspace files are their own package file, defined via managerFilePatterns.\n // We duck-type the content here, to allow users to rename the file itself.\n const parsedPnpmWorkspaceYaml = tryParsePnpmWorkspaceYaml(content);\n if (parsedPnpmWorkspaceYaml.success) {\n logger.trace(\n { packageFile },\n `Extracting file as a pnpm workspace YAML file`,\n );\n const deps = await extractPnpmWorkspaceFile(\n parsedPnpmWorkspaceYaml.data,\n packageFile,\n );\n if (deps) {\n npmFiles.push({\n ...deps,\n packageFile,\n });\n }\n } else {\n if (packageFile.endsWith('json')) {\n logger.trace({ packageFile }, `Extracting as a package.json file`);\n\n const deps = await extractPackageFile(content, packageFile, config);\n if (deps) {\n npmFiles.push({\n ...deps,\n packageFile,\n });\n }\n } else {\n logger.trace({ packageFile }, `Extracting as a .yarnrc.yml file`);\n\n const yarnConfig = loadConfigFromYarnrcYml(content);\n\n if (yarnConfig?.catalogs || yarnConfig?.catalog) {\n const hasPackageManagerResult = await hasPackageManager(\n upath.dirname(packageFile),\n );\n const catalogsDeps = await extractYarnCatalogs(\n { catalog: yarnConfig.catalog, catalogs: yarnConfig.catalogs },\n packageFile,\n hasPackageManagerResult,\n );\n if (catalogsDeps) {\n npmFiles.push({\n ...catalogsDeps,\n packageFile,\n });\n }\n }\n }\n }\n } else {\n logger.debug({ packageFile }, `No content found`);\n }\n }\n\n await postExtract(npmFiles);\n return npmFiles;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../lib/modules/manager/npm/extract/index.ts"],"sourcesContent":["import {\n isArray,\n isNonEmptyObject,\n isNonEmptyStringAndNotWhitespace,\n isString,\n} from '@sindresorhus/is';\nimport upath from 'upath';\nimport { logger } from '../../../../logger/index.ts';\nimport {\n findLocalSiblingOrParent,\n getSiblingFileName,\n readLocalFile,\n} from '../../../../util/fs/index.ts';\nimport { NpmDatasource } from '../../../datasource/npm/index.ts';\n\nimport type {\n ExtractConfig,\n PackageFile,\n PackageFileContent,\n} from '../../types.ts';\nimport { resolveNpmrc } from '../npmrc.ts';\nimport { PnpmWorkspaceFile, type YarnConfig } from '../schema.ts';\nimport type { NpmLockFiles, NpmManagerData } from '../types.ts';\nimport { getExtractedConstraints } from './common/dependency.ts';\nimport {\n extractPackageJson,\n hasPackageManager,\n} from './common/package-file.ts';\nimport { extractPnpmWorkspaceFile } from './pnpm.ts';\nimport { postExtract } from './post/index.ts';\nimport type { NpmPackage } from './types.ts';\nimport { extractYarnCatalogs, isZeroInstall } from './yarn.ts';\nimport {\n loadConfigFromLegacyYarnrc,\n loadConfigFromYarnrcYml,\n resolveRegistryUrl,\n} from './yarnrc.ts';\n\nfunction hasMultipleLockFiles(lockFiles: NpmLockFiles): boolean {\n return Object.values(lockFiles).filter(isString).length > 1;\n}\n\nexport async function extractPackageFile(\n content: string,\n packageFile: string,\n config: ExtractConfig,\n): Promise<PackageFileContent<NpmManagerData> | null> {\n logger.trace(`npm.extractPackageFile(${packageFile})`);\n logger.trace({ content });\n let packageJson: NpmPackage;\n try {\n packageJson = JSON.parse(content);\n } catch {\n logger.debug({ packageFile }, `Invalid JSON`);\n return null;\n }\n\n const res = extractPackageJson(packageJson, packageFile);\n if (!res) {\n return null;\n }\n\n let workspacesPackages: string[] | undefined;\n if (isArray(packageJson.workspaces)) {\n workspacesPackages = packageJson.workspaces;\n } else {\n workspacesPackages = packageJson.workspaces?.packages;\n }\n\n const lockFiles: NpmLockFiles = {\n yarnLock: 'yarn.lock',\n packageLock: 'package-lock.json',\n shrinkwrapJson: 'npm-shrinkwrap.json',\n pnpmShrinkwrap: 'pnpm-lock.yaml',\n };\n\n for (const [key, val] of Object.entries(lockFiles) as [\n 'yarnLock' | 'packageLock' | 'shrinkwrapJson' | 'pnpmShrinkwrap',\n string,\n ][]) {\n const filePath = getSiblingFileName(packageFile, val);\n if (await readLocalFile(filePath, 'utf8')) {\n lockFiles[key] = filePath;\n } else {\n lockFiles[key] = undefined;\n }\n }\n lockFiles.npmLock = lockFiles.packageLock ?? lockFiles.shrinkwrapJson;\n delete lockFiles.packageLock;\n delete lockFiles.shrinkwrapJson;\n\n if (hasMultipleLockFiles(lockFiles)) {\n logger.warn(\n 'Updating multiple npm lock files is deprecated and support will be removed in future versions.',\n );\n }\n\n const { npmrc, npmrcFileName } = await resolveNpmrc(packageFile, config);\n\n const yarnrcYmlFileName = await findLocalSiblingOrParent(\n packageFile,\n '.yarnrc.yml',\n );\n const yarnZeroInstall = yarnrcYmlFileName\n ? await isZeroInstall(yarnrcYmlFileName)\n : false;\n\n let yarnrcConfig: YarnConfig | null = null;\n const repoYarnrcYml = yarnrcYmlFileName\n ? await readLocalFile(yarnrcYmlFileName, 'utf8')\n : null;\n if (isString(repoYarnrcYml) && repoYarnrcYml.trim().length > 0) {\n yarnrcConfig = loadConfigFromYarnrcYml(repoYarnrcYml);\n }\n\n const legacyYarnrcFileName = await findLocalSiblingOrParent(\n packageFile,\n '.yarnrc',\n );\n const repoLegacyYarnrc = legacyYarnrcFileName\n ? await readLocalFile(legacyYarnrcFileName, 'utf8')\n : null;\n if (isString(repoLegacyYarnrc) && repoLegacyYarnrc.trim().length > 0) {\n yarnrcConfig = loadConfigFromLegacyYarnrc(repoLegacyYarnrc);\n }\n\n if (res.deps.length === 0) {\n logger.debug('Package file has no deps');\n if (\n !(\n !!res.managerData?.packageJsonName ||\n !!res.packageFileVersion ||\n !!npmrc ||\n workspacesPackages\n )\n ) {\n logger.debug('Skipping file');\n return null;\n }\n }\n let skipInstalls = config.skipInstalls;\n if (skipInstalls === null) {\n const hasFancyRefs = !!res.deps.some(\n (dep) =>\n !!dep.currentValue?.startsWith('file:') ||\n !!dep.currentValue?.startsWith('npm:'),\n );\n if ((hasFancyRefs && !!lockFiles.npmLock) || yarnZeroInstall) {\n // https://github.com/npm/cli/issues/1432\n // Explanation:\n // - npm install --package-lock-only is buggy for transitive deps in file: and npm: references\n // - So we set skipInstalls to false if file: or npm: refs are found *and* the user hasn't explicitly set the value already\n // - Also, do not skip install if Yarn zero-install is used\n logger.debug('Automatically setting skipInstalls to false');\n skipInstalls = false;\n } else {\n skipInstalls = true;\n }\n }\n\n const extractedConstraints = getExtractedConstraints(res.deps);\n\n if (yarnrcConfig) {\n for (const dep of res.deps) {\n // v8 ignore else -- TODO: add tests #40625\n if (dep.depName) {\n const registryUrlFromYarnrcConfig = resolveRegistryUrl(\n dep.packageName ?? dep.depName,\n yarnrcConfig,\n );\n if (\n registryUrlFromYarnrcConfig &&\n dep.datasource === NpmDatasource.id\n ) {\n dep.registryUrls = [registryUrlFromYarnrcConfig];\n }\n }\n }\n }\n\n return {\n ...res,\n npmrc,\n managerData: {\n ...res.managerData,\n ...lockFiles,\n yarnZeroInstall,\n hasPackageManager:\n isNonEmptyStringAndNotWhitespace(packageJson.packageManager) ||\n isNonEmptyObject(packageJson.devEngines?.packageManager),\n workspacesPackages,\n npmrcFileName, // store npmrc file name so we can later tell if it came from the workspace or not\n },\n skipInstalls,\n extractedConstraints,\n };\n}\n\nexport async function extractAllPackageFiles(\n config: ExtractConfig,\n packageFiles: string[],\n): Promise<PackageFile<NpmManagerData>[]> {\n const npmFiles: PackageFile<NpmManagerData>[] = [];\n for (const packageFile of packageFiles) {\n const content = await readLocalFile(packageFile, 'utf8');\n if (content) {\n // pnpm workspace files are their own package file, defined via managerFilePatterns.\n if (packageFile.endsWith('pnpm-workspace.yaml')) {\n logger.trace(\n { packageFile },\n `Extracting as a pnpm-workspace.yaml file`,\n );\n const parsedPnpmWorkspaceYaml =\n await PnpmWorkspaceFile.safeParseAsync(content);\n if (parsedPnpmWorkspaceYaml.success) {\n logger.trace(\n { packageFile },\n `Extracting file as a pnpm workspace YAML file`,\n );\n const deps = await extractPnpmWorkspaceFile(\n parsedPnpmWorkspaceYaml.data,\n packageFile,\n );\n // v8 ignore else -- TODO: add test #40625\n if (deps) {\n npmFiles.push({\n ...deps,\n packageFile,\n });\n }\n } else {\n logger.warn(\n { packageFile, err: parsedPnpmWorkspaceYaml.error },\n `Failed to parse pnpm-workspace.yaml file`,\n );\n }\n } else {\n if (packageFile.endsWith('json')) {\n logger.trace({ packageFile }, `Extracting as a package.json file`);\n\n const deps = await extractPackageFile(content, packageFile, config);\n // v8 ignore else -- TODO: add tests #40625\n if (deps) {\n npmFiles.push({\n ...deps,\n packageFile,\n });\n }\n } else {\n logger.trace({ packageFile }, `Extracting as a .yarnrc.yml file`);\n\n const yarnConfig = loadConfigFromYarnrcYml(content);\n\n // v8 ignore else -- TODO: add tests #40625\n if (yarnConfig?.catalogs || yarnConfig?.catalog) {\n const hasPackageManagerResult = await hasPackageManager(\n upath.dirname(packageFile),\n );\n const catalogsDeps = await extractYarnCatalogs(\n { catalog: yarnConfig.catalog, catalogs: yarnConfig.catalogs },\n packageFile,\n hasPackageManagerResult,\n );\n // v8 ignore else -- TODO: add tests #40625\n if (catalogsDeps) {\n npmFiles.push({\n ...catalogsDeps,\n packageFile,\n });\n }\n }\n }\n }\n } else {\n logger.debug({ packageFile }, `No content found`);\n }\n }\n\n await postExtract(npmFiles);\n return npmFiles;\n}\n"],"mappings":"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"}
|
|
@@ -2,10 +2,12 @@ import { GlobalConfig } from "../../../../config/global.js";
|
|
|
2
2
|
import { logger } from "../../../../logger/index.js";
|
|
3
3
|
import { parseSingleYaml } from "../../../../util/yaml.js";
|
|
4
4
|
import { findLocalSiblingOrParent, getSiblingFileName, localPathExists, readLocalFile } from "../../../../util/fs/index.js";
|
|
5
|
-
import {
|
|
5
|
+
import { extractDependency } from "./common/dependency.js";
|
|
6
|
+
import { pnpmWorkspaceOverrides } from "../dep-types.js";
|
|
6
7
|
import { extractCatalogDeps } from "./common/catalogs.js";
|
|
7
8
|
import { isNonEmptyObject, isNumber, isObject, isPlainObject, isString } from "@sindresorhus/is";
|
|
8
9
|
import upath from "upath";
|
|
10
|
+
import { parsePkgAndParentSelector } from "@pnpm/parse-overrides";
|
|
9
11
|
import { findPackages } from "find-packages";
|
|
10
12
|
//#region lib/modules/manager/npm/extract/pnpm.ts
|
|
11
13
|
function isPnpmLockfile(obj) {
|
|
@@ -135,19 +137,19 @@ function getLockedDependencyVersions(obj) {
|
|
|
135
137
|
}
|
|
136
138
|
return res;
|
|
137
139
|
}
|
|
138
|
-
function
|
|
139
|
-
try {
|
|
140
|
-
return {
|
|
141
|
-
success: true,
|
|
142
|
-
data: parseSingleYaml(content, { customSchema: PnpmWorkspaceFile })
|
|
143
|
-
};
|
|
144
|
-
} catch {
|
|
145
|
-
return { success: false };
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
async function extractPnpmWorkspaceFile(catalogs, packageFile) {
|
|
140
|
+
async function extractPnpmWorkspaceFile(workspaceFile, packageFile) {
|
|
149
141
|
logger.trace(`pnpm.extractPnpmWorkspaceFile(${packageFile})`);
|
|
150
|
-
const deps = extractCatalogDeps(pnpmCatalogsToArray(
|
|
142
|
+
const deps = extractCatalogDeps(pnpmCatalogsToArray(workspaceFile));
|
|
143
|
+
if (workspaceFile.overrides) for (const [overridesKey, overridesVal] of Object.entries(workspaceFile.overrides)) {
|
|
144
|
+
const packageName = parsePkgAndParentSelector(overridesKey).targetPkg.name;
|
|
145
|
+
const depType = pnpmWorkspaceOverrides;
|
|
146
|
+
deps.push({
|
|
147
|
+
depName: overridesKey,
|
|
148
|
+
packageName,
|
|
149
|
+
depType,
|
|
150
|
+
...extractDependency(depType, packageName, overridesVal)
|
|
151
|
+
});
|
|
152
|
+
}
|
|
151
153
|
let pnpmShrinkwrap;
|
|
152
154
|
const filePath = getSiblingFileName(packageFile, "pnpm-lock.yaml");
|
|
153
155
|
if (await readLocalFile(filePath, "utf8")) pnpmShrinkwrap = filePath;
|
|
@@ -170,6 +172,6 @@ function pnpmCatalogsToArray({ catalog: defaultCatalogDeps, catalogs: namedCatal
|
|
|
170
172
|
return result;
|
|
171
173
|
}
|
|
172
174
|
//#endregion
|
|
173
|
-
export { detectPnpmWorkspaces, extractPnpmWorkspaceFile, getPnpmLock
|
|
175
|
+
export { detectPnpmWorkspaces, extractPnpmWorkspaceFile, getPnpmLock };
|
|
174
176
|
|
|
175
177
|
//# sourceMappingURL=pnpm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pnpm.js","names":[],"sources":["../../../../../lib/modules/manager/npm/extract/pnpm.ts"],"sourcesContent":["import {\n isNonEmptyObject,\n isNumber,\n isObject,\n isPlainObject,\n isString,\n} from '@sindresorhus/is';\nimport { findPackages } from 'find-packages';\nimport upath from 'upath';\nimport type { z } from 'zod/v3';\nimport { GlobalConfig } from '../../../../config/global.ts';\nimport { logger } from '../../../../logger/index.ts';\nimport {\n findLocalSiblingOrParent,\n getSiblingFileName,\n localPathExists,\n readLocalFile,\n} from '../../../../util/fs/index.ts';\nimport { parseSingleYaml } from '../../../../util/yaml.ts';\nimport type { PackageFile, PackageFileContent } from '../../types.ts';\nimport type { PnpmDependency, PnpmLockFile } from '../post-update/types.ts';\nimport type { PnpmCatalogs } from '../schema.ts';\nimport { PnpmWorkspaceFile } from '../schema.ts';\nimport type { NpmManagerData } from '../types.ts';\nimport { extractCatalogDeps } from './common/catalogs.ts';\nimport type { Catalog, LockFile } from './types.ts';\n\nfunction isPnpmLockfile(obj: any): obj is PnpmLockFile {\n return isPlainObject(obj) && 'lockfileVersion' in obj;\n}\n\nexport async function extractPnpmFilters(\n fileName: string,\n): Promise<string[] | undefined> {\n try {\n // TODO: use schema (#9610,#22198)\n const contents = parseSingleYaml<PnpmWorkspaceFile>(\n (await readLocalFile(fileName, 'utf8'))!,\n );\n if (\n !Array.isArray(contents.packages) ||\n !contents.packages.every((item) => isString(item))\n ) {\n logger.trace(\n { fileName },\n 'Failed to find required \"packages\" array in pnpm-workspace.yaml',\n );\n return undefined;\n }\n return contents.packages;\n } catch (err) {\n logger.trace({ fileName, err }, 'Failed to parse pnpm-workspace.yaml');\n return undefined;\n }\n}\n\nexport async function findPnpmWorkspace(\n packageFile: string,\n): Promise<{ lockFilePath: string; workspaceYamlPath: string } | null> {\n // search for pnpm-workspace.yaml\n const workspaceYamlPath = await findLocalSiblingOrParent(\n packageFile,\n 'pnpm-workspace.yaml',\n );\n if (!workspaceYamlPath) {\n logger.trace(\n { packageFile },\n 'Failed to locate pnpm-workspace.yaml in a parent directory.',\n );\n return null;\n }\n\n // search for pnpm-lock.yaml next to pnpm-workspace.yaml\n const pnpmLockfilePath = getSiblingFileName(\n workspaceYamlPath,\n 'pnpm-lock.yaml',\n );\n if (!(await localPathExists(pnpmLockfilePath))) {\n logger.trace(\n { workspaceYamlPath, packageFile },\n 'Failed to find a pnpm-lock.yaml sibling for the workspace.',\n );\n return null;\n }\n\n return {\n lockFilePath: pnpmLockfilePath,\n workspaceYamlPath,\n };\n}\n\nexport async function detectPnpmWorkspaces(\n packageFiles: Partial<PackageFile<NpmManagerData>>[],\n): Promise<void> {\n logger.debug(`Detecting pnpm Workspaces`);\n const packagePathCache = new Map<string, string[] | null>();\n\n for (const p of packageFiles) {\n const { packageFile, managerData } = p;\n const pnpmShrinkwrap = managerData?.pnpmShrinkwrap;\n\n // check if pnpmShrinkwrap-file has already been provided\n if (pnpmShrinkwrap) {\n logger.trace(\n { packageFile, pnpmShrinkwrap },\n 'Found an existing pnpm shrinkwrap file; skipping pnpm monorepo check.',\n );\n continue;\n }\n\n // search for corresponding pnpm workspace\n // TODO #22198\n const pnpmWorkspace = await findPnpmWorkspace(packageFile!);\n if (pnpmWorkspace === null) {\n continue;\n }\n const { workspaceYamlPath, lockFilePath } = pnpmWorkspace;\n\n // check if package matches workspace filter\n if (!packagePathCache.has(workspaceYamlPath)) {\n const filters = await extractPnpmFilters(workspaceYamlPath);\n const localDir = GlobalConfig.get('localDir');\n const packages = await findPackages(\n upath.dirname(upath.join(localDir, workspaceYamlPath)),\n {\n patterns: filters,\n // Match the ignores used in @pnpm/find-workspace-packages\n ignore: ['**/node_modules/**', '**/bower_components/**'],\n },\n );\n const packagePaths = packages.map((pkg) =>\n upath.join(pkg.dir, 'package.json'),\n );\n packagePathCache.set(workspaceYamlPath, packagePaths);\n }\n const packagePaths = packagePathCache.get(workspaceYamlPath);\n\n const isPackageInWorkspace = packagePaths?.some((p) =>\n p.endsWith(packageFile!),\n );\n\n if (isPackageInWorkspace) {\n p.managerData ??= {};\n p.managerData.pnpmShrinkwrap = lockFilePath;\n } else {\n logger.trace(\n { packageFile, workspaceYamlPath },\n `Didn't find the package in the pnpm workspace`,\n );\n }\n }\n}\n\nexport async function getPnpmLock(filePath: string): Promise<LockFile> {\n try {\n const pnpmLockRaw = await readLocalFile(filePath, 'utf8');\n if (!pnpmLockRaw) {\n throw new Error('Unable to read pnpm-lock.yaml');\n }\n\n const lockParsed = parseSingleYaml(pnpmLockRaw);\n if (!isPnpmLockfile(lockParsed)) {\n throw new Error('Invalid or empty lockfile');\n }\n logger.trace({ lockParsed }, 'pnpm lockfile parsed');\n\n // field lockfileVersion is type string in lockfileVersion = 6 and type number in < 6\n const lockfileVersion: number = isNumber(lockParsed.lockfileVersion)\n ? lockParsed.lockfileVersion\n : parseFloat(lockParsed.lockfileVersion);\n\n const lockedVersions = getLockedVersions(lockParsed);\n const lockedCatalogVersions = getLockedCatalogVersions(lockParsed);\n\n return {\n lockedVersionsWithPath: lockedVersions,\n lockedVersionsWithCatalog: lockedCatalogVersions,\n lockfileVersion,\n };\n } catch (err) {\n logger.debug({ filePath, err }, 'Warning: Exception parsing pnpm lockfile');\n return { lockedVersions: {} };\n }\n}\n\nfunction getLockedCatalogVersions(\n lockParsed: PnpmLockFile,\n): Record<string, Record<string, string>> {\n const lockedVersions: Record<string, Record<string, string>> = {};\n\n if (isNonEmptyObject(lockParsed.catalogs)) {\n for (const [catalog, dependencies] of Object.entries(lockParsed.catalogs)) {\n const versions: Record<string, string> = {};\n\n for (const [dep, versionCarrier] of Object.entries(dependencies)) {\n versions[dep] = versionCarrier.version;\n }\n\n lockedVersions[catalog] = versions;\n }\n }\n\n return lockedVersions;\n}\n\nfunction getLockedVersions(\n lockParsed: PnpmLockFile,\n): Record<string, Record<string, Record<string, string>>> {\n const lockedVersions: Record<\n string,\n Record<string, Record<string, string>>\n > = {};\n\n // monorepo\n if (isNonEmptyObject(lockParsed.importers)) {\n for (const [importer, imports] of Object.entries(lockParsed.importers)) {\n lockedVersions[importer] = getLockedDependencyVersions(imports);\n }\n }\n // normal repo\n else {\n lockedVersions['.'] = getLockedDependencyVersions(lockParsed);\n }\n\n return lockedVersions;\n}\n\nfunction getLockedDependencyVersions(\n obj: PnpmLockFile | Record<string, PnpmDependency>,\n): Record<string, Record<string, string>> {\n const dependencyTypes = [\n 'dependencies',\n 'devDependencies',\n 'optionalDependencies',\n ] as const;\n\n const res: Record<string, Record<string, string>> = {};\n for (const depType of dependencyTypes) {\n res[depType] = {};\n for (const [pkgName, versionCarrier] of Object.entries(\n obj[depType] ?? {},\n )) {\n let version: string;\n if (isObject(versionCarrier)) {\n version = versionCarrier.version;\n } else {\n version = versionCarrier;\n }\n\n const pkgVersion = version.split('(')[0].trim();\n res[depType][pkgName] = pkgVersion;\n }\n }\n\n return res;\n}\n\nexport function tryParsePnpmWorkspaceYaml(content: string):\n | {\n success: true;\n data: PnpmWorkspaceFile;\n }\n | { success: false; data?: never } {\n try {\n const data = parseSingleYaml(content, {\n customSchema: PnpmWorkspaceFile,\n });\n return { success: true, data };\n } catch {\n return { success: false };\n }\n}\n\ntype PnpmCatalogs = z.TypeOf<typeof PnpmCatalogs>;\n\nexport async function extractPnpmWorkspaceFile(\n catalogs: PnpmCatalogs,\n packageFile: string,\n): Promise<PackageFileContent<NpmManagerData> | null> {\n logger.trace(`pnpm.extractPnpmWorkspaceFile(${packageFile})`);\n\n const pnpmCatalogs = pnpmCatalogsToArray(catalogs);\n\n const deps = extractCatalogDeps(pnpmCatalogs);\n\n let pnpmShrinkwrap;\n const filePath = getSiblingFileName(packageFile, 'pnpm-lock.yaml');\n\n if (await readLocalFile(filePath, 'utf8')) {\n pnpmShrinkwrap = filePath;\n }\n\n return {\n deps,\n managerData: {\n pnpmShrinkwrap,\n },\n };\n}\n\nfunction pnpmCatalogsToArray({\n catalog: defaultCatalogDeps,\n catalogs: namedCatalogs,\n}: PnpmCatalogs): Catalog[] {\n const result: Catalog[] = [];\n\n if (defaultCatalogDeps !== undefined) {\n result.push({ name: 'default', dependencies: defaultCatalogDeps });\n }\n\n if (!namedCatalogs) {\n return result;\n }\n\n for (const [name, dependencies] of Object.entries(namedCatalogs)) {\n result.push({\n name,\n dependencies,\n });\n }\n\n return result;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pnpm.js","names":[],"sources":["../../../../../lib/modules/manager/npm/extract/pnpm.ts"],"sourcesContent":["import { parsePkgAndParentSelector } from '@pnpm/parse-overrides';\nimport {\n isNonEmptyObject,\n isNumber,\n isObject,\n isPlainObject,\n isString,\n} from '@sindresorhus/is';\nimport { findPackages } from 'find-packages';\nimport upath from 'upath';\nimport { GlobalConfig } from '../../../../config/global.ts';\nimport { logger } from '../../../../logger/index.ts';\nimport {\n findLocalSiblingOrParent,\n getSiblingFileName,\n localPathExists,\n readLocalFile,\n} from '../../../../util/fs/index.ts';\nimport { parseSingleYaml } from '../../../../util/yaml.ts';\nimport type { PackageFile, PackageFileContent } from '../../types.ts';\nimport { pnpmWorkspaceOverrides } from '../dep-types.ts';\nimport type { PnpmDependency, PnpmLockFile } from '../post-update/types.ts';\nimport type { PnpmCatalogs, PnpmWorkspaceFile } from '../schema.ts';\nimport type { NpmManagerData } from '../types.ts';\nimport { extractCatalogDeps } from './common/catalogs.ts';\nimport { extractDependency } from './common/dependency.ts';\nimport type { Catalog, LockFile } from './types.ts';\n\nfunction isPnpmLockfile(obj: any): obj is PnpmLockFile {\n return isPlainObject(obj) && 'lockfileVersion' in obj;\n}\n\nexport async function extractPnpmFilters(\n fileName: string,\n): Promise<string[] | undefined> {\n try {\n // TODO: use schema (#9610,#22198)\n const contents = parseSingleYaml<PnpmWorkspaceFile>(\n (await readLocalFile(fileName, 'utf8'))!,\n );\n if (\n !Array.isArray(contents.packages) ||\n !contents.packages.every((item) => isString(item))\n ) {\n logger.trace(\n { fileName },\n 'Failed to find required \"packages\" array in pnpm-workspace.yaml',\n );\n return undefined;\n }\n return contents.packages;\n } catch (err) {\n logger.trace({ fileName, err }, 'Failed to parse pnpm-workspace.yaml');\n return undefined;\n }\n}\n\nexport async function findPnpmWorkspace(\n packageFile: string,\n): Promise<{ lockFilePath: string; workspaceYamlPath: string } | null> {\n // search for pnpm-workspace.yaml\n const workspaceYamlPath = await findLocalSiblingOrParent(\n packageFile,\n 'pnpm-workspace.yaml',\n );\n if (!workspaceYamlPath) {\n logger.trace(\n { packageFile },\n 'Failed to locate pnpm-workspace.yaml in a parent directory.',\n );\n return null;\n }\n\n // search for pnpm-lock.yaml next to pnpm-workspace.yaml\n const pnpmLockfilePath = getSiblingFileName(\n workspaceYamlPath,\n 'pnpm-lock.yaml',\n );\n if (!(await localPathExists(pnpmLockfilePath))) {\n logger.trace(\n { workspaceYamlPath, packageFile },\n 'Failed to find a pnpm-lock.yaml sibling for the workspace.',\n );\n return null;\n }\n\n return {\n lockFilePath: pnpmLockfilePath,\n workspaceYamlPath,\n };\n}\n\nexport async function detectPnpmWorkspaces(\n packageFiles: Partial<PackageFile<NpmManagerData>>[],\n): Promise<void> {\n logger.debug(`Detecting pnpm Workspaces`);\n const packagePathCache = new Map<string, string[] | null>();\n\n for (const p of packageFiles) {\n const { packageFile, managerData } = p;\n const pnpmShrinkwrap = managerData?.pnpmShrinkwrap;\n\n // check if pnpmShrinkwrap-file has already been provided\n if (pnpmShrinkwrap) {\n logger.trace(\n { packageFile, pnpmShrinkwrap },\n 'Found an existing pnpm shrinkwrap file; skipping pnpm monorepo check.',\n );\n continue;\n }\n\n // search for corresponding pnpm workspace\n // TODO #22198\n const pnpmWorkspace = await findPnpmWorkspace(packageFile!);\n if (pnpmWorkspace === null) {\n continue;\n }\n const { workspaceYamlPath, lockFilePath } = pnpmWorkspace;\n\n // check if package matches workspace filter\n if (!packagePathCache.has(workspaceYamlPath)) {\n const filters = await extractPnpmFilters(workspaceYamlPath);\n const localDir = GlobalConfig.get('localDir');\n const packages = await findPackages(\n upath.dirname(upath.join(localDir, workspaceYamlPath)),\n {\n patterns: filters,\n // Match the ignores used in @pnpm/find-workspace-packages\n ignore: ['**/node_modules/**', '**/bower_components/**'],\n },\n );\n const packagePaths = packages.map((pkg) =>\n upath.join(pkg.dir, 'package.json'),\n );\n packagePathCache.set(workspaceYamlPath, packagePaths);\n }\n const packagePaths = packagePathCache.get(workspaceYamlPath);\n\n const isPackageInWorkspace = packagePaths?.some((p) =>\n p.endsWith(packageFile!),\n );\n\n if (isPackageInWorkspace) {\n p.managerData ??= {};\n p.managerData.pnpmShrinkwrap = lockFilePath;\n } else {\n logger.trace(\n { packageFile, workspaceYamlPath },\n `Didn't find the package in the pnpm workspace`,\n );\n }\n }\n}\n\nexport async function getPnpmLock(filePath: string): Promise<LockFile> {\n try {\n const pnpmLockRaw = await readLocalFile(filePath, 'utf8');\n if (!pnpmLockRaw) {\n throw new Error('Unable to read pnpm-lock.yaml');\n }\n\n const lockParsed = parseSingleYaml(pnpmLockRaw);\n if (!isPnpmLockfile(lockParsed)) {\n throw new Error('Invalid or empty lockfile');\n }\n logger.trace({ lockParsed }, 'pnpm lockfile parsed');\n\n // field lockfileVersion is type string in lockfileVersion = 6 and type number in < 6\n const lockfileVersion: number = isNumber(lockParsed.lockfileVersion)\n ? lockParsed.lockfileVersion\n : parseFloat(lockParsed.lockfileVersion);\n\n const lockedVersions = getLockedVersions(lockParsed);\n const lockedCatalogVersions = getLockedCatalogVersions(lockParsed);\n\n return {\n lockedVersionsWithPath: lockedVersions,\n lockedVersionsWithCatalog: lockedCatalogVersions,\n lockfileVersion,\n };\n } catch (err) {\n logger.debug({ filePath, err }, 'Warning: Exception parsing pnpm lockfile');\n return { lockedVersions: {} };\n }\n}\n\nfunction getLockedCatalogVersions(\n lockParsed: PnpmLockFile,\n): Record<string, Record<string, string>> {\n const lockedVersions: Record<string, Record<string, string>> = {};\n\n if (isNonEmptyObject(lockParsed.catalogs)) {\n for (const [catalog, dependencies] of Object.entries(lockParsed.catalogs)) {\n const versions: Record<string, string> = {};\n\n for (const [dep, versionCarrier] of Object.entries(dependencies)) {\n versions[dep] = versionCarrier.version;\n }\n\n lockedVersions[catalog] = versions;\n }\n }\n\n return lockedVersions;\n}\n\nfunction getLockedVersions(\n lockParsed: PnpmLockFile,\n): Record<string, Record<string, Record<string, string>>> {\n const lockedVersions: Record<\n string,\n Record<string, Record<string, string>>\n > = {};\n\n // monorepo\n if (isNonEmptyObject(lockParsed.importers)) {\n for (const [importer, imports] of Object.entries(lockParsed.importers)) {\n lockedVersions[importer] = getLockedDependencyVersions(imports);\n }\n }\n // normal repo\n else {\n lockedVersions['.'] = getLockedDependencyVersions(lockParsed);\n }\n\n return lockedVersions;\n}\n\nfunction getLockedDependencyVersions(\n obj: PnpmLockFile | Record<string, PnpmDependency>,\n): Record<string, Record<string, string>> {\n const dependencyTypes = [\n 'dependencies',\n 'devDependencies',\n 'optionalDependencies',\n ] as const;\n\n const res: Record<string, Record<string, string>> = {};\n for (const depType of dependencyTypes) {\n res[depType] = {};\n for (const [pkgName, versionCarrier] of Object.entries(\n obj[depType] ?? {},\n )) {\n let version: string;\n if (isObject(versionCarrier)) {\n version = versionCarrier.version;\n } else {\n version = versionCarrier;\n }\n\n const pkgVersion = version.split('(')[0].trim();\n res[depType][pkgName] = pkgVersion;\n }\n }\n\n return res;\n}\n\nexport async function extractPnpmWorkspaceFile(\n workspaceFile: PnpmWorkspaceFile,\n packageFile: string,\n): Promise<PackageFileContent<NpmManagerData> | null> {\n logger.trace(`pnpm.extractPnpmWorkspaceFile(${packageFile})`);\n\n const pnpmCatalogs = pnpmCatalogsToArray(workspaceFile);\n\n const deps = extractCatalogDeps(pnpmCatalogs);\n\n if (workspaceFile.overrides) {\n for (const [overridesKey, overridesVal] of Object.entries(\n workspaceFile.overrides,\n )) {\n // flat syntax: `parent>parent>child`\n const packageName =\n parsePkgAndParentSelector(overridesKey).targetPkg.name;\n const depType = pnpmWorkspaceOverrides;\n deps.push({\n depName: overridesKey,\n packageName,\n depType,\n ...extractDependency(depType, packageName, overridesVal),\n });\n }\n }\n\n let pnpmShrinkwrap;\n const filePath = getSiblingFileName(packageFile, 'pnpm-lock.yaml');\n\n if (await readLocalFile(filePath, 'utf8')) {\n pnpmShrinkwrap = filePath;\n }\n\n return {\n deps,\n managerData: {\n pnpmShrinkwrap,\n },\n };\n}\n\nfunction pnpmCatalogsToArray({\n catalog: defaultCatalogDeps,\n catalogs: namedCatalogs,\n}: PnpmCatalogs): Catalog[] {\n const result: Catalog[] = [];\n\n if (defaultCatalogDeps !== undefined) {\n result.push({ name: 'default', dependencies: defaultCatalogDeps });\n }\n\n if (!namedCatalogs) {\n return result;\n }\n\n for (const [name, dependencies] of Object.entries(namedCatalogs)) {\n result.push({\n name,\n dependencies,\n });\n }\n\n return result;\n}\n"],"mappings":"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"}
|
|
@@ -17,6 +17,7 @@ async function getLockedVersions(packageFiles) {
|
|
|
17
17
|
if (yarnLock) {
|
|
18
18
|
logger.trace("Found yarnLock");
|
|
19
19
|
lockFiles.push(yarnLock);
|
|
20
|
+
// v8 ignore else -- TODO: add test #40625
|
|
20
21
|
if (!lockFileCache[yarnLock]) {
|
|
21
22
|
logger.trace(`Retrieving/parsing ${yarnLock}`);
|
|
22
23
|
lockFileCache[yarnLock] = await getYarnLock(yarnLock);
|
|
@@ -90,9 +91,11 @@ async function getLockedVersions(packageFiles) {
|
|
|
90
91
|
const catalogName = pnpmCatalogDepTypeRe.exec(depType)?.groups?.version;
|
|
91
92
|
if (catalogName) {
|
|
92
93
|
const lockedVersion = semver.valid(lockFileCache[pnpmShrinkwrap].lockedVersionsWithCatalog?.[catalogName]?.[depName]);
|
|
94
|
+
// v8 ignore else -- TODO: add test #40625
|
|
93
95
|
if (isString(lockedVersion)) dep.lockedVersion = lockedVersion;
|
|
94
96
|
} else {
|
|
95
97
|
const lockedVersion = semver.valid(lockFileCache[pnpmShrinkwrap].lockedVersionsWithPath?.[relativeDir]?.[depType]?.[depName]);
|
|
98
|
+
// v8 ignore else -- TODO: add test #40625
|
|
96
99
|
if (isString(lockedVersion)) dep.lockedVersion = lockedVersion;
|
|
97
100
|
}
|
|
98
101
|
}
|