renovate 44.59.0 → 44.59.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/modules/manager/fingerprint.generated.js +1 -1
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/npm/post-update/npm.js +1 -0
- package/dist/modules/manager/npm/post-update/npm.js.map +1 -1
- package/dist/modules/versioning/rez/index.js +8 -1
- package/dist/modules/versioning/rez/index.js.map +1 -1
- package/dist/workers/repository/finalize/prune.js +4 -0
- package/dist/workers/repository/finalize/prune.js.map +1 -1
- package/dist/workers/repository/update/pr/changelog/releases.js +5 -3
- package/dist/workers/repository/update/pr/changelog/releases.js.map +1 -1
- package/package.json +1 -1
- package/renovate-schema.json +2 -2
|
@@ -75,7 +75,7 @@ hashMap.set("mise", "8509ff587ee410eeb94cbf1d4616c6a174b5f4110d0e748496edd8ed150
|
|
|
75
75
|
hashMap.set("mix", "ca855b0353a8087d91a63fba5cc097d11e0396a963f214a508279aef065707f0");
|
|
76
76
|
hashMap.set("nix", "f90bb8943129de40b50564b203df71bb86079dd134e204390a103535de1c5af7");
|
|
77
77
|
hashMap.set("nodenv", "ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8");
|
|
78
|
-
hashMap.set("npm", "
|
|
78
|
+
hashMap.set("npm", "5241d7e7a2f7fa530fea4ba33166619f4166e48ca8f88b074c8ae5f10f00e079");
|
|
79
79
|
hashMap.set("nuget", "4818fdcf3258a19228004c62a605c3fb4b6665ca09df524ab37f712ea201db89");
|
|
80
80
|
hashMap.set("nvm", "3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322");
|
|
81
81
|
hashMap.set("ocb", "032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprint.generated.js","names":[],"sources":["../../../lib/modules/manager/fingerprint.generated.ts"],"sourcesContent":["export const hashMap = new Map<string, string>();\n\nhashMap.set('ansible','1d3568f42393d697f8f96d461b72077ee7a1044b654e87667a12f861b3083111');\nhashMap.set('ansible-galaxy','8226d47128f2018825d4d6f84794e3183eb79c706045fa7e88491edd5e64106f');\nhashMap.set('ant','2df5943cf0ed19a21b94df13729dbb925655548130caf37e3e22bebaed518e17');\nhashMap.set('apm','5cf019f2a8d8572f990875a2834f9542bbc36abf302e931b11f916d9dd14702d');\nhashMap.set('argocd','5d35b1992e53130bf83b0e59a0f90ccd3a78919974c69044f306dc5d162f48ce');\nhashMap.set('asdf','430eb99b58171700c8a59c78b9e648575e9b176b781d90dd10a710f7b69015bb');\nhashMap.set('azure-pipelines','4f635b0ecd388ee266d992e8281fd40e3db2f5867d86fc1cbce72dc33a66e796');\nhashMap.set('batect','bd9208444eff1a4958061484db66a47b616c31f15a8d49d23b75c4560fcee83e');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','4994a8bd86d5bfb169d67c08efd8509b58c368c2bf3dd9bbe42553c0fabc3f1a');\nhashMap.set('bazel-module','f7d369015f9028c40cb79f2367d0734f18c0647d1d446d0a165007c3723c3414');\nhashMap.set('bazelisk','d71489650feefb0dbbe7461f924cb50e41c8eef8fe2e11acdec2d42d0212c8ef');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','59c0503494ab1442b127914503c01b97ac17b6742b19c632292d5aa24de115cd');\nhashMap.set('bitrise','478dfd316221fad7c29e177c70d1018d832fb2626b53308a5d0f1f0380e69f42');\nhashMap.set('buildkite','a93effb1f1c5d65b3277c3b4709924eacde282e8efd028a8e3d8c1ce3ef69407');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','691aa0bd20c20f7e05be5d231ed14dccdf81b9399d062448794176403aa53d94');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','d14594256fa4fbc3b2b264437d67b718dbd2e30e1a7060cff5552c4257dec875');\nhashMap.set('cake','ed6d14c96161f1d3d927adc7e333b96585164e1f25151a87990914d57ae17fe1');\nhashMap.set('cargo','637adb103a887ad496e469e25182c9cd7f3b4acb9eddfcbca9a1326bac3613cc');\nhashMap.set('cdnurl','d3edf6cdc38e92eb43ff5a2b4e8df6a6a13154cf83244725c39e28d7e6ea9177');\nhashMap.set('circleci','91cbeb33ea20f9838e2c81a1195eb806f0b38fa282bc3679f62552f20575ca85');\nhashMap.set('cloudbuild','8c0c739f7e4082bbfe8e3fdffebaf43e26f70a1314d95b306e9b93e4f4297886');\nhashMap.set('cocoapods','3d3affcaab991e9a27916dfbc8bdddb1066be28303c37be781695bfc0645aa81');\nhashMap.set('composer','d84def5d2f07adb0b5c37195fa115a3a9d86194b57eae014d7b43d2d59fe7d1c');\nhashMap.set('conan','74ca922a0ffdf1a9dd44b83eb2b3a36c56c7d792031e3a4a484f293046be3ecd');\nhashMap.set('copier','4ceb2d2ef2cea88d81ebf7c959cc8f36691ed148000b4ee7e64573a9ba4ae2c5');\nhashMap.set('cpanfile','07813fec3f3c2197056500e9266a0553b9774c02f2c74d5ca2e213188c7c12d3');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deno','517b6d7cd75d8cf7a44d4dbac36474333e87a6e22b0f62a5228ee7c1f07e8282');\nhashMap.set('deps-edn','c87dd5e88587147ad1a78f047b814f3c4aa60d6de30d0c49d849391eeaf1b64c');\nhashMap.set('devbox','a608d1e6db93a8f997d41f8dee7b67533452a956057865978342e2819272e0a9');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','5441af5b5abf8d347e46002d47f02f85743401bda28232f49fb7b3bbb772a4fb');\nhashMap.set('dockerfile','54122792bf8ea0be98e0a0716e627e3115b40a5f0155ccd7ae0cfc52424a3478');\nhashMap.set('droneci','237c8de87b9bf653fb943b56e84e99c45f6d86ae27d86e599b3f3f99c35ba8ee');\nhashMap.set('fleet','d73d5d35f10df0599a561d9c8d25f3935350407d0e3bd3a1d1545295f278912e');\nhashMap.set('flux','70833dd068ea0a746a9392469e7904021562c7629428d0cd554603bad4eb6ce5');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','f9906351ecb88ec54ebb51bbc89bdc7499dafdbc3c0337c0265f3290b8094815');\nhashMap.set('github-actions','3dea0c91977c92d9c225c16cf27ce04a2dd7a1b652f0382c59d19b4685312cb3');\nhashMap.set('gitlabci','33c264edf7837fb8fbc4cf0078c8bd2d5a75431039b1db65bf47356df7753125');\nhashMap.set('gitlabci-include','ef696c478c2ac1723b3aca070ba9779be0e702fff0844054251ba0029523d0eb');\nhashMap.set('glasskube','93e7b9000a17efa15a1abaaf320b5af9169b1ecd828fc0c881d98570ef9d9e30');\nhashMap.set('gleam','02389785183c39d2896d7893414c5e1060023f95c1fe7b595bd06cc5c1186d39');\nhashMap.set('gomod','dc59f10824ae55ac4044ea2e487feb6e3ca2d365e1d518a61548d1dd1932e345');\nhashMap.set('gradle','1780fe7560babe735da868a0dd1a013fea76d82abfde62028cd48f9de42fb52c');\nhashMap.set('gradle-wrapper','e16500ce08dd35ecb3ddcc3c79989648087b8249c3a95413a991627d064657ca');\nhashMap.set('haskell-cabal','f232d0e883235f74ed71fd9de4a7468e5fcbda9a1af5beb56c24657f7bf2e891');\nhashMap.set('helm-requirements','4d90e5e18a380876ad48e21e1ad88ea62e25d973a1ddaa3763447fc0a9f9915b');\nhashMap.set('helm-values','b5c52c6a27d805557418c585c5d3030c95ee641d53057021f3fe060f81b6e1af');\nhashMap.set('helmfile','0adc0092400df2075e1c4580ebe35bbc3b638ebee67cc948a4338094cb16a8ae');\nhashMap.set('helmsman','ef9680c612f702c7f07aea9b6e5d811e91214dcfa5755c9f3803e9528090935e');\nhashMap.set('helmv3','572f7b0b746377e0c5d6f5ad5c0b78cbed6782a561be77263cf45620b6fdad0c');\nhashMap.set('hermit','61e132cfccbe4e3884801a3728f3391455c214811a33c1f733b0dea7122bbbb6');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','9c64a4f1475b1c2052372e566c9190f32ae8acd1c54313031d55ae8772388367');\nhashMap.set('html','67c5f3c5c58e96f5dd257ba5987d900cf7fef81d667c3640e96c847b37de35a8');\nhashMap.set('jenkins','268ebfc8a1caf3edeb2192c2b1b2fa4bf18a78a3e731ba20a6c104940a5539f3');\nhashMap.set('jsonnet-bundler','e26b390528f2de43dc572bcee7cb15bb4671d2df75413a56caf1ddcee683a0ee');\nhashMap.set('kotlin-script','8a327ba00370d0df5ee656033f0526b898204ef6805cc5692221a71ca2ad654d');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','14bc841079d278b8e03b1eb184d94fef3df8811fa25beddc7ac9e6e2697b43b5');\nhashMap.set('leiningen','133fca2c3423f53f2ccc22518153ddbcafbf0f4812376c77e952eb3d24d81f85');\nhashMap.set('maven','f084cdc88320ca1e82af957d0008e7c9ce991d3282cb428f3108a5722239cead');\nhashMap.set('maven-wrapper','db967206d960b12d7c58d78132808d3c412087ababf5c59444262782e4434c6a');\nhashMap.set('meteor','4a93a326b27bedfe52118e27e06f39fecd7c55bd4cd7fccec4cb120cac14cec4');\nhashMap.set('mint','248fe4f1ea5c985921c286785792c97e06fc41f402b2d45df82f6aecd17f710e');\nhashMap.set('mise','8509ff587ee410eeb94cbf1d4616c6a174b5f4110d0e748496edd8ed150d8b9b');\nhashMap.set('mix','ca855b0353a8087d91a63fba5cc097d11e0396a963f214a508279aef065707f0');\nhashMap.set('nix','f90bb8943129de40b50564b203df71bb86079dd134e204390a103535de1c5af7');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','e1e3dd4fe2e342b7c2b8762efec7f4d1eb9b4f4083ecb5cbb44b858f7ea82bab');\nhashMap.set('nuget','4818fdcf3258a19228004c62a605c3fb4b6665ca09df524ab37f712ea201db89');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','32233a1a8a2725699d7448ba438e3d0b78141f7799cd2b588de278d41e26ed10');\nhashMap.set('pep621','db4dc12af1643b6883819bc8d0b4a7fc4533384e5678a61745710f0087f97ab9');\nhashMap.set('pep723','b96683163de63ed93207ec0538066705b1e58a1cd5b8bd11c63fc28b26bddba1');\nhashMap.set('pip-compile','a114e2aa275e4e2690b010ea21adef1484fdc696f89f30dedf8c795167e49048');\nhashMap.set('pip_requirements','f07c39050e34e8da6084e7f43cb2222e7ef700bb66de895ee206505491cb8f4f');\nhashMap.set('pip_setup','0175fe550c19d9bd31c978bd83fdc088cb40fcacd5d6751f640164274ae64e61');\nhashMap.set('pipenv','f4c5d17bfcb6f5cb8b85584d4b782379daa69ee85936ca79ef01172e5d6652a2');\nhashMap.set('pixi','3732f052617efd5007ddbe31091a2ba026909288bac4cbbe6d2bd6ac64d85393');\nhashMap.set('poetry','5a638977241e2a8d8a2ba310388b10db533612552ab2c93514cb0960a2b725cd');\nhashMap.set('pre-commit','17a5f183985ebffe98785a541d3609bf25efedc387deb3d50e9f00f02b25f615');\nhashMap.set('proto','412053d4550026b4ace490b46e970915b87ec1abf0b0a0c6c8c58ccf1fc16843');\nhashMap.set('pub','3ade8bf8232eda456e24909b4d1abce066e674c9ea9aa250c567cf621a96bf9b');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','e1fc88a4e14cd595e89bb3d79b4adf2add3ce5eb80f75276e712c32598cca53d');\nhashMap.set('renovate-config','ca60beee2e3b871ea1216fa9df9a501f7ed355fe7da29e12509e56a124a78e69');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('rust-toolchain','6ace53db02874d73620d2d872291839820a512a9529c42d174358c692e5db720');\nhashMap.set('sbt','e508c2e2fb8d44e6cbec20f449c8eed096728566e6058187269c637930d388fb');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','7dea08c5708625e753bd56918bc214df7fb4d8543a26e936926a21ab43b5f785');\nhashMap.set('smithy','9641b91d065ffb63be0dd888139a0402dba41e550f8b44c592db9daf52109100');\nhashMap.set('sveltos','8d2558bce5fbcdfa4a96bf11de6f40bf6d93179025bbf6a9eeb0b7e02e8e9c00');\nhashMap.set('swift','1e464136321889cdf9a4eb0cf32c459fbf897e0c75bbf44c2ba5a51c0a002bfe');\nhashMap.set('tekton','fdc5b9b5edec2a90cda2f858f3ebc532aa8efb1187d1e0b7c89b07796e9cb6cd');\nhashMap.set('terraform','73f9d1753d1077585bd264163b7bfacaf6cf20b586b233cbb8cf058a9fce0103');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','ffcbaa67dd65f064d43f8c121c1006115eab1879c4bd38de263b9b90a009c118');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','31247d37bc80aae17039bfa21bd989c5717730c5ef10cf2a6f09841576d012ec');\nhashMap.set('travis','bb482a0195cd009ec3896a6227bb95617f5c84bedb518c7d971e50c62235d9ca');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','8901ee24116f7998bddcfc8d2492bff8138d9c66a23caea75c24d594ef4a504d');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('xcodegen','dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683');\nhashMap.set('jsonata','416bcf61144b276b3112814c6e6d261aa29608f46fbb0516c471d35c16f8f0d7');\nhashMap.set('regex','dbe6889ea021a05127fed06226d73366fdada2ae577147a5c027996fd325416e');"],"mappings":";AAAA,MAAa,0BAAU,IAAI,IAAoB;AAE/C,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,mBAAkB,kEAAkE;AAChG,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,gBAAe,kEAAkE;AAC7F,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,uBAAsB,kEAAkE;AACpG,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,eAAc,kEAAkE;AAC5F,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,gBAAe,kEAAkE;AAC7F,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,oBAAmB,kEAAkE;AACjG,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,iBAAgB,kEAAkE;AAC9F,QAAQ,IAAI,qBAAoB,kEAAkE;AAClG,QAAQ,IAAI,eAAc,kEAAkE;AAC5F,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,0BAAyB,kEAAkE;AACvG,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,mBAAkB,kEAAkE;AAChG,QAAQ,IAAI,iBAAgB,kEAAkE;AAC9F,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,iBAAgB,kEAAkE;AAC9F,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,eAAc,kEAAkE;AAC5F,QAAQ,IAAI,oBAAmB,kEAAkE;AACjG,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,mBAAkB,kEAAkE;AAChG,QAAQ,IAAI,gBAAe,kEAAkE;AAC7F,QAAQ,IAAI,mBAAkB,kEAAkE;AAChG,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,qBAAoB,kEAAkE;AAClG,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,sBAAqB,kEAAkE;AACnG,QAAQ,IAAI,iBAAgB,kEAAkE;AAC9F,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,SAAQ,kEAAkE"}
|
|
1
|
+
{"version":3,"file":"fingerprint.generated.js","names":[],"sources":["../../../lib/modules/manager/fingerprint.generated.ts"],"sourcesContent":["export const hashMap = new Map<string, string>();\n\nhashMap.set('ansible','1d3568f42393d697f8f96d461b72077ee7a1044b654e87667a12f861b3083111');\nhashMap.set('ansible-galaxy','8226d47128f2018825d4d6f84794e3183eb79c706045fa7e88491edd5e64106f');\nhashMap.set('ant','2df5943cf0ed19a21b94df13729dbb925655548130caf37e3e22bebaed518e17');\nhashMap.set('apm','5cf019f2a8d8572f990875a2834f9542bbc36abf302e931b11f916d9dd14702d');\nhashMap.set('argocd','5d35b1992e53130bf83b0e59a0f90ccd3a78919974c69044f306dc5d162f48ce');\nhashMap.set('asdf','430eb99b58171700c8a59c78b9e648575e9b176b781d90dd10a710f7b69015bb');\nhashMap.set('azure-pipelines','4f635b0ecd388ee266d992e8281fd40e3db2f5867d86fc1cbce72dc33a66e796');\nhashMap.set('batect','bd9208444eff1a4958061484db66a47b616c31f15a8d49d23b75c4560fcee83e');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','4994a8bd86d5bfb169d67c08efd8509b58c368c2bf3dd9bbe42553c0fabc3f1a');\nhashMap.set('bazel-module','f7d369015f9028c40cb79f2367d0734f18c0647d1d446d0a165007c3723c3414');\nhashMap.set('bazelisk','d71489650feefb0dbbe7461f924cb50e41c8eef8fe2e11acdec2d42d0212c8ef');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','59c0503494ab1442b127914503c01b97ac17b6742b19c632292d5aa24de115cd');\nhashMap.set('bitrise','478dfd316221fad7c29e177c70d1018d832fb2626b53308a5d0f1f0380e69f42');\nhashMap.set('buildkite','a93effb1f1c5d65b3277c3b4709924eacde282e8efd028a8e3d8c1ce3ef69407');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','691aa0bd20c20f7e05be5d231ed14dccdf81b9399d062448794176403aa53d94');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','d14594256fa4fbc3b2b264437d67b718dbd2e30e1a7060cff5552c4257dec875');\nhashMap.set('cake','ed6d14c96161f1d3d927adc7e333b96585164e1f25151a87990914d57ae17fe1');\nhashMap.set('cargo','637adb103a887ad496e469e25182c9cd7f3b4acb9eddfcbca9a1326bac3613cc');\nhashMap.set('cdnurl','d3edf6cdc38e92eb43ff5a2b4e8df6a6a13154cf83244725c39e28d7e6ea9177');\nhashMap.set('circleci','91cbeb33ea20f9838e2c81a1195eb806f0b38fa282bc3679f62552f20575ca85');\nhashMap.set('cloudbuild','8c0c739f7e4082bbfe8e3fdffebaf43e26f70a1314d95b306e9b93e4f4297886');\nhashMap.set('cocoapods','3d3affcaab991e9a27916dfbc8bdddb1066be28303c37be781695bfc0645aa81');\nhashMap.set('composer','d84def5d2f07adb0b5c37195fa115a3a9d86194b57eae014d7b43d2d59fe7d1c');\nhashMap.set('conan','74ca922a0ffdf1a9dd44b83eb2b3a36c56c7d792031e3a4a484f293046be3ecd');\nhashMap.set('copier','4ceb2d2ef2cea88d81ebf7c959cc8f36691ed148000b4ee7e64573a9ba4ae2c5');\nhashMap.set('cpanfile','07813fec3f3c2197056500e9266a0553b9774c02f2c74d5ca2e213188c7c12d3');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deno','517b6d7cd75d8cf7a44d4dbac36474333e87a6e22b0f62a5228ee7c1f07e8282');\nhashMap.set('deps-edn','c87dd5e88587147ad1a78f047b814f3c4aa60d6de30d0c49d849391eeaf1b64c');\nhashMap.set('devbox','a608d1e6db93a8f997d41f8dee7b67533452a956057865978342e2819272e0a9');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','5441af5b5abf8d347e46002d47f02f85743401bda28232f49fb7b3bbb772a4fb');\nhashMap.set('dockerfile','54122792bf8ea0be98e0a0716e627e3115b40a5f0155ccd7ae0cfc52424a3478');\nhashMap.set('droneci','237c8de87b9bf653fb943b56e84e99c45f6d86ae27d86e599b3f3f99c35ba8ee');\nhashMap.set('fleet','d73d5d35f10df0599a561d9c8d25f3935350407d0e3bd3a1d1545295f278912e');\nhashMap.set('flux','70833dd068ea0a746a9392469e7904021562c7629428d0cd554603bad4eb6ce5');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','f9906351ecb88ec54ebb51bbc89bdc7499dafdbc3c0337c0265f3290b8094815');\nhashMap.set('github-actions','3dea0c91977c92d9c225c16cf27ce04a2dd7a1b652f0382c59d19b4685312cb3');\nhashMap.set('gitlabci','33c264edf7837fb8fbc4cf0078c8bd2d5a75431039b1db65bf47356df7753125');\nhashMap.set('gitlabci-include','ef696c478c2ac1723b3aca070ba9779be0e702fff0844054251ba0029523d0eb');\nhashMap.set('glasskube','93e7b9000a17efa15a1abaaf320b5af9169b1ecd828fc0c881d98570ef9d9e30');\nhashMap.set('gleam','02389785183c39d2896d7893414c5e1060023f95c1fe7b595bd06cc5c1186d39');\nhashMap.set('gomod','dc59f10824ae55ac4044ea2e487feb6e3ca2d365e1d518a61548d1dd1932e345');\nhashMap.set('gradle','1780fe7560babe735da868a0dd1a013fea76d82abfde62028cd48f9de42fb52c');\nhashMap.set('gradle-wrapper','e16500ce08dd35ecb3ddcc3c79989648087b8249c3a95413a991627d064657ca');\nhashMap.set('haskell-cabal','f232d0e883235f74ed71fd9de4a7468e5fcbda9a1af5beb56c24657f7bf2e891');\nhashMap.set('helm-requirements','4d90e5e18a380876ad48e21e1ad88ea62e25d973a1ddaa3763447fc0a9f9915b');\nhashMap.set('helm-values','b5c52c6a27d805557418c585c5d3030c95ee641d53057021f3fe060f81b6e1af');\nhashMap.set('helmfile','0adc0092400df2075e1c4580ebe35bbc3b638ebee67cc948a4338094cb16a8ae');\nhashMap.set('helmsman','ef9680c612f702c7f07aea9b6e5d811e91214dcfa5755c9f3803e9528090935e');\nhashMap.set('helmv3','572f7b0b746377e0c5d6f5ad5c0b78cbed6782a561be77263cf45620b6fdad0c');\nhashMap.set('hermit','61e132cfccbe4e3884801a3728f3391455c214811a33c1f733b0dea7122bbbb6');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','9c64a4f1475b1c2052372e566c9190f32ae8acd1c54313031d55ae8772388367');\nhashMap.set('html','67c5f3c5c58e96f5dd257ba5987d900cf7fef81d667c3640e96c847b37de35a8');\nhashMap.set('jenkins','268ebfc8a1caf3edeb2192c2b1b2fa4bf18a78a3e731ba20a6c104940a5539f3');\nhashMap.set('jsonnet-bundler','e26b390528f2de43dc572bcee7cb15bb4671d2df75413a56caf1ddcee683a0ee');\nhashMap.set('kotlin-script','8a327ba00370d0df5ee656033f0526b898204ef6805cc5692221a71ca2ad654d');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','14bc841079d278b8e03b1eb184d94fef3df8811fa25beddc7ac9e6e2697b43b5');\nhashMap.set('leiningen','133fca2c3423f53f2ccc22518153ddbcafbf0f4812376c77e952eb3d24d81f85');\nhashMap.set('maven','f084cdc88320ca1e82af957d0008e7c9ce991d3282cb428f3108a5722239cead');\nhashMap.set('maven-wrapper','db967206d960b12d7c58d78132808d3c412087ababf5c59444262782e4434c6a');\nhashMap.set('meteor','4a93a326b27bedfe52118e27e06f39fecd7c55bd4cd7fccec4cb120cac14cec4');\nhashMap.set('mint','248fe4f1ea5c985921c286785792c97e06fc41f402b2d45df82f6aecd17f710e');\nhashMap.set('mise','8509ff587ee410eeb94cbf1d4616c6a174b5f4110d0e748496edd8ed150d8b9b');\nhashMap.set('mix','ca855b0353a8087d91a63fba5cc097d11e0396a963f214a508279aef065707f0');\nhashMap.set('nix','f90bb8943129de40b50564b203df71bb86079dd134e204390a103535de1c5af7');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','5241d7e7a2f7fa530fea4ba33166619f4166e48ca8f88b074c8ae5f10f00e079');\nhashMap.set('nuget','4818fdcf3258a19228004c62a605c3fb4b6665ca09df524ab37f712ea201db89');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','32233a1a8a2725699d7448ba438e3d0b78141f7799cd2b588de278d41e26ed10');\nhashMap.set('pep621','db4dc12af1643b6883819bc8d0b4a7fc4533384e5678a61745710f0087f97ab9');\nhashMap.set('pep723','b96683163de63ed93207ec0538066705b1e58a1cd5b8bd11c63fc28b26bddba1');\nhashMap.set('pip-compile','a114e2aa275e4e2690b010ea21adef1484fdc696f89f30dedf8c795167e49048');\nhashMap.set('pip_requirements','f07c39050e34e8da6084e7f43cb2222e7ef700bb66de895ee206505491cb8f4f');\nhashMap.set('pip_setup','0175fe550c19d9bd31c978bd83fdc088cb40fcacd5d6751f640164274ae64e61');\nhashMap.set('pipenv','f4c5d17bfcb6f5cb8b85584d4b782379daa69ee85936ca79ef01172e5d6652a2');\nhashMap.set('pixi','3732f052617efd5007ddbe31091a2ba026909288bac4cbbe6d2bd6ac64d85393');\nhashMap.set('poetry','5a638977241e2a8d8a2ba310388b10db533612552ab2c93514cb0960a2b725cd');\nhashMap.set('pre-commit','17a5f183985ebffe98785a541d3609bf25efedc387deb3d50e9f00f02b25f615');\nhashMap.set('proto','412053d4550026b4ace490b46e970915b87ec1abf0b0a0c6c8c58ccf1fc16843');\nhashMap.set('pub','3ade8bf8232eda456e24909b4d1abce066e674c9ea9aa250c567cf621a96bf9b');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','e1fc88a4e14cd595e89bb3d79b4adf2add3ce5eb80f75276e712c32598cca53d');\nhashMap.set('renovate-config','ca60beee2e3b871ea1216fa9df9a501f7ed355fe7da29e12509e56a124a78e69');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('rust-toolchain','6ace53db02874d73620d2d872291839820a512a9529c42d174358c692e5db720');\nhashMap.set('sbt','e508c2e2fb8d44e6cbec20f449c8eed096728566e6058187269c637930d388fb');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','7dea08c5708625e753bd56918bc214df7fb4d8543a26e936926a21ab43b5f785');\nhashMap.set('smithy','9641b91d065ffb63be0dd888139a0402dba41e550f8b44c592db9daf52109100');\nhashMap.set('sveltos','8d2558bce5fbcdfa4a96bf11de6f40bf6d93179025bbf6a9eeb0b7e02e8e9c00');\nhashMap.set('swift','1e464136321889cdf9a4eb0cf32c459fbf897e0c75bbf44c2ba5a51c0a002bfe');\nhashMap.set('tekton','fdc5b9b5edec2a90cda2f858f3ebc532aa8efb1187d1e0b7c89b07796e9cb6cd');\nhashMap.set('terraform','73f9d1753d1077585bd264163b7bfacaf6cf20b586b233cbb8cf058a9fce0103');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','ffcbaa67dd65f064d43f8c121c1006115eab1879c4bd38de263b9b90a009c118');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','31247d37bc80aae17039bfa21bd989c5717730c5ef10cf2a6f09841576d012ec');\nhashMap.set('travis','bb482a0195cd009ec3896a6227bb95617f5c84bedb518c7d971e50c62235d9ca');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','8901ee24116f7998bddcfc8d2492bff8138d9c66a23caea75c24d594ef4a504d');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('xcodegen','dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683');\nhashMap.set('jsonata','416bcf61144b276b3112814c6e6d261aa29608f46fbb0516c471d35c16f8f0d7');\nhashMap.set('regex','dbe6889ea021a05127fed06226d73366fdada2ae577147a5c027996fd325416e');"],"mappings":"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"}
|
|
@@ -153,6 +153,7 @@ async function generateLockFile(lockFileDir, env, filename, config = {}, upgrade
|
|
|
153
153
|
commands.push(updateCmd);
|
|
154
154
|
}
|
|
155
155
|
if (upgrades.some((upgrade) => upgrade.isRemediation)) commands.push(`npm install ${cmdOptions}${beforeFlag}`.trim());
|
|
156
|
+
if (upgrades.some((upgrade) => upgrade.isLockFileMaintenance) && !postUpdateOptions?.includes("npmInstallTwice")) commands.push(`npm install ${cmdOptions}${beforeFlag}`.trim());
|
|
156
157
|
if (config.postUpdateOptions?.includes("npmDedupe") && !supportsPreferDedupeFlag) {
|
|
157
158
|
logger.debug("Performing npm dedupe after installation");
|
|
158
159
|
commands.push("npm dedupe");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npm.js","names":[],"sources":["../../../../../lib/modules/manager/npm/post-update/npm.ts"],"sourcesContent":["// TODO: types (#22198)\nimport { isNonEmptyString, isNumber, isString } from '@sindresorhus/is';\nimport ini from 'ini';\nimport { DateTime } from 'luxon';\nimport semver from 'semver';\nimport { quote } from 'shlex';\nimport upath from 'upath';\nimport { GlobalConfig } from '../../../../config/global.ts';\nimport {\n SYSTEM_INSUFFICIENT_DISK_SPACE,\n TEMPORARY_ERROR,\n} from '../../../../constants/error-messages.ts';\nimport { logger } from '../../../../logger/index.ts';\nimport { exec, getToolSettingsOptions } from '../../../../util/exec/index.ts';\nimport type {\n ExecOptions,\n ExtraEnv,\n ToolConstraint,\n} from '../../../../util/exec/types.ts';\nimport {\n deleteLocalFile,\n localPathExists,\n readLocalFile,\n renameLocalFile,\n} from '../../../../util/fs/index.ts';\nimport { minimatch } from '../../../../util/minimatch.ts';\nimport { toMs } from '../../../../util/pretty-time.ts';\nimport { regEx } from '../../../../util/regex.ts';\nimport { Result } from '../../../../util/result.ts';\nimport { trimSlashes } from '../../../../util/url.ts';\nimport type { PostUpdateConfig, Upgrade } from '../../types.ts';\nimport { PackageLock } from '../schema.ts';\nimport { composeLockFile, parseLockFile } from '../utils.ts';\nimport { getNodeToolConstraint } from './node-version.ts';\nimport type { GenerateLockFileResult, NpmrcCooldownResult } from './types.ts';\nimport {\n getNodeOptions,\n getPackageManagerVersion,\n lazyLoadPackageJson,\n} from './utils.ts';\n\nexport function parseNpmrcCooldownDate(\n npmrcContent: string | null,\n): NpmrcCooldownResult | null {\n if (!npmrcContent) {\n return null;\n }\n\n const parsed = ini.parse(npmrcContent);\n\n const before = parsed.before;\n if (isNonEmptyString(before)) {\n const dt = DateTime.fromISO(before, { zone: 'utc' });\n if (dt.isValid) {\n return { date: dt, source: 'before' };\n }\n logger.debug(`Invalid before date in .npmrc: ${before}, ignoring`);\n }\n\n const minReleaseAge = parsed['min-release-age'];\n if (isNonEmptyString(minReleaseAge)) {\n const days = parseInt(minReleaseAge, 10);\n if (isNumber(days) && days >= 0) {\n return {\n date: DateTime.now().minus({ days }).toUTC(),\n source: 'min-release-age',\n };\n }\n logger.debug(\n `Invalid min-release-age in .npmrc: ${minReleaseAge}, ignoring`,\n );\n }\n\n return null;\n}\n\nasync function getNpmConstraintFromPackageLock(\n lockFileDir: string,\n filename: string,\n): Promise<string | null> {\n const packageLockFileName = upath.join(lockFileDir, filename);\n const packageLockContents = await readLocalFile(packageLockFileName, 'utf8');\n const packageLockJson = Result.parse(\n packageLockContents,\n PackageLock,\n ).unwrapOrNull();\n if (!packageLockJson) {\n logger.debug(`Could not parse ${packageLockFileName}`);\n return null;\n }\n const { lockfileVersion } = packageLockJson;\n if (lockfileVersion === 1) {\n logger.debug(`Using npm constraint <7 for lockfileVersion=1`);\n return `<7`;\n }\n if (lockfileVersion === 2) {\n logger.debug(`Using npm constraint <9 for lockfileVersion=2`);\n return `<9`;\n }\n return null;\n}\n\nexport async function generateLockFile(\n lockFileDir: string,\n env: NodeJS.ProcessEnv,\n filename: string,\n config: Partial<PostUpdateConfig> = {},\n upgrades: Upgrade[] = [],\n npmrcContent: string | null = null,\n): Promise<GenerateLockFileResult> {\n // TODO: don't assume package-lock.json is in the same directory\n const lockFileName = upath.join(lockFileDir, filename);\n\n logger.debug(`Spawning npm install to create ${lockFileDir}/${filename}`);\n const { skipInstalls, postUpdateOptions } = config;\n\n let lockFile: string | null = null;\n let beforeFallback = false;\n try {\n const lazyPkgJson = lazyLoadPackageJson(lockFileDir);\n const npmToolConstraint: ToolConstraint = {\n toolName: 'npm',\n constraint:\n config.constraints?.npm ??\n getPackageManagerVersion('npm', await lazyPkgJson.getValue()) ??\n (await getNpmConstraintFromPackageLock(lockFileDir, filename)) ??\n null,\n };\n const supportsPreferDedupeFlag =\n !npmToolConstraint.constraint ||\n semver.intersects('>=7.0.0', npmToolConstraint.constraint);\n let commands: string[] = [];\n let cmdOptions = '';\n if (\n (postUpdateOptions?.includes('npmDedupe') === true &&\n !supportsPreferDedupeFlag) ||\n skipInstalls === false\n ) {\n logger.debug('Performing node_modules install');\n cmdOptions += '--no-audit';\n } else {\n logger.debug('Updating lock file only');\n cmdOptions += '--package-lock-only --no-audit';\n }\n\n if (postUpdateOptions?.includes('npmDedupe') && supportsPreferDedupeFlag) {\n logger.debug('Deduplicate dependencies on installation');\n cmdOptions += ' --prefer-dedupe';\n }\n\n if (!GlobalConfig.get('allowScripts') || config.ignoreScripts) {\n cmdOptions += ' --ignore-scripts';\n }\n\n let beforeFlag = '';\n if (config.minimumReleaseAge) {\n const ms = toMs(config.minimumReleaseAge);\n if (ms === null) {\n logger.debug(\n {\n minimumReleaseAge: config.minimumReleaseAge,\n },\n 'Invalid minimumReleaseAge, skipping --before for npm install',\n );\n } else {\n const npmrcCooldown = parseNpmrcCooldownDate(npmrcContent);\n\n // npm rejects --before when min-release-age is set in .npmrc,\n // so let the .npmrc handle cooldown natively in that case\n if (npmrcCooldown?.source === 'min-release-age') {\n logger.debug(\n {\n npmrcMinReleaseAge: npmrcCooldown.date.toISO(),\n minimumReleaseAge: config.minimumReleaseAge,\n },\n 'Skipping --before flag because .npmrc already contains min-release-age',\n );\n } else {\n let beforeDate = DateTime.now().minus(ms).toUTC();\n\n if (npmrcCooldown && npmrcCooldown.date < beforeDate) {\n logger.debug(\n {\n npmrcDate: npmrcCooldown.date.toISO(),\n beforeDate: beforeDate.toISO(),\n },\n 'Using stricter .npmrc cooldown date over minimumReleaseAge date',\n );\n beforeDate = npmrcCooldown.date;\n }\n\n const beforeISO = beforeDate.toISO();\n logger.debug(\n {\n beforeISO,\n minimumReleaseAge: config.minimumReleaseAge,\n },\n 'Setting npm --before based on minimumReleaseAge',\n );\n beforeFlag = ` --before=${beforeISO}`;\n }\n }\n }\n\n const extraEnv: ExtraEnv = {\n NPM_CONFIG_CACHE: env.NPM_CONFIG_CACHE,\n npm_config_store: env.npm_config_store,\n };\n\n const { nodeMaxMemory } = getToolSettingsOptions(config.toolSettings);\n if (nodeMaxMemory) {\n extraEnv.NODE_OPTIONS = getNodeOptions(nodeMaxMemory);\n }\n\n const execOptions: ExecOptions = {\n cwdFile: lockFileName,\n extraEnv,\n toolConstraints: [\n await getNodeToolConstraint(config, upgrades, lockFileDir, lazyPkgJson),\n ...(isNonEmptyString(npmToolConstraint.constraint)\n ? [npmToolConstraint]\n : []),\n ],\n docker: {},\n };\n /* v8 ignore next -- needs test */\n if (GlobalConfig.get('exposeAllEnv')) {\n extraEnv.NPM_AUTH = env.NPM_AUTH;\n extraEnv.NPM_EMAIL = env.NPM_EMAIL;\n }\n\n if (!upgrades.every((upgrade) => upgrade.isLockfileUpdate)) {\n // This command updates the lock file based on package.json\n commands.push(`npm install ${cmdOptions}${beforeFlag}`.trim());\n }\n\n // rangeStrategy = update-lockfile\n const lockUpdates = upgrades.filter((upgrade) => upgrade.isLockfileUpdate);\n\n // divide the deps in two categories: workspace and root\n const { lockRootUpdates, lockWorkspacesUpdates, workspaces, rootDeps } =\n divideWorkspaceAndRootDeps(lockFileDir, lockUpdates);\n\n if (workspaces.size && lockWorkspacesUpdates.length) {\n logger.debug('Performing lockfileUpdate (npm-workspaces)');\n for (const workspace of workspaces) {\n const currentWorkspaceUpdates = lockWorkspacesUpdates\n .filter((update) => update.workspace === workspace)\n .map((update) => update.managerData?.packageKey)\n .filter((packageKey) => !rootDeps.has(packageKey));\n\n // v8 ignore else -- TODO: add test #40625\n if (currentWorkspaceUpdates.length) {\n const updateCmd = `npm install ${cmdOptions}${beforeFlag} --workspace=${quote(workspace)} ${currentWorkspaceUpdates\n .map(quote)\n .join(' ')}`;\n commands.push(updateCmd);\n }\n }\n }\n\n if (lockRootUpdates.length) {\n logger.debug('Performing lockfileUpdate (npm)');\n const updateCmd = `npm install ${cmdOptions}${beforeFlag} ${lockRootUpdates\n .map((update) => update.managerData?.packageKey)\n .map(quote)\n .join(' ')}`;\n commands.push(updateCmd);\n }\n\n if (upgrades.some((upgrade) => upgrade.isRemediation)) {\n // We need to run twice to get the correct lock file\n commands.push(`npm install ${cmdOptions}${beforeFlag}`.trim());\n }\n\n // postUpdateOptions\n if (\n config.postUpdateOptions?.includes('npmDedupe') &&\n !supportsPreferDedupeFlag\n ) {\n logger.debug('Performing npm dedupe after installation');\n commands.push('npm dedupe');\n }\n\n if (upgrades.find((upgrade) => upgrade.isLockFileMaintenance)) {\n logger.debug(\n `Removing ${lockFileName} first due to lock file maintenance upgrade`,\n );\n try {\n await deleteLocalFile(lockFileName);\n } catch (err) /* v8 ignore next -- TODO: add test #40625 */ {\n logger.debug(\n { err, lockFileName },\n 'Error removing `package-lock.json` for lock file maintenance',\n );\n }\n }\n\n if (postUpdateOptions?.includes('npmInstallTwice')) {\n logger.debug('Running npm install twice');\n // Run the install command twice to ensure the lock file is up to date\n // iterate through commands and if any command starts with `npm install`, add it again\n const existingCommands = [...commands];\n commands = [];\n for (const command of existingCommands) {\n commands.push(command);\n // v8 ignore else -- TODO: add test #40625\n if (command.startsWith('npm install')) {\n commands.push(command);\n }\n }\n }\n\n // Run the commands, retrying without --before on ETARGET if needed\n await exec(commands, execOptions).catch(async (err) => {\n if (beforeFlag && err.stderr?.includes('with a date before')) {\n logger.debug('npm --before caused ETARGET, retrying without --before');\n const commandsWithoutBefore = commands.map((cmd) =>\n cmd.replace(beforeFlag, ''),\n );\n beforeFallback = true;\n return exec(commandsWithoutBefore, execOptions);\n }\n throw err;\n });\n\n // massage to shrinkwrap if necessary\n if (\n filename === 'npm-shrinkwrap.json' &&\n (await localPathExists(upath.join(lockFileDir, 'package-lock.json')))\n ) {\n await renameLocalFile(\n upath.join(lockFileDir, 'package-lock.json'),\n upath.join(lockFileDir, 'npm-shrinkwrap.json'),\n );\n }\n\n // Read the result\n // TODO #22198\n lockFile = (await readLocalFile(\n upath.join(lockFileDir, filename),\n 'utf8',\n ))!;\n\n // Massage lockfile counterparts of package.json that were modified\n // because npm install was called with an explicit version for rangeStrategy=update-lockfile\n if (lockUpdates.length) {\n const { detectedIndent, lockFileParsed } = parseLockFile(lockFile);\n if (\n lockFileParsed?.lockfileVersion === 2 ||\n lockFileParsed?.lockfileVersion === 3\n ) {\n lockUpdates.forEach((lockUpdate) => {\n const depType = lockUpdate.depType as\n | 'dependencies'\n | 'optionalDependencies';\n\n // TODO #22198\n // v8 ignore else -- TODO: add test #40625\n if (\n lockFileParsed.packages?.['']?.[depType]?.[lockUpdate.packageName!]\n ) {\n lockFileParsed.packages[''][depType][lockUpdate.packageName!] =\n lockUpdate.newValue!;\n }\n });\n lockFile = composeLockFile(lockFileParsed, detectedIndent);\n }\n }\n } catch (err) {\n // v8 ignore if -- TODO: add test #40625\n if (err.message === TEMPORARY_ERROR) {\n throw err;\n }\n logger.debug(\n {\n err,\n type: 'npm',\n },\n 'lock file error',\n );\n // v8 ignore if -- TODO: add test #40625\n if (err.stderr?.includes('ENOSPC: no space left on device')) {\n throw new Error(SYSTEM_INSUFFICIENT_DISK_SPACE);\n }\n return { error: true, stderr: err.stderr };\n }\n return { error: !lockFile, lockFile, beforeFallback };\n}\n\nexport function divideWorkspaceAndRootDeps(\n lockFileDir: string,\n lockUpdates: Upgrade[],\n): {\n lockRootUpdates: Upgrade[];\n lockWorkspacesUpdates: Upgrade[];\n workspaces: Set<string>;\n rootDeps: Set<string>;\n} {\n const lockRootUpdates: Upgrade[] = []; // stores all upgrades which are present in root package.json\n const lockWorkspacesUpdates: Upgrade[] = []; // stores all upgrades which are present in workspaces package.json\n const workspaces = new Set<string>(); // name of all workspaces\n const rootDeps = new Set<string>(); // packageName of all upgrades in root package.json (makes it check duplicate deps in root)\n\n // divide the deps in two categories: workspace and root\n for (const upgrade of lockUpdates) {\n upgrade.managerData ??= {};\n upgrade.managerData.packageKey = generatePackageKey(\n upgrade.packageName!,\n upgrade.newVersion!,\n );\n if (\n upgrade.managerData.workspacesPackages?.length &&\n isString(upgrade.packageFile)\n ) {\n const workspacePatterns = upgrade.managerData.workspacesPackages; // glob pattern or directory name/path\n const packageFileDir = trimSlashes(\n upgrade.packageFile.replace('package.json', ''),\n );\n\n // workspaceDir = packageFileDir - lockFileDir\n const workspaceDir = trimSlashes(\n packageFileDir.startsWith(lockFileDir)\n ? packageFileDir.slice(lockFileDir.length)\n : packageFileDir,\n );\n\n if (isNonEmptyString(workspaceDir)) {\n let workspaceName: string | undefined;\n // compare workspaceDir to workspace patterns\n // stop when the first match is found and\n // add workspaceDir to workspaces set and upgrade object\n for (const workspacePattern of workspacePatterns) {\n const massagedPattern = (workspacePattern as string).replace(\n regEx(/^\\.\\//),\n '',\n );\n if (minimatch(massagedPattern).match(workspaceDir)) {\n workspaceName = workspaceDir;\n break;\n }\n }\n if (workspaceName) {\n // v8 ignore else -- TODO: add test #40625\n if (\n !rootDeps.has(upgrade.managerData.packageKey) // prevent same dep from existing in root and workspace\n ) {\n workspaces.add(workspaceName);\n upgrade.workspace = workspaceName;\n lockWorkspacesUpdates.push(upgrade);\n }\n } else {\n logger.warn(\n { workspacePatterns, workspaceDir },\n 'workspaceDir not found',\n );\n }\n continue;\n }\n }\n lockRootUpdates.push(upgrade);\n rootDeps.add(upgrade.managerData.packageKey);\n }\n\n return { lockRootUpdates, lockWorkspacesUpdates, workspaces, rootDeps };\n}\n\nfunction generatePackageKey(packageName: string, version: string): string {\n return `${packageName}@${version}`;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"npm.js","names":[],"sources":["../../../../../lib/modules/manager/npm/post-update/npm.ts"],"sourcesContent":["// TODO: types (#22198)\nimport { isNonEmptyString, isNumber, isString } from '@sindresorhus/is';\nimport ini from 'ini';\nimport { DateTime } from 'luxon';\nimport semver from 'semver';\nimport { quote } from 'shlex';\nimport upath from 'upath';\nimport { GlobalConfig } from '../../../../config/global.ts';\nimport {\n SYSTEM_INSUFFICIENT_DISK_SPACE,\n TEMPORARY_ERROR,\n} from '../../../../constants/error-messages.ts';\nimport { logger } from '../../../../logger/index.ts';\nimport { exec, getToolSettingsOptions } from '../../../../util/exec/index.ts';\nimport type {\n ExecOptions,\n ExtraEnv,\n ToolConstraint,\n} from '../../../../util/exec/types.ts';\nimport {\n deleteLocalFile,\n localPathExists,\n readLocalFile,\n renameLocalFile,\n} from '../../../../util/fs/index.ts';\nimport { minimatch } from '../../../../util/minimatch.ts';\nimport { toMs } from '../../../../util/pretty-time.ts';\nimport { regEx } from '../../../../util/regex.ts';\nimport { Result } from '../../../../util/result.ts';\nimport { trimSlashes } from '../../../../util/url.ts';\nimport type { PostUpdateConfig, Upgrade } from '../../types.ts';\nimport { PackageLock } from '../schema.ts';\nimport { composeLockFile, parseLockFile } from '../utils.ts';\nimport { getNodeToolConstraint } from './node-version.ts';\nimport type { GenerateLockFileResult, NpmrcCooldownResult } from './types.ts';\nimport {\n getNodeOptions,\n getPackageManagerVersion,\n lazyLoadPackageJson,\n} from './utils.ts';\n\nexport function parseNpmrcCooldownDate(\n npmrcContent: string | null,\n): NpmrcCooldownResult | null {\n if (!npmrcContent) {\n return null;\n }\n\n const parsed = ini.parse(npmrcContent);\n\n const before = parsed.before;\n if (isNonEmptyString(before)) {\n const dt = DateTime.fromISO(before, { zone: 'utc' });\n if (dt.isValid) {\n return { date: dt, source: 'before' };\n }\n logger.debug(`Invalid before date in .npmrc: ${before}, ignoring`);\n }\n\n const minReleaseAge = parsed['min-release-age'];\n if (isNonEmptyString(minReleaseAge)) {\n const days = parseInt(minReleaseAge, 10);\n if (isNumber(days) && days >= 0) {\n return {\n date: DateTime.now().minus({ days }).toUTC(),\n source: 'min-release-age',\n };\n }\n logger.debug(\n `Invalid min-release-age in .npmrc: ${minReleaseAge}, ignoring`,\n );\n }\n\n return null;\n}\n\nasync function getNpmConstraintFromPackageLock(\n lockFileDir: string,\n filename: string,\n): Promise<string | null> {\n const packageLockFileName = upath.join(lockFileDir, filename);\n const packageLockContents = await readLocalFile(packageLockFileName, 'utf8');\n const packageLockJson = Result.parse(\n packageLockContents,\n PackageLock,\n ).unwrapOrNull();\n if (!packageLockJson) {\n logger.debug(`Could not parse ${packageLockFileName}`);\n return null;\n }\n const { lockfileVersion } = packageLockJson;\n if (lockfileVersion === 1) {\n logger.debug(`Using npm constraint <7 for lockfileVersion=1`);\n return `<7`;\n }\n if (lockfileVersion === 2) {\n logger.debug(`Using npm constraint <9 for lockfileVersion=2`);\n return `<9`;\n }\n return null;\n}\n\nexport async function generateLockFile(\n lockFileDir: string,\n env: NodeJS.ProcessEnv,\n filename: string,\n config: Partial<PostUpdateConfig> = {},\n upgrades: Upgrade[] = [],\n npmrcContent: string | null = null,\n): Promise<GenerateLockFileResult> {\n // TODO: don't assume package-lock.json is in the same directory\n const lockFileName = upath.join(lockFileDir, filename);\n\n logger.debug(`Spawning npm install to create ${lockFileDir}/${filename}`);\n const { skipInstalls, postUpdateOptions } = config;\n\n let lockFile: string | null = null;\n let beforeFallback = false;\n try {\n const lazyPkgJson = lazyLoadPackageJson(lockFileDir);\n const npmToolConstraint: ToolConstraint = {\n toolName: 'npm',\n constraint:\n config.constraints?.npm ??\n getPackageManagerVersion('npm', await lazyPkgJson.getValue()) ??\n (await getNpmConstraintFromPackageLock(lockFileDir, filename)) ??\n null,\n };\n const supportsPreferDedupeFlag =\n !npmToolConstraint.constraint ||\n semver.intersects('>=7.0.0', npmToolConstraint.constraint);\n let commands: string[] = [];\n let cmdOptions = '';\n if (\n (postUpdateOptions?.includes('npmDedupe') === true &&\n !supportsPreferDedupeFlag) ||\n skipInstalls === false\n ) {\n logger.debug('Performing node_modules install');\n cmdOptions += '--no-audit';\n } else {\n logger.debug('Updating lock file only');\n cmdOptions += '--package-lock-only --no-audit';\n }\n\n if (postUpdateOptions?.includes('npmDedupe') && supportsPreferDedupeFlag) {\n logger.debug('Deduplicate dependencies on installation');\n cmdOptions += ' --prefer-dedupe';\n }\n\n if (!GlobalConfig.get('allowScripts') || config.ignoreScripts) {\n cmdOptions += ' --ignore-scripts';\n }\n\n let beforeFlag = '';\n if (config.minimumReleaseAge) {\n const ms = toMs(config.minimumReleaseAge);\n if (ms === null) {\n logger.debug(\n {\n minimumReleaseAge: config.minimumReleaseAge,\n },\n 'Invalid minimumReleaseAge, skipping --before for npm install',\n );\n } else {\n const npmrcCooldown = parseNpmrcCooldownDate(npmrcContent);\n\n // npm rejects --before when min-release-age is set in .npmrc,\n // so let the .npmrc handle cooldown natively in that case\n if (npmrcCooldown?.source === 'min-release-age') {\n logger.debug(\n {\n npmrcMinReleaseAge: npmrcCooldown.date.toISO(),\n minimumReleaseAge: config.minimumReleaseAge,\n },\n 'Skipping --before flag because .npmrc already contains min-release-age',\n );\n } else {\n let beforeDate = DateTime.now().minus(ms).toUTC();\n\n if (npmrcCooldown && npmrcCooldown.date < beforeDate) {\n logger.debug(\n {\n npmrcDate: npmrcCooldown.date.toISO(),\n beforeDate: beforeDate.toISO(),\n },\n 'Using stricter .npmrc cooldown date over minimumReleaseAge date',\n );\n beforeDate = npmrcCooldown.date;\n }\n\n const beforeISO = beforeDate.toISO();\n logger.debug(\n {\n beforeISO,\n minimumReleaseAge: config.minimumReleaseAge,\n },\n 'Setting npm --before based on minimumReleaseAge',\n );\n beforeFlag = ` --before=${beforeISO}`;\n }\n }\n }\n\n const extraEnv: ExtraEnv = {\n NPM_CONFIG_CACHE: env.NPM_CONFIG_CACHE,\n npm_config_store: env.npm_config_store,\n };\n\n const { nodeMaxMemory } = getToolSettingsOptions(config.toolSettings);\n if (nodeMaxMemory) {\n extraEnv.NODE_OPTIONS = getNodeOptions(nodeMaxMemory);\n }\n\n const execOptions: ExecOptions = {\n cwdFile: lockFileName,\n extraEnv,\n toolConstraints: [\n await getNodeToolConstraint(config, upgrades, lockFileDir, lazyPkgJson),\n ...(isNonEmptyString(npmToolConstraint.constraint)\n ? [npmToolConstraint]\n : []),\n ],\n docker: {},\n };\n /* v8 ignore next -- needs test */\n if (GlobalConfig.get('exposeAllEnv')) {\n extraEnv.NPM_AUTH = env.NPM_AUTH;\n extraEnv.NPM_EMAIL = env.NPM_EMAIL;\n }\n\n if (!upgrades.every((upgrade) => upgrade.isLockfileUpdate)) {\n // This command updates the lock file based on package.json\n commands.push(`npm install ${cmdOptions}${beforeFlag}`.trim());\n }\n\n // rangeStrategy = update-lockfile\n const lockUpdates = upgrades.filter((upgrade) => upgrade.isLockfileUpdate);\n\n // divide the deps in two categories: workspace and root\n const { lockRootUpdates, lockWorkspacesUpdates, workspaces, rootDeps } =\n divideWorkspaceAndRootDeps(lockFileDir, lockUpdates);\n\n if (workspaces.size && lockWorkspacesUpdates.length) {\n logger.debug('Performing lockfileUpdate (npm-workspaces)');\n for (const workspace of workspaces) {\n const currentWorkspaceUpdates = lockWorkspacesUpdates\n .filter((update) => update.workspace === workspace)\n .map((update) => update.managerData?.packageKey)\n .filter((packageKey) => !rootDeps.has(packageKey));\n\n // v8 ignore else -- TODO: add test #40625\n if (currentWorkspaceUpdates.length) {\n const updateCmd = `npm install ${cmdOptions}${beforeFlag} --workspace=${quote(workspace)} ${currentWorkspaceUpdates\n .map(quote)\n .join(' ')}`;\n commands.push(updateCmd);\n }\n }\n }\n\n if (lockRootUpdates.length) {\n logger.debug('Performing lockfileUpdate (npm)');\n const updateCmd = `npm install ${cmdOptions}${beforeFlag} ${lockRootUpdates\n .map((update) => update.managerData?.packageKey)\n .map(quote)\n .join(' ')}`;\n commands.push(updateCmd);\n }\n\n if (upgrades.some((upgrade) => upgrade.isRemediation)) {\n // We need to run twice to get the correct lock file\n commands.push(`npm install ${cmdOptions}${beforeFlag}`.trim());\n }\n\n // Lock file maintenance recreates the lock file from scratch, and a single\n // `npm install` can generate a lock file which is out of sync with\n // package.json, so we need to run the install a second time (#37531).\n // Skipped if `npmInstallTwice` is configured, as that doubles all install\n // commands already.\n if (\n upgrades.some((upgrade) => upgrade.isLockFileMaintenance) &&\n !postUpdateOptions?.includes('npmInstallTwice')\n ) {\n commands.push(`npm install ${cmdOptions}${beforeFlag}`.trim());\n }\n\n // postUpdateOptions\n if (\n config.postUpdateOptions?.includes('npmDedupe') &&\n !supportsPreferDedupeFlag\n ) {\n logger.debug('Performing npm dedupe after installation');\n commands.push('npm dedupe');\n }\n\n if (upgrades.find((upgrade) => upgrade.isLockFileMaintenance)) {\n logger.debug(\n `Removing ${lockFileName} first due to lock file maintenance upgrade`,\n );\n try {\n await deleteLocalFile(lockFileName);\n } catch (err) /* v8 ignore next -- TODO: add test #40625 */ {\n logger.debug(\n { err, lockFileName },\n 'Error removing `package-lock.json` for lock file maintenance',\n );\n }\n }\n\n if (postUpdateOptions?.includes('npmInstallTwice')) {\n logger.debug('Running npm install twice');\n // Run the install command twice to ensure the lock file is up to date\n // iterate through commands and if any command starts with `npm install`, add it again\n const existingCommands = [...commands];\n commands = [];\n for (const command of existingCommands) {\n commands.push(command);\n // v8 ignore else -- TODO: add test #40625\n if (command.startsWith('npm install')) {\n commands.push(command);\n }\n }\n }\n\n // Run the commands, retrying without --before on ETARGET if needed\n await exec(commands, execOptions).catch(async (err) => {\n if (beforeFlag && err.stderr?.includes('with a date before')) {\n logger.debug('npm --before caused ETARGET, retrying without --before');\n const commandsWithoutBefore = commands.map((cmd) =>\n cmd.replace(beforeFlag, ''),\n );\n beforeFallback = true;\n return exec(commandsWithoutBefore, execOptions);\n }\n throw err;\n });\n\n // massage to shrinkwrap if necessary\n if (\n filename === 'npm-shrinkwrap.json' &&\n (await localPathExists(upath.join(lockFileDir, 'package-lock.json')))\n ) {\n await renameLocalFile(\n upath.join(lockFileDir, 'package-lock.json'),\n upath.join(lockFileDir, 'npm-shrinkwrap.json'),\n );\n }\n\n // Read the result\n // TODO #22198\n lockFile = (await readLocalFile(\n upath.join(lockFileDir, filename),\n 'utf8',\n ))!;\n\n // Massage lockfile counterparts of package.json that were modified\n // because npm install was called with an explicit version for rangeStrategy=update-lockfile\n if (lockUpdates.length) {\n const { detectedIndent, lockFileParsed } = parseLockFile(lockFile);\n if (\n lockFileParsed?.lockfileVersion === 2 ||\n lockFileParsed?.lockfileVersion === 3\n ) {\n lockUpdates.forEach((lockUpdate) => {\n const depType = lockUpdate.depType as\n | 'dependencies'\n | 'optionalDependencies';\n\n // TODO #22198\n // v8 ignore else -- TODO: add test #40625\n if (\n lockFileParsed.packages?.['']?.[depType]?.[lockUpdate.packageName!]\n ) {\n lockFileParsed.packages[''][depType][lockUpdate.packageName!] =\n lockUpdate.newValue!;\n }\n });\n lockFile = composeLockFile(lockFileParsed, detectedIndent);\n }\n }\n } catch (err) {\n // v8 ignore if -- TODO: add test #40625\n if (err.message === TEMPORARY_ERROR) {\n throw err;\n }\n logger.debug(\n {\n err,\n type: 'npm',\n },\n 'lock file error',\n );\n // v8 ignore if -- TODO: add test #40625\n if (err.stderr?.includes('ENOSPC: no space left on device')) {\n throw new Error(SYSTEM_INSUFFICIENT_DISK_SPACE);\n }\n return { error: true, stderr: err.stderr };\n }\n return { error: !lockFile, lockFile, beforeFallback };\n}\n\nexport function divideWorkspaceAndRootDeps(\n lockFileDir: string,\n lockUpdates: Upgrade[],\n): {\n lockRootUpdates: Upgrade[];\n lockWorkspacesUpdates: Upgrade[];\n workspaces: Set<string>;\n rootDeps: Set<string>;\n} {\n const lockRootUpdates: Upgrade[] = []; // stores all upgrades which are present in root package.json\n const lockWorkspacesUpdates: Upgrade[] = []; // stores all upgrades which are present in workspaces package.json\n const workspaces = new Set<string>(); // name of all workspaces\n const rootDeps = new Set<string>(); // packageName of all upgrades in root package.json (makes it check duplicate deps in root)\n\n // divide the deps in two categories: workspace and root\n for (const upgrade of lockUpdates) {\n upgrade.managerData ??= {};\n upgrade.managerData.packageKey = generatePackageKey(\n upgrade.packageName!,\n upgrade.newVersion!,\n );\n if (\n upgrade.managerData.workspacesPackages?.length &&\n isString(upgrade.packageFile)\n ) {\n const workspacePatterns = upgrade.managerData.workspacesPackages; // glob pattern or directory name/path\n const packageFileDir = trimSlashes(\n upgrade.packageFile.replace('package.json', ''),\n );\n\n // workspaceDir = packageFileDir - lockFileDir\n const workspaceDir = trimSlashes(\n packageFileDir.startsWith(lockFileDir)\n ? packageFileDir.slice(lockFileDir.length)\n : packageFileDir,\n );\n\n if (isNonEmptyString(workspaceDir)) {\n let workspaceName: string | undefined;\n // compare workspaceDir to workspace patterns\n // stop when the first match is found and\n // add workspaceDir to workspaces set and upgrade object\n for (const workspacePattern of workspacePatterns) {\n const massagedPattern = (workspacePattern as string).replace(\n regEx(/^\\.\\//),\n '',\n );\n if (minimatch(massagedPattern).match(workspaceDir)) {\n workspaceName = workspaceDir;\n break;\n }\n }\n if (workspaceName) {\n // v8 ignore else -- TODO: add test #40625\n if (\n !rootDeps.has(upgrade.managerData.packageKey) // prevent same dep from existing in root and workspace\n ) {\n workspaces.add(workspaceName);\n upgrade.workspace = workspaceName;\n lockWorkspacesUpdates.push(upgrade);\n }\n } else {\n logger.warn(\n { workspacePatterns, workspaceDir },\n 'workspaceDir not found',\n );\n }\n continue;\n }\n }\n lockRootUpdates.push(upgrade);\n rootDeps.add(upgrade.managerData.packageKey);\n }\n\n return { lockRootUpdates, lockWorkspacesUpdates, workspaces, rootDeps };\n}\n\nfunction generatePackageKey(packageName: string, version: string): string {\n return `${packageName}@${version}`;\n}\n"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { regEx } from "../../../util/regex.js";
|
|
|
2
2
|
import { coerceString } from "../../../util/string.js";
|
|
3
3
|
import { api as api$1 } from "../npm/index.js";
|
|
4
4
|
import { api as api$2 } from "../pep440/index.js";
|
|
5
|
-
import { ascendingRange, descendingRange, exactVersion, inclusiveBound, lowerBound, upperBound, versionGroup } from "./pattern.js";
|
|
5
|
+
import { ascendingRange, descendingRange, exactVersion, inclusiveBound, lowerBound, matchVersion, upperBound, versionGroup } from "./pattern.js";
|
|
6
6
|
import { npm2rezplus, padZeroes, pep4402rezInclusiveBound, rez2npm, rez2pep440 } from "./transform.js";
|
|
7
7
|
function equals(a, b) {
|
|
8
8
|
try {
|
|
@@ -66,7 +66,14 @@ function isSingleVersion(constraint) {
|
|
|
66
66
|
function sortVersions(a, b) {
|
|
67
67
|
return api$1.sortVersions(padZeroes(a), padZeroes(b));
|
|
68
68
|
}
|
|
69
|
+
function matchVersionPrecision(currentValue, newVersion) {
|
|
70
|
+
if (!matchVersion.test(currentValue) || !isVersion(newVersion)) return null;
|
|
71
|
+
const precision = currentValue.split(".").length;
|
|
72
|
+
return newVersion.split(".").slice(0, precision).join(".");
|
|
73
|
+
}
|
|
69
74
|
function getNewValue({ currentValue, rangeStrategy, currentVersion, newVersion }) {
|
|
75
|
+
const precisionMatchedVersion = matchVersionPrecision(currentValue, newVersion);
|
|
76
|
+
if (precisionMatchedVersion) return precisionMatchedVersion;
|
|
70
77
|
const pep440Value = api$2.getNewValue({
|
|
71
78
|
currentValue: rez2pep440(currentValue),
|
|
72
79
|
rangeStrategy,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["npm","pep440"],"sources":["../../../../lib/modules/versioning/rez/index.ts"],"sourcesContent":["import type { RangeStrategy } from '../../../types/versioning.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { coerceString } from '../../../util/string.ts';\nimport { api as npm } from '../npm/index.ts';\nimport { api as pep440 } from '../pep440/index.ts';\nimport type { NewValueConfig, VersioningApi } from '../types.ts';\n\nimport {\n ascendingRange,\n descendingRange,\n exactVersion,\n inclusiveBound,\n lowerBound,\n upperBound,\n versionGroup,\n} from './pattern.ts';\nimport {\n npm2rezplus,\n padZeroes,\n pep4402rezInclusiveBound,\n rez2npm,\n rez2pep440,\n} from './transform.ts';\n\nexport const id = 'rez';\nexport const displayName = 'rez';\nexport const urls = ['[Rez package manager](https://github.com/nerdvegas/rez)'];\nexport const supportsRanges = true;\nexport const supportedRangeStrategies: RangeStrategy[] = [\n 'bump',\n 'widen',\n 'replace',\n];\n\nfunction equals(a: string, b: string): boolean {\n try {\n return npm.equals(padZeroes(a), padZeroes(b));\n } catch /* istanbul ignore next */ {\n return pep440.equals(a, b);\n }\n}\n\nfunction getMajor(version: string): number | null {\n try {\n return npm.getMajor(padZeroes(version));\n } catch /* istanbul ignore next */ {\n return pep440.getMajor(version);\n }\n}\n\nfunction getMinor(version: string): number | null {\n try {\n return npm.getMinor(padZeroes(version));\n } catch /* istanbul ignore next */ {\n return pep440.getMinor(version);\n }\n}\n\nfunction getPatch(version: string): number | null {\n try {\n return npm.getPatch(padZeroes(version));\n } catch /* istanbul ignore next */ {\n return pep440.getPatch(version);\n }\n}\n\nfunction isGreaterThan(a: string, b: string): boolean {\n try {\n return npm.isGreaterThan(padZeroes(a), padZeroes(b));\n } catch /* istanbul ignore next */ {\n return pep440.isGreaterThan(a, b);\n }\n}\n\nfunction isLessThanRange(version: string, range: string): boolean {\n return (\n npm.isVersion(padZeroes(version)) &&\n !!npm.isLessThanRange?.(padZeroes(version), rez2npm(range))\n );\n}\n\nexport function isValid(input: string): boolean {\n return npm.isValid(rez2npm(input));\n}\n\nfunction isStable(version: string): boolean {\n return npm.isStable(padZeroes(version));\n}\n\nfunction isVersion(input: string): boolean {\n return npm.isVersion(padZeroes(rez2npm(input)));\n}\n\nfunction matches(version: string, range: string): boolean {\n return (\n npm.isVersion(padZeroes(version)) &&\n npm.matches(padZeroes(version), rez2npm(range))\n );\n}\n\nfunction getSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n return npm.getSatisfyingVersion(versions, rez2npm(range));\n}\n\nfunction minSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n return npm.minSatisfyingVersion(versions, rez2npm(range));\n}\n\nfunction isSingleVersion(constraint: string): boolean {\n return (\n (constraint.trim().startsWith('==') &&\n isVersion(constraint.trim().substring(2).trim())) ||\n isVersion(constraint.trim())\n );\n}\n\nfunction sortVersions(a: string, b: string): number {\n return npm.sortVersions(padZeroes(a), padZeroes(b));\n}\n\nfunction getNewValue({\n currentValue,\n rangeStrategy,\n currentVersion,\n newVersion,\n}: NewValueConfig): string | null {\n const pep440Value = pep440.getNewValue({\n currentValue: rez2pep440(currentValue),\n rangeStrategy,\n currentVersion,\n newVersion,\n });\n if (exactVersion.test(currentValue)) {\n return pep440Value;\n }\n if (pep440Value && inclusiveBound.test(currentValue)) {\n return pep4402rezInclusiveBound(pep440Value);\n }\n if (pep440Value && lowerBound.test(currentValue)) {\n if (currentValue.includes('+')) {\n return npm2rezplus(pep440Value);\n }\n return pep440Value;\n }\n if (pep440Value && upperBound.test(currentValue)) {\n return pep440Value;\n }\n const matchAscRange = ascendingRange.exec(currentValue);\n if (pep440Value && matchAscRange?.groups) {\n // Replace version numbers but keep rez format, otherwise we just end up trying\n // to convert every single case separately.\n const lowerBoundAscCurrent = matchAscRange.groups.range_lower_asc;\n const upperBoundAscCurrent = matchAscRange.groups.range_upper_asc;\n const lowerAscVersionCurrent = matchAscRange.groups.range_lower_asc_version;\n const upperAscVersionCurrent = matchAscRange.groups.range_upper_asc_version;\n const [lowerBoundAscPep440, upperBoundAscPep440] = pep440Value.split(', ');\n const lowerAscVersionNew = coerceString(\n regEx(versionGroup).exec(lowerBoundAscPep440)?.[0],\n );\n const upperAscVersionNew = coerceString(\n regEx(versionGroup).exec(upperBoundAscPep440)?.[0],\n );\n const lowerBoundAscNew = lowerBoundAscCurrent.replace(\n lowerAscVersionCurrent,\n lowerAscVersionNew,\n );\n const upperBoundAscNew = upperBoundAscCurrent.replace(\n upperAscVersionCurrent,\n upperAscVersionNew,\n );\n const separator = currentValue.includes(',') ? ',' : '';\n\n return lowerBoundAscNew + separator + upperBoundAscNew;\n }\n const matchDscRange = descendingRange.exec(currentValue);\n if (pep440Value && matchDscRange?.groups) {\n // Replace version numbers but keep rez format, otherwise we just end up trying\n // to convert every single case separately.\n const upperBoundDescCurrent = matchDscRange.groups.range_upper_desc;\n const lowerBoundDescCurrent = matchDscRange.groups.range_lower_desc;\n const upperDescVersionCurrent =\n matchDscRange.groups.range_upper_desc_version;\n const lowerDescVersionCurrent =\n matchDscRange.groups.range_lower_desc_version;\n const [lowerBoundDescPep440, upperBoundDescPep440] =\n pep440Value.split(', ');\n\n const upperDescVersionNew = coerceString(\n regEx(versionGroup).exec(upperBoundDescPep440)?.[0],\n );\n const lowerDescVersionNew = coerceString(\n regEx(versionGroup).exec(lowerBoundDescPep440)?.[0],\n );\n const upperBoundDescNew = upperBoundDescCurrent.replace(\n upperDescVersionCurrent,\n upperDescVersionNew,\n );\n const lowerBoundDescNew = lowerBoundDescCurrent.replace(\n lowerDescVersionCurrent,\n lowerDescVersionNew,\n );\n // Descending ranges are only supported with a comma.\n const separator = ',';\n\n return upperBoundDescNew + separator + lowerBoundDescNew;\n }\n return null;\n}\n\nfunction isCompatible(version: string): boolean {\n return isVersion(version);\n}\n\nexport const api: VersioningApi = {\n equals,\n getMajor,\n getMinor,\n getPatch,\n getNewValue,\n getSatisfyingVersion,\n isCompatible,\n isGreaterThan,\n isLessThanRange,\n isSingleVersion,\n isStable,\n isValid,\n isVersion,\n matches,\n minSatisfyingVersion,\n sortVersions,\n};\nexport default api;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["npm","pep440"],"sources":["../../../../lib/modules/versioning/rez/index.ts"],"sourcesContent":["import type { RangeStrategy } from '../../../types/versioning.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { coerceString } from '../../../util/string.ts';\nimport { api as npm } from '../npm/index.ts';\nimport { api as pep440 } from '../pep440/index.ts';\nimport type { NewValueConfig, VersioningApi } from '../types.ts';\n\nimport {\n ascendingRange,\n descendingRange,\n exactVersion,\n inclusiveBound,\n lowerBound,\n matchVersion,\n upperBound,\n versionGroup,\n} from './pattern.ts';\nimport {\n npm2rezplus,\n padZeroes,\n pep4402rezInclusiveBound,\n rez2npm,\n rez2pep440,\n} from './transform.ts';\n\nexport const id = 'rez';\nexport const displayName = 'rez';\nexport const urls = ['[Rez package manager](https://github.com/nerdvegas/rez)'];\nexport const supportsRanges = true;\nexport const supportedRangeStrategies: RangeStrategy[] = [\n 'bump',\n 'widen',\n 'replace',\n];\n\nfunction equals(a: string, b: string): boolean {\n try {\n return npm.equals(padZeroes(a), padZeroes(b));\n } catch /* istanbul ignore next */ {\n return pep440.equals(a, b);\n }\n}\n\nfunction getMajor(version: string): number | null {\n try {\n return npm.getMajor(padZeroes(version));\n } catch /* istanbul ignore next */ {\n return pep440.getMajor(version);\n }\n}\n\nfunction getMinor(version: string): number | null {\n try {\n return npm.getMinor(padZeroes(version));\n } catch /* istanbul ignore next */ {\n return pep440.getMinor(version);\n }\n}\n\nfunction getPatch(version: string): number | null {\n try {\n return npm.getPatch(padZeroes(version));\n } catch /* istanbul ignore next */ {\n return pep440.getPatch(version);\n }\n}\n\nfunction isGreaterThan(a: string, b: string): boolean {\n try {\n return npm.isGreaterThan(padZeroes(a), padZeroes(b));\n } catch /* istanbul ignore next */ {\n return pep440.isGreaterThan(a, b);\n }\n}\n\nfunction isLessThanRange(version: string, range: string): boolean {\n return (\n npm.isVersion(padZeroes(version)) &&\n !!npm.isLessThanRange?.(padZeroes(version), rez2npm(range))\n );\n}\n\nexport function isValid(input: string): boolean {\n return npm.isValid(rez2npm(input));\n}\n\nfunction isStable(version: string): boolean {\n return npm.isStable(padZeroes(version));\n}\n\nfunction isVersion(input: string): boolean {\n return npm.isVersion(padZeroes(rez2npm(input)));\n}\n\nfunction matches(version: string, range: string): boolean {\n return (\n npm.isVersion(padZeroes(version)) &&\n npm.matches(padZeroes(version), rez2npm(range))\n );\n}\n\nfunction getSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n return npm.getSatisfyingVersion(versions, rez2npm(range));\n}\n\nfunction minSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n return npm.minSatisfyingVersion(versions, rez2npm(range));\n}\n\nfunction isSingleVersion(constraint: string): boolean {\n return (\n (constraint.trim().startsWith('==') &&\n isVersion(constraint.trim().substring(2).trim())) ||\n isVersion(constraint.trim())\n );\n}\n\nfunction sortVersions(a: string, b: string): number {\n return npm.sortVersions(padZeroes(a), padZeroes(b));\n}\n\nfunction matchVersionPrecision(\n currentValue: string,\n newVersion: string,\n): string | null {\n if (!matchVersion.test(currentValue) || !isVersion(newVersion)) {\n return null;\n }\n const precision = currentValue.split('.').length;\n return newVersion.split('.').slice(0, precision).join('.');\n}\n\nfunction getNewValue({\n currentValue,\n rangeStrategy,\n currentVersion,\n newVersion,\n}: NewValueConfig): string | null {\n const precisionMatchedVersion = matchVersionPrecision(\n currentValue,\n newVersion,\n );\n if (precisionMatchedVersion) {\n return precisionMatchedVersion;\n }\n const pep440Value = pep440.getNewValue({\n currentValue: rez2pep440(currentValue),\n rangeStrategy,\n currentVersion,\n newVersion,\n });\n if (exactVersion.test(currentValue)) {\n return pep440Value;\n }\n if (pep440Value && inclusiveBound.test(currentValue)) {\n return pep4402rezInclusiveBound(pep440Value);\n }\n if (pep440Value && lowerBound.test(currentValue)) {\n if (currentValue.includes('+')) {\n return npm2rezplus(pep440Value);\n }\n return pep440Value;\n }\n if (pep440Value && upperBound.test(currentValue)) {\n return pep440Value;\n }\n const matchAscRange = ascendingRange.exec(currentValue);\n if (pep440Value && matchAscRange?.groups) {\n // Replace version numbers but keep rez format, otherwise we just end up trying\n // to convert every single case separately.\n const lowerBoundAscCurrent = matchAscRange.groups.range_lower_asc;\n const upperBoundAscCurrent = matchAscRange.groups.range_upper_asc;\n const lowerAscVersionCurrent = matchAscRange.groups.range_lower_asc_version;\n const upperAscVersionCurrent = matchAscRange.groups.range_upper_asc_version;\n const [lowerBoundAscPep440, upperBoundAscPep440] = pep440Value.split(', ');\n const lowerAscVersionNew = coerceString(\n regEx(versionGroup).exec(lowerBoundAscPep440)?.[0],\n );\n const upperAscVersionNew = coerceString(\n regEx(versionGroup).exec(upperBoundAscPep440)?.[0],\n );\n const lowerBoundAscNew = lowerBoundAscCurrent.replace(\n lowerAscVersionCurrent,\n lowerAscVersionNew,\n );\n const upperBoundAscNew = upperBoundAscCurrent.replace(\n upperAscVersionCurrent,\n upperAscVersionNew,\n );\n const separator = currentValue.includes(',') ? ',' : '';\n\n return lowerBoundAscNew + separator + upperBoundAscNew;\n }\n const matchDscRange = descendingRange.exec(currentValue);\n if (pep440Value && matchDscRange?.groups) {\n // Replace version numbers but keep rez format, otherwise we just end up trying\n // to convert every single case separately.\n const upperBoundDescCurrent = matchDscRange.groups.range_upper_desc;\n const lowerBoundDescCurrent = matchDscRange.groups.range_lower_desc;\n const upperDescVersionCurrent =\n matchDscRange.groups.range_upper_desc_version;\n const lowerDescVersionCurrent =\n matchDscRange.groups.range_lower_desc_version;\n const [lowerBoundDescPep440, upperBoundDescPep440] =\n pep440Value.split(', ');\n\n const upperDescVersionNew = coerceString(\n regEx(versionGroup).exec(upperBoundDescPep440)?.[0],\n );\n const lowerDescVersionNew = coerceString(\n regEx(versionGroup).exec(lowerBoundDescPep440)?.[0],\n );\n const upperBoundDescNew = upperBoundDescCurrent.replace(\n upperDescVersionCurrent,\n upperDescVersionNew,\n );\n const lowerBoundDescNew = lowerBoundDescCurrent.replace(\n lowerDescVersionCurrent,\n lowerDescVersionNew,\n );\n // Descending ranges are only supported with a comma.\n const separator = ',';\n\n return upperBoundDescNew + separator + lowerBoundDescNew;\n }\n return null;\n}\n\nfunction isCompatible(version: string): boolean {\n return isVersion(version);\n}\n\nexport const api: VersioningApi = {\n equals,\n getMajor,\n getMinor,\n getPatch,\n getNewValue,\n getSatisfyingVersion,\n isCompatible,\n isGreaterThan,\n isLessThanRange,\n isSingleVersion,\n isStable,\n isValid,\n isVersion,\n matches,\n minSatisfyingVersion,\n sortVersions,\n};\nexport default api;\n"],"mappings":"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"}
|
|
@@ -107,6 +107,10 @@ async function pruneStaleBranches(config, branchList) {
|
|
|
107
107
|
logger.debug("No defaultBranch set - skipping branch pruning");
|
|
108
108
|
return;
|
|
109
109
|
}
|
|
110
|
+
if (!isNonEmptyStringAndNotWhitespace(config.branchPrefix)) {
|
|
111
|
+
logger.warn("config.branchPrefix is empty - skipping branch pruning to avoid treating all branches as Renovate-managed");
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
110
114
|
let renovateBranches = getBranchList().filter((branchName) => branchName.startsWith(config.branchPrefix) && branchName !== getReconfigureBranchName(config.branchPrefix));
|
|
111
115
|
if (!renovateBranches?.length) {
|
|
112
116
|
logger.debug("No renovate branches found");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prune.js","names":[],"sources":["../../../../lib/workers/repository/finalize/prune.ts"],"sourcesContent":["import { isNonEmptyStringAndNotWhitespace } from '@sindresorhus/is';\nimport { GlobalConfig } from '../../../config/global.ts';\nimport type { RenovateConfig } from '../../../config/types.ts';\nimport { REPOSITORY_CHANGED } from '../../../constants/error-messages.ts';\nimport { logger } from '../../../logger/index.ts';\nimport { ensureComment } from '../../../modules/platform/comment.ts';\nimport { platform } from '../../../modules/platform/index.ts';\nimport { scm } from '../../../modules/platform/scm.ts';\nimport { getBranchList, setUserRepoConfig } from '../../../util/git/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { uniqueStrings } from '../../../util/string.ts';\nimport { isMultiBaseBranch } from '../process/index.ts';\nimport { getReconfigureBranchName } from '../reconfigure/utils.ts';\n\nasync function cleanUpBranches(\n config: RenovateConfig,\n remainingBranches: string[],\n): Promise<void> {\n if (!config.pruneStaleBranches) {\n logger.debug('Branch/PR pruning is disabled - skipping');\n return;\n }\n // set Git author in case the repository is not initialized yet\n setUserRepoConfig(config);\n\n // in multi-base mode the base branch is encoded in the branch name\n const multiBase = isMultiBaseBranch(config);\n const baseBranchRe = multiBase ? calculateBaseBranchRegex(config) : null;\n\n for (const branchName of remainingBranches) {\n try {\n let baseBranch: string;\n if (multiBase) {\n baseBranch =\n baseBranchRe?.exec(branchName)?.[1] ?? config.defaultBranch!;\n } else {\n // single base branch: branch name doesn't encode it, use the configured one\n baseBranch = config.baseBranches?.[0] ?? config.defaultBranch!;\n }\n const pr = await platform.findPr({\n branchName,\n state: 'open',\n targetBranch: baseBranch,\n });\n const branchIsModified = await scm.isBranchModified(\n branchName,\n baseBranch,\n );\n if (pr) {\n if (branchIsModified) {\n logger.debug(\n { prNo: pr.number, prTitle: pr.title },\n 'Branch is modified - skipping PR autoclosing',\n );\n if (GlobalConfig.get('dryRun')) {\n logger.info(`DRY-RUN: Would update PR title and ensure comment.`);\n } else {\n if (!pr.title.endsWith('- abandoned')) {\n const newPrTitle = `${pr.title} - abandoned`;\n await platform.updatePr({\n number: pr.number,\n prTitle: newPrTitle,\n state: 'open',\n });\n }\n\n await ensureComment({\n number: pr.number,\n topic: 'Autoclosing Skipped',\n content:\n 'This PR has been flagged for autoclosing. However, it is being skipped due to the branch being already modified. Please close/delete it manually or report a bug if you think this is in error.',\n });\n }\n } else if (GlobalConfig.get('dryRun')) {\n logger.info(\n { prNo: pr.number, prTitle: pr.title },\n `DRY-RUN: Would autoclose PR`,\n );\n } else {\n logger.info(\n { branchName, prNo: pr.number, prTitle: pr.title },\n 'Autoclosing PR',\n );\n let newPrTitle = pr.title;\n if (!pr.title.endsWith('- autoclosed')) {\n newPrTitle += ' - autoclosed';\n }\n await platform.updatePr({\n number: pr.number,\n prTitle: newPrTitle,\n state: 'closed',\n });\n await scm.deleteBranch(branchName);\n }\n } else if (branchIsModified) {\n logger.debug(\n { branch: branchName },\n 'Orphan Branch is modified - skipping branch deletion',\n );\n } else if (GlobalConfig.get('dryRun')) {\n logger.info(`DRY-RUN: Would delete orphan branch ${branchName}`);\n } else {\n logger.info({ branch: branchName }, `Deleting orphan branch`);\n await scm.deleteBranch(branchName);\n }\n } catch (err) /* istanbul ignore next */ {\n if (err.message === 'config-validation') {\n logger.debug(\n 'Cannot prune branch due to collision between tags and branch names',\n );\n } else if (err.message?.includes(\"bad revision 'origin/\")) {\n logger.debug(\n { branchName },\n 'Branch not found on origin when attempting to prune',\n );\n } else if (err.message !== REPOSITORY_CHANGED) {\n logger.warn({ err, branch: branchName }, 'Error pruning branch');\n }\n }\n }\n}\n\n/**\n * Calculates a {RegExp} to extract the base branch from a branch name if base branch patterns is configured.\n * @param config Renovate configuration\n */\nfunction calculateBaseBranchRegex(config: RenovateConfig): RegExp | null {\n if (!config.baseBranchPatterns?.length || !config.baseBranches?.length) {\n return null;\n }\n\n // calculate possible branch prefixes and escape for regex\n const branchPrefixes = [config.branchPrefix, config.branchPrefixOld]\n .filter(isNonEmptyStringAndNotWhitespace)\n .filter(uniqueStrings)\n .map((prefix) => RegExp.escape(prefix));\n\n const baseBranches = config.baseBranches.map((branch) =>\n RegExp.escape(branch),\n );\n\n // create regex to extract base branche from branch name\n const baseBranchRe = regEx(\n `^(?:${branchPrefixes.join('|')})(${baseBranches.join('|')})-`,\n );\n\n return baseBranchRe;\n}\n\nexport async function pruneStaleBranches(\n config: RenovateConfig,\n branchList: string[] | null | undefined,\n): Promise<void> {\n logger.debug('Removing any stale branches');\n logger.trace({ config }, `pruneStaleBranches`);\n // TODO: types (#22198)\n logger.debug(`config.repoIsOnboarded=${config.repoIsOnboarded!}`);\n if (!branchList) {\n logger.debug('No branchList');\n return;\n }\n if (!config.defaultBranch) {\n logger.debug('No defaultBranch set - skipping branch pruning');\n return;\n }\n // TODO: types (#22198)\n let renovateBranches = getBranchList().filter(\n (branchName) =>\n branchName.startsWith(config.branchPrefix!) &&\n branchName !== getReconfigureBranchName(config.branchPrefix!),\n );\n if (!renovateBranches?.length) {\n logger.debug('No renovate branches found');\n return;\n }\n logger.debug(\n {\n branchList: branchList?.sort(),\n renovateBranches: renovateBranches?.sort(),\n },\n 'Branch lists',\n );\n // TODO: types (#22198)\n const lockFileBranch = `${config.branchPrefix!}lock-file-maintenance`;\n renovateBranches = renovateBranches.filter(\n (branch) => branch !== lockFileBranch,\n );\n const remainingBranches = renovateBranches.filter(\n (branch) => !branchList.includes(branch),\n );\n logger.debug(`remainingBranches=${String(remainingBranches)}`);\n if (remainingBranches.length === 0) {\n logger.debug('No branches to clean up');\n return;\n }\n\n await cleanUpBranches(config, remainingBranches);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prune.js","names":[],"sources":["../../../../lib/workers/repository/finalize/prune.ts"],"sourcesContent":["import { isNonEmptyStringAndNotWhitespace } from '@sindresorhus/is';\nimport { GlobalConfig } from '../../../config/global.ts';\nimport type { RenovateConfig } from '../../../config/types.ts';\nimport { REPOSITORY_CHANGED } from '../../../constants/error-messages.ts';\nimport { logger } from '../../../logger/index.ts';\nimport { ensureComment } from '../../../modules/platform/comment.ts';\nimport { platform } from '../../../modules/platform/index.ts';\nimport { scm } from '../../../modules/platform/scm.ts';\nimport { getBranchList, setUserRepoConfig } from '../../../util/git/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { uniqueStrings } from '../../../util/string.ts';\nimport { isMultiBaseBranch } from '../process/index.ts';\nimport { getReconfigureBranchName } from '../reconfigure/utils.ts';\n\nasync function cleanUpBranches(\n config: RenovateConfig,\n remainingBranches: string[],\n): Promise<void> {\n if (!config.pruneStaleBranches) {\n logger.debug('Branch/PR pruning is disabled - skipping');\n return;\n }\n // set Git author in case the repository is not initialized yet\n setUserRepoConfig(config);\n\n // in multi-base mode the base branch is encoded in the branch name\n const multiBase = isMultiBaseBranch(config);\n const baseBranchRe = multiBase ? calculateBaseBranchRegex(config) : null;\n\n for (const branchName of remainingBranches) {\n try {\n let baseBranch: string;\n if (multiBase) {\n baseBranch =\n baseBranchRe?.exec(branchName)?.[1] ?? config.defaultBranch!;\n } else {\n // single base branch: branch name doesn't encode it, use the configured one\n baseBranch = config.baseBranches?.[0] ?? config.defaultBranch!;\n }\n const pr = await platform.findPr({\n branchName,\n state: 'open',\n targetBranch: baseBranch,\n });\n const branchIsModified = await scm.isBranchModified(\n branchName,\n baseBranch,\n );\n if (pr) {\n if (branchIsModified) {\n logger.debug(\n { prNo: pr.number, prTitle: pr.title },\n 'Branch is modified - skipping PR autoclosing',\n );\n if (GlobalConfig.get('dryRun')) {\n logger.info(`DRY-RUN: Would update PR title and ensure comment.`);\n } else {\n if (!pr.title.endsWith('- abandoned')) {\n const newPrTitle = `${pr.title} - abandoned`;\n await platform.updatePr({\n number: pr.number,\n prTitle: newPrTitle,\n state: 'open',\n });\n }\n\n await ensureComment({\n number: pr.number,\n topic: 'Autoclosing Skipped',\n content:\n 'This PR has been flagged for autoclosing. However, it is being skipped due to the branch being already modified. Please close/delete it manually or report a bug if you think this is in error.',\n });\n }\n } else if (GlobalConfig.get('dryRun')) {\n logger.info(\n { prNo: pr.number, prTitle: pr.title },\n `DRY-RUN: Would autoclose PR`,\n );\n } else {\n logger.info(\n { branchName, prNo: pr.number, prTitle: pr.title },\n 'Autoclosing PR',\n );\n let newPrTitle = pr.title;\n if (!pr.title.endsWith('- autoclosed')) {\n newPrTitle += ' - autoclosed';\n }\n await platform.updatePr({\n number: pr.number,\n prTitle: newPrTitle,\n state: 'closed',\n });\n await scm.deleteBranch(branchName);\n }\n } else if (branchIsModified) {\n logger.debug(\n { branch: branchName },\n 'Orphan Branch is modified - skipping branch deletion',\n );\n } else if (GlobalConfig.get('dryRun')) {\n logger.info(`DRY-RUN: Would delete orphan branch ${branchName}`);\n } else {\n logger.info({ branch: branchName }, `Deleting orphan branch`);\n await scm.deleteBranch(branchName);\n }\n } catch (err) /* istanbul ignore next */ {\n if (err.message === 'config-validation') {\n logger.debug(\n 'Cannot prune branch due to collision between tags and branch names',\n );\n } else if (err.message?.includes(\"bad revision 'origin/\")) {\n logger.debug(\n { branchName },\n 'Branch not found on origin when attempting to prune',\n );\n } else if (err.message !== REPOSITORY_CHANGED) {\n logger.warn({ err, branch: branchName }, 'Error pruning branch');\n }\n }\n }\n}\n\n/**\n * Calculates a {RegExp} to extract the base branch from a branch name if base branch patterns is configured.\n * @param config Renovate configuration\n */\nfunction calculateBaseBranchRegex(config: RenovateConfig): RegExp | null {\n if (!config.baseBranchPatterns?.length || !config.baseBranches?.length) {\n return null;\n }\n\n // calculate possible branch prefixes and escape for regex\n const branchPrefixes = [config.branchPrefix, config.branchPrefixOld]\n .filter(isNonEmptyStringAndNotWhitespace)\n .filter(uniqueStrings)\n .map((prefix) => RegExp.escape(prefix));\n\n const baseBranches = config.baseBranches.map((branch) =>\n RegExp.escape(branch),\n );\n\n // create regex to extract base branche from branch name\n const baseBranchRe = regEx(\n `^(?:${branchPrefixes.join('|')})(${baseBranches.join('|')})-`,\n );\n\n return baseBranchRe;\n}\n\nexport async function pruneStaleBranches(\n config: RenovateConfig,\n branchList: string[] | null | undefined,\n): Promise<void> {\n logger.debug('Removing any stale branches');\n logger.trace({ config }, `pruneStaleBranches`);\n // TODO: types (#22198)\n logger.debug(`config.repoIsOnboarded=${config.repoIsOnboarded!}`);\n if (!branchList) {\n logger.debug('No branchList');\n return;\n }\n if (!config.defaultBranch) {\n logger.debug('No defaultBranch set - skipping branch pruning');\n return;\n }\n if (!isNonEmptyStringAndNotWhitespace(config.branchPrefix)) {\n // An empty branchPrefix matches every branch in the repo, so Renovate\n // cannot reliably tell its own branches apart from unrelated ones. Skip\n // pruning to avoid deleting non-Renovate branches as orphans.\n logger.warn(\n 'config.branchPrefix is empty - skipping branch pruning to avoid treating all branches as Renovate-managed',\n );\n return;\n }\n // TODO: types (#22198)\n let renovateBranches = getBranchList().filter(\n (branchName) =>\n branchName.startsWith(config.branchPrefix!) &&\n branchName !== getReconfigureBranchName(config.branchPrefix!),\n );\n if (!renovateBranches?.length) {\n logger.debug('No renovate branches found');\n return;\n }\n logger.debug(\n {\n branchList: branchList?.sort(),\n renovateBranches: renovateBranches?.sort(),\n },\n 'Branch lists',\n );\n\n const lockFileBranch = `${config.branchPrefix}lock-file-maintenance`;\n renovateBranches = renovateBranches.filter(\n (branch) => branch !== lockFileBranch,\n );\n const remainingBranches = renovateBranches.filter(\n (branch) => !branchList.includes(branch),\n );\n logger.debug(`remainingBranches=${String(remainingBranches)}`);\n if (remainingBranches.length === 0) {\n logger.debug('No branches to clean up');\n return;\n }\n\n await cleanUpBranches(config, remainingBranches);\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { coerceArray } from "../../../../../util/array.js";
|
|
2
1
|
import { logger } from "../../../../../logger/index.js";
|
|
3
2
|
import { instrument } from "../../../../../instrumentation/index.js";
|
|
4
3
|
import { get } from "../../../../../modules/versioning/index.js";
|
|
@@ -23,7 +22,11 @@ async function getInRangeReleases(config) {
|
|
|
23
22
|
try {
|
|
24
23
|
const pkgReleases = (await getPkgReleases(config)).releases;
|
|
25
24
|
const version = get(versioning);
|
|
26
|
-
const
|
|
25
|
+
const compatibilityVersion = version.valueToVersion ? config.currentValue ?? currentVersion : currentVersion;
|
|
26
|
+
const previousReleases = pkgReleases.filter((release) => version.isCompatible(release.version, compatibilityVersion)).map((release) => ({
|
|
27
|
+
...release,
|
|
28
|
+
version: version.valueToVersion?.(release.version) ?? release.version
|
|
29
|
+
})).filter((release) => !version.isGreaterThan(release.version, newVersion)).filter((release) => version.isStable(release.version) || matchesUnstable(version, currentVersion, release.version) || matchesUnstable(version, newVersion, release.version));
|
|
27
30
|
const releases = previousReleases.filter((release) => version.equals(release.version, currentVersion) || version.isGreaterThan(release.version, currentVersion));
|
|
28
31
|
/**
|
|
29
32
|
* If there is only one release, it can be one of two things:
|
|
@@ -38,7 +41,6 @@ async function getInRangeReleases(config) {
|
|
|
38
41
|
const closestPreviousRelease = previousReleases.filter((release) => !version.equals(release.version, newVersion)).sort((b, a) => version.sortVersions(a.version, b.version)).shift();
|
|
39
42
|
if (closestPreviousRelease && closestPreviousRelease.version !== newRelease.version) releases.unshift(closestPreviousRelease);
|
|
40
43
|
}
|
|
41
|
-
if (version.valueToVersion) for (const release of coerceArray(releases)) release.version = version.valueToVersion(release.version);
|
|
42
44
|
return releases;
|
|
43
45
|
} catch (err) /* istanbul ignore next */ {
|
|
44
46
|
logger.debug({ err }, "getInRangeReleases err");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"releases.js","names":[],"sources":["../../../../../../lib/workers/repository/update/pr/changelog/releases.ts"],"sourcesContent":["// TODO #22198\nimport { instrument } from '../../../../../instrumentation/index.ts';\nimport { logger } from '../../../../../logger/index.ts';\nimport type { Release } from '../../../../../modules/datasource/index.ts';\nimport {\n getPkgReleases,\n isGetPkgReleasesConfig,\n} from '../../../../../modules/datasource/index.ts';\nimport type { VersioningApi } from '../../../../../modules/versioning/index.ts';\nimport { get } from '../../../../../modules/versioning/index.ts';\nimport
|
|
1
|
+
{"version":3,"file":"releases.js","names":[],"sources":["../../../../../../lib/workers/repository/update/pr/changelog/releases.ts"],"sourcesContent":["// TODO #22198\nimport { instrument } from '../../../../../instrumentation/index.ts';\nimport { logger } from '../../../../../logger/index.ts';\nimport type { Release } from '../../../../../modules/datasource/index.ts';\nimport {\n getPkgReleases,\n isGetPkgReleasesConfig,\n} from '../../../../../modules/datasource/index.ts';\nimport type { VersioningApi } from '../../../../../modules/versioning/index.ts';\nimport { get } from '../../../../../modules/versioning/index.ts';\nimport type { BranchUpgradeConfig } from '../../../../types.ts';\n\nfunction matchesMMP(\n versioningApi: VersioningApi,\n v1: string,\n v2: string,\n): boolean {\n return (\n versioningApi.getMajor(v1) === versioningApi.getMajor(v2) &&\n versioningApi.getMinor(v1) === versioningApi.getMinor(v2) &&\n versioningApi.getPatch(v1) === versioningApi.getPatch(v2)\n );\n}\n\nfunction matchesUnstable(\n versioningApi: VersioningApi,\n v1: string,\n v2: string,\n): boolean {\n return !versioningApi.isStable(v1) && matchesMMP(versioningApi, v1, v2);\n}\n\nexport async function getInRangeReleases(\n config: BranchUpgradeConfig,\n): Promise<Release[] | null> {\n return await instrument(`getInRangeReleases`, async () => {\n const versioning = config.versioning!;\n const currentVersion = config.currentVersion!;\n const newVersion = config.newVersion!;\n const depName = config.depName!;\n const datasource = config.datasource!;\n // istanbul ignore if\n if (!isGetPkgReleasesConfig(config)) {\n return null;\n }\n try {\n const pkgReleases = (await getPkgReleases(config))!.releases;\n const version = get(versioning);\n const compatibilityVersion = version.valueToVersion\n ? (config.currentValue ?? currentVersion)\n : currentVersion;\n\n const previousReleases = pkgReleases\n .filter((release) =>\n version.isCompatible(release.version, compatibilityVersion),\n )\n .map((release) => ({\n ...release,\n version: version.valueToVersion?.(release.version) ?? release.version,\n }))\n .filter(\n (release) => !version.isGreaterThan(release.version, newVersion),\n )\n .filter(\n (release) =>\n version.isStable(release.version) ||\n matchesUnstable(version, currentVersion, release.version) ||\n matchesUnstable(version, newVersion, release.version),\n );\n\n const releases = previousReleases.filter(\n (release) =>\n version.equals(release.version, currentVersion) ||\n version.isGreaterThan(release.version, currentVersion),\n );\n\n /**\n * If there is only one release, it can be one of two things:\n *\n * 1. There really is only one release\n *\n * 2. Pinned version doesn't actually exist, i.e pinning `^1.2.3` to `1.2.3`\n * while only `1.2.2` and `1.2.4` exist.\n */\n if (releases.length === 1) {\n const newRelease = releases[0];\n const closestPreviousRelease = previousReleases\n .filter((release) => !version.equals(release.version, newVersion))\n .sort((b, a) => version.sortVersions(a.version, b.version))\n .shift();\n\n if (\n closestPreviousRelease &&\n closestPreviousRelease.version !== newRelease.version\n ) {\n releases.unshift(closestPreviousRelease);\n }\n }\n\n return releases;\n } catch (err) /* istanbul ignore next */ {\n logger.debug({ err }, 'getInRangeReleases err');\n logger.debug(`Error getting releases for ${depName} from ${datasource}`);\n return null;\n }\n });\n}\n"],"mappings":";;;;;;AAYA,SAAS,WACP,eACA,IACA,IACS;CACT,OACE,cAAc,SAAS,EAAE,MAAM,cAAc,SAAS,EAAE,KACxD,cAAc,SAAS,EAAE,MAAM,cAAc,SAAS,EAAE,KACxD,cAAc,SAAS,EAAE,MAAM,cAAc,SAAS,EAAE;AAE5D;AAEA,SAAS,gBACP,eACA,IACA,IACS;CACT,OAAO,CAAC,cAAc,SAAS,EAAE,KAAK,WAAW,eAAe,IAAI,EAAE;AACxE;AAEA,eAAsB,mBACpB,QAC2B;CAC3B,OAAO,MAAM,WAAW,sBAAsB,YAAY;EACxD,MAAM,aAAa,OAAO;EAC1B,MAAM,iBAAiB,OAAO;EAC9B,MAAM,aAAa,OAAO;EAC1B,MAAM,UAAU,OAAO;EACvB,MAAM,aAAa,OAAO;;EAE1B,IAAI,CAAC,uBAAuB,MAAM,GAChC,OAAO;EAET,IAAI;GACF,MAAM,eAAe,MAAM,eAAe,MAAM,EAAA,CAAI;GACpD,MAAM,UAAU,IAAI,UAAU;GAC9B,MAAM,uBAAuB,QAAQ,iBAChC,OAAO,gBAAgB,iBACxB;GAEJ,MAAM,mBAAmB,YACtB,QAAQ,YACP,QAAQ,aAAa,QAAQ,SAAS,oBAAoB,CAC5D,CAAC,CACA,KAAK,aAAa;IACjB,GAAG;IACH,SAAS,QAAQ,iBAAiB,QAAQ,OAAO,KAAK,QAAQ;GAChE,EAAE,CAAC,CACF,QACE,YAAY,CAAC,QAAQ,cAAc,QAAQ,SAAS,UAAU,CACjE,CAAC,CACA,QACE,YACC,QAAQ,SAAS,QAAQ,OAAO,KAChC,gBAAgB,SAAS,gBAAgB,QAAQ,OAAO,KACxD,gBAAgB,SAAS,YAAY,QAAQ,OAAO,CACxD;GAEF,MAAM,WAAW,iBAAiB,QAC/B,YACC,QAAQ,OAAO,QAAQ,SAAS,cAAc,KAC9C,QAAQ,cAAc,QAAQ,SAAS,cAAc,CACzD;;;;;;;;;GAUA,IAAI,SAAS,WAAW,GAAG;IACzB,MAAM,aAAa,SAAS;IAC5B,MAAM,yBAAyB,iBAC5B,QAAQ,YAAY,CAAC,QAAQ,OAAO,QAAQ,SAAS,UAAU,CAAC,CAAC,CACjE,MAAM,GAAG,MAAM,QAAQ,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAC1D,MAAM;IAET,IACE,0BACA,uBAAuB,YAAY,WAAW,SAE9C,SAAS,QAAQ,sBAAsB;GAE3C;GAEA,OAAO;EACT,SAAS,gCAAgC;GACvC,OAAO,MAAM,EAAE,IAAI,GAAG,wBAAwB;GAC9C,OAAO,MAAM,8BAA8B,QAAQ,QAAQ,YAAY;GACvE,OAAO;EACT;CACF,CAAC;AACH"}
|
package/package.json
CHANGED
package/renovate-schema.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$id": "https://docs.renovatebot.com/renovate-schema.json",
|
|
3
|
-
"title": "JSON schema for Renovate 44.59.
|
|
3
|
+
"title": "JSON schema for Renovate 44.59.2 config files (https://renovatebot.com/)",
|
|
4
4
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
5
|
-
"x-renovate-version": "44.59.
|
|
5
|
+
"x-renovate-version": "44.59.2",
|
|
6
6
|
"allowComments": true,
|
|
7
7
|
"type": "object",
|
|
8
8
|
"definitions": {
|