renovate 44.32.6 → 44.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/modules/datasource/deb/checksum.js +2 -2
- package/dist/modules/datasource/deb/checksum.js.map +1 -1
- package/dist/modules/datasource/java-version/adoptium.js +48 -0
- package/dist/modules/datasource/java-version/adoptium.js.map +1 -0
- package/dist/modules/datasource/java-version/index.js +5 -34
- package/dist/modules/datasource/java-version/index.js.map +1 -1
- package/dist/modules/datasource/pypi/index.js +94 -31
- package/dist/modules/datasource/pypi/index.js.map +1 -1
- package/dist/modules/datasource/pypi/schema.js +15 -2
- package/dist/modules/datasource/pypi/schema.js.map +1 -1
- package/dist/modules/manager/ant/properties.js +2 -2
- package/dist/modules/manager/ant/properties.js.map +1 -1
- package/dist/modules/manager/bazel/rules/http.js +2 -2
- package/dist/modules/manager/bazel/rules/http.js.map +1 -1
- package/dist/modules/manager/fingerprint.generated.js +1 -1
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/github-actions/community.js +2 -2
- package/dist/modules/manager/github-actions/community.js.map +1 -1
- package/dist/modules/manager/gradle/extract/catalog.js +3 -3
- package/dist/modules/manager/gradle/extract/catalog.js.map +1 -1
- package/dist/modules/manager/homebrew/utils.js +3 -3
- package/dist/modules/manager/homebrew/utils.js.map +1 -1
- package/dist/modules/manager/mise/backends.js +2 -2
- package/dist/modules/manager/mise/backends.js.map +1 -1
- package/dist/modules/manager/npm/update/dependency/index.js +2 -2
- package/dist/modules/manager/npm/update/dependency/index.js.map +1 -1
- package/dist/modules/manager/pip_requirements/artifacts.js +2 -2
- package/dist/modules/manager/pip_requirements/artifacts.js.map +1 -1
- package/dist/modules/manager/swift/artifacts.js +2 -2
- package/dist/modules/manager/swift/artifacts.js.map +1 -1
- package/dist/modules/manager/terraform/lockfile/index.js +2 -2
- package/dist/modules/manager/terraform/lockfile/index.js.map +1 -1
- package/dist/util/regex.js +1 -9
- package/dist/util/regex.js.map +1 -1
- package/dist/workers/repository/finalize/prune.js +3 -3
- package/dist/workers/repository/finalize/prune.js.map +1 -1
- package/dist/workers/repository/init/vulnerability.js +2 -2
- package/dist/workers/repository/init/vulnerability.js.map +1 -1
- package/dist/workers/repository/update/branch/auto-replace.js +5 -5
- package/dist/workers/repository/update/branch/auto-replace.js.map +1 -1
- package/package.json +1 -1
- package/renovate-schema.json +2 -2
|
@@ -70,7 +70,7 @@ hashMap.set("maven", "f084cdc88320ca1e82af957d0008e7c9ce991d3282cb428f3108a57222
|
|
|
70
70
|
hashMap.set("maven-wrapper", "779344a4e259e0c28bfadfeb435dd72feb7224d7346d038a1c35f02deb1357bc");
|
|
71
71
|
hashMap.set("meteor", "4a93a326b27bedfe52118e27e06f39fecd7c55bd4cd7fccec4cb120cac14cec4");
|
|
72
72
|
hashMap.set("mint", "248fe4f1ea5c985921c286785792c97e06fc41f402b2d45df82f6aecd17f710e");
|
|
73
|
-
hashMap.set("mise", "
|
|
73
|
+
hashMap.set("mise", "8509ff587ee410eeb94cbf1d4616c6a174b5f4110d0e748496edd8ed150d8b9b");
|
|
74
74
|
hashMap.set("mix", "5eb001e2af7cd664d811ad2d9928bf785527ed292de1e567de57f7e2cecc1ecc");
|
|
75
75
|
hashMap.set("nix", "d3283c2b948695a16c1089da4e2689faacd50eaa7d734d6fa5d6661aef6db7e7");
|
|
76
76
|
hashMap.set("nodenv", "ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8");
|
|
@@ -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('argocd','5d35b1992e53130bf83b0e59a0f90ccd3a78919974c69044f306dc5d162f48ce');\nhashMap.set('asdf','b2acfc0a6164e9a279daa724777c423f84572dafb0df09b1b0cf6f205f9eb6d0');\nhashMap.set('azure-pipelines','4f635b0ecd388ee266d992e8281fd40e3db2f5867d86fc1cbce72dc33a66e796');\nhashMap.set('batect','bd9208444eff1a4958061484db66a47b616c31f15a8d49d23b75c4560fcee83e');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','4994a8bd86d5bfb169d67c08efd8509b58c368c2bf3dd9bbe42553c0fabc3f1a');\nhashMap.set('bazel-module','40f6a862b4e72fcc7262ee41f8b570ea3fd5600d6d552b94ed3301bb201f5db5');\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','4f70ac0377893683eb30013bf4d23a8bd7213a883847c9eaadf1217f5f190ee1');\nhashMap.set('cake','ed6d14c96161f1d3d927adc7e333b96585164e1f25151a87990914d57ae17fe1');\nhashMap.set('cargo','13377c53df158cdfc58330f73682fadc3e88e57f0d22c9245c0ffd62a495edf1');\nhashMap.set('cdnurl','d3edf6cdc38e92eb43ff5a2b4e8df6a6a13154cf83244725c39e28d7e6ea9177');\nhashMap.set('circleci','91cbeb33ea20f9838e2c81a1195eb806f0b38fa282bc3679f62552f20575ca85');\nhashMap.set('cloudbuild','8c0c739f7e4082bbfe8e3fdffebaf43e26f70a1314d95b306e9b93e4f4297886');\nhashMap.set('cocoapods','cf48ab5a573a28bf14d5e6c84eed9ca08b7f0cb5b7fc51d795c21c7254bb9dd1');\nhashMap.set('composer','869aab556d9b2ca2b743a790a7c0d7d104d62bbcbcc2185c44c64543d70413ba');\nhashMap.set('conan','74ca922a0ffdf1a9dd44b83eb2b3a36c56c7d792031e3a4a484f293046be3ecd');\nhashMap.set('copier','06a52206ba5542f99f056c832245196afd4b78bffeca088f710a5df958a9693d');\nhashMap.set('cpanfile','07813fec3f3c2197056500e9266a0553b9774c02f2c74d5ca2e213188c7c12d3');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deno','a43016a9a469e0472f00855c8db64bb65ef5ffa773e7bbfade02a21400f67690');\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','e95bbc9b69a36dee82e255e8983640b7179cb5f17d24b035c6cf01d9635b35bd');\nhashMap.set('github-actions','0a77751d4307d7e923bf2d05bf49084e77a23d7f1e498a1373202dd1ebdcc48a');\nhashMap.set('gitlabci','33c264edf7837fb8fbc4cf0078c8bd2d5a75431039b1db65bf47356df7753125');\nhashMap.set('gitlabci-include','ef696c478c2ac1723b3aca070ba9779be0e702fff0844054251ba0029523d0eb');\nhashMap.set('glasskube','93e7b9000a17efa15a1abaaf320b5af9169b1ecd828fc0c881d98570ef9d9e30');\nhashMap.set('gleam','02389785183c39d2896d7893414c5e1060023f95c1fe7b595bd06cc5c1186d39');\nhashMap.set('gomod','64ab863d3064caf535e5e85d5f1c18275f5b9471950a342b2804b35d8da1319f');\nhashMap.set('gradle','550f1107f0ac27d18fa76a7d5c0c0b317b5df4156fc12cfd378573ccfe26fca0');\nhashMap.set('gradle-wrapper','799d9bb8d9dead673fb513ba4936395f14da30897d33a9df46b3266e1b835d5d');\nhashMap.set('haskell-cabal','f232d0e883235f74ed71fd9de4a7468e5fcbda9a1af5beb56c24657f7bf2e891');\nhashMap.set('helm-requirements','4d90e5e18a380876ad48e21e1ad88ea62e25d973a1ddaa3763447fc0a9f9915b');\nhashMap.set('helm-values','b5c52c6a27d805557418c585c5d3030c95ee641d53057021f3fe060f81b6e1af');\nhashMap.set('helmfile','ab828a1877cfe029ed5f8dd2a026409cd5e6431705af3aac3f56a3bc4f827508');\nhashMap.set('helmsman','ef9680c612f702c7f07aea9b6e5d811e91214dcfa5755c9f3803e9528090935e');\nhashMap.set('helmv3','4088a90bd8be4ae1bcb85dc4d34d3fbbb75e72bd33d144284e7e1f0e726c8d3b');\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','4023ef4cac55fe58f8d9744ae86b13532298926e35e22d250334cde55c3386ff');\nhashMap.set('kotlin-script','99ef296792a0ca575ed31d3defb514b05a58083dc01c52ea0890c69d867ba1dd');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','fb5f6fbf45b318ca277d6d9f7fee22680f4b99c7ff9170a50315122918d2e007');\nhashMap.set('leiningen','133fca2c3423f53f2ccc22518153ddbcafbf0f4812376c77e952eb3d24d81f85');\nhashMap.set('maven','f084cdc88320ca1e82af957d0008e7c9ce991d3282cb428f3108a5722239cead');\nhashMap.set('maven-wrapper','779344a4e259e0c28bfadfeb435dd72feb7224d7346d038a1c35f02deb1357bc');\nhashMap.set('meteor','4a93a326b27bedfe52118e27e06f39fecd7c55bd4cd7fccec4cb120cac14cec4');\nhashMap.set('mint','248fe4f1ea5c985921c286785792c97e06fc41f402b2d45df82f6aecd17f710e');\nhashMap.set('mise','8463d355091f5f167e3f4a8adbebfe49310ad9ac45c89d60455ef8e110df4a49');\nhashMap.set('mix','5eb001e2af7cd664d811ad2d9928bf785527ed292de1e567de57f7e2cecc1ecc');\nhashMap.set('nix','d3283c2b948695a16c1089da4e2689faacd50eaa7d734d6fa5d6661aef6db7e7');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','95ddcec26d4db9ee54028f00fdcac118c458cd1513623737dd1b3f79d05a11a4');\nhashMap.set('nuget','d4f3c5cbc0f6e6e8baf80b8ad8e184d186ff6686486b1c97995a0c87151abbe3');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','32233a1a8a2725699d7448ba438e3d0b78141f7799cd2b588de278d41e26ed10');\nhashMap.set('pep621','f5dc3c8434845dd814bc649c619323dcb69e3ec5da2d361d353bdf6ae3cc5d88');\nhashMap.set('pep723','b96683163de63ed93207ec0538066705b1e58a1cd5b8bd11c63fc28b26bddba1');\nhashMap.set('pip-compile','9711b1c00da18ff785e624c50e4b042519e7ad615c5f018f08459fac8394fec5');\nhashMap.set('pip_requirements','537ef9d7b43b5adcfbfbb86392e0c7a8a0ee91c804118af83cf92e1868949e1a');\nhashMap.set('pip_setup','0175fe550c19d9bd31c978bd83fdc088cb40fcacd5d6751f640164274ae64e61');\nhashMap.set('pipenv','a7d45859427263c17f1109a08c8b48a1f24812290f9853013ec1774f2484a769');\nhashMap.set('pixi','3732f052617efd5007ddbe31091a2ba026909288bac4cbbe6d2bd6ac64d85393');\nhashMap.set('poetry','6cf6bc5116458761b2d6779caf465d6e26768fbe6e2ffba54b5da981aa8c385f');\nhashMap.set('pre-commit','17a5f183985ebffe98785a541d3609bf25efedc387deb3d50e9f00f02b25f615');\nhashMap.set('proto','412053d4550026b4ace490b46e970915b87ec1abf0b0a0c6c8c58ccf1fc16843');\nhashMap.set('pub','a2ded51959d48e053b811b3b9330b2460fc61d0fc2e74a400a546e4f82d25767');\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','05b3158e88771ed4629e171592cf4f1bf0ff342f8aeae89be0b340c630cc6d8e');\nhashMap.set('swift','eb5f7c3c4dabf28eed36916269ca9be16ab9ddb83993db03ea66b9195ad7bdc6');\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','ee9cc316c73ab0944da494bf36cfeafba8e79a36ec77753b9f341c8e80f1d602');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('xcodegen','dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683');\nhashMap.set('jsonata','416bcf61144b276b3112814c6e6d261aa29608f46fbb0516c471d35c16f8f0d7');\nhashMap.set('regex','dbe6889ea021a05127fed06226d73366fdada2ae577147a5c027996fd325416e');"],"mappings":"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"}
|
|
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('argocd','5d35b1992e53130bf83b0e59a0f90ccd3a78919974c69044f306dc5d162f48ce');\nhashMap.set('asdf','b2acfc0a6164e9a279daa724777c423f84572dafb0df09b1b0cf6f205f9eb6d0');\nhashMap.set('azure-pipelines','4f635b0ecd388ee266d992e8281fd40e3db2f5867d86fc1cbce72dc33a66e796');\nhashMap.set('batect','bd9208444eff1a4958061484db66a47b616c31f15a8d49d23b75c4560fcee83e');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','4994a8bd86d5bfb169d67c08efd8509b58c368c2bf3dd9bbe42553c0fabc3f1a');\nhashMap.set('bazel-module','40f6a862b4e72fcc7262ee41f8b570ea3fd5600d6d552b94ed3301bb201f5db5');\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','4f70ac0377893683eb30013bf4d23a8bd7213a883847c9eaadf1217f5f190ee1');\nhashMap.set('cake','ed6d14c96161f1d3d927adc7e333b96585164e1f25151a87990914d57ae17fe1');\nhashMap.set('cargo','13377c53df158cdfc58330f73682fadc3e88e57f0d22c9245c0ffd62a495edf1');\nhashMap.set('cdnurl','d3edf6cdc38e92eb43ff5a2b4e8df6a6a13154cf83244725c39e28d7e6ea9177');\nhashMap.set('circleci','91cbeb33ea20f9838e2c81a1195eb806f0b38fa282bc3679f62552f20575ca85');\nhashMap.set('cloudbuild','8c0c739f7e4082bbfe8e3fdffebaf43e26f70a1314d95b306e9b93e4f4297886');\nhashMap.set('cocoapods','cf48ab5a573a28bf14d5e6c84eed9ca08b7f0cb5b7fc51d795c21c7254bb9dd1');\nhashMap.set('composer','869aab556d9b2ca2b743a790a7c0d7d104d62bbcbcc2185c44c64543d70413ba');\nhashMap.set('conan','74ca922a0ffdf1a9dd44b83eb2b3a36c56c7d792031e3a4a484f293046be3ecd');\nhashMap.set('copier','06a52206ba5542f99f056c832245196afd4b78bffeca088f710a5df958a9693d');\nhashMap.set('cpanfile','07813fec3f3c2197056500e9266a0553b9774c02f2c74d5ca2e213188c7c12d3');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deno','a43016a9a469e0472f00855c8db64bb65ef5ffa773e7bbfade02a21400f67690');\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','e95bbc9b69a36dee82e255e8983640b7179cb5f17d24b035c6cf01d9635b35bd');\nhashMap.set('github-actions','0a77751d4307d7e923bf2d05bf49084e77a23d7f1e498a1373202dd1ebdcc48a');\nhashMap.set('gitlabci','33c264edf7837fb8fbc4cf0078c8bd2d5a75431039b1db65bf47356df7753125');\nhashMap.set('gitlabci-include','ef696c478c2ac1723b3aca070ba9779be0e702fff0844054251ba0029523d0eb');\nhashMap.set('glasskube','93e7b9000a17efa15a1abaaf320b5af9169b1ecd828fc0c881d98570ef9d9e30');\nhashMap.set('gleam','02389785183c39d2896d7893414c5e1060023f95c1fe7b595bd06cc5c1186d39');\nhashMap.set('gomod','64ab863d3064caf535e5e85d5f1c18275f5b9471950a342b2804b35d8da1319f');\nhashMap.set('gradle','550f1107f0ac27d18fa76a7d5c0c0b317b5df4156fc12cfd378573ccfe26fca0');\nhashMap.set('gradle-wrapper','799d9bb8d9dead673fb513ba4936395f14da30897d33a9df46b3266e1b835d5d');\nhashMap.set('haskell-cabal','f232d0e883235f74ed71fd9de4a7468e5fcbda9a1af5beb56c24657f7bf2e891');\nhashMap.set('helm-requirements','4d90e5e18a380876ad48e21e1ad88ea62e25d973a1ddaa3763447fc0a9f9915b');\nhashMap.set('helm-values','b5c52c6a27d805557418c585c5d3030c95ee641d53057021f3fe060f81b6e1af');\nhashMap.set('helmfile','ab828a1877cfe029ed5f8dd2a026409cd5e6431705af3aac3f56a3bc4f827508');\nhashMap.set('helmsman','ef9680c612f702c7f07aea9b6e5d811e91214dcfa5755c9f3803e9528090935e');\nhashMap.set('helmv3','4088a90bd8be4ae1bcb85dc4d34d3fbbb75e72bd33d144284e7e1f0e726c8d3b');\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','4023ef4cac55fe58f8d9744ae86b13532298926e35e22d250334cde55c3386ff');\nhashMap.set('kotlin-script','99ef296792a0ca575ed31d3defb514b05a58083dc01c52ea0890c69d867ba1dd');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','fb5f6fbf45b318ca277d6d9f7fee22680f4b99c7ff9170a50315122918d2e007');\nhashMap.set('leiningen','133fca2c3423f53f2ccc22518153ddbcafbf0f4812376c77e952eb3d24d81f85');\nhashMap.set('maven','f084cdc88320ca1e82af957d0008e7c9ce991d3282cb428f3108a5722239cead');\nhashMap.set('maven-wrapper','779344a4e259e0c28bfadfeb435dd72feb7224d7346d038a1c35f02deb1357bc');\nhashMap.set('meteor','4a93a326b27bedfe52118e27e06f39fecd7c55bd4cd7fccec4cb120cac14cec4');\nhashMap.set('mint','248fe4f1ea5c985921c286785792c97e06fc41f402b2d45df82f6aecd17f710e');\nhashMap.set('mise','8509ff587ee410eeb94cbf1d4616c6a174b5f4110d0e748496edd8ed150d8b9b');\nhashMap.set('mix','5eb001e2af7cd664d811ad2d9928bf785527ed292de1e567de57f7e2cecc1ecc');\nhashMap.set('nix','d3283c2b948695a16c1089da4e2689faacd50eaa7d734d6fa5d6661aef6db7e7');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','95ddcec26d4db9ee54028f00fdcac118c458cd1513623737dd1b3f79d05a11a4');\nhashMap.set('nuget','d4f3c5cbc0f6e6e8baf80b8ad8e184d186ff6686486b1c97995a0c87151abbe3');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','32233a1a8a2725699d7448ba438e3d0b78141f7799cd2b588de278d41e26ed10');\nhashMap.set('pep621','f5dc3c8434845dd814bc649c619323dcb69e3ec5da2d361d353bdf6ae3cc5d88');\nhashMap.set('pep723','b96683163de63ed93207ec0538066705b1e58a1cd5b8bd11c63fc28b26bddba1');\nhashMap.set('pip-compile','9711b1c00da18ff785e624c50e4b042519e7ad615c5f018f08459fac8394fec5');\nhashMap.set('pip_requirements','537ef9d7b43b5adcfbfbb86392e0c7a8a0ee91c804118af83cf92e1868949e1a');\nhashMap.set('pip_setup','0175fe550c19d9bd31c978bd83fdc088cb40fcacd5d6751f640164274ae64e61');\nhashMap.set('pipenv','a7d45859427263c17f1109a08c8b48a1f24812290f9853013ec1774f2484a769');\nhashMap.set('pixi','3732f052617efd5007ddbe31091a2ba026909288bac4cbbe6d2bd6ac64d85393');\nhashMap.set('poetry','6cf6bc5116458761b2d6779caf465d6e26768fbe6e2ffba54b5da981aa8c385f');\nhashMap.set('pre-commit','17a5f183985ebffe98785a541d3609bf25efedc387deb3d50e9f00f02b25f615');\nhashMap.set('proto','412053d4550026b4ace490b46e970915b87ec1abf0b0a0c6c8c58ccf1fc16843');\nhashMap.set('pub','a2ded51959d48e053b811b3b9330b2460fc61d0fc2e74a400a546e4f82d25767');\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','05b3158e88771ed4629e171592cf4f1bf0ff342f8aeae89be0b340c630cc6d8e');\nhashMap.set('swift','eb5f7c3c4dabf28eed36916269ca9be16ab9ddb83993db03ea66b9195ad7bdc6');\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','ee9cc316c73ab0944da494bf36cfeafba8e79a36ec77753b9f341c8e80f1d602');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('xcodegen','dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683');\nhashMap.set('jsonata','416bcf61144b276b3112814c6e6d261aa29608f46fbb0516c471d35c16f8f0d7');\nhashMap.set('regex','dbe6889ea021a05127fed06226d73366fdada2ae577147a5c027996fd325416e');"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { regEx } from "../../../util/regex.js";
|
|
2
2
|
import "../../versioning/npm/index.js";
|
|
3
3
|
import { id } from "../../versioning/conda/index.js";
|
|
4
4
|
import { DockerDatasource } from "../../datasource/docker/index.js";
|
|
@@ -25,7 +25,7 @@ function actionSchema(name, { withSchema, ...cfg }) {
|
|
|
25
25
|
}));
|
|
26
26
|
}
|
|
27
27
|
function matchAction(action) {
|
|
28
|
-
return z.string().regex(regEx(`(?:https?://[^/]+/)?${
|
|
28
|
+
return z.string().regex(regEx(`(?:https?://[^/]+/)?${RegExp.escape(action)}(?:@.+)?$`));
|
|
29
29
|
}
|
|
30
30
|
function parseValue(currentValue, isInvalid) {
|
|
31
31
|
if (!currentValue) return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"community.js","names":["condaVersioning.id"],"sources":["../../../../lib/modules/manager/github-actions/community.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\nimport { escapeRegExp, regEx } from '../../../util/regex.ts';\nimport { DockerDatasource } from '../../datasource/docker/index.ts';\nimport { GithubReleaseAttachmentsDatasource } from '../../datasource/github-release-attachments/index.ts';\nimport { GithubReleasesDatasource } from '../../datasource/github-releases/index.ts';\nimport { NodeVersionDatasource } from '../../datasource/node-version/index.ts';\nimport { NpmDatasource } from '../../datasource/npm/index.ts';\nimport { PypiDatasource } from '../../datasource/pypi/index.ts';\nimport { RubyVersionDatasource } from '../../datasource/ruby-version/index.ts';\nimport { RustVersionDatasource } from '../../datasource/rust-version/index.ts';\nimport * as condaVersioning from '../../versioning/conda/index.ts';\nimport * as npmVersioning from '../../versioning/npm/index.ts';\nimport type { PackageDependency } from '../types.ts';\n\n/**\n * Parses a step - or just its `with:` block - into the dependencies it\n * declares. Most actions declare a single one, but a step may yield several.\n */\nexport type ActionSchema = z.ZodType<PackageDependency[]>;\n\nexport interface CommunityActionConfig {\n datasource: string;\n depName?: string;\n packageName: string;\n versioning?: string;\n extractVersion?: string;\n\n /**\n * Parses the `with:` block, defaulting to the `version:` input.\n *\n * The fields above are applied to every dependency it yields, so a schema\n * which yields dependencies of more than one kind must set them itself.\n */\n withSchema?: ActionSchema;\n}\n\nexport function actionSchema(\n name: string,\n { withSchema, ...cfg }: CommunityActionConfig,\n): ActionSchema {\n return z\n .object({\n uses: matchAction(name),\n with: withSchema ?? VersionVal,\n })\n .transform(({ with: deps }) =>\n deps.map((dep) => {\n const merged = { ...cfg, ...dep };\n merged.depName ??= merged.packageName;\n return merged;\n }),\n );\n}\n\nfunction matchAction(action: string): z.ZodString {\n return z\n .string()\n .regex(regEx(`(?:https?://[^/]+/)?${escapeRegExp(action)}(?:@.+)?$`));\n}\n\nfunction parseValue(\n currentValue: string | undefined,\n isInvalid?: (val: string) => boolean,\n): PackageDependency {\n if (!currentValue) {\n return {\n skipStage: 'extract',\n skipReason: 'unspecified-version',\n depType: 'uses-with',\n };\n }\n if (isInvalid?.(currentValue) === true) {\n return {\n skipStage: 'extract',\n skipReason: 'invalid-version',\n depType: 'uses-with',\n currentValue,\n };\n }\n return { currentValue, depType: 'uses-with' };\n}\n\n/**\n * A single dependency, versioned by the given `with:` input.\n *\n * @param isInvalid should return `true` if the version is invalid and should be skipped\n */\nfunction valSchema(\n key: string,\n isInvalid?: (val: string) => boolean,\n): ActionSchema {\n return z\n .object({ [key]: z.string().optional() })\n .transform((val) => [parseValue(val[key], isInvalid)]);\n}\n\nconst VersionVal = valSchema('version');\n\nconst InstallBinaryWith: ActionSchema = z\n .object({ repo: z.string(), tag: z.string() })\n .transform(({ repo, tag }) => [{ packageName: repo, ...parseValue(tag) }]);\n\nconst sha256Regex = regEx(/^[a-f0-9]{64}$/);\nconst MiseWith: ActionSchema = z\n .object({\n version: z.string().optional(),\n sha256: z.string().optional(),\n })\n .transform(({ version, sha256 }) => [\n {\n ...parseValue(version),\n ...(sha256 && sha256Regex.test(sha256) ? { currentDigest: sha256 } : {}),\n },\n ]);\n\n// Runtimes installable by `pnpm/setup`, keyed by the name used in its\n// `runtime:` input. `bun` and `deno` reuse the datasources of their respective\n// `setup-*` actions below.\nconst pnpmRuntimes: Record<string, PackageDependency | undefined> = {\n node: { datasource: NodeVersionDatasource.id, packageName: 'node' },\n bun: { datasource: NpmDatasource.id, packageName: 'bun' },\n deno: { datasource: NpmDatasource.id, packageName: 'deno' },\n};\n\nfunction parsePnpmRuntime(runtime: string | undefined): PackageDependency[] {\n if (!runtime) {\n return [];\n }\n\n // `<name>` or `<name>@<version>`, matching pnpm's `packageManager` field syntax\n const [name, version] = runtime.split('@');\n const cfg = pnpmRuntimes[name];\n if (!cfg) {\n return [\n {\n packageName: name || runtime,\n depType: 'uses-with',\n skipStage: 'extract',\n skipReason: 'invalid-name',\n },\n ];\n }\n\n return [{ ...cfg, ...parseValue(version) }];\n}\n\nconst PnpmSetupWith: ActionSchema = z\n .object({\n version: z.string().optional(),\n runtime: z.string().optional(),\n })\n .transform(({ version, runtime }) => [\n parseValue(version),\n ...parsePnpmRuntime(runtime),\n ]);\n\n/**\n * Community contributed actions with known version input schemas.\n */\nexport const communityActions: Record<string, CommunityActionConfig> = {\n // https://github.com/aquasecurity/setup-trivy\n 'aquasecurity/setup-trivy': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'aquasecurity/trivy',\n },\n // https://github.com/aquasecurity/trivy-action\n 'aquasecurity/trivy-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'aquasecurity/trivy',\n },\n // https://github.com/astral-sh/setup-uv\n 'astral-sh/setup-uv': {\n datasource: GithubReleasesDatasource.id,\n versioning: npmVersioning.id,\n packageName: 'astral-sh/uv',\n },\n 'azure/setup-helm': {\n datasource: GithubReleasesDatasource.id,\n depName: 'helm',\n packageName: 'helm/helm',\n },\n // https://github.com/azure/setup-helm\n 'denoland/setup-deno': {\n datasource: NpmDatasource.id,\n packageName: 'deno',\n withSchema: valSchema('deno-version'),\n },\n // https://github.com/docker/setup-buildx-action\n 'docker/setup-buildx-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'buildx',\n packageName: 'docker/buildx',\n },\n // https://github.com/docker/setup-compose-action\n 'docker/setup-compose-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'docker/compose',\n },\n // https://github.com/docker/setup-docker-action\n 'docker/setup-docker-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'docker',\n packageName: 'moby/moby',\n extractVersion: '^docker-(?<version>.+)$',\n },\n // https://github.com/dtolnay/rust-toolchain\n 'dtolnay/rust-toolchain': {\n datasource: RustVersionDatasource.id,\n packageName: 'rust',\n withSchema: valSchema('toolchain'),\n },\n 'golangci/golangci-lint-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'golangci/golangci-lint',\n },\n // https://github.com/helm/chart-testing-action\n 'helm/chart-testing-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'chart-testing',\n packageName: 'helm/chart-testing',\n },\n 'jakebailey/pyright-action': {\n datasource: NpmDatasource.id,\n packageName: 'pyright',\n withSchema: valSchema('version', (val) => val === 'PATH'),\n },\n 'jaxxstorm/action-install-gh-release': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined from `repo` input\n withSchema: InstallBinaryWith,\n },\n 'jdx/mise-action': {\n datasource: GithubReleaseAttachmentsDatasource.id,\n packageName: 'jdx/mise',\n withSchema: MiseWith,\n },\n 'oven-sh/setup-bun': {\n datasource: NpmDatasource.id,\n packageName: 'bun',\n withSchema: valSchema('bun-version'),\n },\n 'pdm-project/setup-pdm': {\n datasource: PypiDatasource.id,\n packageName: 'pdm',\n },\n 'pnpm/action-setup': {\n datasource: NpmDatasource.id,\n packageName: 'pnpm',\n },\n 'pnpm/setup': {\n datasource: NpmDatasource.id,\n packageName: 'pnpm',\n withSchema: PnpmSetupWith,\n },\n 'prefix-dev/setup-pixi': {\n datasource: GithubReleasesDatasource.id,\n versioning: condaVersioning.id,\n packageName: 'prefix-dev/pixi',\n withSchema: valSchema('pixi-version'),\n },\n // https://github.com/pypa/hatch/tree/install\n 'pypa/hatch': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'pypa/hatch',\n // Strip hatch- prefix from release tags\n extractVersion: '^hatch-(?<version>.+)$',\n },\n 'ruby/setup-ruby': {\n datasource: RubyVersionDatasource.id,\n packageName: 'ruby',\n withSchema: valSchema('ruby-version'),\n },\n 'sigoden/install-binary': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined from `repo` input\n withSchema: InstallBinaryWith,\n },\n 'sigstore/cosign-installer': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'sigstore/cosign',\n withSchema: valSchema('cosign-release'),\n },\n 'UpCloudLtd/upcloud-cli-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'UpCloudLtd/upcloud-cli',\n },\n 'zizmorcore/zizmor-action': {\n datasource: DockerDatasource.id,\n packageName: 'ghcr.io/zizmorcore/zizmor',\n },\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"community.js","names":["condaVersioning.id"],"sources":["../../../../lib/modules/manager/github-actions/community.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\nimport { regEx } from '../../../util/regex.ts';\nimport { DockerDatasource } from '../../datasource/docker/index.ts';\nimport { GithubReleaseAttachmentsDatasource } from '../../datasource/github-release-attachments/index.ts';\nimport { GithubReleasesDatasource } from '../../datasource/github-releases/index.ts';\nimport { NodeVersionDatasource } from '../../datasource/node-version/index.ts';\nimport { NpmDatasource } from '../../datasource/npm/index.ts';\nimport { PypiDatasource } from '../../datasource/pypi/index.ts';\nimport { RubyVersionDatasource } from '../../datasource/ruby-version/index.ts';\nimport { RustVersionDatasource } from '../../datasource/rust-version/index.ts';\nimport * as condaVersioning from '../../versioning/conda/index.ts';\nimport * as npmVersioning from '../../versioning/npm/index.ts';\nimport type { PackageDependency } from '../types.ts';\n\n/**\n * Parses a step - or just its `with:` block - into the dependencies it\n * declares. Most actions declare a single one, but a step may yield several.\n */\nexport type ActionSchema = z.ZodType<PackageDependency[]>;\n\nexport interface CommunityActionConfig {\n datasource: string;\n depName?: string;\n packageName: string;\n versioning?: string;\n extractVersion?: string;\n\n /**\n * Parses the `with:` block, defaulting to the `version:` input.\n *\n * The fields above are applied to every dependency it yields, so a schema\n * which yields dependencies of more than one kind must set them itself.\n */\n withSchema?: ActionSchema;\n}\n\nexport function actionSchema(\n name: string,\n { withSchema, ...cfg }: CommunityActionConfig,\n): ActionSchema {\n return z\n .object({\n uses: matchAction(name),\n with: withSchema ?? VersionVal,\n })\n .transform(({ with: deps }) =>\n deps.map((dep) => {\n const merged = { ...cfg, ...dep };\n merged.depName ??= merged.packageName;\n return merged;\n }),\n );\n}\n\nfunction matchAction(action: string): z.ZodString {\n return z\n .string()\n .regex(regEx(`(?:https?://[^/]+/)?${RegExp.escape(action)}(?:@.+)?$`));\n}\n\nfunction parseValue(\n currentValue: string | undefined,\n isInvalid?: (val: string) => boolean,\n): PackageDependency {\n if (!currentValue) {\n return {\n skipStage: 'extract',\n skipReason: 'unspecified-version',\n depType: 'uses-with',\n };\n }\n if (isInvalid?.(currentValue) === true) {\n return {\n skipStage: 'extract',\n skipReason: 'invalid-version',\n depType: 'uses-with',\n currentValue,\n };\n }\n return { currentValue, depType: 'uses-with' };\n}\n\n/**\n * A single dependency, versioned by the given `with:` input.\n *\n * @param isInvalid should return `true` if the version is invalid and should be skipped\n */\nfunction valSchema(\n key: string,\n isInvalid?: (val: string) => boolean,\n): ActionSchema {\n return z\n .object({ [key]: z.string().optional() })\n .transform((val) => [parseValue(val[key], isInvalid)]);\n}\n\nconst VersionVal = valSchema('version');\n\nconst InstallBinaryWith: ActionSchema = z\n .object({ repo: z.string(), tag: z.string() })\n .transform(({ repo, tag }) => [{ packageName: repo, ...parseValue(tag) }]);\n\nconst sha256Regex = regEx(/^[a-f0-9]{64}$/);\nconst MiseWith: ActionSchema = z\n .object({\n version: z.string().optional(),\n sha256: z.string().optional(),\n })\n .transform(({ version, sha256 }) => [\n {\n ...parseValue(version),\n ...(sha256 && sha256Regex.test(sha256) ? { currentDigest: sha256 } : {}),\n },\n ]);\n\n// Runtimes installable by `pnpm/setup`, keyed by the name used in its\n// `runtime:` input. `bun` and `deno` reuse the datasources of their respective\n// `setup-*` actions below.\nconst pnpmRuntimes: Record<string, PackageDependency | undefined> = {\n node: { datasource: NodeVersionDatasource.id, packageName: 'node' },\n bun: { datasource: NpmDatasource.id, packageName: 'bun' },\n deno: { datasource: NpmDatasource.id, packageName: 'deno' },\n};\n\nfunction parsePnpmRuntime(runtime: string | undefined): PackageDependency[] {\n if (!runtime) {\n return [];\n }\n\n // `<name>` or `<name>@<version>`, matching pnpm's `packageManager` field syntax\n const [name, version] = runtime.split('@');\n const cfg = pnpmRuntimes[name];\n if (!cfg) {\n return [\n {\n packageName: name || runtime,\n depType: 'uses-with',\n skipStage: 'extract',\n skipReason: 'invalid-name',\n },\n ];\n }\n\n return [{ ...cfg, ...parseValue(version) }];\n}\n\nconst PnpmSetupWith: ActionSchema = z\n .object({\n version: z.string().optional(),\n runtime: z.string().optional(),\n })\n .transform(({ version, runtime }) => [\n parseValue(version),\n ...parsePnpmRuntime(runtime),\n ]);\n\n/**\n * Community contributed actions with known version input schemas.\n */\nexport const communityActions: Record<string, CommunityActionConfig> = {\n // https://github.com/aquasecurity/setup-trivy\n 'aquasecurity/setup-trivy': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'aquasecurity/trivy',\n },\n // https://github.com/aquasecurity/trivy-action\n 'aquasecurity/trivy-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'aquasecurity/trivy',\n },\n // https://github.com/astral-sh/setup-uv\n 'astral-sh/setup-uv': {\n datasource: GithubReleasesDatasource.id,\n versioning: npmVersioning.id,\n packageName: 'astral-sh/uv',\n },\n 'azure/setup-helm': {\n datasource: GithubReleasesDatasource.id,\n depName: 'helm',\n packageName: 'helm/helm',\n },\n // https://github.com/azure/setup-helm\n 'denoland/setup-deno': {\n datasource: NpmDatasource.id,\n packageName: 'deno',\n withSchema: valSchema('deno-version'),\n },\n // https://github.com/docker/setup-buildx-action\n 'docker/setup-buildx-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'buildx',\n packageName: 'docker/buildx',\n },\n // https://github.com/docker/setup-compose-action\n 'docker/setup-compose-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'docker/compose',\n },\n // https://github.com/docker/setup-docker-action\n 'docker/setup-docker-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'docker',\n packageName: 'moby/moby',\n extractVersion: '^docker-(?<version>.+)$',\n },\n // https://github.com/dtolnay/rust-toolchain\n 'dtolnay/rust-toolchain': {\n datasource: RustVersionDatasource.id,\n packageName: 'rust',\n withSchema: valSchema('toolchain'),\n },\n 'golangci/golangci-lint-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'golangci/golangci-lint',\n },\n // https://github.com/helm/chart-testing-action\n 'helm/chart-testing-action': {\n datasource: GithubReleasesDatasource.id,\n depName: 'chart-testing',\n packageName: 'helm/chart-testing',\n },\n 'jakebailey/pyright-action': {\n datasource: NpmDatasource.id,\n packageName: 'pyright',\n withSchema: valSchema('version', (val) => val === 'PATH'),\n },\n 'jaxxstorm/action-install-gh-release': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined from `repo` input\n withSchema: InstallBinaryWith,\n },\n 'jdx/mise-action': {\n datasource: GithubReleaseAttachmentsDatasource.id,\n packageName: 'jdx/mise',\n withSchema: MiseWith,\n },\n 'oven-sh/setup-bun': {\n datasource: NpmDatasource.id,\n packageName: 'bun',\n withSchema: valSchema('bun-version'),\n },\n 'pdm-project/setup-pdm': {\n datasource: PypiDatasource.id,\n packageName: 'pdm',\n },\n 'pnpm/action-setup': {\n datasource: NpmDatasource.id,\n packageName: 'pnpm',\n },\n 'pnpm/setup': {\n datasource: NpmDatasource.id,\n packageName: 'pnpm',\n withSchema: PnpmSetupWith,\n },\n 'prefix-dev/setup-pixi': {\n datasource: GithubReleasesDatasource.id,\n versioning: condaVersioning.id,\n packageName: 'prefix-dev/pixi',\n withSchema: valSchema('pixi-version'),\n },\n // https://github.com/pypa/hatch/tree/install\n 'pypa/hatch': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'pypa/hatch',\n // Strip hatch- prefix from release tags\n extractVersion: '^hatch-(?<version>.+)$',\n },\n 'ruby/setup-ruby': {\n datasource: RubyVersionDatasource.id,\n packageName: 'ruby',\n withSchema: valSchema('ruby-version'),\n },\n 'sigoden/install-binary': {\n datasource: GithubReleasesDatasource.id,\n packageName: '', // determined from `repo` input\n withSchema: InstallBinaryWith,\n },\n 'sigstore/cosign-installer': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'sigstore/cosign',\n withSchema: valSchema('cosign-release'),\n },\n 'UpCloudLtd/upcloud-cli-action': {\n datasource: GithubReleasesDatasource.id,\n packageName: 'UpCloudLtd/upcloud-cli',\n },\n 'zizmorcore/zizmor-action': {\n datasource: DockerDatasource.id,\n packageName: 'ghcr.io/zizmorcore/zizmor',\n },\n};\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { regEx } from "../../../../util/regex.js";
|
|
2
2
|
import { massage, parse } from "../../../../util/toml.js";
|
|
3
3
|
import { hasKey } from "../../../../util/object.js";
|
|
4
4
|
import { isTOMLFile } from "../utils.js";
|
|
@@ -6,8 +6,8 @@ import { isPlainObject, isString } from "@sindresorhus/is";
|
|
|
6
6
|
import merge from "deepmerge";
|
|
7
7
|
//#region lib/modules/manager/gradle/extract/catalog.ts
|
|
8
8
|
function findVersionIndex(content, depName, version) {
|
|
9
|
-
const eDn =
|
|
10
|
-
const eVer =
|
|
9
|
+
const eDn = RegExp.escape(depName);
|
|
10
|
+
const eVer = RegExp.escape(version);
|
|
11
11
|
const match = regEx(`(?:id\\s*=\\s*)?['"]?${eDn}["']?(?:(?:\\s*=\\s*)|:|,\\s*)(?:.*version(?:\\.ref)?(?:\\s*\\=\\s*))?["']?${eVer}['"]?`).exec(content);
|
|
12
12
|
if (match) return match.index + content.slice(match.index).indexOf(version);
|
|
13
13
|
/* istanbul ignore next */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","names":["parseToml","deepmerge"],"sources":["../../../../../lib/modules/manager/gradle/extract/catalog.ts"],"sourcesContent":["import { isPlainObject, isString } from '@sindresorhus/is';\nimport deepmerge from 'deepmerge';\nimport type { SkipReason } from '../../../../types/index.ts';\nimport { hasKey } from '../../../../util/object.ts';\nimport { escapeRegExp, regEx } from '../../../../util/regex.ts';\nimport { massage, parse as parseToml } from '../../../../util/toml.ts';\nimport type { PackageDependency } from '../../types.ts';\nimport type {\n GradleCatalog,\n GradleCatalogArtifactDescriptor,\n GradleCatalogModuleDescriptor,\n GradleManagerData,\n GradleVersionCatalogVersion,\n GradleVersionPointerTarget,\n PackageVariables,\n VersionPointer,\n} from '../types.ts';\nimport { isTOMLFile } from '../utils.ts';\n\nfunction findVersionIndex(\n content: string,\n depName: string,\n version: string,\n): number {\n const eDn = escapeRegExp(depName);\n const eVer = escapeRegExp(version);\n const re = regEx(\n `(?:id\\\\s*=\\\\s*)?['\"]?${eDn}[\"']?(?:(?:\\\\s*=\\\\s*)|:|,\\\\s*)(?:.*version(?:\\\\.ref)?(?:\\\\s*\\\\=\\\\s*))?[\"']?${eVer}['\"]?`,\n );\n const match = re.exec(content);\n if (match) {\n return match.index + content.slice(match.index).indexOf(version);\n }\n // ignoring Fallback because I can't reach it in tests, and code is not supposed to reach it but just in case.\n /* istanbul ignore next */\n return findIndexAfter(content, depName, version);\n}\n\nfunction findIndexAfter(\n content: string,\n sliceAfter: string,\n find: string,\n): number {\n const slicePoint = content.indexOf(sliceAfter) + sliceAfter.length;\n return slicePoint + content.slice(slicePoint).indexOf(find);\n}\n\nfunction isArtifactDescriptor(\n obj: GradleCatalogArtifactDescriptor | GradleCatalogModuleDescriptor,\n): obj is GradleCatalogArtifactDescriptor {\n return hasKey('group', obj);\n}\n\nfunction isVersionPointer(\n obj: GradleVersionCatalogVersion | undefined,\n): obj is VersionPointer {\n return hasKey('ref', obj);\n}\n\nfunction normalizeAlias(alias: string): string {\n return alias.replace(regEx(/[-_]/g), '.');\n}\n\nfunction findOriginalAlias(\n versions: Record<string, GradleVersionPointerTarget>,\n alias: string,\n): string {\n const normalizedAlias = normalizeAlias(alias);\n for (const sectionKey of Object.keys(versions)) {\n if (normalizeAlias(sectionKey) === normalizedAlias) {\n return sectionKey;\n }\n }\n\n return alias;\n}\n\ninterface VersionExtract {\n currentValue?: string;\n fileReplacePosition?: number;\n skipReason?: SkipReason;\n}\n\nfunction extractVersion({\n version,\n versions,\n depStartIndex,\n depSubContent,\n depName,\n versionStartIndex,\n versionSubContent,\n}: {\n version: GradleVersionCatalogVersion | undefined;\n versions: Record<string, GradleVersionPointerTarget>;\n depStartIndex: number;\n depSubContent: string;\n depName: string;\n versionStartIndex: number;\n versionSubContent: string;\n}): VersionExtract {\n if (isVersionPointer(version)) {\n const originalAlias = findOriginalAlias(versions, version.ref);\n return extractLiteralVersion({\n version: versions[originalAlias],\n depStartIndex: versionStartIndex,\n depSubContent: versionSubContent,\n sectionKey: originalAlias,\n });\n }\n return extractLiteralVersion({\n version,\n depStartIndex,\n depSubContent,\n sectionKey: depName,\n });\n}\n\nfunction extractLiteralVersion({\n version,\n depStartIndex,\n depSubContent,\n sectionKey,\n}: {\n version: GradleVersionPointerTarget | undefined;\n depStartIndex: number;\n depSubContent: string;\n sectionKey: string;\n}): VersionExtract {\n if (!version) {\n return { skipReason: 'unspecified-version' };\n }\n if (isString(version)) {\n const fileReplacePosition =\n depStartIndex + findVersionIndex(depSubContent, sectionKey, version);\n return { currentValue: version, fileReplacePosition };\n }\n if (isPlainObject(version)) {\n // https://github.com/gradle/gradle/blob/d9adf33a57925582988fc512002dcc0e8ce4db95/subprojects/core/src/main/java/org/gradle/api/internal/catalog/parser/TomlCatalogFileParser.java#L368\n // https://docs.gradle.org/current/userguide/rich_versions.html\n // https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format\n const versionKeys = ['require', 'prefer', 'strictly'];\n let found = false;\n let currentValue: string | undefined;\n let fileReplacePosition: number | undefined;\n\n if (version.reject || version.rejectAll) {\n return { skipReason: 'unsupported-version' };\n }\n\n for (const key of versionKeys) {\n if (key in version) {\n if (found) {\n // Currently, we only support one version constraint at a time\n return { skipReason: 'multiple-constraint-dep' };\n }\n found = true;\n\n currentValue = version[key] as string;\n fileReplacePosition =\n depStartIndex +\n findIndexAfter(depSubContent, sectionKey, currentValue);\n }\n }\n\n if (found) {\n return { currentValue, fileReplacePosition };\n }\n }\n\n return { skipReason: 'unspecified-version' };\n}\n\nfunction extractDependency({\n descriptor,\n versions,\n depStartIndex,\n depSubContent,\n depName,\n versionStartIndex,\n versionSubContent,\n}: {\n descriptor:\n | string\n | GradleCatalogModuleDescriptor\n | GradleCatalogArtifactDescriptor;\n versions: Record<string, GradleVersionPointerTarget>;\n depStartIndex: number;\n depSubContent: string;\n depName: string;\n versionStartIndex: number;\n versionSubContent: string;\n}): PackageDependency<GradleManagerData> {\n if (isString(descriptor)) {\n const [group, name, currentValue] = descriptor.split(':');\n if (!currentValue) {\n return {\n depName,\n skipReason: 'unspecified-version',\n };\n }\n return {\n depName: `${group}:${name}`,\n currentValue,\n managerData: {\n fileReplacePosition:\n depStartIndex + findIndexAfter(depSubContent, depName, currentValue),\n },\n };\n }\n\n const { currentValue, fileReplacePosition, skipReason } = extractVersion({\n version: descriptor.version,\n versions,\n depStartIndex,\n depSubContent,\n depName,\n versionStartIndex,\n versionSubContent,\n });\n\n if (skipReason) {\n return {\n depName,\n skipReason,\n };\n }\n\n const dependency: PackageDependency<GradleManagerData> = {\n currentValue,\n managerData: { fileReplacePosition },\n };\n\n if (isArtifactDescriptor(descriptor)) {\n const { group, name } = descriptor;\n dependency.depName = `${group}:${name}`;\n } else {\n const [depGroupName, name] = descriptor.module.split(':');\n dependency.depName = `${depGroupName}:${name}`;\n }\n\n if (isVersionPointer(descriptor.version)) {\n dependency.sharedVariableName = normalizeAlias(descriptor.version.ref);\n }\n\n return dependency;\n}\n\nexport function parseCatalog(\n packageFile: string,\n content: string,\n): { vars: PackageVariables; deps: PackageDependency<GradleManagerData>[] } {\n const tomlContent = parseToml(massage(content)) as GradleCatalog;\n const versions = tomlContent.versions ?? {};\n const libs = tomlContent.libraries ?? {};\n const libStartIndex = content.indexOf('libraries');\n const libSubContent = content.slice(libStartIndex);\n const versionStartIndex = content.indexOf('versions');\n const versionSubContent = content.slice(versionStartIndex);\n const extractedDeps: PackageDependency<GradleManagerData>[] = [];\n const vars: PackageVariables = {};\n\n for (const [key, version] of Object.entries(versions)) {\n const { currentValue, fileReplacePosition } = extractLiteralVersion({\n version,\n depStartIndex: versionStartIndex,\n depSubContent: versionSubContent,\n sectionKey: key,\n });\n if (currentValue && fileReplacePosition !== undefined) {\n vars[normalizeAlias(key)] = {\n key: normalizeAlias(key),\n value: currentValue,\n fileReplacePosition,\n packageFile,\n };\n }\n }\n\n for (const libraryName of Object.keys(libs)) {\n const libDescriptor = libs[libraryName];\n const dependency = extractDependency({\n descriptor: libDescriptor,\n versions,\n depStartIndex: libStartIndex,\n depSubContent: libSubContent,\n depName: libraryName,\n versionStartIndex,\n versionSubContent,\n });\n extractedDeps.push(dependency);\n }\n\n const plugins = tomlContent.plugins ?? {};\n const pluginsStartIndex = content.indexOf('[plugins]');\n const pluginsSubContent = content.slice(pluginsStartIndex);\n for (const pluginName of Object.keys(plugins)) {\n const pluginDescriptor = plugins[pluginName];\n const [depName, version] = isString(pluginDescriptor)\n ? pluginDescriptor.split(':')\n : [pluginDescriptor.id, pluginDescriptor.version];\n const { currentValue, fileReplacePosition, skipReason } = extractVersion({\n version,\n versions,\n depStartIndex: pluginsStartIndex,\n depSubContent: pluginsSubContent,\n depName,\n versionStartIndex,\n versionSubContent,\n });\n\n const dependency: PackageDependency<GradleManagerData> = {\n depType: 'plugin',\n depName,\n packageName: `${depName}:${depName}.gradle.plugin`,\n currentValue,\n commitMessageTopic: `plugin ${pluginName}`,\n managerData: { fileReplacePosition },\n };\n if (skipReason) {\n dependency.skipReason = skipReason;\n }\n if (isVersionPointer(version) && dependency.commitMessageTopic) {\n dependency.sharedVariableName = normalizeAlias(version.ref);\n delete dependency.commitMessageTopic;\n }\n\n extractedDeps.push(dependency);\n }\n\n const deps = extractedDeps.map((dep) => {\n return deepmerge(dep, { managerData: { packageFile } });\n });\n return { vars, deps };\n}\n\nfunction makeCatalogGroupKey(\n dep: PackageDependency<GradleManagerData>,\n): string {\n return `${dep.managerData!.packageFile}:${dep.managerData!.fileReplacePosition}`;\n}\n\nexport function unifyCatalogSharedVariableNames(\n deps: PackageDependency<GradleManagerData>[],\n): void {\n const aliasMap: Record<string, string[]> = {};\n const catalogDeps: PackageDependency<GradleManagerData>[] = [];\n\n for (const dep of deps) {\n const packageFile = dep.managerData?.packageFile;\n if (\n packageFile &&\n dep.managerData?.fileReplacePosition !== undefined &&\n dep.sharedVariableName &&\n isTOMLFile(packageFile)\n ) {\n catalogDeps.push(dep);\n\n const key = makeCatalogGroupKey(dep);\n (aliasMap[key] ??= []).push(dep.sharedVariableName);\n }\n }\n\n for (const dep of catalogDeps) {\n const key = makeCatalogGroupKey(dep);\n const aliases = aliasMap[key];\n if (aliases.length > 1) {\n const name = aliases[0];\n dep.sharedVariableName = name.replace(regEx(/^[^.]+\\.versions\\./), '');\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"catalog.js","names":["parseToml","deepmerge"],"sources":["../../../../../lib/modules/manager/gradle/extract/catalog.ts"],"sourcesContent":["import { isPlainObject, isString } from '@sindresorhus/is';\nimport deepmerge from 'deepmerge';\nimport type { SkipReason } from '../../../../types/index.ts';\nimport { hasKey } from '../../../../util/object.ts';\nimport { regEx } from '../../../../util/regex.ts';\nimport { massage, parse as parseToml } from '../../../../util/toml.ts';\nimport type { PackageDependency } from '../../types.ts';\nimport type {\n GradleCatalog,\n GradleCatalogArtifactDescriptor,\n GradleCatalogModuleDescriptor,\n GradleManagerData,\n GradleVersionCatalogVersion,\n GradleVersionPointerTarget,\n PackageVariables,\n VersionPointer,\n} from '../types.ts';\nimport { isTOMLFile } from '../utils.ts';\n\nfunction findVersionIndex(\n content: string,\n depName: string,\n version: string,\n): number {\n const eDn = RegExp.escape(depName);\n const eVer = RegExp.escape(version);\n const re = regEx(\n `(?:id\\\\s*=\\\\s*)?['\"]?${eDn}[\"']?(?:(?:\\\\s*=\\\\s*)|:|,\\\\s*)(?:.*version(?:\\\\.ref)?(?:\\\\s*\\\\=\\\\s*))?[\"']?${eVer}['\"]?`,\n );\n const match = re.exec(content);\n if (match) {\n return match.index + content.slice(match.index).indexOf(version);\n }\n // ignoring Fallback because I can't reach it in tests, and code is not supposed to reach it but just in case.\n /* istanbul ignore next */\n return findIndexAfter(content, depName, version);\n}\n\nfunction findIndexAfter(\n content: string,\n sliceAfter: string,\n find: string,\n): number {\n const slicePoint = content.indexOf(sliceAfter) + sliceAfter.length;\n return slicePoint + content.slice(slicePoint).indexOf(find);\n}\n\nfunction isArtifactDescriptor(\n obj: GradleCatalogArtifactDescriptor | GradleCatalogModuleDescriptor,\n): obj is GradleCatalogArtifactDescriptor {\n return hasKey('group', obj);\n}\n\nfunction isVersionPointer(\n obj: GradleVersionCatalogVersion | undefined,\n): obj is VersionPointer {\n return hasKey('ref', obj);\n}\n\nfunction normalizeAlias(alias: string): string {\n return alias.replace(regEx(/[-_]/g), '.');\n}\n\nfunction findOriginalAlias(\n versions: Record<string, GradleVersionPointerTarget>,\n alias: string,\n): string {\n const normalizedAlias = normalizeAlias(alias);\n for (const sectionKey of Object.keys(versions)) {\n if (normalizeAlias(sectionKey) === normalizedAlias) {\n return sectionKey;\n }\n }\n\n return alias;\n}\n\ninterface VersionExtract {\n currentValue?: string;\n fileReplacePosition?: number;\n skipReason?: SkipReason;\n}\n\nfunction extractVersion({\n version,\n versions,\n depStartIndex,\n depSubContent,\n depName,\n versionStartIndex,\n versionSubContent,\n}: {\n version: GradleVersionCatalogVersion | undefined;\n versions: Record<string, GradleVersionPointerTarget>;\n depStartIndex: number;\n depSubContent: string;\n depName: string;\n versionStartIndex: number;\n versionSubContent: string;\n}): VersionExtract {\n if (isVersionPointer(version)) {\n const originalAlias = findOriginalAlias(versions, version.ref);\n return extractLiteralVersion({\n version: versions[originalAlias],\n depStartIndex: versionStartIndex,\n depSubContent: versionSubContent,\n sectionKey: originalAlias,\n });\n }\n return extractLiteralVersion({\n version,\n depStartIndex,\n depSubContent,\n sectionKey: depName,\n });\n}\n\nfunction extractLiteralVersion({\n version,\n depStartIndex,\n depSubContent,\n sectionKey,\n}: {\n version: GradleVersionPointerTarget | undefined;\n depStartIndex: number;\n depSubContent: string;\n sectionKey: string;\n}): VersionExtract {\n if (!version) {\n return { skipReason: 'unspecified-version' };\n }\n if (isString(version)) {\n const fileReplacePosition =\n depStartIndex + findVersionIndex(depSubContent, sectionKey, version);\n return { currentValue: version, fileReplacePosition };\n }\n if (isPlainObject(version)) {\n // https://github.com/gradle/gradle/blob/d9adf33a57925582988fc512002dcc0e8ce4db95/subprojects/core/src/main/java/org/gradle/api/internal/catalog/parser/TomlCatalogFileParser.java#L368\n // https://docs.gradle.org/current/userguide/rich_versions.html\n // https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format\n const versionKeys = ['require', 'prefer', 'strictly'];\n let found = false;\n let currentValue: string | undefined;\n let fileReplacePosition: number | undefined;\n\n if (version.reject || version.rejectAll) {\n return { skipReason: 'unsupported-version' };\n }\n\n for (const key of versionKeys) {\n if (key in version) {\n if (found) {\n // Currently, we only support one version constraint at a time\n return { skipReason: 'multiple-constraint-dep' };\n }\n found = true;\n\n currentValue = version[key] as string;\n fileReplacePosition =\n depStartIndex +\n findIndexAfter(depSubContent, sectionKey, currentValue);\n }\n }\n\n if (found) {\n return { currentValue, fileReplacePosition };\n }\n }\n\n return { skipReason: 'unspecified-version' };\n}\n\nfunction extractDependency({\n descriptor,\n versions,\n depStartIndex,\n depSubContent,\n depName,\n versionStartIndex,\n versionSubContent,\n}: {\n descriptor:\n | string\n | GradleCatalogModuleDescriptor\n | GradleCatalogArtifactDescriptor;\n versions: Record<string, GradleVersionPointerTarget>;\n depStartIndex: number;\n depSubContent: string;\n depName: string;\n versionStartIndex: number;\n versionSubContent: string;\n}): PackageDependency<GradleManagerData> {\n if (isString(descriptor)) {\n const [group, name, currentValue] = descriptor.split(':');\n if (!currentValue) {\n return {\n depName,\n skipReason: 'unspecified-version',\n };\n }\n return {\n depName: `${group}:${name}`,\n currentValue,\n managerData: {\n fileReplacePosition:\n depStartIndex + findIndexAfter(depSubContent, depName, currentValue),\n },\n };\n }\n\n const { currentValue, fileReplacePosition, skipReason } = extractVersion({\n version: descriptor.version,\n versions,\n depStartIndex,\n depSubContent,\n depName,\n versionStartIndex,\n versionSubContent,\n });\n\n if (skipReason) {\n return {\n depName,\n skipReason,\n };\n }\n\n const dependency: PackageDependency<GradleManagerData> = {\n currentValue,\n managerData: { fileReplacePosition },\n };\n\n if (isArtifactDescriptor(descriptor)) {\n const { group, name } = descriptor;\n dependency.depName = `${group}:${name}`;\n } else {\n const [depGroupName, name] = descriptor.module.split(':');\n dependency.depName = `${depGroupName}:${name}`;\n }\n\n if (isVersionPointer(descriptor.version)) {\n dependency.sharedVariableName = normalizeAlias(descriptor.version.ref);\n }\n\n return dependency;\n}\n\nexport function parseCatalog(\n packageFile: string,\n content: string,\n): { vars: PackageVariables; deps: PackageDependency<GradleManagerData>[] } {\n const tomlContent = parseToml(massage(content)) as GradleCatalog;\n const versions = tomlContent.versions ?? {};\n const libs = tomlContent.libraries ?? {};\n const libStartIndex = content.indexOf('libraries');\n const libSubContent = content.slice(libStartIndex);\n const versionStartIndex = content.indexOf('versions');\n const versionSubContent = content.slice(versionStartIndex);\n const extractedDeps: PackageDependency<GradleManagerData>[] = [];\n const vars: PackageVariables = {};\n\n for (const [key, version] of Object.entries(versions)) {\n const { currentValue, fileReplacePosition } = extractLiteralVersion({\n version,\n depStartIndex: versionStartIndex,\n depSubContent: versionSubContent,\n sectionKey: key,\n });\n if (currentValue && fileReplacePosition !== undefined) {\n vars[normalizeAlias(key)] = {\n key: normalizeAlias(key),\n value: currentValue,\n fileReplacePosition,\n packageFile,\n };\n }\n }\n\n for (const libraryName of Object.keys(libs)) {\n const libDescriptor = libs[libraryName];\n const dependency = extractDependency({\n descriptor: libDescriptor,\n versions,\n depStartIndex: libStartIndex,\n depSubContent: libSubContent,\n depName: libraryName,\n versionStartIndex,\n versionSubContent,\n });\n extractedDeps.push(dependency);\n }\n\n const plugins = tomlContent.plugins ?? {};\n const pluginsStartIndex = content.indexOf('[plugins]');\n const pluginsSubContent = content.slice(pluginsStartIndex);\n for (const pluginName of Object.keys(plugins)) {\n const pluginDescriptor = plugins[pluginName];\n const [depName, version] = isString(pluginDescriptor)\n ? pluginDescriptor.split(':')\n : [pluginDescriptor.id, pluginDescriptor.version];\n const { currentValue, fileReplacePosition, skipReason } = extractVersion({\n version,\n versions,\n depStartIndex: pluginsStartIndex,\n depSubContent: pluginsSubContent,\n depName,\n versionStartIndex,\n versionSubContent,\n });\n\n const dependency: PackageDependency<GradleManagerData> = {\n depType: 'plugin',\n depName,\n packageName: `${depName}:${depName}.gradle.plugin`,\n currentValue,\n commitMessageTopic: `plugin ${pluginName}`,\n managerData: { fileReplacePosition },\n };\n if (skipReason) {\n dependency.skipReason = skipReason;\n }\n if (isVersionPointer(version) && dependency.commitMessageTopic) {\n dependency.sharedVariableName = normalizeAlias(version.ref);\n delete dependency.commitMessageTopic;\n }\n\n extractedDeps.push(dependency);\n }\n\n const deps = extractedDeps.map((dep) => {\n return deepmerge(dep, { managerData: { packageFile } });\n });\n return { vars, deps };\n}\n\nfunction makeCatalogGroupKey(\n dep: PackageDependency<GradleManagerData>,\n): string {\n return `${dep.managerData!.packageFile}:${dep.managerData!.fileReplacePosition}`;\n}\n\nexport function unifyCatalogSharedVariableNames(\n deps: PackageDependency<GradleManagerData>[],\n): void {\n const aliasMap: Record<string, string[]> = {};\n const catalogDeps: PackageDependency<GradleManagerData>[] = [];\n\n for (const dep of deps) {\n const packageFile = dep.managerData?.packageFile;\n if (\n packageFile &&\n dep.managerData?.fileReplacePosition !== undefined &&\n dep.sharedVariableName &&\n isTOMLFile(packageFile)\n ) {\n catalogDeps.push(dep);\n\n const key = makeCatalogGroupKey(dep);\n (aliasMap[key] ??= []).push(dep.sharedVariableName);\n }\n }\n\n for (const dep of catalogDeps) {\n const key = makeCatalogGroupKey(dep);\n const aliases = aliasMap[key];\n if (aliases.length > 1) {\n const name = aliases[0];\n dep.sharedVariableName = name.replace(regEx(/^[^.]+\\.versions\\./), '');\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { regEx } from "../../../util/regex.js";
|
|
2
2
|
//#region lib/modules/manager/homebrew/utils.ts
|
|
3
3
|
function extractRubyString(content, keyword) {
|
|
4
4
|
const regex = regEx(`\\b${keyword}\\s+(?:"(?<double>[^"]+)"|'(?<single>[^']+)')`);
|
|
@@ -6,8 +6,8 @@ function extractRubyString(content, keyword) {
|
|
|
6
6
|
return match?.groups?.double ?? match?.groups?.single ?? null;
|
|
7
7
|
}
|
|
8
8
|
function updateRubyString(content, keyword, oldValue, newValue) {
|
|
9
|
-
const doubleQuote = regEx(`(\\b${keyword}\\s+)"${
|
|
10
|
-
const singleQuote = regEx(`(\\b${keyword}\\s+)'${
|
|
9
|
+
const doubleQuote = regEx(`(\\b${keyword}\\s+)"${RegExp.escape(oldValue)}"`, "g");
|
|
10
|
+
const singleQuote = regEx(`(\\b${keyword}\\s+)'${RegExp.escape(oldValue)}'`, "g");
|
|
11
11
|
const result = content.replace(doubleQuote, `$1"${newValue}"`).replace(singleQuote, `$1'${newValue}'`);
|
|
12
12
|
return result === content ? null : result;
|
|
13
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":[],"sources":["../../../../lib/modules/manager/homebrew/utils.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"utils.js","names":[],"sources":["../../../../lib/modules/manager/homebrew/utils.ts"],"sourcesContent":["import { regEx } from '../../../util/regex.ts';\n\n// Extract Ruby string value (handles both quote styles)\nexport function extractRubyString(\n content: string,\n keyword: string,\n): string | null {\n const regex = regEx(\n `\\\\b${keyword}\\\\s+(?:\"(?<double>[^\"]+)\"|'(?<single>[^']+)')`,\n );\n const match = content.match(regex);\n return match?.groups?.double ?? match?.groups?.single ?? null;\n}\n\n// Update Ruby string value (preserves quote style)\nexport function updateRubyString(\n content: string,\n keyword: string,\n oldValue: string,\n newValue: string,\n): string | null {\n const doubleQuote = regEx(\n `(\\\\b${keyword}\\\\s+)\"${RegExp.escape(oldValue)}\"`,\n 'g',\n );\n const singleQuote = regEx(\n `(\\\\b${keyword}\\\\s+)'${RegExp.escape(oldValue)}'`,\n 'g',\n );\n const result = content\n .replace(doubleQuote, `$1\"${newValue}\"`)\n .replace(singleQuote, `$1'${newValue}'`);\n\n return result === content ? null : result;\n}\n"],"mappings":";;AAGA,SAAgB,kBACd,SACA,SACe;CACf,MAAM,QAAQ,MACZ,MAAM,QAAQ,8CAChB;CACA,MAAM,QAAQ,QAAQ,MAAM,KAAK;CACjC,OAAO,OAAO,QAAQ,UAAU,OAAO,QAAQ,UAAU;AAC3D;AAGA,SAAgB,iBACd,SACA,SACA,UACA,UACe;CACf,MAAM,cAAc,MAClB,OAAO,QAAQ,QAAQ,OAAO,OAAO,QAAQ,EAAE,IAC/C,GACF;CACA,MAAM,cAAc,MAClB,OAAO,QAAQ,QAAQ,OAAO,OAAO,QAAQ,EAAE,IAC/C,GACF;CACA,MAAM,SAAS,QACZ,QAAQ,aAAa,MAAM,SAAS,EAAE,CAAC,CACvC,QAAQ,aAAa,MAAM,SAAS,EAAE;CAEzC,OAAO,WAAW,UAAU,OAAO;AACrC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { regEx } from "../../../util/regex.js";
|
|
2
2
|
import { id } from "../../versioning/semver/index.js";
|
|
3
3
|
import { CrateDatasource } from "../../datasource/crate/index.js";
|
|
4
4
|
import { GitRefsDatasource } from "../../datasource/git-refs/index.js";
|
|
@@ -87,7 +87,7 @@ function createGemToolConfig(name) {
|
|
|
87
87
|
function createGithubToolConfig(name, version, toolOptions) {
|
|
88
88
|
let extractVersion = void 0;
|
|
89
89
|
const prefix = toolOptions.version_prefix;
|
|
90
|
-
if (isNonEmptyString(prefix)) extractVersion = `^${
|
|
90
|
+
if (isNonEmptyString(prefix)) extractVersion = `^${RegExp.escape(prefix)}(?<version>.+)`;
|
|
91
91
|
return {
|
|
92
92
|
packageName: name,
|
|
93
93
|
datasource: GithubReleasesDatasource.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backends.js","names":["semverVersioning.id"],"sources":["../../../../lib/modules/manager/mise/backends.ts"],"sourcesContent":["import {\n isNonEmptyString,\n isString,\n isUndefined,\n isUrlString,\n} from '@sindresorhus/is';\nimport { escapeRegExp, regEx } from '../../../util/regex.ts';\nimport { CrateDatasource } from '../../datasource/crate/index.ts';\nimport { GitRefsDatasource } from '../../datasource/git-refs/index.ts';\nimport { GitTagsDatasource } from '../../datasource/git-tags/index.ts';\nimport { GithubReleasesDatasource } from '../../datasource/github-releases/index.ts';\nimport { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';\nimport { GoDatasource } from '../../datasource/go/index.ts';\nimport { NpmDatasource } from '../../datasource/npm/index.ts';\nimport { NugetDatasource } from '../../datasource/nuget/index.ts';\nimport { normalizePythonDepName } from '../../datasource/pypi/common.ts';\nimport { PypiDatasource } from '../../datasource/pypi/index.ts';\nimport { RubygemsDatasource } from '../../datasource/rubygems/index.ts';\nimport * as semverVersioning from '../../versioning/semver/index.ts';\nimport type { PackageDependency } from '../types.ts';\nimport type { MiseToolOptions } from './schema.ts';\n\nexport type BackendToolingConfig = Omit<PackageDependency, 'depName'> &\n Required<\n | Pick<PackageDependency, 'packageName' | 'datasource'>\n | Pick<PackageDependency, 'packageName' | 'skipReason'>\n >;\n\n/**\n * Create a tooling config for aqua backend\n * @link https://mise.jdx.dev/dev-tools/backends/aqua.html\n */\nexport function createAquaToolConfig(\n name: string,\n version: string,\n): BackendToolingConfig {\n // mise supports http aqua package type but we cannot determine it from the tool name\n // An error will be thrown afterwards if the package type is http\n // ref: https://github.com/jdx/mise/blob/d1b9749d8f3e13ef705c1ea471d96c5935b79136/src/aqua/aqua_registry.rs#L39-L45\n return {\n packageName: name,\n datasource: GithubTagsDatasource.id,\n // Trim the leading 'v' from both the current and extracted version\n currentValue: version.replace(regEx(/^v/), ''),\n extractVersion: '^v?(?<version>.+)',\n };\n}\n\nconst cargoGitVersionRegex = regEx(/^(?<type>tag|branch|rev):(?<version>.+)$/);\n\n/**\n * Create a tooling config for cargo backend\n * @link https://mise.jdx.dev/dev-tools/backends/cargo.html\n */\nexport function createCargoToolConfig(\n name: string,\n version: string,\n): BackendToolingConfig {\n if (!isUrlString(name)) {\n return {\n packageName: name,\n datasource: CrateDatasource.id,\n // A mise tool version is a concrete version, not a Cargo dependency requirement,\n // so the crate datasource default of cargo versioning does not apply\n versioning: semverVersioning.id,\n };\n }\n // tag: branch: or rev: is required for git repository url\n // e.g. branch:main, tag:0.1.0, rev:abcdef\n const matchGroups = cargoGitVersionRegex.exec(version)?.groups;\n if (isUndefined(matchGroups)) {\n return {\n packageName: name,\n skipReason: 'invalid-version',\n };\n }\n const { type, version: gitVersion } = matchGroups;\n switch (type as 'tag' | 'branch' | 'rev') {\n case 'tag':\n return {\n packageName: name,\n datasource: GitTagsDatasource.id,\n currentValue: gitVersion,\n };\n case 'branch':\n return {\n packageName: name,\n datasource: GitRefsDatasource.id,\n currentValue: gitVersion,\n };\n case 'rev':\n return {\n packageName: name,\n datasource: GitRefsDatasource.id,\n currentValue: gitVersion,\n };\n }\n}\n\n/**\n * Create a tooling config for dotnet backend\n * @link https://mise.jdx.dev/dev-tools/backends/dotnet.html\n */\nexport function createDotnetToolConfig(name: string): BackendToolingConfig {\n return {\n packageName: name,\n datasource: NugetDatasource.id,\n };\n}\n\n/**\n * Create a tooling config for gem backend\n * @link https://mise.jdx.dev/dev-tools/backends/gem.html\n */\nexport function createGemToolConfig(name: string): BackendToolingConfig {\n return {\n packageName: name,\n datasource: RubygemsDatasource.id,\n };\n}\n\n/**\n * Create a tooling config for github backend\n * @link https://mise.jdx.dev/dev-tools/backends/github.html\n */\nexport function createGithubToolConfig(\n name: string,\n version: string,\n toolOptions: MiseToolOptions,\n): BackendToolingConfig {\n let extractVersion: string | undefined = undefined;\n const prefix = toolOptions.version_prefix;\n\n if (isNonEmptyString(prefix)) {\n extractVersion = `^${escapeRegExp(prefix)}(?<version>.+)`;\n }\n\n return {\n packageName: name,\n datasource: GithubReleasesDatasource.id,\n currentValue: version,\n ...(extractVersion && { extractVersion }),\n };\n}\n\n/**\n * Create a tooling config for go backend\n * @link https://mise.jdx.dev/dev-tools/backends/go.html\n */\nexport function createGoToolConfig(name: string): BackendToolingConfig {\n return {\n packageName: name,\n datasource: GoDatasource.id,\n };\n}\n\n/**\n * Create a tooling config for npm backend\n * @link https://mise.jdx.dev/dev-tools/backends/npm.html\n */\nexport function createNpmToolConfig(name: string): BackendToolingConfig {\n return {\n packageName: name,\n datasource: NpmDatasource.id,\n };\n}\n\nconst pipxGitHubRegex = regEx(/^git\\+https:\\/\\/github\\.com\\/(?<repo>.+)\\.git$/);\n\n/**\n * Create a tooling config for pipx backend\n * @link https://mise.jdx.dev/dev-tools/backends/pipx.html\n */\nexport function createPipxToolConfig(name: string): BackendToolingConfig {\n const isGitSyntax = name.startsWith('git+');\n // Does not support zip file url\n // Avoid type narrowing to prevent type error\n if (!isGitSyntax && (isUrlString as (value: unknown) => boolean)(name)) {\n return {\n packageName: name,\n skipReason: 'unsupported-url',\n };\n }\n if (isGitSyntax || name.includes('/')) {\n let repoName: string | undefined;\n if (isGitSyntax) {\n repoName = pipxGitHubRegex.exec(name)?.groups?.repo;\n // If the url is not a github repo, treat the version as a git ref\n if (isUndefined(repoName)) {\n return {\n packageName: name\n .replace(regEx(/^git\\+/g), '')\n .replaceAll(regEx(/\\.git$/g), ''),\n datasource: GitRefsDatasource.id,\n };\n }\n } else {\n repoName = name;\n }\n return {\n packageName: repoName,\n datasource: GithubTagsDatasource.id,\n };\n }\n return {\n packageName: normalizePythonDepName(name),\n datasource: PypiDatasource.id,\n };\n}\n\nconst spmGitHubRegex = regEx(/^https:\\/\\/github.com\\/(?<repo>.+).git$/);\n\n/**\n * Create a tooling config for spm backend\n * @link https://mise.jdx.dev/dev-tools/backends/spm.html\n */\nexport function createSpmToolConfig(name: string): BackendToolingConfig {\n let repoName: string | undefined;\n // Avoid type narrowing to prevent type error\n if ((isUrlString as (value: unknown) => boolean)(name)) {\n repoName = spmGitHubRegex.exec(name)?.groups?.repo;\n // spm backend only supports github repos\n if (!repoName) {\n return {\n packageName: name,\n skipReason: 'unsupported-url',\n };\n }\n }\n return {\n packageName: repoName ?? name,\n datasource: GithubReleasesDatasource.id,\n };\n}\n\n/**\n * Create a tooling config for ubi backend\n * @link https://mise.jdx.dev/dev-tools/backends/ubi.html\n */\nexport function createUbiToolConfig(\n name: string,\n version: string,\n toolOptions: MiseToolOptions,\n): BackendToolingConfig {\n let extractVersion: string | undefined = undefined;\n\n const hasVPrefix = version.startsWith('v');\n const setsTagRegex = !hasVPrefix || isString(toolOptions.tag_regex);\n\n if (setsTagRegex) {\n // By default, use a regex that matches any tag\n let tagRegex = '.+';\n // Filter versions by tag_regex if it is specified\n // ref: https://mise.jdx.dev/dev-tools/backends/ubi.html#ubi-uses-weird-versions\n if (isString(toolOptions.tag_regex)) {\n // Remove the leading '^' if it exists to avoid duplication\n tagRegex = toolOptions.tag_regex.replace(regEx(/^\\^/), '');\n if (!hasVPrefix) {\n // Remove the leading 'v?' if it exists to avoid duplication\n tagRegex = tagRegex.replace(regEx(/^v\\??/), '');\n }\n }\n\n // Trim the 'v' prefix if the current version does not have it\n extractVersion = `^${hasVPrefix ? '' : 'v?'}(?<version>${tagRegex})`;\n }\n\n return {\n packageName: name,\n datasource: GithubReleasesDatasource.id,\n currentValue: version,\n ...(isString(extractVersion) ? { extractVersion } : {}),\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"backends.js","names":["semverVersioning.id"],"sources":["../../../../lib/modules/manager/mise/backends.ts"],"sourcesContent":["import {\n isNonEmptyString,\n isString,\n isUndefined,\n isUrlString,\n} from '@sindresorhus/is';\nimport { regEx } from '../../../util/regex.ts';\nimport { CrateDatasource } from '../../datasource/crate/index.ts';\nimport { GitRefsDatasource } from '../../datasource/git-refs/index.ts';\nimport { GitTagsDatasource } from '../../datasource/git-tags/index.ts';\nimport { GithubReleasesDatasource } from '../../datasource/github-releases/index.ts';\nimport { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';\nimport { GoDatasource } from '../../datasource/go/index.ts';\nimport { NpmDatasource } from '../../datasource/npm/index.ts';\nimport { NugetDatasource } from '../../datasource/nuget/index.ts';\nimport { normalizePythonDepName } from '../../datasource/pypi/common.ts';\nimport { PypiDatasource } from '../../datasource/pypi/index.ts';\nimport { RubygemsDatasource } from '../../datasource/rubygems/index.ts';\nimport * as semverVersioning from '../../versioning/semver/index.ts';\nimport type { PackageDependency } from '../types.ts';\nimport type { MiseToolOptions } from './schema.ts';\n\nexport type BackendToolingConfig = Omit<PackageDependency, 'depName'> &\n Required<\n | Pick<PackageDependency, 'packageName' | 'datasource'>\n | Pick<PackageDependency, 'packageName' | 'skipReason'>\n >;\n\n/**\n * Create a tooling config for aqua backend\n * @link https://mise.jdx.dev/dev-tools/backends/aqua.html\n */\nexport function createAquaToolConfig(\n name: string,\n version: string,\n): BackendToolingConfig {\n // mise supports http aqua package type but we cannot determine it from the tool name\n // An error will be thrown afterwards if the package type is http\n // ref: https://github.com/jdx/mise/blob/d1b9749d8f3e13ef705c1ea471d96c5935b79136/src/aqua/aqua_registry.rs#L39-L45\n return {\n packageName: name,\n datasource: GithubTagsDatasource.id,\n // Trim the leading 'v' from both the current and extracted version\n currentValue: version.replace(regEx(/^v/), ''),\n extractVersion: '^v?(?<version>.+)',\n };\n}\n\nconst cargoGitVersionRegex = regEx(/^(?<type>tag|branch|rev):(?<version>.+)$/);\n\n/**\n * Create a tooling config for cargo backend\n * @link https://mise.jdx.dev/dev-tools/backends/cargo.html\n */\nexport function createCargoToolConfig(\n name: string,\n version: string,\n): BackendToolingConfig {\n if (!isUrlString(name)) {\n return {\n packageName: name,\n datasource: CrateDatasource.id,\n // A mise tool version is a concrete version, not a Cargo dependency requirement,\n // so the crate datasource default of cargo versioning does not apply\n versioning: semverVersioning.id,\n };\n }\n // tag: branch: or rev: is required for git repository url\n // e.g. branch:main, tag:0.1.0, rev:abcdef\n const matchGroups = cargoGitVersionRegex.exec(version)?.groups;\n if (isUndefined(matchGroups)) {\n return {\n packageName: name,\n skipReason: 'invalid-version',\n };\n }\n const { type, version: gitVersion } = matchGroups;\n switch (type as 'tag' | 'branch' | 'rev') {\n case 'tag':\n return {\n packageName: name,\n datasource: GitTagsDatasource.id,\n currentValue: gitVersion,\n };\n case 'branch':\n return {\n packageName: name,\n datasource: GitRefsDatasource.id,\n currentValue: gitVersion,\n };\n case 'rev':\n return {\n packageName: name,\n datasource: GitRefsDatasource.id,\n currentValue: gitVersion,\n };\n }\n}\n\n/**\n * Create a tooling config for dotnet backend\n * @link https://mise.jdx.dev/dev-tools/backends/dotnet.html\n */\nexport function createDotnetToolConfig(name: string): BackendToolingConfig {\n return {\n packageName: name,\n datasource: NugetDatasource.id,\n };\n}\n\n/**\n * Create a tooling config for gem backend\n * @link https://mise.jdx.dev/dev-tools/backends/gem.html\n */\nexport function createGemToolConfig(name: string): BackendToolingConfig {\n return {\n packageName: name,\n datasource: RubygemsDatasource.id,\n };\n}\n\n/**\n * Create a tooling config for github backend\n * @link https://mise.jdx.dev/dev-tools/backends/github.html\n */\nexport function createGithubToolConfig(\n name: string,\n version: string,\n toolOptions: MiseToolOptions,\n): BackendToolingConfig {\n let extractVersion: string | undefined = undefined;\n const prefix = toolOptions.version_prefix;\n\n if (isNonEmptyString(prefix)) {\n extractVersion = `^${RegExp.escape(prefix)}(?<version>.+)`;\n }\n\n return {\n packageName: name,\n datasource: GithubReleasesDatasource.id,\n currentValue: version,\n ...(extractVersion && { extractVersion }),\n };\n}\n\n/**\n * Create a tooling config for go backend\n * @link https://mise.jdx.dev/dev-tools/backends/go.html\n */\nexport function createGoToolConfig(name: string): BackendToolingConfig {\n return {\n packageName: name,\n datasource: GoDatasource.id,\n };\n}\n\n/**\n * Create a tooling config for npm backend\n * @link https://mise.jdx.dev/dev-tools/backends/npm.html\n */\nexport function createNpmToolConfig(name: string): BackendToolingConfig {\n return {\n packageName: name,\n datasource: NpmDatasource.id,\n };\n}\n\nconst pipxGitHubRegex = regEx(/^git\\+https:\\/\\/github\\.com\\/(?<repo>.+)\\.git$/);\n\n/**\n * Create a tooling config for pipx backend\n * @link https://mise.jdx.dev/dev-tools/backends/pipx.html\n */\nexport function createPipxToolConfig(name: string): BackendToolingConfig {\n const isGitSyntax = name.startsWith('git+');\n // Does not support zip file url\n // Avoid type narrowing to prevent type error\n if (!isGitSyntax && (isUrlString as (value: unknown) => boolean)(name)) {\n return {\n packageName: name,\n skipReason: 'unsupported-url',\n };\n }\n if (isGitSyntax || name.includes('/')) {\n let repoName: string | undefined;\n if (isGitSyntax) {\n repoName = pipxGitHubRegex.exec(name)?.groups?.repo;\n // If the url is not a github repo, treat the version as a git ref\n if (isUndefined(repoName)) {\n return {\n packageName: name\n .replace(regEx(/^git\\+/g), '')\n .replaceAll(regEx(/\\.git$/g), ''),\n datasource: GitRefsDatasource.id,\n };\n }\n } else {\n repoName = name;\n }\n return {\n packageName: repoName,\n datasource: GithubTagsDatasource.id,\n };\n }\n return {\n packageName: normalizePythonDepName(name),\n datasource: PypiDatasource.id,\n };\n}\n\nconst spmGitHubRegex = regEx(/^https:\\/\\/github.com\\/(?<repo>.+).git$/);\n\n/**\n * Create a tooling config for spm backend\n * @link https://mise.jdx.dev/dev-tools/backends/spm.html\n */\nexport function createSpmToolConfig(name: string): BackendToolingConfig {\n let repoName: string | undefined;\n // Avoid type narrowing to prevent type error\n if ((isUrlString as (value: unknown) => boolean)(name)) {\n repoName = spmGitHubRegex.exec(name)?.groups?.repo;\n // spm backend only supports github repos\n if (!repoName) {\n return {\n packageName: name,\n skipReason: 'unsupported-url',\n };\n }\n }\n return {\n packageName: repoName ?? name,\n datasource: GithubReleasesDatasource.id,\n };\n}\n\n/**\n * Create a tooling config for ubi backend\n * @link https://mise.jdx.dev/dev-tools/backends/ubi.html\n */\nexport function createUbiToolConfig(\n name: string,\n version: string,\n toolOptions: MiseToolOptions,\n): BackendToolingConfig {\n let extractVersion: string | undefined = undefined;\n\n const hasVPrefix = version.startsWith('v');\n const setsTagRegex = !hasVPrefix || isString(toolOptions.tag_regex);\n\n if (setsTagRegex) {\n // By default, use a regex that matches any tag\n let tagRegex = '.+';\n // Filter versions by tag_regex if it is specified\n // ref: https://mise.jdx.dev/dev-tools/backends/ubi.html#ubi-uses-weird-versions\n if (isString(toolOptions.tag_regex)) {\n // Remove the leading '^' if it exists to avoid duplication\n tagRegex = toolOptions.tag_regex.replace(regEx(/^\\^/), '');\n if (!hasVPrefix) {\n // Remove the leading 'v?' if it exists to avoid duplication\n tagRegex = tagRegex.replace(regEx(/^v\\??/), '');\n }\n }\n\n // Trim the 'v' prefix if the current version does not have it\n extractVersion = `^${hasVPrefix ? '' : 'v?'}(?<version>${tagRegex})`;\n }\n\n return {\n packageName: name,\n datasource: GithubReleasesDatasource.id,\n currentValue: version,\n ...(isString(extractVersion) ? { extractVersion } : {}),\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { regEx } from "../../../../../util/regex.js";
|
|
2
2
|
import { matchAt, replaceAt } from "../../../../../util/string.js";
|
|
3
3
|
import { logger } from "../../../../../logger/index.js";
|
|
4
4
|
import "../../dep-types.js";
|
|
@@ -29,7 +29,7 @@ function replaceAsString(parsedContents, fileContent, depType, depName, oldValue
|
|
|
29
29
|
} else parsedContents[depType][depName] = newValue;
|
|
30
30
|
const searchString = `"${oldValue}"`;
|
|
31
31
|
let newString = `"${newValue}"`;
|
|
32
|
-
const escapedDepName =
|
|
32
|
+
const escapedDepName = RegExp.escape(depName);
|
|
33
33
|
const match = regEx(`^(patch:${escapedDepName}@(npm:)?).*#`).exec(oldValue);
|
|
34
34
|
if (match && depType === "resolutions") {
|
|
35
35
|
const patch = oldValue.replace(match[0], `${match[1]}${newValue}#`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../../../lib/modules/manager/npm/update/dependency/index.ts"],"sourcesContent":["import { isArray, isNonEmptyStringAndNotWhitespace } from '@sindresorhus/is';\nimport { dequal } from 'dequal';\nimport { logger } from '../../../../../logger/index.ts';\nimport { escapeRegExp, regEx } from '../../../../../util/regex.ts';\nimport { matchAt, replaceAt } from '../../../../../util/string.ts';\nimport type { UpdateDependencyConfig, Upgrade } from '../../../types.ts';\nimport { pnpmWorkspaceOverrides } from '../../dep-types.ts';\nimport type {\n DependenciesMeta,\n NpmPackage,\n OverrideDependency,\n RecursiveOverride,\n} from '../../extract/types.ts';\nimport type { NpmDepType, NpmManagerData } from '../../types.ts';\nimport { getNewGitValue, getNewNpmAliasValue } from './common.ts';\nimport { updatePnpmWorkspaceDependency } from './pnpm.ts';\nimport { updateYarnrcCatalogDependency } from './yarn.ts';\n\nfunction renameObjKey(\n oldObj: DependenciesMeta,\n oldKey: string,\n newKey: string,\n): DependenciesMeta {\n const keys = Object.keys(oldObj);\n return keys.reduce((acc, key) => {\n if (key === oldKey) {\n acc[newKey] = oldObj[oldKey];\n } else {\n acc[key] = oldObj[key];\n }\n return acc;\n }, {} as DependenciesMeta);\n}\n\nfunction replaceAsString(\n parsedContents: NpmPackage,\n fileContent: string,\n depType:\n | NpmDepType\n | 'dependenciesMeta'\n | 'packageManager'\n | 'pnpm.overrides',\n depName: string,\n oldValue: string,\n newValue: string,\n parents?: string[],\n): string {\n if (depType === 'packageManager') {\n parsedContents[depType] = newValue;\n } else if (depType === 'pnpm.overrides') {\n parsedContents.pnpm!.overrides![depName] = newValue;\n } else if (depName === oldValue) {\n // The old value is the name of the dependency itself\n delete Object.assign(parsedContents[depType]!, {\n [newValue]: parsedContents[depType]![oldValue],\n })[oldValue];\n } else if (depType === 'dependenciesMeta') {\n // v8 ignore else -- TODO: add test #40625\n if (oldValue !== newValue) {\n parsedContents.dependenciesMeta = renameObjKey(\n // TODO #22198\n parsedContents.dependenciesMeta!,\n oldValue,\n newValue,\n );\n }\n } else if (parents && depType === 'overrides') {\n // there is an object as a value in overrides block\n const { depObjectReference, overrideDepName } = overrideDepPosition(\n parsedContents[depType]!,\n parents,\n depName,\n );\n // v8 ignore else -- TODO: add test #40625\n if (depObjectReference) {\n depObjectReference[overrideDepName] = newValue;\n }\n } else {\n // The old value is the version of the dependency\n parsedContents[depType]![depName] = newValue;\n }\n // Look for the old version number\n const searchString = `\"${oldValue}\"`;\n let newString = `\"${newValue}\"`;\n\n const escapedDepName = escapeRegExp(depName);\n const patchRe = regEx(`^(patch:${escapedDepName}@(npm:)?).*#`);\n const match = patchRe.exec(oldValue);\n if (match && depType === 'resolutions') {\n const patch = oldValue.replace(match[0], `${match[1]}${newValue}#`);\n parsedContents[depType]![depName] = patch;\n newString = `\"${patch}\"`;\n }\n\n // Skip ahead to depType section\n let searchIndex = fileContent.indexOf(`\"${depType}\"`) + depType.length;\n logger.trace(`Starting search at index ${searchIndex}`);\n // Iterate through the rest of the file\n for (; searchIndex < fileContent.length; searchIndex += 1) {\n // First check if we have a hit for the old version\n if (matchAt(fileContent, searchIndex, searchString)) {\n logger.trace(`Found match at index ${searchIndex}`);\n // Now test if the result matches\n const testContent = replaceAt(\n fileContent,\n searchIndex,\n searchString,\n newString,\n );\n // Compare the parsed JSON structure of old and new\n if (dequal(parsedContents, JSON.parse(testContent))) {\n return testContent;\n }\n }\n }\n // v8 ignore next -- TODO: add test #40625\n throw new Error();\n}\n\nexport function updateDependency({\n fileContent,\n packageFile: packageFileName,\n upgrade,\n}: UpdateDependencyConfig): string | null {\n if (\n upgrade.depType?.startsWith('pnpm.catalog') ||\n upgrade.depType === pnpmWorkspaceOverrides\n ) {\n return updatePnpmWorkspaceDependency({\n fileContent,\n packageFile: packageFileName,\n upgrade,\n });\n }\n if (upgrade.depType?.startsWith('yarn.catalog')) {\n return updateYarnrcCatalogDependency({\n fileContent,\n packageFile: packageFileName,\n upgrade,\n });\n }\n\n const { depType, managerData } = upgrade;\n const depName: string = managerData?.key ?? upgrade.depName;\n let { newValue } = upgrade;\n\n newValue = getNewGitValue(upgrade) ?? newValue;\n newValue = getNewNpmAliasValue(newValue, upgrade) ?? newValue;\n\n logger.debug(`npm.updateDependency(): ${depType}.${depName} = ${newValue}`);\n try {\n const parsedContents: NpmPackage = JSON.parse(fileContent);\n let overrideDepParents: string[] | undefined = undefined;\n // Save the old version\n let oldVersion: string | undefined;\n if (depType === 'packageManager') {\n oldVersion = parsedContents[depType];\n newValue = `${depName}@${newValue}`;\n } else if (isOverrideObject(upgrade)) {\n overrideDepParents = managerData?.parents;\n // v8 ignore else -- TODO: add test #40625\n if (overrideDepParents) {\n // old version when there is an object as a value in overrides block\n const { depObjectReference, overrideDepName } = overrideDepPosition(\n parsedContents.overrides!,\n overrideDepParents,\n depName,\n );\n // v8 ignore else -- TODO: add test #40625\n if (depObjectReference) {\n oldVersion = depObjectReference[overrideDepName]!;\n }\n }\n } else if (depType === 'pnpm.overrides') {\n oldVersion = parsedContents.pnpm?.overrides?.[depName];\n } else {\n oldVersion = parsedContents[depType as NpmDepType]![depName] as string;\n }\n if (\n oldVersion === newValue &&\n (!upgrade.newName || upgrade.newName === depName)\n ) {\n logger.trace('Version is already updated');\n return fileContent;\n }\n\n // TODO #22198\n let newFileContent: string;\n if (upgrade.newName && upgrade.replacementApproach === 'alias') {\n newFileContent = replaceAsString(\n parsedContents,\n fileContent,\n depType as NpmDepType,\n depName,\n oldVersion!,\n `npm:${upgrade.newName}@${newValue}`,\n overrideDepParents,\n );\n } else {\n newFileContent = replaceAsString(\n parsedContents,\n fileContent,\n depType as NpmDepType,\n depName,\n oldVersion!,\n newValue!,\n overrideDepParents,\n );\n if (upgrade.newName && upgrade.newName !== depName) {\n newFileContent = replaceAsString(\n parsedContents,\n newFileContent,\n depType as NpmDepType,\n depName,\n depName,\n upgrade.newName,\n overrideDepParents,\n );\n }\n }\n /* v8 ignore next -- needs test */\n if (!newFileContent) {\n logger.debug(\n { fileContent, parsedContents, depType, depName, newValue },\n 'Warning: updateDependency error',\n );\n return fileContent;\n }\n\n if (parsedContents?.resolutions) {\n let depKey: string | undefined;\n if (parsedContents.resolutions[depName]) {\n depKey = depName;\n } else if (parsedContents.resolutions[`**/${depName}`]) {\n depKey = `**/${depName}`;\n }\n if (depKey) {\n /* v8 ignore next -- needs test */\n if (parsedContents.resolutions[depKey] !== oldVersion) {\n logger.debug(\n {\n depName,\n depKey,\n oldVersion,\n resolutionsVersion: parsedContents.resolutions[depKey],\n },\n 'Upgraded dependency exists in yarn resolutions but is different version',\n );\n }\n newFileContent = replaceAsString(\n parsedContents,\n newFileContent,\n 'resolutions',\n depKey,\n // TODO #22198\n parsedContents.resolutions[depKey]!,\n // TODO #22198\n newValue!,\n );\n if (upgrade.newName && upgrade.newName !== depName) {\n if (depKey === `**/${depName}`) {\n // handles the case where a replacement is in a resolution\n upgrade.newName = `**/${upgrade.newName}`;\n }\n newFileContent = replaceAsString(\n parsedContents,\n newFileContent,\n 'resolutions',\n depKey,\n depKey,\n upgrade.newName,\n );\n }\n }\n }\n if (parsedContents?.dependenciesMeta) {\n for (const [depKey] of Object.entries(parsedContents.dependenciesMeta)) {\n if (depKey.startsWith(`${depName}@`)) {\n newFileContent = replaceAsString(\n parsedContents,\n newFileContent,\n 'dependenciesMeta',\n depName,\n depKey,\n // TODO: types (#22198)\n `${depName}@${newValue}`,\n );\n }\n }\n }\n return newFileContent;\n } catch (err) {\n logger.debug({ err }, 'updateDependency error');\n return null;\n }\n}\n\nfunction overrideDepPosition(\n overrideBlock: OverrideDependency,\n parents: string[],\n depName: string,\n): {\n depObjectReference: Record<string, string>;\n overrideDepName: string;\n} {\n // get override dep position when its nested in an object\n const lastParent = parents.at(-1);\n let overrideDep: OverrideDependency = overrideBlock;\n for (const parent of parents) {\n // v8 ignore else -- TODO: add test #40625\n if (overrideDep) {\n overrideDep = overrideDep[parent] as Record<string, RecursiveOverride>;\n }\n }\n const overrideDepName = depName === lastParent ? '.' : depName;\n const depObjectReference = overrideDep as Record<string, string>;\n return { depObjectReference, overrideDepName };\n}\n\nfunction isOverrideObject(upgrade: Upgrade<NpmManagerData>): boolean {\n return (\n isArray(upgrade.managerData?.parents, isNonEmptyStringAndNotWhitespace) &&\n upgrade.depType === 'overrides'\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../../lib/modules/manager/npm/update/dependency/index.ts"],"sourcesContent":["import { isArray, isNonEmptyStringAndNotWhitespace } from '@sindresorhus/is';\nimport { dequal } from 'dequal';\nimport { logger } from '../../../../../logger/index.ts';\nimport { regEx } from '../../../../../util/regex.ts';\nimport { matchAt, replaceAt } from '../../../../../util/string.ts';\nimport type { UpdateDependencyConfig, Upgrade } from '../../../types.ts';\nimport { pnpmWorkspaceOverrides } from '../../dep-types.ts';\nimport type {\n DependenciesMeta,\n NpmPackage,\n OverrideDependency,\n RecursiveOverride,\n} from '../../extract/types.ts';\nimport type { NpmDepType, NpmManagerData } from '../../types.ts';\nimport { getNewGitValue, getNewNpmAliasValue } from './common.ts';\nimport { updatePnpmWorkspaceDependency } from './pnpm.ts';\nimport { updateYarnrcCatalogDependency } from './yarn.ts';\n\nfunction renameObjKey(\n oldObj: DependenciesMeta,\n oldKey: string,\n newKey: string,\n): DependenciesMeta {\n const keys = Object.keys(oldObj);\n return keys.reduce((acc, key) => {\n if (key === oldKey) {\n acc[newKey] = oldObj[oldKey];\n } else {\n acc[key] = oldObj[key];\n }\n return acc;\n }, {} as DependenciesMeta);\n}\n\nfunction replaceAsString(\n parsedContents: NpmPackage,\n fileContent: string,\n depType:\n | NpmDepType\n | 'dependenciesMeta'\n | 'packageManager'\n | 'pnpm.overrides',\n depName: string,\n oldValue: string,\n newValue: string,\n parents?: string[],\n): string {\n if (depType === 'packageManager') {\n parsedContents[depType] = newValue;\n } else if (depType === 'pnpm.overrides') {\n parsedContents.pnpm!.overrides![depName] = newValue;\n } else if (depName === oldValue) {\n // The old value is the name of the dependency itself\n delete Object.assign(parsedContents[depType]!, {\n [newValue]: parsedContents[depType]![oldValue],\n })[oldValue];\n } else if (depType === 'dependenciesMeta') {\n // v8 ignore else -- TODO: add test #40625\n if (oldValue !== newValue) {\n parsedContents.dependenciesMeta = renameObjKey(\n // TODO #22198\n parsedContents.dependenciesMeta!,\n oldValue,\n newValue,\n );\n }\n } else if (parents && depType === 'overrides') {\n // there is an object as a value in overrides block\n const { depObjectReference, overrideDepName } = overrideDepPosition(\n parsedContents[depType]!,\n parents,\n depName,\n );\n // v8 ignore else -- TODO: add test #40625\n if (depObjectReference) {\n depObjectReference[overrideDepName] = newValue;\n }\n } else {\n // The old value is the version of the dependency\n parsedContents[depType]![depName] = newValue;\n }\n // Look for the old version number\n const searchString = `\"${oldValue}\"`;\n let newString = `\"${newValue}\"`;\n\n const escapedDepName = RegExp.escape(depName);\n const patchRe = regEx(`^(patch:${escapedDepName}@(npm:)?).*#`);\n const match = patchRe.exec(oldValue);\n if (match && depType === 'resolutions') {\n const patch = oldValue.replace(match[0], `${match[1]}${newValue}#`);\n parsedContents[depType]![depName] = patch;\n newString = `\"${patch}\"`;\n }\n\n // Skip ahead to depType section\n let searchIndex = fileContent.indexOf(`\"${depType}\"`) + depType.length;\n logger.trace(`Starting search at index ${searchIndex}`);\n // Iterate through the rest of the file\n for (; searchIndex < fileContent.length; searchIndex += 1) {\n // First check if we have a hit for the old version\n if (matchAt(fileContent, searchIndex, searchString)) {\n logger.trace(`Found match at index ${searchIndex}`);\n // Now test if the result matches\n const testContent = replaceAt(\n fileContent,\n searchIndex,\n searchString,\n newString,\n );\n // Compare the parsed JSON structure of old and new\n if (dequal(parsedContents, JSON.parse(testContent))) {\n return testContent;\n }\n }\n }\n // v8 ignore next -- TODO: add test #40625\n throw new Error();\n}\n\nexport function updateDependency({\n fileContent,\n packageFile: packageFileName,\n upgrade,\n}: UpdateDependencyConfig): string | null {\n if (\n upgrade.depType?.startsWith('pnpm.catalog') ||\n upgrade.depType === pnpmWorkspaceOverrides\n ) {\n return updatePnpmWorkspaceDependency({\n fileContent,\n packageFile: packageFileName,\n upgrade,\n });\n }\n if (upgrade.depType?.startsWith('yarn.catalog')) {\n return updateYarnrcCatalogDependency({\n fileContent,\n packageFile: packageFileName,\n upgrade,\n });\n }\n\n const { depType, managerData } = upgrade;\n const depName: string = managerData?.key ?? upgrade.depName;\n let { newValue } = upgrade;\n\n newValue = getNewGitValue(upgrade) ?? newValue;\n newValue = getNewNpmAliasValue(newValue, upgrade) ?? newValue;\n\n logger.debug(`npm.updateDependency(): ${depType}.${depName} = ${newValue}`);\n try {\n const parsedContents: NpmPackage = JSON.parse(fileContent);\n let overrideDepParents: string[] | undefined = undefined;\n // Save the old version\n let oldVersion: string | undefined;\n if (depType === 'packageManager') {\n oldVersion = parsedContents[depType];\n newValue = `${depName}@${newValue}`;\n } else if (isOverrideObject(upgrade)) {\n overrideDepParents = managerData?.parents;\n // v8 ignore else -- TODO: add test #40625\n if (overrideDepParents) {\n // old version when there is an object as a value in overrides block\n const { depObjectReference, overrideDepName } = overrideDepPosition(\n parsedContents.overrides!,\n overrideDepParents,\n depName,\n );\n // v8 ignore else -- TODO: add test #40625\n if (depObjectReference) {\n oldVersion = depObjectReference[overrideDepName]!;\n }\n }\n } else if (depType === 'pnpm.overrides') {\n oldVersion = parsedContents.pnpm?.overrides?.[depName];\n } else {\n oldVersion = parsedContents[depType as NpmDepType]![depName] as string;\n }\n if (\n oldVersion === newValue &&\n (!upgrade.newName || upgrade.newName === depName)\n ) {\n logger.trace('Version is already updated');\n return fileContent;\n }\n\n // TODO #22198\n let newFileContent: string;\n if (upgrade.newName && upgrade.replacementApproach === 'alias') {\n newFileContent = replaceAsString(\n parsedContents,\n fileContent,\n depType as NpmDepType,\n depName,\n oldVersion!,\n `npm:${upgrade.newName}@${newValue}`,\n overrideDepParents,\n );\n } else {\n newFileContent = replaceAsString(\n parsedContents,\n fileContent,\n depType as NpmDepType,\n depName,\n oldVersion!,\n newValue!,\n overrideDepParents,\n );\n if (upgrade.newName && upgrade.newName !== depName) {\n newFileContent = replaceAsString(\n parsedContents,\n newFileContent,\n depType as NpmDepType,\n depName,\n depName,\n upgrade.newName,\n overrideDepParents,\n );\n }\n }\n /* v8 ignore next -- needs test */\n if (!newFileContent) {\n logger.debug(\n { fileContent, parsedContents, depType, depName, newValue },\n 'Warning: updateDependency error',\n );\n return fileContent;\n }\n\n if (parsedContents?.resolutions) {\n let depKey: string | undefined;\n if (parsedContents.resolutions[depName]) {\n depKey = depName;\n } else if (parsedContents.resolutions[`**/${depName}`]) {\n depKey = `**/${depName}`;\n }\n if (depKey) {\n /* v8 ignore next -- needs test */\n if (parsedContents.resolutions[depKey] !== oldVersion) {\n logger.debug(\n {\n depName,\n depKey,\n oldVersion,\n resolutionsVersion: parsedContents.resolutions[depKey],\n },\n 'Upgraded dependency exists in yarn resolutions but is different version',\n );\n }\n newFileContent = replaceAsString(\n parsedContents,\n newFileContent,\n 'resolutions',\n depKey,\n // TODO #22198\n parsedContents.resolutions[depKey]!,\n // TODO #22198\n newValue!,\n );\n if (upgrade.newName && upgrade.newName !== depName) {\n if (depKey === `**/${depName}`) {\n // handles the case where a replacement is in a resolution\n upgrade.newName = `**/${upgrade.newName}`;\n }\n newFileContent = replaceAsString(\n parsedContents,\n newFileContent,\n 'resolutions',\n depKey,\n depKey,\n upgrade.newName,\n );\n }\n }\n }\n if (parsedContents?.dependenciesMeta) {\n for (const [depKey] of Object.entries(parsedContents.dependenciesMeta)) {\n if (depKey.startsWith(`${depName}@`)) {\n newFileContent = replaceAsString(\n parsedContents,\n newFileContent,\n 'dependenciesMeta',\n depName,\n depKey,\n // TODO: types (#22198)\n `${depName}@${newValue}`,\n );\n }\n }\n }\n return newFileContent;\n } catch (err) {\n logger.debug({ err }, 'updateDependency error');\n return null;\n }\n}\n\nfunction overrideDepPosition(\n overrideBlock: OverrideDependency,\n parents: string[],\n depName: string,\n): {\n depObjectReference: Record<string, string>;\n overrideDepName: string;\n} {\n // get override dep position when its nested in an object\n const lastParent = parents.at(-1);\n let overrideDep: OverrideDependency = overrideBlock;\n for (const parent of parents) {\n // v8 ignore else -- TODO: add test #40625\n if (overrideDep) {\n overrideDep = overrideDep[parent] as Record<string, RecursiveOverride>;\n }\n }\n const overrideDepName = depName === lastParent ? '.' : depName;\n const depObjectReference = overrideDep as Record<string, string>;\n return { depObjectReference, overrideDepName };\n}\n\nfunction isOverrideObject(upgrade: Upgrade<NpmManagerData>): boolean {\n return (\n isArray(upgrade.managerData?.parents, isNonEmptyStringAndNotWhitespace) &&\n upgrade.depType === 'overrides'\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "../../../constants/error-messages.js";
|
|
2
|
-
import {
|
|
2
|
+
import { regEx } from "../../../util/regex.js";
|
|
3
3
|
import { logger } from "../../../logger/index.js";
|
|
4
4
|
import { ensureCacheDir, readLocalFile } from "../../../util/fs/index.js";
|
|
5
5
|
import { exec } from "../../../util/exec/index.js";
|
|
@@ -19,7 +19,7 @@ import { quote } from "shlex";
|
|
|
19
19
|
* @param depName the name of the dependency
|
|
20
20
|
*/
|
|
21
21
|
function dependencyAndHashPattern(depName) {
|
|
22
|
-
const escapedDepName =
|
|
22
|
+
const escapedDepName = RegExp.escape(depName);
|
|
23
23
|
return regEx(`^\\s*(?<depConstraint>${escapedDepName}${extrasPattern}\\s*==.*?\\S)\\s+--hash=`, "m");
|
|
24
24
|
}
|
|
25
25
|
async function updateArtifacts({ packageFileName, updatedDeps, newPackageFileContent, config }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts.js","names":[],"sources":["../../../../lib/modules/manager/pip_requirements/artifacts.ts"],"sourcesContent":["import { isNonEmptyArray } from '@sindresorhus/is';\nimport { quote } from 'shlex';\nimport { TEMPORARY_ERROR } from '../../../constants/error-messages.ts';\nimport { logger } from '../../../logger/index.ts';\nimport { exec } from '../../../util/exec/index.ts';\nimport type { ExecOptions } from '../../../util/exec/types.ts';\nimport { ensureCacheDir, readLocalFile } from '../../../util/fs/index.ts';\nimport {
|
|
1
|
+
{"version":3,"file":"artifacts.js","names":[],"sources":["../../../../lib/modules/manager/pip_requirements/artifacts.ts"],"sourcesContent":["import { isNonEmptyArray } from '@sindresorhus/is';\nimport { quote } from 'shlex';\nimport { TEMPORARY_ERROR } from '../../../constants/error-messages.ts';\nimport { logger } from '../../../logger/index.ts';\nimport { exec } from '../../../util/exec/index.ts';\nimport type { ExecOptions } from '../../../util/exec/types.ts';\nimport { ensureCacheDir, readLocalFile } from '../../../util/fs/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport type { UpdateArtifact, UpdateArtifactsResult } from '../types.ts';\nimport { extrasPattern } from './extract.ts';\n\n/**\n * Create a RegExp that matches the first dependency pattern for\n * the named dependency that is followed by package hashes.\n *\n * The regular expression defines a single named group `depConstraint`\n * that holds the dependency constraint without the hash specifiers.\n * The substring matched by this named group will start with the dependency\n * name and end with a non-whitespace character.\n *\n * @param depName the name of the dependency\n */\nfunction dependencyAndHashPattern(depName: string): RegExp {\n const escapedDepName = RegExp.escape(depName);\n\n // extrasPattern covers any whitespace between the dep name and the optional extras specifier,\n // but it does not cover any whitespace in front of the equal signs.\n //\n // Use a non-greedy wildcard for the range pattern; otherwise, we would\n // include all but the last hash specifier into depConstraint.\n return regEx(\n `^\\\\s*(?<depConstraint>${escapedDepName}${extrasPattern}\\\\s*==.*?\\\\S)\\\\s+--hash=`,\n 'm',\n );\n}\n\nexport async function updateArtifacts({\n packageFileName,\n updatedDeps,\n newPackageFileContent,\n config,\n}: UpdateArtifact): Promise<UpdateArtifactsResult[] | null> {\n logger.debug(`pip_requirements.updateArtifacts(${packageFileName})`);\n if (!isNonEmptyArray(updatedDeps)) {\n logger.debug('No updated pip_requirements deps - returning null');\n return null;\n }\n try {\n const cmd: string[] = [];\n const rewrittenContent = newPackageFileContent.replace(regEx(/\\\\\\n/g), '');\n for (const dep of updatedDeps) {\n if (!dep.depName) {\n continue;\n }\n const depAndHashMatch = dependencyAndHashPattern(dep.depName).exec(\n rewrittenContent,\n );\n if (depAndHashMatch) {\n // If there's a match, then the regular expression guarantees\n // that the named subgroup deepConstraint did match as well.\n const depConstraint = depAndHashMatch.groups!.depConstraint;\n cmd.push(`hashin ${quote(depConstraint)} -r ${quote(packageFileName)}`);\n }\n }\n if (!cmd.length) {\n logger.debug('No hashin commands to run - returning');\n return null;\n }\n const execOptions: ExecOptions = {\n cwdFile: '.',\n docker: {},\n toolConstraints: [\n { toolName: 'python', constraint: config.constraints?.python },\n { toolName: 'hashin', constraint: config.constraints?.hashin },\n ],\n extraEnv: {\n PIP_CACHE_DIR: await ensureCacheDir('pip'),\n },\n };\n await exec(cmd, execOptions);\n const newContent = await readLocalFile(packageFileName, 'utf8');\n if (newContent === newPackageFileContent) {\n logger.debug(`${packageFileName} is unchanged`);\n return null;\n }\n logger.debug(`Returning updated ${packageFileName}`);\n return [\n {\n file: {\n type: 'addition',\n path: packageFileName,\n contents: newContent,\n },\n },\n ];\n } catch (err) {\n // istanbul ignore if\n if (err.message === TEMPORARY_ERROR) {\n throw err;\n }\n logger.debug({ err }, `Failed to update ${packageFileName} file`);\n return [\n {\n artifactError: {\n fileName: packageFileName,\n stderr: `${String(err.stdout)}\\n${String(err.stderr)}`,\n },\n },\n ];\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAsBA,SAAS,yBAAyB,SAAyB;CACzD,MAAM,iBAAiB,OAAO,OAAO,OAAO;CAO5C,OAAO,MACL,yBAAyB,iBAAiB,cAAc,2BACxD,GACF;AACF;AAEA,eAAsB,gBAAgB,EACpC,iBACA,aACA,uBACA,UAC0D;CAC1D,OAAO,MAAM,oCAAoC,gBAAgB,EAAE;CACnE,IAAI,CAAC,gBAAgB,WAAW,GAAG;EACjC,OAAO,MAAM,mDAAmD;EAChE,OAAO;CACT;CACA,IAAI;EACF,MAAM,MAAgB,CAAC;EACvB,MAAM,mBAAmB,sBAAsB,QAAQ,MAAM,OAAO,GAAG,EAAE;EACzE,KAAK,MAAM,OAAO,aAAa;GAC7B,IAAI,CAAC,IAAI,SACP;GAEF,MAAM,kBAAkB,yBAAyB,IAAI,OAAO,CAAC,CAAC,KAC5D,gBACF;GACA,IAAI,iBAAiB;IAGnB,MAAM,gBAAgB,gBAAgB,OAAQ;IAC9C,IAAI,KAAK,UAAU,MAAM,aAAa,EAAE,MAAM,MAAM,eAAe,GAAG;GACxE;EACF;EACA,IAAI,CAAC,IAAI,QAAQ;GACf,OAAO,MAAM,uCAAuC;GACpD,OAAO;EACT;EACA,MAAM,cAA2B;GAC/B,SAAS;GACT,QAAQ,CAAC;GACT,iBAAiB,CACf;IAAE,UAAU;IAAU,YAAY,OAAO,aAAa;GAAO,GAC7D;IAAE,UAAU;IAAU,YAAY,OAAO,aAAa;GAAO,CAC/D;GACA,UAAU,EACR,eAAe,MAAM,eAAe,KAAK,EAC3C;EACF;EACA,MAAM,KAAK,KAAK,WAAW;EAC3B,MAAM,aAAa,MAAM,cAAc,iBAAiB,MAAM;EAC9D,IAAI,eAAe,uBAAuB;GACxC,OAAO,MAAM,GAAG,gBAAgB,cAAc;GAC9C,OAAO;EACT;EACA,OAAO,MAAM,qBAAqB,iBAAiB;EACnD,OAAO,CACL,EACE,MAAM;GACJ,MAAM;GACN,MAAM;GACN,UAAU;EACZ,EACF,CACF;CACF,SAAS,KAAK;;EAEZ,IAAI,IAAI,YAAA,mBACN,MAAM;EAER,OAAO,MAAM,EAAE,IAAI,GAAG,oBAAoB,gBAAgB,MAAM;EAChE,OAAO,CACL,EACE,eAAe;GACb,UAAU;GACV,QAAQ,GAAG,OAAO,IAAI,MAAM,EAAE,IAAI,OAAO,IAAI,MAAM;EACrD,EACF,CACF;CACF;AACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { regEx } from "../../../util/regex.js";
|
|
2
2
|
import { logger } from "../../../logger/index.js";
|
|
3
3
|
import { trimTrailingSlash } from "../../../util/url.js";
|
|
4
4
|
import { readLocalFile } from "../../../util/fs/index.js";
|
|
@@ -47,7 +47,7 @@ async function resolveCommitSha(dep, newVersion) {
|
|
|
47
47
|
}
|
|
48
48
|
function updatePinInJson(content, pin, newVersion, newRevision) {
|
|
49
49
|
let updated = content;
|
|
50
|
-
const identityMatch = regEx(`"identity"\\s*:\\s*"${
|
|
50
|
+
const identityMatch = regEx(`"identity"\\s*:\\s*"${RegExp.escape(pin.identity)}"`).exec(updated);
|
|
51
51
|
/* istanbul ignore if: identity always exists after JSON parse + matchPinForDep */
|
|
52
52
|
if (!identityMatch) return content;
|
|
53
53
|
const blockStart = updated.slice(0, identityMatch.index).lastIndexOf("{");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts.js","names":[],"sources":["../../../../lib/modules/manager/swift/artifacts.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport { readLocalFile } from '../../../util/fs/index.ts';\nimport { parseGitUrl } from '../../../util/git/url.ts';\nimport { escapeRegExp, regEx } from '../../../util/regex.ts';\nimport { trimTrailingSlash } from '../../../util/url.ts';\nimport { GitTagsDatasource } from '../../datasource/git-tags/index.ts';\nimport { getDigest } from '../../datasource/index.ts';\nimport { scm } from '../../platform/scm.ts';\nimport type {\n PackageDependency,\n UpdateArtifact,\n UpdateArtifactsResult,\n Upgrade,\n} from '../types.ts';\nimport type { PackageResolvedPin } from './schema.ts';\nimport { PackageResolvedJson } from './schema.ts';\n\nasync function findPackageResolvedFiles(): Promise<string[]> {\n const fileList = await scm.getFileList();\n return fileList.filter((f) => f.endsWith('Package.resolved'));\n}\n\nfunction normalizeUrl(url: string): string {\n try {\n const parsed = parseGitUrl(url);\n // Only use parsed result when both resource and full_name are present,\n // otherwise fall through to basic normalization\n if (parsed.resource && parsed.full_name) {\n // Normalize to host/full_name form to allow cross-protocol matching\n // e.g. https://github.com/owner/repo, git@github.com:owner/repo.git\n // -> github.com/owner/repo\n return `${parsed.resource}/${trimTrailingSlash(parsed.full_name)}`.toLowerCase();\n }\n } catch {\n // Fall through to basic normalization\n }\n return url\n .replace(regEx(/\\.git$/), '')\n .replace(regEx(/\\/$/), '')\n .toLowerCase();\n}\n\nfunction matchPinForDep(\n dep: PackageDependency,\n pins: PackageResolvedPin[],\n): PackageResolvedPin | null {\n let depUrl: string;\n\n if (dep.datasource === GitTagsDatasource.id) {\n depUrl = dep.depName ?? '';\n } else {\n const registryUrl = dep.registryUrls?.[0] ?? 'https://github.com';\n depUrl = `${registryUrl}/${dep.depName}`;\n }\n\n const normalizedDepUrl = normalizeUrl(depUrl);\n\n return (\n pins.find((pin) => normalizeUrl(pin.location) === normalizedDepUrl) ?? null\n );\n}\n\nasync function resolveCommitSha(\n dep: Upgrade,\n newVersion: string,\n): Promise<string | null> {\n if (dep.newDigest) {\n return dep.newDigest;\n }\n\n const datasource = dep.datasource;\n const packageName = dep.packageName ?? dep.depName;\n if (!datasource || !packageName) {\n return null;\n }\n\n try {\n const digest = await getDigest(\n {\n datasource,\n packageName,\n registryUrls: dep.registryUrls,\n },\n newVersion,\n );\n return digest;\n } catch (err) {\n logger.debug(\n { err, packageName, newVersion },\n 'swift: failed to resolve commit SHA',\n );\n return null;\n }\n}\n\nfunction updatePinInJson(\n content: string,\n pin: PackageResolvedPin,\n newVersion: string,\n newRevision: string | null,\n): string {\n let updated = content;\n\n // Find the pin block by its unique identity value\n const identityPattern = regEx(\n `\"identity\"\\\\s*:\\\\s*\"${escapeRegExp(pin.identity)}\"`,\n );\n const identityMatch = identityPattern.exec(updated);\n /* istanbul ignore if: identity always exists after JSON parse + matchPinForDep */\n if (!identityMatch) {\n return content;\n }\n\n // Find the enclosing object block (search for the opening brace before identity)\n const beforeIdentity = updated.slice(0, identityMatch.index);\n const blockStart = beforeIdentity.lastIndexOf('{');\n /* istanbul ignore if: valid JSON always has enclosing braces */\n if (blockStart === -1) {\n return content;\n }\n\n // Find the closing brace of this pin block (handle nested braces)\n let braceDepth = 0;\n let blockEnd = -1;\n for (let i = blockStart; i < updated.length; i++) {\n if (updated[i] === '{') {\n braceDepth++;\n } else if (updated[i] === '}') {\n braceDepth--;\n if (braceDepth === 0) {\n blockEnd = i + 1;\n break;\n }\n }\n }\n /* istanbul ignore if: valid JSON always has matching braces */\n if (blockEnd === -1) {\n return content;\n }\n\n let pinBlock = updated.slice(blockStart, blockEnd);\n\n // Replace version within the pin block\n const versionPattern = regEx(/(\"version\"\\s*:\\s*)\"[^\"]*\"/);\n pinBlock = pinBlock.replace(versionPattern, `$1\"${newVersion}\"`);\n\n // Replace revision within the pin block if we have a new one\n if (newRevision) {\n const revisionPattern = regEx(/(\"revision\"\\s*:\\s*)\"[^\"]*\"/);\n pinBlock = pinBlock.replace(revisionPattern, `$1\"${newRevision}\"`);\n }\n\n updated = updated.slice(0, blockStart) + pinBlock + updated.slice(blockEnd);\n return updated;\n}\n\nexport async function updateArtifacts({\n updatedDeps,\n config,\n}: UpdateArtifact): Promise<UpdateArtifactsResult[] | null> {\n if (config.isLockFileMaintenance) {\n logger.debug('swift: lockFileMaintenance is not supported');\n return null;\n }\n\n if (!updatedDeps.length) {\n logger.debug('swift: no updatedDeps, nothing to do');\n return null;\n }\n\n const resolvedFiles = await findPackageResolvedFiles();\n if (!resolvedFiles.length) {\n logger.debug('swift: no Package.resolved files found');\n return null;\n }\n\n const results: UpdateArtifactsResult[] = [];\n\n for (const resolvedFile of resolvedFiles) {\n const content = await readLocalFile(resolvedFile, 'utf8');\n if (!content) {\n logger.debug({ resolvedFile }, 'swift: could not read Package.resolved');\n continue;\n }\n\n const parseResult = PackageResolvedJson.safeParse(content);\n if (!parseResult.success) {\n logger.debug(\n { resolvedFile, error: parseResult.error },\n 'swift: could not parse Package.resolved',\n );\n continue;\n }\n\n const parsed = parseResult.data;\n let updated = content;\n\n for (const dep of updatedDeps) {\n const newValue = dep.newValue;\n if (!newValue) {\n continue;\n }\n\n // shouldn't happen\n if (!dep.newVersion) {\n logger.debug(\n {\n depName: dep.depName,\n newVersion: dep.newVersion,\n newValue: dep.newValue,\n },\n 'swift: found a newValue but not a newVersion',\n );\n continue;\n }\n\n const pin = matchPinForDep(dep, parsed.pins);\n if (!pin) {\n logger.debug(\n { depName: dep.depName },\n 'swift: no matching pin found in Package.resolved',\n );\n continue;\n }\n\n const resolvedVersion = dep.newVersion.replace(regEx(/^v/), '');\n\n // Skip if already up-to-date\n if (pin.state.version === resolvedVersion) {\n logger.debug(\n { depName: dep.depName, resolvedVersion },\n 'swift: pin already at target version',\n );\n continue;\n }\n\n const newRevision = await resolveCommitSha(dep, dep.newVersion);\n updated = updatePinInJson(updated, pin, resolvedVersion, newRevision);\n }\n\n if (updated !== content) {\n results.push({\n file: {\n type: 'addition',\n path: resolvedFile,\n contents: updated,\n },\n });\n }\n }\n\n return results.length ? results : null;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"artifacts.js","names":[],"sources":["../../../../lib/modules/manager/swift/artifacts.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport { readLocalFile } from '../../../util/fs/index.ts';\nimport { parseGitUrl } from '../../../util/git/url.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { trimTrailingSlash } from '../../../util/url.ts';\nimport { GitTagsDatasource } from '../../datasource/git-tags/index.ts';\nimport { getDigest } from '../../datasource/index.ts';\nimport { scm } from '../../platform/scm.ts';\nimport type {\n PackageDependency,\n UpdateArtifact,\n UpdateArtifactsResult,\n Upgrade,\n} from '../types.ts';\nimport type { PackageResolvedPin } from './schema.ts';\nimport { PackageResolvedJson } from './schema.ts';\n\nasync function findPackageResolvedFiles(): Promise<string[]> {\n const fileList = await scm.getFileList();\n return fileList.filter((f) => f.endsWith('Package.resolved'));\n}\n\nfunction normalizeUrl(url: string): string {\n try {\n const parsed = parseGitUrl(url);\n // Only use parsed result when both resource and full_name are present,\n // otherwise fall through to basic normalization\n if (parsed.resource && parsed.full_name) {\n // Normalize to host/full_name form to allow cross-protocol matching\n // e.g. https://github.com/owner/repo, git@github.com:owner/repo.git\n // -> github.com/owner/repo\n return `${parsed.resource}/${trimTrailingSlash(parsed.full_name)}`.toLowerCase();\n }\n } catch {\n // Fall through to basic normalization\n }\n return url\n .replace(regEx(/\\.git$/), '')\n .replace(regEx(/\\/$/), '')\n .toLowerCase();\n}\n\nfunction matchPinForDep(\n dep: PackageDependency,\n pins: PackageResolvedPin[],\n): PackageResolvedPin | null {\n let depUrl: string;\n\n if (dep.datasource === GitTagsDatasource.id) {\n depUrl = dep.depName ?? '';\n } else {\n const registryUrl = dep.registryUrls?.[0] ?? 'https://github.com';\n depUrl = `${registryUrl}/${dep.depName}`;\n }\n\n const normalizedDepUrl = normalizeUrl(depUrl);\n\n return (\n pins.find((pin) => normalizeUrl(pin.location) === normalizedDepUrl) ?? null\n );\n}\n\nasync function resolveCommitSha(\n dep: Upgrade,\n newVersion: string,\n): Promise<string | null> {\n if (dep.newDigest) {\n return dep.newDigest;\n }\n\n const datasource = dep.datasource;\n const packageName = dep.packageName ?? dep.depName;\n if (!datasource || !packageName) {\n return null;\n }\n\n try {\n const digest = await getDigest(\n {\n datasource,\n packageName,\n registryUrls: dep.registryUrls,\n },\n newVersion,\n );\n return digest;\n } catch (err) {\n logger.debug(\n { err, packageName, newVersion },\n 'swift: failed to resolve commit SHA',\n );\n return null;\n }\n}\n\nfunction updatePinInJson(\n content: string,\n pin: PackageResolvedPin,\n newVersion: string,\n newRevision: string | null,\n): string {\n let updated = content;\n\n // Find the pin block by its unique identity value\n const identityPattern = regEx(\n `\"identity\"\\\\s*:\\\\s*\"${RegExp.escape(pin.identity)}\"`,\n );\n const identityMatch = identityPattern.exec(updated);\n /* istanbul ignore if: identity always exists after JSON parse + matchPinForDep */\n if (!identityMatch) {\n return content;\n }\n\n // Find the enclosing object block (search for the opening brace before identity)\n const beforeIdentity = updated.slice(0, identityMatch.index);\n const blockStart = beforeIdentity.lastIndexOf('{');\n /* istanbul ignore if: valid JSON always has enclosing braces */\n if (blockStart === -1) {\n return content;\n }\n\n // Find the closing brace of this pin block (handle nested braces)\n let braceDepth = 0;\n let blockEnd = -1;\n for (let i = blockStart; i < updated.length; i++) {\n if (updated[i] === '{') {\n braceDepth++;\n } else if (updated[i] === '}') {\n braceDepth--;\n if (braceDepth === 0) {\n blockEnd = i + 1;\n break;\n }\n }\n }\n /* istanbul ignore if: valid JSON always has matching braces */\n if (blockEnd === -1) {\n return content;\n }\n\n let pinBlock = updated.slice(blockStart, blockEnd);\n\n // Replace version within the pin block\n const versionPattern = regEx(/(\"version\"\\s*:\\s*)\"[^\"]*\"/);\n pinBlock = pinBlock.replace(versionPattern, `$1\"${newVersion}\"`);\n\n // Replace revision within the pin block if we have a new one\n if (newRevision) {\n const revisionPattern = regEx(/(\"revision\"\\s*:\\s*)\"[^\"]*\"/);\n pinBlock = pinBlock.replace(revisionPattern, `$1\"${newRevision}\"`);\n }\n\n updated = updated.slice(0, blockStart) + pinBlock + updated.slice(blockEnd);\n return updated;\n}\n\nexport async function updateArtifacts({\n updatedDeps,\n config,\n}: UpdateArtifact): Promise<UpdateArtifactsResult[] | null> {\n if (config.isLockFileMaintenance) {\n logger.debug('swift: lockFileMaintenance is not supported');\n return null;\n }\n\n if (!updatedDeps.length) {\n logger.debug('swift: no updatedDeps, nothing to do');\n return null;\n }\n\n const resolvedFiles = await findPackageResolvedFiles();\n if (!resolvedFiles.length) {\n logger.debug('swift: no Package.resolved files found');\n return null;\n }\n\n const results: UpdateArtifactsResult[] = [];\n\n for (const resolvedFile of resolvedFiles) {\n const content = await readLocalFile(resolvedFile, 'utf8');\n if (!content) {\n logger.debug({ resolvedFile }, 'swift: could not read Package.resolved');\n continue;\n }\n\n const parseResult = PackageResolvedJson.safeParse(content);\n if (!parseResult.success) {\n logger.debug(\n { resolvedFile, error: parseResult.error },\n 'swift: could not parse Package.resolved',\n );\n continue;\n }\n\n const parsed = parseResult.data;\n let updated = content;\n\n for (const dep of updatedDeps) {\n const newValue = dep.newValue;\n if (!newValue) {\n continue;\n }\n\n // shouldn't happen\n if (!dep.newVersion) {\n logger.debug(\n {\n depName: dep.depName,\n newVersion: dep.newVersion,\n newValue: dep.newValue,\n },\n 'swift: found a newValue but not a newVersion',\n );\n continue;\n }\n\n const pin = matchPinForDep(dep, parsed.pins);\n if (!pin) {\n logger.debug(\n { depName: dep.depName },\n 'swift: no matching pin found in Package.resolved',\n );\n continue;\n }\n\n const resolvedVersion = dep.newVersion.replace(regEx(/^v/), '');\n\n // Skip if already up-to-date\n if (pin.state.version === resolvedVersion) {\n logger.debug(\n { depName: dep.depName, resolvedVersion },\n 'swift: pin already at target version',\n );\n continue;\n }\n\n const newRevision = await resolveCommitSha(dep, dep.newVersion);\n updated = updatePinInJson(updated, pin, resolvedVersion, newRevision);\n }\n\n if (updated !== content) {\n results.push({\n file: {\n type: 'addition',\n path: resolvedFile,\n contents: updated,\n },\n });\n }\n }\n\n return results.length ? results : null;\n}\n"],"mappings":"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"}
|