renovate 43.132.2 → 43.133.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/modules/manager/fingerprint.generated.js +1 -1
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/gradle/extract/catalog.js +42 -4
- package/dist/modules/manager/gradle/extract/catalog.js.map +1 -1
- package/dist/modules/manager/gradle/extract.js +5 -3
- package/dist/modules/manager/gradle/extract.js.map +1 -1
- package/dist/modules/manager/gradle/parser/common.js +11 -1
- package/dist/modules/manager/gradle/parser/common.js.map +1 -1
- package/dist/modules/manager/gradle/utils.js +35 -5
- package/dist/modules/manager/gradle/utils.js.map +1 -1
- package/dist/modules/versioning/github-actions/index.js +2 -3
- package/dist/modules/versioning/github-actions/index.js.map +1 -1
- package/package.json +1 -1
- package/renovate-schema.json +2 -2
|
@@ -47,7 +47,7 @@ hashMap.set("gitlabci-include", "354cfc4ea327c6d5cd5bee1f17763832efc7f5402e9fd22
|
|
|
47
47
|
hashMap.set("glasskube", "253d6db30bdec75ed5ab5d26f31d69bc07813ba10089a28da12c6a29eff4ec70");
|
|
48
48
|
hashMap.set("gleam", "b717a48c525ad6b1d434c6a9db828ddebbb85e94519e89ddc4040878e3600e84");
|
|
49
49
|
hashMap.set("gomod", "82e877b22c0dd0217368760bb5d38430657fff63d07c289793a866f0845d2976");
|
|
50
|
-
hashMap.set("gradle", "
|
|
50
|
+
hashMap.set("gradle", "882a835107334db9a6fe1b830d8230f020436b5152b35d87142916281639479f");
|
|
51
51
|
hashMap.set("gradle-wrapper", "90d2ecb9d0b113f8e946d4ea221c040f17f91af846e1ff4f9fc1514ad4324b74");
|
|
52
52
|
hashMap.set("haskell-cabal", "d796ec6859e63ab4f1b7030c4016071202c3a44c7c11d4a9131d7e2ba19b396d");
|
|
53
53
|
hashMap.set("helm-requirements", "4d90e5e18a380876ad48e21e1ad88ea62e25d973a1ddaa3763447fc0a9f9915b");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprint.generated.js","names":[],"sources":["../../../lib/modules/manager/fingerprint.generated.ts"],"sourcesContent":["export const hashMap = new Map<string, string>();\n\nhashMap.set('ansible','1fbc76f78daa14a8c9ab1142e9d1e05c746c0419a9f1455e4279f476590d0c04');\nhashMap.set('ansible-galaxy','8226d47128f2018825d4d6f84794e3183eb79c706045fa7e88491edd5e64106f');\nhashMap.set('ant','8640868d2249c9a0fbc57680fa81cf0c8c35f170258c50ac3ffb3a4f798cc5ae');\nhashMap.set('argocd','5d35b1992e53130bf83b0e59a0f90ccd3a78919974c69044f306dc5d162f48ce');\nhashMap.set('asdf','1f6fcf620e9c6cd35991380cb6eafb94ec60cd77cbd13335ebe3a1d9727416c9');\nhashMap.set('azure-pipelines','4f635b0ecd388ee266d992e8281fd40e3db2f5867d86fc1cbce72dc33a66e796');\nhashMap.set('batect','fad98996bea8626525ab925f83a6ae0ce9262c53770e7aa7cb448a1e0f1ddf21');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','c6e0ad88ea468664c3a33263baf7452d83d2d37ff09ba920e18f64ee81fd0acb');\nhashMap.set('bazel-module','ff071fcf8b53036956627d2a430ccdf256e30bee4d7e80c329379879d836a931');\nhashMap.set('bazelisk','b6ec532dfa7c8f82ad4084df864ac6276e87c27285369323902afc146d3537ac');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','59c0503494ab1442b127914503c01b97ac17b6742b19c632292d5aa24de115cd');\nhashMap.set('bitrise','478dfd316221fad7c29e177c70d1018d832fb2626b53308a5d0f1f0380e69f42');\nhashMap.set('buildkite','a93effb1f1c5d65b3277c3b4709924eacde282e8efd028a8e3d8c1ce3ef69407');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','1322232bf1d0c4fa796e31a00488453bdcd00d4958431d9e424c1635e60a99bd');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','6d7e9d2018ac03e15f19e8b40ef70dd87d509d5affca24bc464d085899880a25');\nhashMap.set('cake','65ad4f28c318675b9edb49dbd11d677f42c762b01b3f5a25dd3b2f345ecd387e');\nhashMap.set('cargo','308d7ab4c6d24027b050bf659dfab0e510d9a22f8134695a7c68214908ee4634');\nhashMap.set('cdnurl','d3edf6cdc38e92eb43ff5a2b4e8df6a6a13154cf83244725c39e28d7e6ea9177');\nhashMap.set('circleci','135937d4720718304adb0ba998516f8ce38c3220ccd18b00b8c70c62b45df4da');\nhashMap.set('cloudbuild','8c0c739f7e4082bbfe8e3fdffebaf43e26f70a1314d95b306e9b93e4f4297886');\nhashMap.set('cocoapods','b6ac3b4a6b8a5b32daed37bf695fe177cdb1b4a94ae7f7fb2f4c4c096c0a004c');\nhashMap.set('composer','cdb6895574020cec402e0b878e4078b62f1acfd0392a861cbb523036634f6383');\nhashMap.set('conan','aecc3917d77146db4e57dd12944be1beff860e90b7ebdd2d8fbc449fc1a06574');\nhashMap.set('copier','faa3b79991256a6fc0957fdcd530a1bc8aee65913d5aff2b1b4d226dcd44d008');\nhashMap.set('cpanfile','6a1d67d9c8751123deaf0c7f3ac38a07024e960c140f8228fcbcb93954fdca01');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deps-edn','c87dd5e88587147ad1a78f047b814f3c4aa60d6de30d0c49d849391eeaf1b64c');\nhashMap.set('devbox','bcf5334e8a21190baaa25436acf2f17fbf095504262a4e9ee7c62ffb644eb716');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','5441af5b5abf8d347e46002d47f02f85743401bda28232f49fb7b3bbb772a4fb');\nhashMap.set('dockerfile','322b95f7e55dd78d7fe71306a6f649479eca61c60d75bb10b23604a230dbdd08');\nhashMap.set('droneci','237c8de87b9bf653fb943b56e84e99c45f6d86ae27d86e599b3f3f99c35ba8ee');\nhashMap.set('fleet','d73d5d35f10df0599a561d9c8d25f3935350407d0e3bd3a1d1545295f278912e');\nhashMap.set('flux','427e0c1a5b1d8337503a9a568a76532fbde0bab8b355fa8f47312de50eadf2f6');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','fbbf1c7b7b6f4166fa3beee96a3283d007b388e9ecb6a14f76123c8ab8c78071');\nhashMap.set('github-actions','49c1733a35ee643fbc4cbd169004c851f0f4636cc8683341bfa5266f12fb0615');\nhashMap.set('gitlabci','0dec44dd398bfc5b3c19d0929bea2fef7f386c94acfd1b1d7bc2a31d81d96fd6');\nhashMap.set('gitlabci-include','354cfc4ea327c6d5cd5bee1f17763832efc7f5402e9fd22c579239fccb9c6dab');\nhashMap.set('glasskube','253d6db30bdec75ed5ab5d26f31d69bc07813ba10089a28da12c6a29eff4ec70');\nhashMap.set('gleam','b717a48c525ad6b1d434c6a9db828ddebbb85e94519e89ddc4040878e3600e84');\nhashMap.set('gomod','82e877b22c0dd0217368760bb5d38430657fff63d07c289793a866f0845d2976');\nhashMap.set('gradle','f430d8d768b56889ad1e5a69965841e85cc700e364d15db7bce680e8a5d6f821');\nhashMap.set('gradle-wrapper','90d2ecb9d0b113f8e946d4ea221c040f17f91af846e1ff4f9fc1514ad4324b74');\nhashMap.set('haskell-cabal','d796ec6859e63ab4f1b7030c4016071202c3a44c7c11d4a9131d7e2ba19b396d');\nhashMap.set('helm-requirements','4d90e5e18a380876ad48e21e1ad88ea62e25d973a1ddaa3763447fc0a9f9915b');\nhashMap.set('helm-values','b5c52c6a27d805557418c585c5d3030c95ee641d53057021f3fe060f81b6e1af');\nhashMap.set('helmfile','e5783484b81247279563da3c835afe4002edfc412e13fb91877818ca44ae65f2');\nhashMap.set('helmsman','ef9680c612f702c7f07aea9b6e5d811e91214dcfa5755c9f3803e9528090935e');\nhashMap.set('helmv3','7724bf6cc3ff4afec1809899f619a332f4350049b9578b5c4634514b4448cf2b');\nhashMap.set('hermit','672c328e4baea3a1ccd2cde2364db01c8033a8c077bf63a5b914fc20ee1de838');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','56ef90301143874355fd2ed25dff7c646875f701f97422d02e01d45608a88f31');\nhashMap.set('html','67c5f3c5c58e96f5dd257ba5987d900cf7fef81d667c3640e96c847b37de35a8');\nhashMap.set('jenkins','268ebfc8a1caf3edeb2192c2b1b2fa4bf18a78a3e731ba20a6c104940a5539f3');\nhashMap.set('jsonnet-bundler','4b73c32ddc3fe45d9777106d45b116777a2960e6e631256a6553060e602f893c');\nhashMap.set('kotlin-script','99ef296792a0ca575ed31d3defb514b05a58083dc01c52ea0890c69d867ba1dd');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','1e44d6ef8622252dac6d9649fb04badd12d4827eb2a55f74792aa9de2b915775');\nhashMap.set('leiningen','133fca2c3423f53f2ccc22518153ddbcafbf0f4812376c77e952eb3d24d81f85');\nhashMap.set('maven','fd6bfc21be851ed076eabea1a91a89b25eb82129734c7cb0c2e684385cf1ea69');\nhashMap.set('maven-wrapper','9a868d1328f911eb72f9e65a64d46c86ae347aab0153d1cf4e9a62ad9e0d6cb0');\nhashMap.set('meteor','4a93a326b27bedfe52118e27e06f39fecd7c55bd4cd7fccec4cb120cac14cec4');\nhashMap.set('mint','b816a49c8525716454d0a2bc9127916d5b27e5cca7b2aa2030312f218942af3e');\nhashMap.set('mise','38177382f3785cfe7cce92994bfb429b68f5165e6eef1bdcd2c7a3d8d5414da2');\nhashMap.set('mix','1116e1adf1c18c866f0a9e6fa065c4fb9da055d8d150e625344899bb94095481');\nhashMap.set('nix','f3ffec2f14e7261de8068895b91392e992dcef208fbaf52110d6862e4712c031');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','eaf9fe4981de8f7504227f3be88445f60f87ba74f9b9c7e54284bc2bb41320b3');\nhashMap.set('nuget','42175b1906e8e91ae0731a13d92d0df065108063665f8a36150aeae73aafdc78');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','32233a1a8a2725699d7448ba438e3d0b78141f7799cd2b588de278d41e26ed10');\nhashMap.set('pep621','f503497a4adef31b29572176e9a69d52fa9b0bfe3477b6e228c906aeb4861de5');\nhashMap.set('pep723','b96683163de63ed93207ec0538066705b1e58a1cd5b8bd11c63fc28b26bddba1');\nhashMap.set('pip-compile','89152ad6c89f278395f32d289dc3890823c233366547d228e97dd1319aa144b5');\nhashMap.set('pip_requirements','d5c474c524bc7adc1aae065da0531bd22d9f7f52523b018f2461f6c29e12fdf3');\nhashMap.set('pip_setup','0175fe550c19d9bd31c978bd83fdc088cb40fcacd5d6751f640164274ae64e61');\nhashMap.set('pipenv','50f5a54ed714fd3d738c1aa9a353cf3aab767899acdcb763088d4bd04f3a737b');\nhashMap.set('pixi','395114828787d8fcc3b3bd9f6df9507eafecacdd9061c1ad10f9ecf803e7fc30');\nhashMap.set('poetry','7f227b8b912b405df7735e9dc7c178f03021844f0c027d4b321c023c330c390a');\nhashMap.set('pre-commit','a6a6e847fdb0f56650e66ef7d69e68de752b390913f79ac31d1a7ec5955d03da');\nhashMap.set('pub','0fbad9f77579fcec3a623c6feab56e71934c67a79bb8f4f0f847452051d2a0ba');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','e355e13e104351a8b3516a8e272fc5f7e625c9f39b0c492ba27283a36227c2d4');\nhashMap.set('renovate-config-presets','a394fe55f8b6ba356f29f76efd9f0d34b56baceb111e6d92f95b29b5ca50ac67');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('sbt','74125bd9c76a5724092258cd1dee1ea99fc0d735b463a2b64fedc5d950efde2a');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','7dea08c5708625e753bd56918bc214df7fb4d8543a26e936926a21ab43b5f785');\nhashMap.set('sveltos','167a5cc79098803be3b815a28cc40ef3361c455751e1d6a7a99ba91bfce26709');\nhashMap.set('swift','79ec9a6a2a8bb4853bb78bbb3a2a6e64e3b32b0ddeb312385abb3a14366ad505');\nhashMap.set('tekton','4e35c75bba4abc9c3cf49c55da6c19db4f4e9181d1fd9583288ab55ef7c944fd');\nhashMap.set('terraform','51aa6b0a49001494e7ee718d01312961c7fbd244831b42ceefd690d75404e795');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','b8474c65383a702602eee432cc1434f9a49a1ef886d1213de92d7a84fb98b9cd');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','4a975f0cc1aa22cd258aa835de3dc98d7a5c0d1cee0a1092324338968e08a827');\nhashMap.set('travis','bb482a0195cd009ec3896a6227bb95617f5c84bedb518c7d971e50c62235d9ca');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','4627230d3b7698c41aac192d57b65b091c860c8f858c89d6af4b06ed6a32fae6');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('xcodegen','dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683');\nhashMap.set('jsonata','3b5f465b586993f92c8490e70885e7eecce9b6556bcc376dd9c11db8ee9e6960');\nhashMap.set('regex','7b643b49e498465cf91b25b8b840bb1fec8c8a3a59bfa8f97a39c976675325a0');"],"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','1fbc76f78daa14a8c9ab1142e9d1e05c746c0419a9f1455e4279f476590d0c04');\nhashMap.set('ansible-galaxy','8226d47128f2018825d4d6f84794e3183eb79c706045fa7e88491edd5e64106f');\nhashMap.set('ant','8640868d2249c9a0fbc57680fa81cf0c8c35f170258c50ac3ffb3a4f798cc5ae');\nhashMap.set('argocd','5d35b1992e53130bf83b0e59a0f90ccd3a78919974c69044f306dc5d162f48ce');\nhashMap.set('asdf','1f6fcf620e9c6cd35991380cb6eafb94ec60cd77cbd13335ebe3a1d9727416c9');\nhashMap.set('azure-pipelines','4f635b0ecd388ee266d992e8281fd40e3db2f5867d86fc1cbce72dc33a66e796');\nhashMap.set('batect','fad98996bea8626525ab925f83a6ae0ce9262c53770e7aa7cb448a1e0f1ddf21');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','c6e0ad88ea468664c3a33263baf7452d83d2d37ff09ba920e18f64ee81fd0acb');\nhashMap.set('bazel-module','ff071fcf8b53036956627d2a430ccdf256e30bee4d7e80c329379879d836a931');\nhashMap.set('bazelisk','b6ec532dfa7c8f82ad4084df864ac6276e87c27285369323902afc146d3537ac');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','59c0503494ab1442b127914503c01b97ac17b6742b19c632292d5aa24de115cd');\nhashMap.set('bitrise','478dfd316221fad7c29e177c70d1018d832fb2626b53308a5d0f1f0380e69f42');\nhashMap.set('buildkite','a93effb1f1c5d65b3277c3b4709924eacde282e8efd028a8e3d8c1ce3ef69407');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','1322232bf1d0c4fa796e31a00488453bdcd00d4958431d9e424c1635e60a99bd');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','6d7e9d2018ac03e15f19e8b40ef70dd87d509d5affca24bc464d085899880a25');\nhashMap.set('cake','65ad4f28c318675b9edb49dbd11d677f42c762b01b3f5a25dd3b2f345ecd387e');\nhashMap.set('cargo','308d7ab4c6d24027b050bf659dfab0e510d9a22f8134695a7c68214908ee4634');\nhashMap.set('cdnurl','d3edf6cdc38e92eb43ff5a2b4e8df6a6a13154cf83244725c39e28d7e6ea9177');\nhashMap.set('circleci','135937d4720718304adb0ba998516f8ce38c3220ccd18b00b8c70c62b45df4da');\nhashMap.set('cloudbuild','8c0c739f7e4082bbfe8e3fdffebaf43e26f70a1314d95b306e9b93e4f4297886');\nhashMap.set('cocoapods','b6ac3b4a6b8a5b32daed37bf695fe177cdb1b4a94ae7f7fb2f4c4c096c0a004c');\nhashMap.set('composer','cdb6895574020cec402e0b878e4078b62f1acfd0392a861cbb523036634f6383');\nhashMap.set('conan','aecc3917d77146db4e57dd12944be1beff860e90b7ebdd2d8fbc449fc1a06574');\nhashMap.set('copier','faa3b79991256a6fc0957fdcd530a1bc8aee65913d5aff2b1b4d226dcd44d008');\nhashMap.set('cpanfile','6a1d67d9c8751123deaf0c7f3ac38a07024e960c140f8228fcbcb93954fdca01');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deps-edn','c87dd5e88587147ad1a78f047b814f3c4aa60d6de30d0c49d849391eeaf1b64c');\nhashMap.set('devbox','bcf5334e8a21190baaa25436acf2f17fbf095504262a4e9ee7c62ffb644eb716');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','5441af5b5abf8d347e46002d47f02f85743401bda28232f49fb7b3bbb772a4fb');\nhashMap.set('dockerfile','322b95f7e55dd78d7fe71306a6f649479eca61c60d75bb10b23604a230dbdd08');\nhashMap.set('droneci','237c8de87b9bf653fb943b56e84e99c45f6d86ae27d86e599b3f3f99c35ba8ee');\nhashMap.set('fleet','d73d5d35f10df0599a561d9c8d25f3935350407d0e3bd3a1d1545295f278912e');\nhashMap.set('flux','427e0c1a5b1d8337503a9a568a76532fbde0bab8b355fa8f47312de50eadf2f6');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','fbbf1c7b7b6f4166fa3beee96a3283d007b388e9ecb6a14f76123c8ab8c78071');\nhashMap.set('github-actions','49c1733a35ee643fbc4cbd169004c851f0f4636cc8683341bfa5266f12fb0615');\nhashMap.set('gitlabci','0dec44dd398bfc5b3c19d0929bea2fef7f386c94acfd1b1d7bc2a31d81d96fd6');\nhashMap.set('gitlabci-include','354cfc4ea327c6d5cd5bee1f17763832efc7f5402e9fd22c579239fccb9c6dab');\nhashMap.set('glasskube','253d6db30bdec75ed5ab5d26f31d69bc07813ba10089a28da12c6a29eff4ec70');\nhashMap.set('gleam','b717a48c525ad6b1d434c6a9db828ddebbb85e94519e89ddc4040878e3600e84');\nhashMap.set('gomod','82e877b22c0dd0217368760bb5d38430657fff63d07c289793a866f0845d2976');\nhashMap.set('gradle','882a835107334db9a6fe1b830d8230f020436b5152b35d87142916281639479f');\nhashMap.set('gradle-wrapper','90d2ecb9d0b113f8e946d4ea221c040f17f91af846e1ff4f9fc1514ad4324b74');\nhashMap.set('haskell-cabal','d796ec6859e63ab4f1b7030c4016071202c3a44c7c11d4a9131d7e2ba19b396d');\nhashMap.set('helm-requirements','4d90e5e18a380876ad48e21e1ad88ea62e25d973a1ddaa3763447fc0a9f9915b');\nhashMap.set('helm-values','b5c52c6a27d805557418c585c5d3030c95ee641d53057021f3fe060f81b6e1af');\nhashMap.set('helmfile','e5783484b81247279563da3c835afe4002edfc412e13fb91877818ca44ae65f2');\nhashMap.set('helmsman','ef9680c612f702c7f07aea9b6e5d811e91214dcfa5755c9f3803e9528090935e');\nhashMap.set('helmv3','7724bf6cc3ff4afec1809899f619a332f4350049b9578b5c4634514b4448cf2b');\nhashMap.set('hermit','672c328e4baea3a1ccd2cde2364db01c8033a8c077bf63a5b914fc20ee1de838');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','56ef90301143874355fd2ed25dff7c646875f701f97422d02e01d45608a88f31');\nhashMap.set('html','67c5f3c5c58e96f5dd257ba5987d900cf7fef81d667c3640e96c847b37de35a8');\nhashMap.set('jenkins','268ebfc8a1caf3edeb2192c2b1b2fa4bf18a78a3e731ba20a6c104940a5539f3');\nhashMap.set('jsonnet-bundler','4b73c32ddc3fe45d9777106d45b116777a2960e6e631256a6553060e602f893c');\nhashMap.set('kotlin-script','99ef296792a0ca575ed31d3defb514b05a58083dc01c52ea0890c69d867ba1dd');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','1e44d6ef8622252dac6d9649fb04badd12d4827eb2a55f74792aa9de2b915775');\nhashMap.set('leiningen','133fca2c3423f53f2ccc22518153ddbcafbf0f4812376c77e952eb3d24d81f85');\nhashMap.set('maven','fd6bfc21be851ed076eabea1a91a89b25eb82129734c7cb0c2e684385cf1ea69');\nhashMap.set('maven-wrapper','9a868d1328f911eb72f9e65a64d46c86ae347aab0153d1cf4e9a62ad9e0d6cb0');\nhashMap.set('meteor','4a93a326b27bedfe52118e27e06f39fecd7c55bd4cd7fccec4cb120cac14cec4');\nhashMap.set('mint','b816a49c8525716454d0a2bc9127916d5b27e5cca7b2aa2030312f218942af3e');\nhashMap.set('mise','38177382f3785cfe7cce92994bfb429b68f5165e6eef1bdcd2c7a3d8d5414da2');\nhashMap.set('mix','1116e1adf1c18c866f0a9e6fa065c4fb9da055d8d150e625344899bb94095481');\nhashMap.set('nix','f3ffec2f14e7261de8068895b91392e992dcef208fbaf52110d6862e4712c031');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','eaf9fe4981de8f7504227f3be88445f60f87ba74f9b9c7e54284bc2bb41320b3');\nhashMap.set('nuget','42175b1906e8e91ae0731a13d92d0df065108063665f8a36150aeae73aafdc78');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','32233a1a8a2725699d7448ba438e3d0b78141f7799cd2b588de278d41e26ed10');\nhashMap.set('pep621','f503497a4adef31b29572176e9a69d52fa9b0bfe3477b6e228c906aeb4861de5');\nhashMap.set('pep723','b96683163de63ed93207ec0538066705b1e58a1cd5b8bd11c63fc28b26bddba1');\nhashMap.set('pip-compile','89152ad6c89f278395f32d289dc3890823c233366547d228e97dd1319aa144b5');\nhashMap.set('pip_requirements','d5c474c524bc7adc1aae065da0531bd22d9f7f52523b018f2461f6c29e12fdf3');\nhashMap.set('pip_setup','0175fe550c19d9bd31c978bd83fdc088cb40fcacd5d6751f640164274ae64e61');\nhashMap.set('pipenv','50f5a54ed714fd3d738c1aa9a353cf3aab767899acdcb763088d4bd04f3a737b');\nhashMap.set('pixi','395114828787d8fcc3b3bd9f6df9507eafecacdd9061c1ad10f9ecf803e7fc30');\nhashMap.set('poetry','7f227b8b912b405df7735e9dc7c178f03021844f0c027d4b321c023c330c390a');\nhashMap.set('pre-commit','a6a6e847fdb0f56650e66ef7d69e68de752b390913f79ac31d1a7ec5955d03da');\nhashMap.set('pub','0fbad9f77579fcec3a623c6feab56e71934c67a79bb8f4f0f847452051d2a0ba');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','e355e13e104351a8b3516a8e272fc5f7e625c9f39b0c492ba27283a36227c2d4');\nhashMap.set('renovate-config-presets','a394fe55f8b6ba356f29f76efd9f0d34b56baceb111e6d92f95b29b5ca50ac67');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('sbt','74125bd9c76a5724092258cd1dee1ea99fc0d735b463a2b64fedc5d950efde2a');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','7dea08c5708625e753bd56918bc214df7fb4d8543a26e936926a21ab43b5f785');\nhashMap.set('sveltos','167a5cc79098803be3b815a28cc40ef3361c455751e1d6a7a99ba91bfce26709');\nhashMap.set('swift','79ec9a6a2a8bb4853bb78bbb3a2a6e64e3b32b0ddeb312385abb3a14366ad505');\nhashMap.set('tekton','4e35c75bba4abc9c3cf49c55da6c19db4f4e9181d1fd9583288ab55ef7c944fd');\nhashMap.set('terraform','51aa6b0a49001494e7ee718d01312961c7fbd244831b42ceefd690d75404e795');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','b8474c65383a702602eee432cc1434f9a49a1ef886d1213de92d7a84fb98b9cd');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','4a975f0cc1aa22cd258aa835de3dc98d7a5c0d1cee0a1092324338968e08a827');\nhashMap.set('travis','bb482a0195cd009ec3896a6227bb95617f5c84bedb518c7d971e50c62235d9ca');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','4627230d3b7698c41aac192d57b65b091c860c8f858c89d6af4b06ed6a32fae6');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('xcodegen','dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683');\nhashMap.set('jsonata','3b5f465b586993f92c8490e70885e7eecce9b6556bcc376dd9c11db8ee9e6960');\nhashMap.set('regex','7b643b49e498465cf91b25b8b840bb1fec8c8a3a59bfa8f97a39c976675325a0');"],"mappings":";AAAA,MAAa,0BAAU,IAAI,KAAqB;AAEhD,QAAQ,IAAI,WAAU,mEAAmE;AACzF,QAAQ,IAAI,kBAAiB,mEAAmE;AAChG,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,QAAO,mEAAmE;AACtF,QAAQ,IAAI,mBAAkB,mEAAmE;AACjG,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,kBAAiB,mEAAmE;AAChG,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,gBAAe,mEAAmE;AAC9F,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,uBAAsB,mEAAmE;AACrG,QAAQ,IAAI,WAAU,mEAAmE;AACzF,QAAQ,IAAI,aAAY,mEAAmE;AAC3F,QAAQ,IAAI,cAAa,mEAAmE;AAC5F,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,eAAc,mEAAmE;AAC7F,QAAQ,IAAI,WAAU,mEAAmE;AACzF,QAAQ,IAAI,QAAO,mEAAmE;AACtF,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,cAAa,mEAAmE;AAC5F,QAAQ,IAAI,aAAY,mEAAmE;AAC3F,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,cAAa,mEAAmE;AAC5F,QAAQ,IAAI,QAAO,mEAAmE;AACtF,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,gBAAe,mEAAmE;AAC9F,QAAQ,IAAI,kBAAiB,mEAAmE;AAChG,QAAQ,IAAI,cAAa,mEAAmE;AAC5F,QAAQ,IAAI,WAAU,mEAAmE;AACzF,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,QAAO,mEAAmE;AACtF,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,kBAAiB,mEAAmE;AAChG,QAAQ,IAAI,kBAAiB,mEAAmE;AAChG,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,oBAAmB,mEAAmE;AAClG,QAAQ,IAAI,aAAY,mEAAmE;AAC3F,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,kBAAiB,mEAAmE;AAChG,QAAQ,IAAI,iBAAgB,mEAAmE;AAC/F,QAAQ,IAAI,qBAAoB,mEAAmE;AACnG,QAAQ,IAAI,eAAc,mEAAmE;AAC7F,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,0BAAyB,mEAAmE;AACxG,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,QAAO,mEAAmE;AACtF,QAAQ,IAAI,WAAU,mEAAmE;AACzF,QAAQ,IAAI,mBAAkB,mEAAmE;AACjG,QAAQ,IAAI,iBAAgB,mEAAmE;AAC/F,QAAQ,IAAI,cAAa,mEAAmE;AAC5F,QAAQ,IAAI,aAAY,mEAAmE;AAC3F,QAAQ,IAAI,aAAY,mEAAmE;AAC3F,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,iBAAgB,mEAAmE;AAC/F,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,QAAO,mEAAmE;AACtF,QAAQ,IAAI,QAAO,mEAAmE;AACtF,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,QAAO,mEAAmE;AACtF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,eAAc,mEAAmE;AAC7F,QAAQ,IAAI,oBAAmB,mEAAmE;AAClG,QAAQ,IAAI,aAAY,mEAAmE;AAC3F,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,QAAO,mEAAmE;AACtF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,cAAa,mEAAmE;AAC5F,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,WAAU,mEAAmE;AACzF,QAAQ,IAAI,2BAA0B,mEAAmE;AACzG,QAAQ,IAAI,gBAAe,mEAAmE;AAC9F,QAAQ,IAAI,mBAAkB,mEAAmE;AACjG,QAAQ,IAAI,OAAM,mEAAmE;AACrF,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,aAAY,mEAAmE;AAC3F,QAAQ,IAAI,WAAU,mEAAmE;AACzF,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,aAAY,mEAAmE;AAC3F,QAAQ,IAAI,qBAAoB,mEAAmE;AACnG,QAAQ,IAAI,cAAa,mEAAmE;AAC5F,QAAQ,IAAI,sBAAqB,mEAAmE;AACpG,QAAQ,IAAI,iBAAgB,mEAAmE;AAC/F,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,SAAQ,mEAAmE;AACvF,QAAQ,IAAI,WAAU,mEAAmE;AACzF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,UAAS,mEAAmE;AACxF,QAAQ,IAAI,cAAa,mEAAmE;AAC5F,QAAQ,IAAI,YAAW,mEAAmE;AAC1F,QAAQ,IAAI,WAAU,mEAAmE;AACzF,QAAQ,IAAI,SAAQ,mEAAmE"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { escapeRegExp, regEx } from "../../../../util/regex.js";
|
|
2
2
|
import { massage, parse } from "../../../../util/toml.js";
|
|
3
3
|
import { hasKey } from "../../../../util/object.js";
|
|
4
|
+
import { isTOMLFile } from "../utils.js";
|
|
4
5
|
import { isPlainObject, isString } from "@sindresorhus/is";
|
|
5
6
|
import merge from "deepmerge";
|
|
6
7
|
//#region lib/modules/manager/gradle/extract/catalog.ts
|
|
@@ -122,6 +123,21 @@ function parseCatalog(packageFile, content) {
|
|
|
122
123
|
const versionStartIndex = content.indexOf("versions");
|
|
123
124
|
const versionSubContent = content.slice(versionStartIndex);
|
|
124
125
|
const extractedDeps = [];
|
|
126
|
+
const vars = {};
|
|
127
|
+
for (const [key, version] of Object.entries(versions)) {
|
|
128
|
+
const { currentValue, fileReplacePosition } = extractLiteralVersion({
|
|
129
|
+
version,
|
|
130
|
+
depStartIndex: versionStartIndex,
|
|
131
|
+
depSubContent: versionSubContent,
|
|
132
|
+
sectionKey: key
|
|
133
|
+
});
|
|
134
|
+
if (currentValue && fileReplacePosition !== void 0) vars[normalizeAlias(key)] = {
|
|
135
|
+
key: normalizeAlias(key),
|
|
136
|
+
value: currentValue,
|
|
137
|
+
fileReplacePosition,
|
|
138
|
+
packageFile
|
|
139
|
+
};
|
|
140
|
+
}
|
|
125
141
|
for (const libraryName of Object.keys(libs)) {
|
|
126
142
|
const libDescriptor = libs[libraryName];
|
|
127
143
|
const dependency = extractDependency({
|
|
@@ -165,11 +181,33 @@ function parseCatalog(packageFile, content) {
|
|
|
165
181
|
}
|
|
166
182
|
extractedDeps.push(dependency);
|
|
167
183
|
}
|
|
168
|
-
return
|
|
169
|
-
|
|
170
|
-
|
|
184
|
+
return {
|
|
185
|
+
vars,
|
|
186
|
+
deps: extractedDeps.map((dep) => {
|
|
187
|
+
return merge(dep, { managerData: { packageFile } });
|
|
188
|
+
})
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
function makeCatalogGroupKey(dep) {
|
|
192
|
+
return `${dep.managerData.packageFile}:${dep.managerData.fileReplacePosition}`;
|
|
193
|
+
}
|
|
194
|
+
function unifyCatalogSharedVariableNames(deps) {
|
|
195
|
+
const aliasMap = {};
|
|
196
|
+
const catalogDeps = [];
|
|
197
|
+
for (const dep of deps) {
|
|
198
|
+
const packageFile = dep.managerData?.packageFile;
|
|
199
|
+
if (packageFile && dep.managerData?.fileReplacePosition !== void 0 && dep.sharedVariableName && isTOMLFile(packageFile)) {
|
|
200
|
+
catalogDeps.push(dep);
|
|
201
|
+
const key = makeCatalogGroupKey(dep);
|
|
202
|
+
(aliasMap[key] ??= []).push(dep.sharedVariableName);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
for (const dep of catalogDeps) {
|
|
206
|
+
const aliases = aliasMap[makeCatalogGroupKey(dep)];
|
|
207
|
+
if (aliases.length > 1) dep.sharedVariableName = aliases[0].replace(regEx(/^[^.]+\.versions\./), "");
|
|
208
|
+
}
|
|
171
209
|
}
|
|
172
210
|
//#endregion
|
|
173
|
-
export { parseCatalog };
|
|
211
|
+
export { parseCatalog, unifyCatalogSharedVariableNames };
|
|
174
212
|
|
|
175
213
|
//# sourceMappingURL=catalog.js.map
|
|
@@ -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 VersionPointer,\n} from '../types.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 } else {\n return extractLiteralVersion({\n version,\n depStartIndex,\n depSubContent,\n sectionKey: depName,\n });\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 } else if (isString(version)) {\n const fileReplacePosition =\n depStartIndex + findVersionIndex(depSubContent, sectionKey, version);\n return { currentValue: version, fileReplacePosition };\n } else 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): 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 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 deps;\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 { 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 } else {\n return extractLiteralVersion({\n version,\n depStartIndex,\n depSubContent,\n sectionKey: depName,\n });\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 } else if (isString(version)) {\n const fileReplacePosition =\n depStartIndex + findVersionIndex(depSubContent, sectionKey, version);\n return { currentValue: version, fileReplacePosition };\n } else 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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"}
|
|
@@ -5,10 +5,10 @@ import { getLocalFiles } from "../../../util/fs/index.js";
|
|
|
5
5
|
import { MavenDatasource } from "../../datasource/maven/index.js";
|
|
6
6
|
import api from "../../versioning/gradle/index.js";
|
|
7
7
|
import { REGISTRY_URLS } from "./parser/common.js";
|
|
8
|
-
import { getVars, isGradleScriptFile, isKotlinSourceFile, isPropsFile, isTOMLFile, reorderFiles, toAbsolutePath, updateVars } from "./utils.js";
|
|
8
|
+
import { getVars, isGradleScriptFile, isKotlinSourceFile, isPropsFile, isTOMLFile, reorderFiles, toAbsolutePath, updateVars, updateVarsFromDefaultCatalog } from "./utils.js";
|
|
9
9
|
import { parseGradle, parseKotlinSource, parseProps } from "./parser.js";
|
|
10
10
|
import { isGcvPropsFile, parseGcv, usesGcv } from "./extract/consistent-versions-plugin.js";
|
|
11
|
-
import { parseCatalog } from "./extract/catalog.js";
|
|
11
|
+
import { parseCatalog, unifyCatalogSharedVariableNames } from "./extract/catalog.js";
|
|
12
12
|
import upath from "upath";
|
|
13
13
|
//#region lib/modules/manager/gradle/extract.ts
|
|
14
14
|
const mavenDatasource = MavenDatasource.id;
|
|
@@ -72,7 +72,8 @@ async function parsePackageFiles(config, packageFiles, extractedDeps, packageFil
|
|
|
72
72
|
updateVars(varRegistry, packageFileDir, vars);
|
|
73
73
|
extractedDeps.push(...deps);
|
|
74
74
|
} else if (isTOMLFile(packageFile)) {
|
|
75
|
-
const deps = parseCatalog(packageFile, content);
|
|
75
|
+
const { vars, deps } = parseCatalog(packageFile, content);
|
|
76
|
+
updateVarsFromDefaultCatalog(varRegistry, packageFileDir, packageFile, vars);
|
|
76
77
|
extractedDeps.push(...deps);
|
|
77
78
|
} else if (isGcvPropsFile(packageFile) && usesGcv(packageFile, fileContents)) {
|
|
78
79
|
const deps = parseGcv(packageFile, fileContents);
|
|
@@ -109,6 +110,7 @@ async function extractAllPackageFiles(config, packageFiles) {
|
|
|
109
110
|
...gradleFiles
|
|
110
111
|
], extractedDeps, packageFilesByName, packageRegistries);
|
|
111
112
|
if (!extractedDeps.length) return null;
|
|
113
|
+
unifyCatalogSharedVariableNames(extractedDeps);
|
|
112
114
|
for (const dep of extractedDeps) {
|
|
113
115
|
dep.fileReplacePosition = dep?.managerData?.fileReplacePosition;
|
|
114
116
|
const key = dep.managerData?.packageFile;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","names":["gradleVersioning"],"sources":["../../../../lib/modules/manager/gradle/extract.ts"],"sourcesContent":["import upath from 'upath';\nimport { logger } from '../../../logger/index.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport { getLocalFiles } from '../../../util/fs/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { MavenDatasource } from '../../datasource/maven/index.ts';\nimport gradleVersioning from '../../versioning/gradle/index.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFile,\n} from '../types.ts';\nimport { parseCatalog } from './extract/catalog.ts';\nimport {\n isGcvPropsFile,\n parseGcv,\n usesGcv,\n} from './extract/consistent-versions-plugin.ts';\nimport { REGISTRY_URLS } from './parser/common.ts';\nimport { parseGradle, parseKotlinSource, parseProps } from './parser.ts';\nimport type {\n ContentDescriptorSpec,\n GradleManagerData,\n PackageRegistry,\n VariableRegistry,\n} from './types.ts';\nimport {\n getVars,\n isGradleScriptFile,\n isKotlinSourceFile,\n isPropsFile,\n isTOMLFile,\n reorderFiles,\n toAbsolutePath,\n updateVars,\n} from './utils.ts';\n\nconst mavenDatasource = MavenDatasource.id;\n\nfunction updatePackageRegistries(\n packageRegistries: PackageRegistry[],\n urls: PackageRegistry[],\n): void {\n for (const url of urls) {\n const registryAlreadyKnown = packageRegistries.some(\n (item) =>\n item.registryUrl === url.registryUrl &&\n item.scope === url.scope &&\n item.registryType === url.registryType &&\n item.content === url.content,\n );\n if (!registryAlreadyKnown) {\n packageRegistries.push(url);\n }\n }\n}\n\nexport function matchesContentDescriptor(\n dep: PackageDependency<GradleManagerData>,\n contentDescriptors?: ContentDescriptorSpec[],\n): boolean {\n const [groupId, artifactId] = (dep.packageName ?? dep.depName!).split(':');\n let hasIncludes = false;\n let hasExcludes = false;\n let matchesInclude = false;\n let matchesExclude = false;\n\n for (const content of coerceArray(contentDescriptors)) {\n const {\n mode,\n matcher,\n groupId: contentGroupId,\n artifactId: contentArtifactId,\n version: contentVersion,\n } = content;\n\n // group matching\n let groupMatch = false;\n if (matcher === 'regex') {\n groupMatch = regEx(contentGroupId).test(groupId);\n } else if (matcher === 'subgroup') {\n groupMatch =\n groupId === contentGroupId || `${groupId}.`.startsWith(contentGroupId);\n } else {\n groupMatch = groupId === contentGroupId;\n }\n\n // artifact matching (optional)\n let artifactMatch = true;\n if (groupMatch && contentArtifactId) {\n if (matcher === 'regex') {\n artifactMatch = regEx(contentArtifactId).test(artifactId);\n } else {\n artifactMatch = artifactId === contentArtifactId;\n }\n }\n\n // version matching (optional)\n let versionMatch = true;\n if (groupMatch && artifactMatch && contentVersion && dep.currentValue) {\n if (matcher === 'regex') {\n versionMatch = regEx(contentVersion).test(dep.currentValue);\n } else {\n // contentVersion can be an exact version or a gradle-supported version range\n versionMatch = gradleVersioning.matches(\n dep.currentValue,\n contentVersion,\n );\n }\n }\n\n const isMatch = groupMatch && artifactMatch && versionMatch;\n if (mode === 'include') {\n hasIncludes = true;\n if (isMatch) {\n matchesInclude = true;\n }\n } else if (mode === 'exclude') {\n hasExcludes = true;\n if (isMatch) {\n matchesExclude = true;\n }\n }\n }\n\n if (hasIncludes && hasExcludes) {\n // if both includes and excludes exist, dep must match include and not match exclude\n return matchesInclude && !matchesExclude;\n } else if (hasIncludes) {\n // if only includes exist, dep must match at least one include\n return matchesInclude;\n } else if (hasExcludes) {\n // if only excludes exist, dep must not match any exclude\n return !matchesExclude;\n }\n\n // by default, repositories include everything and exclude nothing\n return true;\n}\n\nfunction getRegistryUrlsForDep(\n packageRegistries: PackageRegistry[],\n dep: PackageDependency<GradleManagerData>,\n): string[] {\n const scope = dep.depType === 'plugin' ? 'plugin' : 'dep';\n\n const matchingRegistries = packageRegistries.filter(\n (item) =>\n item.scope === scope && matchesContentDescriptor(dep, item.content),\n );\n\n const exclusiveRegistries = matchingRegistries.filter(\n (item) => item.registryType === 'exclusive',\n );\n\n const registryUrls = (\n exclusiveRegistries.length ? exclusiveRegistries : matchingRegistries\n ).map((item) => item.registryUrl);\n\n if (!registryUrls.length && scope === 'plugin') {\n registryUrls.push(REGISTRY_URLS.gradlePluginPortal);\n }\n\n return [...new Set(registryUrls)];\n}\n\nasync function parsePackageFiles(\n config: ExtractConfig,\n packageFiles: string[],\n extractedDeps: PackageDependency<GradleManagerData>[],\n packageFilesByName: Record<string, PackageFile>,\n packageRegistries: PackageRegistry[],\n): Promise<PackageDependency<GradleManagerData>[]> {\n const varRegistry: VariableRegistry = {};\n const fileContents = await getLocalFiles(packageFiles);\n\n for (const packageFile of packageFiles) {\n packageFilesByName[packageFile] = {\n packageFile,\n datasource: mavenDatasource,\n deps: [],\n };\n\n try {\n // TODO #22198\n const content = fileContents[packageFile]!;\n const packageFileDir = upath.dirname(toAbsolutePath(packageFile));\n\n if (isPropsFile(packageFile)) {\n const { vars, deps } = parseProps(content, packageFile);\n updateVars(varRegistry, packageFileDir, vars);\n extractedDeps.push(...deps);\n } else if (isTOMLFile(packageFile)) {\n const deps = parseCatalog(packageFile, content);\n extractedDeps.push(...deps);\n } else if (\n isGcvPropsFile(packageFile) &&\n usesGcv(packageFile, fileContents)\n ) {\n const deps = parseGcv(packageFile, fileContents);\n extractedDeps.push(...deps);\n } else if (isKotlinSourceFile(packageFile)) {\n const vars = getVars(varRegistry, packageFileDir);\n const { vars: gradleVars, deps } = parseKotlinSource(\n content,\n vars,\n packageFile,\n );\n updateVars(varRegistry, '/', gradleVars);\n extractedDeps.push(...deps);\n } else if (isGradleScriptFile(packageFile)) {\n const vars = getVars(varRegistry, packageFileDir);\n const {\n deps,\n urls,\n vars: gradleVars,\n } = parseGradle(content, vars, packageFile, fileContents);\n updatePackageRegistries(packageRegistries, urls);\n updateVars(varRegistry, packageFileDir, gradleVars);\n extractedDeps.push(...deps);\n }\n } catch (err) {\n logger.debug(\n { err, config, packageFile },\n `Failed to process Gradle file`,\n );\n }\n }\n\n return extractedDeps;\n}\n\nexport async function extractAllPackageFiles(\n config: ExtractConfig,\n packageFiles: string[],\n): Promise<PackageFile[] | null> {\n const packageFilesByName: Record<string, PackageFile> = {};\n const packageRegistries: PackageRegistry[] = [];\n const extractedDeps: PackageDependency<GradleManagerData>[] = [];\n const kotlinSourceFiles = packageFiles.filter(isKotlinSourceFile);\n const gradleFiles = reorderFiles(\n packageFiles.filter((e) => !kotlinSourceFiles.includes(e)),\n );\n\n await parsePackageFiles(\n config,\n [...kotlinSourceFiles, ...kotlinSourceFiles, ...gradleFiles],\n extractedDeps,\n packageFilesByName,\n packageRegistries,\n );\n\n if (!extractedDeps.length) {\n return null;\n }\n\n for (const dep of extractedDeps) {\n dep.fileReplacePosition = dep?.managerData?.fileReplacePosition; // #8224\n\n const key = dep.managerData?.packageFile;\n // istanbul ignore else\n if (key) {\n let pkgFile: PackageFile = packageFilesByName[key];\n // istanbul ignore if: won't happen if \"apply from\" processes only initially known files\n if (!pkgFile) {\n pkgFile = {\n packageFile: key,\n datasource: mavenDatasource,\n deps: [],\n };\n }\n\n dep.datasource ??= mavenDatasource;\n\n if (dep.datasource === mavenDatasource) {\n dep.registryUrls = getRegistryUrlsForDep(packageRegistries, dep);\n\n dep.depType ??=\n key.startsWith('buildSrc') && !kotlinSourceFiles.length\n ? 'devDependencies'\n : 'dependencies';\n }\n\n const depAlreadyInPkgFile = pkgFile.deps.some(\n (item) =>\n item.depName === dep.depName &&\n item.managerData?.fileReplacePosition ===\n dep.managerData?.fileReplacePosition,\n );\n if (!depAlreadyInPkgFile) {\n pkgFile.deps.push(dep);\n }\n\n packageFilesByName[key] = pkgFile;\n } else {\n logger.debug({ dep }, `Failed to process Gradle dependency`);\n }\n }\n\n return Object.values(packageFilesByName);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"extract.js","names":["gradleVersioning"],"sources":["../../../../lib/modules/manager/gradle/extract.ts"],"sourcesContent":["import upath from 'upath';\nimport { logger } from '../../../logger/index.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport { getLocalFiles } from '../../../util/fs/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { MavenDatasource } from '../../datasource/maven/index.ts';\nimport gradleVersioning from '../../versioning/gradle/index.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFile,\n} from '../types.ts';\nimport {\n parseCatalog,\n unifyCatalogSharedVariableNames,\n} from './extract/catalog.ts';\nimport {\n isGcvPropsFile,\n parseGcv,\n usesGcv,\n} from './extract/consistent-versions-plugin.ts';\nimport { REGISTRY_URLS } from './parser/common.ts';\nimport { parseGradle, parseKotlinSource, parseProps } from './parser.ts';\nimport type {\n ContentDescriptorSpec,\n GradleManagerData,\n PackageRegistry,\n VariableRegistry,\n} from './types.ts';\nimport {\n getVars,\n isGradleScriptFile,\n isKotlinSourceFile,\n isPropsFile,\n isTOMLFile,\n reorderFiles,\n toAbsolutePath,\n updateVars,\n updateVarsFromDefaultCatalog,\n} from './utils.ts';\n\nconst mavenDatasource = MavenDatasource.id;\n\nfunction updatePackageRegistries(\n packageRegistries: PackageRegistry[],\n urls: PackageRegistry[],\n): void {\n for (const url of urls) {\n const registryAlreadyKnown = packageRegistries.some(\n (item) =>\n item.registryUrl === url.registryUrl &&\n item.scope === url.scope &&\n item.registryType === url.registryType &&\n item.content === url.content,\n );\n if (!registryAlreadyKnown) {\n packageRegistries.push(url);\n }\n }\n}\n\nexport function matchesContentDescriptor(\n dep: PackageDependency<GradleManagerData>,\n contentDescriptors?: ContentDescriptorSpec[],\n): boolean {\n const [groupId, artifactId] = (dep.packageName ?? dep.depName!).split(':');\n let hasIncludes = false;\n let hasExcludes = false;\n let matchesInclude = false;\n let matchesExclude = false;\n\n for (const content of coerceArray(contentDescriptors)) {\n const {\n mode,\n matcher,\n groupId: contentGroupId,\n artifactId: contentArtifactId,\n version: contentVersion,\n } = content;\n\n // group matching\n let groupMatch = false;\n if (matcher === 'regex') {\n groupMatch = regEx(contentGroupId).test(groupId);\n } else if (matcher === 'subgroup') {\n groupMatch =\n groupId === contentGroupId || `${groupId}.`.startsWith(contentGroupId);\n } else {\n groupMatch = groupId === contentGroupId;\n }\n\n // artifact matching (optional)\n let artifactMatch = true;\n if (groupMatch && contentArtifactId) {\n if (matcher === 'regex') {\n artifactMatch = regEx(contentArtifactId).test(artifactId);\n } else {\n artifactMatch = artifactId === contentArtifactId;\n }\n }\n\n // version matching (optional)\n let versionMatch = true;\n if (groupMatch && artifactMatch && contentVersion && dep.currentValue) {\n if (matcher === 'regex') {\n versionMatch = regEx(contentVersion).test(dep.currentValue);\n } else {\n // contentVersion can be an exact version or a gradle-supported version range\n versionMatch = gradleVersioning.matches(\n dep.currentValue,\n contentVersion,\n );\n }\n }\n\n const isMatch = groupMatch && artifactMatch && versionMatch;\n if (mode === 'include') {\n hasIncludes = true;\n if (isMatch) {\n matchesInclude = true;\n }\n } else if (mode === 'exclude') {\n hasExcludes = true;\n if (isMatch) {\n matchesExclude = true;\n }\n }\n }\n\n if (hasIncludes && hasExcludes) {\n // if both includes and excludes exist, dep must match include and not match exclude\n return matchesInclude && !matchesExclude;\n } else if (hasIncludes) {\n // if only includes exist, dep must match at least one include\n return matchesInclude;\n } else if (hasExcludes) {\n // if only excludes exist, dep must not match any exclude\n return !matchesExclude;\n }\n\n // by default, repositories include everything and exclude nothing\n return true;\n}\n\nfunction getRegistryUrlsForDep(\n packageRegistries: PackageRegistry[],\n dep: PackageDependency<GradleManagerData>,\n): string[] {\n const scope = dep.depType === 'plugin' ? 'plugin' : 'dep';\n\n const matchingRegistries = packageRegistries.filter(\n (item) =>\n item.scope === scope && matchesContentDescriptor(dep, item.content),\n );\n\n const exclusiveRegistries = matchingRegistries.filter(\n (item) => item.registryType === 'exclusive',\n );\n\n const registryUrls = (\n exclusiveRegistries.length ? exclusiveRegistries : matchingRegistries\n ).map((item) => item.registryUrl);\n\n if (!registryUrls.length && scope === 'plugin') {\n registryUrls.push(REGISTRY_URLS.gradlePluginPortal);\n }\n\n return [...new Set(registryUrls)];\n}\n\nasync function parsePackageFiles(\n config: ExtractConfig,\n packageFiles: string[],\n extractedDeps: PackageDependency<GradleManagerData>[],\n packageFilesByName: Record<string, PackageFile>,\n packageRegistries: PackageRegistry[],\n): Promise<PackageDependency<GradleManagerData>[]> {\n const varRegistry: VariableRegistry = {};\n const fileContents = await getLocalFiles(packageFiles);\n\n for (const packageFile of packageFiles) {\n packageFilesByName[packageFile] = {\n packageFile,\n datasource: mavenDatasource,\n deps: [],\n };\n\n try {\n // TODO #22198\n const content = fileContents[packageFile]!;\n const packageFileDir = upath.dirname(toAbsolutePath(packageFile));\n\n if (isPropsFile(packageFile)) {\n const { vars, deps } = parseProps(content, packageFile);\n updateVars(varRegistry, packageFileDir, vars);\n extractedDeps.push(...deps);\n } else if (isTOMLFile(packageFile)) {\n const { vars, deps } = parseCatalog(packageFile, content);\n updateVarsFromDefaultCatalog(\n varRegistry,\n packageFileDir,\n packageFile,\n vars,\n );\n extractedDeps.push(...deps);\n } else if (\n isGcvPropsFile(packageFile) &&\n usesGcv(packageFile, fileContents)\n ) {\n const deps = parseGcv(packageFile, fileContents);\n extractedDeps.push(...deps);\n } else if (isKotlinSourceFile(packageFile)) {\n const vars = getVars(varRegistry, packageFileDir);\n const { vars: gradleVars, deps } = parseKotlinSource(\n content,\n vars,\n packageFile,\n );\n updateVars(varRegistry, '/', gradleVars);\n extractedDeps.push(...deps);\n } else if (isGradleScriptFile(packageFile)) {\n const vars = getVars(varRegistry, packageFileDir);\n const {\n deps,\n urls,\n vars: gradleVars,\n } = parseGradle(content, vars, packageFile, fileContents);\n updatePackageRegistries(packageRegistries, urls);\n updateVars(varRegistry, packageFileDir, gradleVars);\n extractedDeps.push(...deps);\n }\n } catch (err) {\n logger.debug(\n { err, config, packageFile },\n `Failed to process Gradle file`,\n );\n }\n }\n\n return extractedDeps;\n}\n\nexport async function extractAllPackageFiles(\n config: ExtractConfig,\n packageFiles: string[],\n): Promise<PackageFile[] | null> {\n const packageFilesByName: Record<string, PackageFile> = {};\n const packageRegistries: PackageRegistry[] = [];\n const extractedDeps: PackageDependency<GradleManagerData>[] = [];\n const kotlinSourceFiles = packageFiles.filter(isKotlinSourceFile);\n const gradleFiles = reorderFiles(\n packageFiles.filter((e) => !kotlinSourceFiles.includes(e)),\n );\n\n await parsePackageFiles(\n config,\n [...kotlinSourceFiles, ...kotlinSourceFiles, ...gradleFiles],\n extractedDeps,\n packageFilesByName,\n packageRegistries,\n );\n\n if (!extractedDeps.length) {\n return null;\n }\n\n unifyCatalogSharedVariableNames(extractedDeps);\n\n for (const dep of extractedDeps) {\n dep.fileReplacePosition = dep?.managerData?.fileReplacePosition; // #8224\n\n const key = dep.managerData?.packageFile;\n // istanbul ignore else\n if (key) {\n let pkgFile: PackageFile = packageFilesByName[key];\n // istanbul ignore if: won't happen if \"apply from\" processes only initially known files\n if (!pkgFile) {\n pkgFile = {\n packageFile: key,\n datasource: mavenDatasource,\n deps: [],\n };\n }\n\n dep.datasource ??= mavenDatasource;\n\n if (dep.datasource === mavenDatasource) {\n dep.registryUrls = getRegistryUrlsForDep(packageRegistries, dep);\n\n dep.depType ??=\n key.startsWith('buildSrc') && !kotlinSourceFiles.length\n ? 'devDependencies'\n : 'dependencies';\n }\n\n const depAlreadyInPkgFile = pkgFile.deps.some(\n (item) =>\n item.depName === dep.depName &&\n item.managerData?.fileReplacePosition ===\n dep.managerData?.fileReplacePosition,\n );\n if (!depAlreadyInPkgFile) {\n pkgFile.deps.push(dep);\n }\n\n packageFilesByName[key] = pkgFile;\n } else {\n logger.debug({ dep }, `Failed to process Gradle dependency`);\n }\n }\n\n return Object.values(packageFilesByName);\n}\n"],"mappings":"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"}
|
|
@@ -123,6 +123,16 @@ const qStringValueAsSymbol = query.str((ctx, node) => {
|
|
|
123
123
|
});
|
|
124
124
|
return ctx;
|
|
125
125
|
});
|
|
126
|
+
const qProviderValue = query.tree({
|
|
127
|
+
maxDepth: 1,
|
|
128
|
+
type: "wrapped-tree",
|
|
129
|
+
startsWith: "(",
|
|
130
|
+
endsWith: ")",
|
|
131
|
+
search: query.begin().end()
|
|
132
|
+
}).handler((ctx) => {
|
|
133
|
+
if (ctx.varTokens.length > 1 && ctx.varTokens.at(-1)?.value === "get") ctx.varTokens.pop();
|
|
134
|
+
return ctx;
|
|
135
|
+
});
|
|
126
136
|
const qVariableAssignmentIdentifier = query.sym(storeVarToken).many(query.alt(query.op(".").sym(storeVarToken), query.tree({
|
|
127
137
|
type: "wrapped-tree",
|
|
128
138
|
maxDepth: 1,
|
|
@@ -134,7 +144,7 @@ const qVariableAccessIdentifier = query.handler((ctx) => {
|
|
|
134
144
|
ctx.tmpTokenStore.backupVarAccessTokens = ctx.varTokens;
|
|
135
145
|
ctx.varTokens = [];
|
|
136
146
|
return ctx;
|
|
137
|
-
}).join(qVariableAssignmentIdentifier).handler(coalesceVariable).handler((ctx) => {
|
|
147
|
+
}).join(qVariableAssignmentIdentifier).opt(qProviderValue).handler(coalesceVariable).handler((ctx) => {
|
|
138
148
|
ctx.varTokens = [...ctx.tmpTokenStore.backupVarAccessTokens, ...ctx.varTokens];
|
|
139
149
|
delete ctx.tmpTokenStore.backupVarAccessTokens;
|
|
140
150
|
return ctx;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","names":["q"],"sources":["../../../../../lib/modules/manager/gradle/parser/common.ts"],"sourcesContent":["import type { lexer, parser } from '@renovatebot/good-enough-parser';\nimport { query as q } from '@renovatebot/good-enough-parser';\nimport { clone } from '../../../../util/clone.ts';\nimport { regEx } from '../../../../util/regex.ts';\nimport type {\n Ctx,\n NonEmptyArray,\n PackageVariables,\n VariableData,\n} from '../types.ts';\n\nexport const REGISTRY_URLS = {\n google: 'https://dl.google.com/android/maven2/',\n gradlePluginPortal: 'https://plugins.gradle.org/m2/',\n jcenter: 'https://jcenter.bintray.com/',\n mavenCentral: 'https://repo.maven.apache.org/maven2',\n};\n\nexport const GRADLE_PLUGINS = {\n checkstyle: ['toolVersion', 'com.puppycrawl.tools:checkstyle'],\n codenarc: ['toolVersion', 'org.codenarc:CodeNarc'],\n composeOptions: [\n 'kotlinCompilerExtensionVersion',\n 'androidx.compose.compiler:compiler',\n ],\n detekt: ['toolVersion', 'io.gitlab.arturbosch.detekt:detekt-core'],\n findbugs: ['toolVersion', 'com.google.code.findbugs:findbugs'],\n googleJavaFormat: [\n 'toolVersion',\n 'com.google.googlejavaformat:google-java-format',\n ],\n jacoco: ['toolVersion', 'org.jacoco:jacoco'],\n jmh: ['jmhVersion', 'org.openjdk.jmh:jmh-core'],\n lombok: ['version', 'org.projectlombok:lombok'],\n micronaut: ['version', 'io.micronaut.platform:micronaut-platform'],\n pmd: ['toolVersion', 'net.sourceforge.pmd:pmd-java'],\n spotbugs: ['toolVersion', 'com.github.spotbugs:spotbugs'],\n};\n\nexport const GRADLE_TEST_SUITES = {\n useJunit: 'junit:junit',\n useJUnitJupiter: 'org.junit.jupiter:junit-jupiter',\n useKotlinTest: 'org.jetbrains.kotlin:kotlin-test-junit',\n useSpock: 'org.spockframework:spock-core',\n useTestNG: 'org.testng:testng',\n};\n\nexport function storeVarToken(ctx: Ctx, node: lexer.Token): Ctx {\n ctx.varTokens.push(node);\n return ctx;\n}\n\nexport function increaseNestingDepth(ctx: Ctx): Ctx {\n ctx.tmpNestingDepth.push(...ctx.varTokens);\n ctx.varTokens = [];\n return ctx;\n}\n\nexport function reduceNestingDepth(ctx: Ctx): Ctx {\n ctx.tmpNestingDepth.pop();\n return ctx;\n}\n\nexport function prependNestingDepth(ctx: Ctx): Ctx {\n ctx.varTokens = [...clone(ctx.tmpNestingDepth), ...ctx.varTokens];\n return ctx;\n}\n\nexport function storeInTokenMap(ctx: Ctx, tokenMapKey: string): Ctx {\n ctx.tokenMap[tokenMapKey] = ctx.varTokens;\n ctx.varTokens = [];\n\n return ctx;\n}\n\nexport function loadFromTokenMap(\n ctx: Ctx,\n tokenMapKey: string,\n): NonEmptyArray<lexer.Token> {\n const tokens = ctx.tokenMap[tokenMapKey];\n if (!tokens) {\n throw new Error(`Expected token ${tokenMapKey} not found`);\n }\n\n return tokens as NonEmptyArray<lexer.Token>;\n}\n\nexport function cleanupTempVars(ctx: Ctx): Ctx {\n ctx.tokenMap = {};\n ctx.varTokens = [];\n\n return ctx;\n}\n\nexport function stripReservedPrefixFromKeyTokens(ctx: Ctx): Ctx {\n const unwantedPrefixes = [\n 'ext',\n 'extra',\n 'project',\n 'rootProject',\n 'properties',\n ];\n while (\n ctx.varTokens.length > 1 && // ensures there will be always at least one token\n ctx.varTokens[0] &&\n unwantedPrefixes.includes(ctx.varTokens[0].value)\n ) {\n ctx.varTokens.shift();\n }\n\n return ctx;\n}\n\nexport function coalesceVariable(ctx: Ctx): Ctx {\n if (ctx.varTokens.length > 1) {\n ctx.varTokens[0].value = ctx.varTokens\n .map((token) => token.value)\n .join('.');\n ctx.varTokens.length = 1;\n }\n\n return ctx;\n}\n\nexport function findVariableInKotlinImport(\n name: string,\n ctx: Ctx,\n variables: PackageVariables,\n): VariableData | undefined {\n if (ctx.tmpKotlinImportStore.length && name.includes('.')) {\n for (const tokens of ctx.tmpKotlinImportStore) {\n const lastToken = tokens[tokens.length - 1];\n if (lastToken && name.startsWith(`${lastToken.value}.`)) {\n const prefix = tokens\n .slice(0, -1)\n .map((token) => token.value)\n .join('.');\n const identifier = `${prefix}.${name}`;\n\n if (variables[identifier]) {\n return variables[identifier];\n }\n }\n }\n }\n\n return undefined;\n}\n\nexport function findVariable(\n name: string,\n ctx: Ctx,\n variables: PackageVariables = ctx.globalVars,\n): VariableData | undefined {\n if (ctx.tmpNestingDepth.length) {\n const prefixParts = ctx.tmpNestingDepth.map((token) => token.value);\n for (let idx = ctx.tmpNestingDepth.length; idx > 0; idx -= 1) {\n const prefix = prefixParts.slice(0, idx).join('.');\n const identifier = `${prefix}.${name}`;\n\n if (variables[identifier]) {\n return variables[identifier];\n }\n }\n }\n\n if (variables[name]) {\n return variables[name];\n }\n\n return findVariableInKotlinImport(name, ctx, variables);\n}\n\nexport function interpolateString(\n childTokens: lexer.Token[],\n ctx: Ctx,\n variables: PackageVariables = ctx.globalVars,\n): string | null {\n const resolvedSubstrings: string[] = [];\n for (const childToken of childTokens) {\n const type = childToken.type;\n if (type === 'string-value') {\n resolvedSubstrings.push(childToken.value);\n } else if (type === 'symbol') {\n const varData = findVariable(childToken.value, ctx, variables);\n if (varData) {\n resolvedSubstrings.push(varData.value);\n } else {\n return null;\n }\n } else {\n return null;\n }\n }\n\n return resolvedSubstrings.join('');\n}\n\nexport const qStringValue = q.str((ctx: Ctx, node: lexer.Token) => {\n storeVarToken(ctx, node);\n return ctx;\n});\n\nexport const qStringValueAsSymbol = q.str((ctx: Ctx, node: lexer.Token) => {\n const nodeTransformed: lexer.SymbolToken = {\n ...node,\n type: 'symbol',\n };\n storeVarToken(ctx, nodeTransformed);\n return ctx;\n});\n\n// foo.bar[\"baz\"] = \"1.2.3\"\nexport const qVariableAssignmentIdentifier = q\n .sym(storeVarToken)\n .many(\n q.alt(\n q.op<Ctx>('.').sym(storeVarToken),\n q.tree<Ctx>({\n type: 'wrapped-tree',\n maxDepth: 1,\n startsWith: '[',\n endsWith: ']',\n search: q.begin<Ctx>().join(qStringValueAsSymbol).end(),\n }),\n ),\n 0,\n 32,\n )\n .handler(stripReservedPrefixFromKeyTokens);\n\n// foo.bar[\"baz\"] -> \"foo.bar.baz\"\nexport const qVariableAccessIdentifier = q\n .handler<Ctx>((ctx) => {\n ctx.tmpTokenStore.backupVarAccessTokens = ctx.varTokens;\n ctx.varTokens = [];\n return ctx;\n })\n .join(qVariableAssignmentIdentifier)\n .handler(coalesceVariable)\n .handler((ctx) => {\n ctx.varTokens = [\n ...ctx.tmpTokenStore.backupVarAccessTokens,\n ...ctx.varTokens,\n ];\n delete ctx.tmpTokenStore.backupVarAccessTokens;\n return ctx;\n });\n\n// project.ext.getProperty(...)\n// extra.get(...)\nexport const qPropertyAccessIdentifier = q\n .opt(q.sym<Ctx>(regEx(/^(?:rootProject|project)$/)).op('.'))\n .alt(\n q.opt(q.sym<Ctx>('ext').op('.')).sym(regEx(/^(?:property|getProperty)$/)),\n q\n .sym<Ctx>(regEx(/^(?:extra|ext)$/))\n .op('.')\n .sym('get'),\n )\n .tree({\n maxDepth: 1,\n startsWith: '(',\n endsWith: ')',\n search: q.begin<Ctx>().join(qStringValueAsSymbol).end(),\n })\n .opt(q.sym<Ctx>('as').sym('String'));\n\n// \"foo${bar}baz\"\nexport const qTemplateString = q\n .tree({\n type: 'string-tree',\n maxDepth: 2,\n preHandler: (ctx) => {\n ctx.tmpTokenStore.templateTokens = [];\n return ctx;\n },\n search: q\n .alt(qStringValue, qPropertyAccessIdentifier, qVariableAccessIdentifier)\n .handler((ctx) => {\n ctx.tmpTokenStore.templateTokens?.push(...ctx.varTokens);\n ctx.varTokens = [];\n return ctx;\n }),\n })\n .handler((ctx) => {\n ctx.varTokens = ctx.tmpTokenStore.templateTokens!;\n return ctx;\n });\n\n// foo = \"bar\"\n// foo + foo + \"${foo}\" + \"foo\" => \"barbarbarfoo\"\nexport const qConcatExpr = (\n ...matchers: q.QueryBuilder<Ctx, parser.Node>[]\n): q.QueryBuilder<Ctx, parser.Node> =>\n q.alt(...matchers).many(q.op<Ctx>('+').alt(...matchers), 0, 32);\n\nexport const qValueMatcher = qConcatExpr(\n qTemplateString,\n qPropertyAccessIdentifier,\n qVariableAccessIdentifier,\n);\n\n// import foo.bar\n// runtimeOnly(\"some:foo:${bar.bazVersion}\")\nexport const qKotlinImport = q\n .sym<Ctx>('import')\n .join(qVariableAssignmentIdentifier)\n .handler((ctx) => {\n ctx.tmpKotlinImportStore.push(ctx.varTokens);\n return ctx;\n })\n .handler(cleanupTempVars);\n\n// foo { bar { baz } }\n// foo.bar { baz }\nexport const qDotOrBraceExpr = (\n symValue: q.SymMatcherValue,\n matcher: q.QueryBuilder<Ctx, parser.Node>,\n): q.QueryBuilder<Ctx, parser.Node> =>\n q.sym<Ctx>(symValue).alt(\n q.op<Ctx>('.').join(matcher),\n q.tree({\n type: 'wrapped-tree',\n maxDepth: 1,\n startsWith: '{',\n endsWith: '}',\n search: matcher,\n }),\n );\n\nexport const qGroupId = qValueMatcher.handler((ctx) =>\n storeInTokenMap(ctx, 'groupId'),\n);\n\nexport const qArtifactId = qValueMatcher.handler((ctx) =>\n storeInTokenMap(ctx, 'artifactId'),\n);\n\nexport const qVersion = qValueMatcher.handler((ctx) =>\n storeInTokenMap(ctx, 'version'),\n);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"common.js","names":["q"],"sources":["../../../../../lib/modules/manager/gradle/parser/common.ts"],"sourcesContent":["import type { lexer, parser } from '@renovatebot/good-enough-parser';\nimport { query as q } from '@renovatebot/good-enough-parser';\nimport { clone } from '../../../../util/clone.ts';\nimport { regEx } from '../../../../util/regex.ts';\nimport type {\n Ctx,\n NonEmptyArray,\n PackageVariables,\n VariableData,\n} from '../types.ts';\n\nexport const REGISTRY_URLS = {\n google: 'https://dl.google.com/android/maven2/',\n gradlePluginPortal: 'https://plugins.gradle.org/m2/',\n jcenter: 'https://jcenter.bintray.com/',\n mavenCentral: 'https://repo.maven.apache.org/maven2',\n};\n\nexport const GRADLE_PLUGINS = {\n checkstyle: ['toolVersion', 'com.puppycrawl.tools:checkstyle'],\n codenarc: ['toolVersion', 'org.codenarc:CodeNarc'],\n composeOptions: [\n 'kotlinCompilerExtensionVersion',\n 'androidx.compose.compiler:compiler',\n ],\n detekt: ['toolVersion', 'io.gitlab.arturbosch.detekt:detekt-core'],\n findbugs: ['toolVersion', 'com.google.code.findbugs:findbugs'],\n googleJavaFormat: [\n 'toolVersion',\n 'com.google.googlejavaformat:google-java-format',\n ],\n jacoco: ['toolVersion', 'org.jacoco:jacoco'],\n jmh: ['jmhVersion', 'org.openjdk.jmh:jmh-core'],\n lombok: ['version', 'org.projectlombok:lombok'],\n micronaut: ['version', 'io.micronaut.platform:micronaut-platform'],\n pmd: ['toolVersion', 'net.sourceforge.pmd:pmd-java'],\n spotbugs: ['toolVersion', 'com.github.spotbugs:spotbugs'],\n};\n\nexport const GRADLE_TEST_SUITES = {\n useJunit: 'junit:junit',\n useJUnitJupiter: 'org.junit.jupiter:junit-jupiter',\n useKotlinTest: 'org.jetbrains.kotlin:kotlin-test-junit',\n useSpock: 'org.spockframework:spock-core',\n useTestNG: 'org.testng:testng',\n};\n\nexport function storeVarToken(ctx: Ctx, node: lexer.Token): Ctx {\n ctx.varTokens.push(node);\n return ctx;\n}\n\nexport function increaseNestingDepth(ctx: Ctx): Ctx {\n ctx.tmpNestingDepth.push(...ctx.varTokens);\n ctx.varTokens = [];\n return ctx;\n}\n\nexport function reduceNestingDepth(ctx: Ctx): Ctx {\n ctx.tmpNestingDepth.pop();\n return ctx;\n}\n\nexport function prependNestingDepth(ctx: Ctx): Ctx {\n ctx.varTokens = [...clone(ctx.tmpNestingDepth), ...ctx.varTokens];\n return ctx;\n}\n\nexport function storeInTokenMap(ctx: Ctx, tokenMapKey: string): Ctx {\n ctx.tokenMap[tokenMapKey] = ctx.varTokens;\n ctx.varTokens = [];\n\n return ctx;\n}\n\nexport function loadFromTokenMap(\n ctx: Ctx,\n tokenMapKey: string,\n): NonEmptyArray<lexer.Token> {\n const tokens = ctx.tokenMap[tokenMapKey];\n if (!tokens) {\n throw new Error(`Expected token ${tokenMapKey} not found`);\n }\n\n return tokens as NonEmptyArray<lexer.Token>;\n}\n\nexport function cleanupTempVars(ctx: Ctx): Ctx {\n ctx.tokenMap = {};\n ctx.varTokens = [];\n\n return ctx;\n}\n\nexport function stripReservedPrefixFromKeyTokens(ctx: Ctx): Ctx {\n const unwantedPrefixes = [\n 'ext',\n 'extra',\n 'project',\n 'rootProject',\n 'properties',\n ];\n while (\n ctx.varTokens.length > 1 && // ensures there will be always at least one token\n ctx.varTokens[0] &&\n unwantedPrefixes.includes(ctx.varTokens[0].value)\n ) {\n ctx.varTokens.shift();\n }\n\n return ctx;\n}\n\nexport function coalesceVariable(ctx: Ctx): Ctx {\n if (ctx.varTokens.length > 1) {\n ctx.varTokens[0].value = ctx.varTokens\n .map((token) => token.value)\n .join('.');\n ctx.varTokens.length = 1;\n }\n\n return ctx;\n}\n\nexport function findVariableInKotlinImport(\n name: string,\n ctx: Ctx,\n variables: PackageVariables,\n): VariableData | undefined {\n if (ctx.tmpKotlinImportStore.length && name.includes('.')) {\n for (const tokens of ctx.tmpKotlinImportStore) {\n const lastToken = tokens[tokens.length - 1];\n if (lastToken && name.startsWith(`${lastToken.value}.`)) {\n const prefix = tokens\n .slice(0, -1)\n .map((token) => token.value)\n .join('.');\n const identifier = `${prefix}.${name}`;\n\n if (variables[identifier]) {\n return variables[identifier];\n }\n }\n }\n }\n\n return undefined;\n}\n\nexport function findVariable(\n name: string,\n ctx: Ctx,\n variables: PackageVariables = ctx.globalVars,\n): VariableData | undefined {\n if (ctx.tmpNestingDepth.length) {\n const prefixParts = ctx.tmpNestingDepth.map((token) => token.value);\n for (let idx = ctx.tmpNestingDepth.length; idx > 0; idx -= 1) {\n const prefix = prefixParts.slice(0, idx).join('.');\n const identifier = `${prefix}.${name}`;\n\n if (variables[identifier]) {\n return variables[identifier];\n }\n }\n }\n\n if (variables[name]) {\n return variables[name];\n }\n\n return findVariableInKotlinImport(name, ctx, variables);\n}\n\nexport function interpolateString(\n childTokens: lexer.Token[],\n ctx: Ctx,\n variables: PackageVariables = ctx.globalVars,\n): string | null {\n const resolvedSubstrings: string[] = [];\n for (const childToken of childTokens) {\n const type = childToken.type;\n if (type === 'string-value') {\n resolvedSubstrings.push(childToken.value);\n } else if (type === 'symbol') {\n const varData = findVariable(childToken.value, ctx, variables);\n if (varData) {\n resolvedSubstrings.push(varData.value);\n } else {\n return null;\n }\n } else {\n return null;\n }\n }\n\n return resolvedSubstrings.join('');\n}\n\nexport const qStringValue = q.str((ctx: Ctx, node: lexer.Token) => {\n storeVarToken(ctx, node);\n return ctx;\n});\n\nexport const qStringValueAsSymbol = q.str((ctx: Ctx, node: lexer.Token) => {\n const nodeTransformed: lexer.SymbolToken = {\n ...node,\n type: 'symbol',\n };\n storeVarToken(ctx, nodeTransformed);\n return ctx;\n});\n\n// https://docs.gradle.org/current/javadoc/org/gradle/api/provider/Provider.html#get()\nexport const qProviderValue = q\n .tree({\n maxDepth: 1,\n type: 'wrapped-tree',\n startsWith: '(',\n endsWith: ')',\n search: q.begin<Ctx>().end(),\n })\n .handler((ctx) => {\n if (ctx.varTokens.length > 1 && ctx.varTokens.at(-1)?.value === 'get') {\n ctx.varTokens.pop();\n }\n return ctx;\n });\n\n// foo.bar[\"baz\"] = \"1.2.3\"\nexport const qVariableAssignmentIdentifier = q\n .sym(storeVarToken)\n .many(\n q.alt(\n q.op<Ctx>('.').sym(storeVarToken),\n q.tree<Ctx>({\n type: 'wrapped-tree',\n maxDepth: 1,\n startsWith: '[',\n endsWith: ']',\n search: q.begin<Ctx>().join(qStringValueAsSymbol).end(),\n }),\n ),\n 0,\n 32,\n )\n .handler(stripReservedPrefixFromKeyTokens);\n\n// foo.bar[\"baz\"] -> \"foo.bar.baz\"\nexport const qVariableAccessIdentifier = q\n .handler<Ctx>((ctx) => {\n ctx.tmpTokenStore.backupVarAccessTokens = ctx.varTokens;\n ctx.varTokens = [];\n return ctx;\n })\n .join(qVariableAssignmentIdentifier)\n .opt(qProviderValue)\n .handler(coalesceVariable)\n .handler((ctx) => {\n ctx.varTokens = [\n ...ctx.tmpTokenStore.backupVarAccessTokens,\n ...ctx.varTokens,\n ];\n delete ctx.tmpTokenStore.backupVarAccessTokens;\n return ctx;\n });\n\n// project.ext.getProperty(...)\n// extra.get(...)\nexport const qPropertyAccessIdentifier = q\n .opt(q.sym<Ctx>(regEx(/^(?:rootProject|project)$/)).op('.'))\n .alt(\n q.opt(q.sym<Ctx>('ext').op('.')).sym(regEx(/^(?:property|getProperty)$/)),\n q\n .sym<Ctx>(regEx(/^(?:extra|ext)$/))\n .op('.')\n .sym('get'),\n )\n .tree({\n maxDepth: 1,\n startsWith: '(',\n endsWith: ')',\n search: q.begin<Ctx>().join(qStringValueAsSymbol).end(),\n })\n .opt(q.sym<Ctx>('as').sym('String'));\n\n// \"foo${bar}baz\"\nexport const qTemplateString = q\n .tree({\n type: 'string-tree',\n maxDepth: 2,\n preHandler: (ctx) => {\n ctx.tmpTokenStore.templateTokens = [];\n return ctx;\n },\n search: q\n .alt(qStringValue, qPropertyAccessIdentifier, qVariableAccessIdentifier)\n .handler((ctx) => {\n ctx.tmpTokenStore.templateTokens?.push(...ctx.varTokens);\n ctx.varTokens = [];\n return ctx;\n }),\n })\n .handler((ctx) => {\n ctx.varTokens = ctx.tmpTokenStore.templateTokens!;\n return ctx;\n });\n\n// foo = \"bar\"\n// foo + foo + \"${foo}\" + \"foo\" => \"barbarbarfoo\"\nexport const qConcatExpr = (\n ...matchers: q.QueryBuilder<Ctx, parser.Node>[]\n): q.QueryBuilder<Ctx, parser.Node> =>\n q.alt(...matchers).many(q.op<Ctx>('+').alt(...matchers), 0, 32);\n\nexport const qValueMatcher = qConcatExpr(\n qTemplateString,\n qPropertyAccessIdentifier,\n qVariableAccessIdentifier,\n);\n\n// import foo.bar\n// runtimeOnly(\"some:foo:${bar.bazVersion}\")\nexport const qKotlinImport = q\n .sym<Ctx>('import')\n .join(qVariableAssignmentIdentifier)\n .handler((ctx) => {\n ctx.tmpKotlinImportStore.push(ctx.varTokens);\n return ctx;\n })\n .handler(cleanupTempVars);\n\n// foo { bar { baz } }\n// foo.bar { baz }\nexport const qDotOrBraceExpr = (\n symValue: q.SymMatcherValue,\n matcher: q.QueryBuilder<Ctx, parser.Node>,\n): q.QueryBuilder<Ctx, parser.Node> =>\n q.sym<Ctx>(symValue).alt(\n q.op<Ctx>('.').join(matcher),\n q.tree({\n type: 'wrapped-tree',\n maxDepth: 1,\n startsWith: '{',\n endsWith: '}',\n search: matcher,\n }),\n );\n\nexport const qGroupId = qValueMatcher.handler((ctx) =>\n storeInTokenMap(ctx, 'groupId'),\n);\n\nexport const qArtifactId = qValueMatcher.handler((ctx) =>\n storeInTokenMap(ctx, 'artifactId'),\n);\n\nexport const qVersion = qValueMatcher.handler((ctx) =>\n storeInTokenMap(ctx, 'version'),\n);\n"],"mappings":"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"}
|
|
@@ -31,6 +31,7 @@ function parseDependencyString(input) {
|
|
|
31
31
|
}
|
|
32
32
|
const gradleVersionsFileRegex = regEx("^versions\\.gradle(?:\\.kts)?$", "i");
|
|
33
33
|
const gradleBuildFileRegex = regEx("^build\\.gradle(?:\\.kts)?$", "i");
|
|
34
|
+
const gradleSettingsFileRegex = regEx("^settings\\.gradle(?:\\.kts)?$", "i");
|
|
34
35
|
function isGradleScriptFile(path) {
|
|
35
36
|
const filename = upath.basename(path).toLowerCase();
|
|
36
37
|
return filename.endsWith(".gradle.kts") || filename.endsWith(".gradle");
|
|
@@ -43,6 +44,13 @@ function isGradleBuildFile(path) {
|
|
|
43
44
|
const filename = upath.basename(path);
|
|
44
45
|
return gradleBuildFileRegex.test(filename);
|
|
45
46
|
}
|
|
47
|
+
function isGradleSettingsFile(path) {
|
|
48
|
+
const filename = upath.basename(path);
|
|
49
|
+
return gradleSettingsFileRegex.test(filename);
|
|
50
|
+
}
|
|
51
|
+
function isGradleDefaultCatalogFile(path) {
|
|
52
|
+
return path.endsWith("/gradle/libs.versions.toml");
|
|
53
|
+
}
|
|
46
54
|
function isPropsFile(path) {
|
|
47
55
|
return upath.basename(path).toLowerCase() === "gradle.properties";
|
|
48
56
|
}
|
|
@@ -57,17 +65,20 @@ function toAbsolutePath(packageFile) {
|
|
|
57
65
|
}
|
|
58
66
|
function getFileRank(filename) {
|
|
59
67
|
if (isPropsFile(filename)) return 0;
|
|
60
|
-
if (
|
|
61
|
-
if (
|
|
62
|
-
return
|
|
68
|
+
if (isGradleSettingsFile(filename)) return 1;
|
|
69
|
+
if (isGradleDefaultCatalogFile(filename)) return 2;
|
|
70
|
+
if (isGradleVersionsFile(filename)) return 3;
|
|
71
|
+
if (isGradleBuildFile(filename)) return 5;
|
|
72
|
+
return 4;
|
|
63
73
|
}
|
|
64
74
|
function reorderFiles(packageFiles) {
|
|
65
75
|
return packageFiles.map((path) => {
|
|
66
76
|
const absPath = toAbsolutePath(path);
|
|
77
|
+
const currentDir = upath.dirname(absPath);
|
|
67
78
|
return {
|
|
68
79
|
path,
|
|
69
80
|
absPath,
|
|
70
|
-
dir: upath.dirname(
|
|
81
|
+
dir: isGradleDefaultCatalogFile(absPath) ? upath.dirname(currentDir) : currentDir,
|
|
71
82
|
rank: getFileRank(absPath)
|
|
72
83
|
};
|
|
73
84
|
}).sort((a, b) => {
|
|
@@ -94,7 +105,26 @@ function updateVars(registry, dir, newVars) {
|
|
|
94
105
|
...newVars
|
|
95
106
|
};
|
|
96
107
|
}
|
|
108
|
+
function updateVarsFromDefaultCatalog(registry, dir, packageFile, newVars) {
|
|
109
|
+
if (!isGradleDefaultCatalogFile(toAbsolutePath(packageFile))) return;
|
|
110
|
+
const rootDir = upath.dirname(dir);
|
|
111
|
+
const oldVars = registry[rootDir] ?? {};
|
|
112
|
+
let defaultLibsExtName = "libs";
|
|
113
|
+
if (oldVars.defaultLibrariesExtensionName?.packageFile && isGradleSettingsFile(oldVars.defaultLibrariesExtensionName.packageFile)) defaultLibsExtName = oldVars.defaultLibrariesExtensionName.value;
|
|
114
|
+
const newVarsRemapped = {};
|
|
115
|
+
for (const [oldKey, variableData] of Object.entries(newVars)) {
|
|
116
|
+
const key = `${defaultLibsExtName}.versions.${oldKey}`;
|
|
117
|
+
newVarsRemapped[key] = {
|
|
118
|
+
...variableData,
|
|
119
|
+
key
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
registry[rootDir] = {
|
|
123
|
+
...oldVars,
|
|
124
|
+
...newVarsRemapped
|
|
125
|
+
};
|
|
126
|
+
}
|
|
97
127
|
//#endregion
|
|
98
|
-
export { getVars, isDependencyString, isGradleBuildFile, isGradleScriptFile, isKotlinSourceFile, isPropsFile, isTOMLFile, parseDependencyString, reorderFiles, toAbsolutePath, updateVars, versionLikeSubstring };
|
|
128
|
+
export { getVars, isDependencyString, isGradleBuildFile, isGradleScriptFile, isKotlinSourceFile, isPropsFile, isTOMLFile, parseDependencyString, reorderFiles, toAbsolutePath, updateVars, updateVarsFromDefaultCatalog, versionLikeSubstring };
|
|
99
129
|
|
|
100
130
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":["gradleVersioning"],"sources":["../../../../lib/modules/manager/gradle/utils.ts"],"sourcesContent":["import upath from 'upath';\nimport { regEx } from '../../../util/regex.ts';\nimport { api as gradleVersioning } from '../../versioning/gradle/index.ts';\nimport type { PackageDependency } from '../types.ts';\nimport type {\n GradleManagerData,\n PackageVariables,\n VariableRegistry,\n} from './types.ts';\n\nconst artifactRegex = regEx(\n '^[a-zA-Z][-_a-zA-Z0-9]*(?:\\\\.[a-zA-Z0-9][-_a-zA-Z0-9]*?)*$',\n);\n\nconst versionLikeRegex = regEx('^(?<version>[-_.\\\\[\\\\](),a-zA-Z0-9+! ]+)');\n\n// Extracts version-like and range-like strings from the beginning of input\nexport function versionLikeSubstring(\n input: string | null | undefined,\n): string | null {\n if (!input) {\n return null;\n }\n\n const match = versionLikeRegex.exec(input);\n const version = match?.groups?.version?.trim();\n if (!version || !regEx(/\\d/).test(version)) {\n return null;\n }\n\n if (!gradleVersioning.isValid(version)) {\n return null;\n }\n\n return version;\n}\n\nexport function isDependencyString(input: string): boolean {\n const [depNotation, ...extra] = input.split('@');\n if (extra.length > 1) {\n return false;\n }\n\n const parts = depNotation.split(':');\n if (parts.length !== 3 && parts.length !== 4) {\n return false;\n }\n\n const [groupId, artifactId, version, classifier] = parts;\n\n return !!(\n groupId &&\n artifactId &&\n version &&\n artifactRegex.test(groupId) &&\n artifactRegex.test(artifactId) &&\n (!classifier || artifactRegex.test(classifier)) &&\n version === versionLikeSubstring(version)\n );\n}\n\nexport function parseDependencyString(\n input: string,\n): PackageDependency<GradleManagerData> | null {\n if (!isDependencyString(input)) {\n return null;\n }\n\n const [depNotation, dataType] = input.split('@');\n const [groupId, artifactId, currentValue] = depNotation.split(':');\n\n return {\n depName: `${groupId}:${artifactId}`,\n currentValue,\n ...(dataType && { dataType }),\n };\n}\n\nconst gradleVersionsFileRegex = regEx('^versions\\\\.gradle(?:\\\\.kts)?$', 'i');\nconst gradleBuildFileRegex = regEx('^build\\\\.gradle(?:\\\\.kts)?$', 'i');\n\nexport function isGradleScriptFile(path: string): boolean {\n const filename = upath.basename(path).toLowerCase();\n return filename.endsWith('.gradle.kts') || filename.endsWith('.gradle');\n}\n\nexport function isGradleVersionsFile(path: string): boolean {\n const filename = upath.basename(path);\n return gradleVersionsFileRegex.test(filename);\n}\n\nexport function isGradleBuildFile(path: string): boolean {\n const filename = upath.basename(path);\n return gradleBuildFileRegex.test(filename);\n}\n\nexport function isPropsFile(path: string): boolean {\n const filename = upath.basename(path).toLowerCase();\n return filename === 'gradle.properties';\n}\n\nexport function isKotlinSourceFile(path: string): boolean {\n const filename = upath.basename(path).toLowerCase();\n return filename.endsWith('.kt');\n}\n\nexport function isTOMLFile(path: string): boolean {\n const filename = upath.basename(path).toLowerCase();\n return filename.endsWith('.toml');\n}\n\nexport function toAbsolutePath(packageFile: string): string {\n return upath.join(packageFile.replace(regEx(/^[/\\\\]*/), '/'));\n}\n\nfunction getFileRank(filename: string): number {\n if (isPropsFile(filename)) {\n return 0;\n }\n if (
|
|
1
|
+
{"version":3,"file":"utils.js","names":["gradleVersioning"],"sources":["../../../../lib/modules/manager/gradle/utils.ts"],"sourcesContent":["import upath from 'upath';\nimport { regEx } from '../../../util/regex.ts';\nimport { api as gradleVersioning } from '../../versioning/gradle/index.ts';\nimport type { PackageDependency } from '../types.ts';\nimport type {\n GradleManagerData,\n PackageVariables,\n VariableRegistry,\n} from './types.ts';\n\nconst artifactRegex = regEx(\n '^[a-zA-Z][-_a-zA-Z0-9]*(?:\\\\.[a-zA-Z0-9][-_a-zA-Z0-9]*?)*$',\n);\n\nconst versionLikeRegex = regEx('^(?<version>[-_.\\\\[\\\\](),a-zA-Z0-9+! ]+)');\n\n// Extracts version-like and range-like strings from the beginning of input\nexport function versionLikeSubstring(\n input: string | null | undefined,\n): string | null {\n if (!input) {\n return null;\n }\n\n const match = versionLikeRegex.exec(input);\n const version = match?.groups?.version?.trim();\n if (!version || !regEx(/\\d/).test(version)) {\n return null;\n }\n\n if (!gradleVersioning.isValid(version)) {\n return null;\n }\n\n return version;\n}\n\nexport function isDependencyString(input: string): boolean {\n const [depNotation, ...extra] = input.split('@');\n if (extra.length > 1) {\n return false;\n }\n\n const parts = depNotation.split(':');\n if (parts.length !== 3 && parts.length !== 4) {\n return false;\n }\n\n const [groupId, artifactId, version, classifier] = parts;\n\n return !!(\n groupId &&\n artifactId &&\n version &&\n artifactRegex.test(groupId) &&\n artifactRegex.test(artifactId) &&\n (!classifier || artifactRegex.test(classifier)) &&\n version === versionLikeSubstring(version)\n );\n}\n\nexport function parseDependencyString(\n input: string,\n): PackageDependency<GradleManagerData> | null {\n if (!isDependencyString(input)) {\n return null;\n }\n\n const [depNotation, dataType] = input.split('@');\n const [groupId, artifactId, currentValue] = depNotation.split(':');\n\n return {\n depName: `${groupId}:${artifactId}`,\n currentValue,\n ...(dataType && { dataType }),\n };\n}\n\nconst gradleVersionsFileRegex = regEx('^versions\\\\.gradle(?:\\\\.kts)?$', 'i');\nconst gradleBuildFileRegex = regEx('^build\\\\.gradle(?:\\\\.kts)?$', 'i');\nconst gradleSettingsFileRegex = regEx('^settings\\\\.gradle(?:\\\\.kts)?$', 'i');\n\nexport function isGradleScriptFile(path: string): boolean {\n const filename = upath.basename(path).toLowerCase();\n return filename.endsWith('.gradle.kts') || filename.endsWith('.gradle');\n}\n\nexport function isGradleVersionsFile(path: string): boolean {\n const filename = upath.basename(path);\n return gradleVersionsFileRegex.test(filename);\n}\n\nexport function isGradleBuildFile(path: string): boolean {\n const filename = upath.basename(path);\n return gradleBuildFileRegex.test(filename);\n}\n\nexport function isGradleSettingsFile(path: string): boolean {\n const filename = upath.basename(path);\n return gradleSettingsFileRegex.test(filename);\n}\n\nexport function isGradleDefaultCatalogFile(path: string): boolean {\n return path.endsWith('/gradle/libs.versions.toml');\n}\n\nexport function isPropsFile(path: string): boolean {\n const filename = upath.basename(path).toLowerCase();\n return filename === 'gradle.properties';\n}\n\nexport function isKotlinSourceFile(path: string): boolean {\n const filename = upath.basename(path).toLowerCase();\n return filename.endsWith('.kt');\n}\n\nexport function isTOMLFile(path: string): boolean {\n const filename = upath.basename(path).toLowerCase();\n return filename.endsWith('.toml');\n}\n\nexport function toAbsolutePath(packageFile: string): string {\n return upath.join(packageFile.replace(regEx(/^[/\\\\]*/), '/'));\n}\n\nfunction getFileRank(filename: string): number {\n if (isPropsFile(filename)) {\n return 0;\n }\n if (isGradleSettingsFile(filename)) {\n return 1;\n }\n if (isGradleDefaultCatalogFile(filename)) {\n return 2;\n }\n if (isGradleVersionsFile(filename)) {\n return 3;\n }\n if (isGradleBuildFile(filename)) {\n return 5;\n }\n return 4;\n}\n\nexport function reorderFiles(packageFiles: string[]): string[] {\n return packageFiles\n .map((path) => {\n const absPath = toAbsolutePath(path);\n const currentDir = upath.dirname(absPath);\n\n return {\n path,\n absPath,\n dir: isGradleDefaultCatalogFile(absPath)\n ? upath.dirname(currentDir)\n : currentDir,\n rank: getFileRank(absPath),\n };\n })\n .sort((a, b) => {\n // Different directories: check parent-child relationship\n if (a.dir !== b.dir) {\n if (a.dir.startsWith(b.dir + '/')) {\n return 1;\n }\n if (b.dir.startsWith(a.dir + '/')) {\n return -1;\n }\n return a.dir.localeCompare(b.dir);\n }\n\n // Same effective directory: rank, if equal sort alphabetically\n return a.rank - b.rank || a.absPath.localeCompare(b.absPath);\n })\n .map((entry) => entry.path);\n}\n\nexport function getVars(\n registry: VariableRegistry,\n dir: string,\n vars: PackageVariables = registry[dir] || {},\n): PackageVariables {\n const dirAbs = toAbsolutePath(dir);\n const parentDir = upath.dirname(dirAbs);\n if (parentDir === dirAbs) {\n return vars;\n }\n const parentVars = registry[parentDir] || {};\n return getVars(registry, parentDir, { ...parentVars, ...vars });\n}\n\nexport function updateVars(\n registry: VariableRegistry,\n dir: string,\n newVars: PackageVariables,\n): void {\n const oldVars = registry[dir] ?? {};\n registry[dir] = { ...oldVars, ...newVars };\n}\n\nexport function updateVarsFromDefaultCatalog(\n registry: VariableRegistry,\n dir: string,\n packageFile: string,\n newVars: PackageVariables,\n): void {\n if (!isGradleDefaultCatalogFile(toAbsolutePath(packageFile))) {\n return;\n }\n\n const rootDir = upath.dirname(dir);\n const oldVars = registry[rootDir] ?? {};\n let defaultLibsExtName = 'libs';\n if (\n oldVars.defaultLibrariesExtensionName?.packageFile &&\n isGradleSettingsFile(oldVars.defaultLibrariesExtensionName.packageFile)\n ) {\n defaultLibsExtName = oldVars.defaultLibrariesExtensionName.value;\n }\n\n const newVarsRemapped: PackageVariables = {};\n for (const [oldKey, variableData] of Object.entries(newVars)) {\n const key = `${defaultLibsExtName}.versions.${oldKey}`;\n newVarsRemapped[key] = { ...variableData, key };\n }\n\n registry[rootDir] = { ...oldVars, ...newVarsRemapped };\n}\n"],"mappings":"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"}
|
|
@@ -25,7 +25,7 @@ function parseVersionCoerced(input) {
|
|
|
25
25
|
const v = parseVersion(input);
|
|
26
26
|
if (v) return v;
|
|
27
27
|
const stripped = massageValue(input);
|
|
28
|
-
if (regEx(/^\d
|
|
28
|
+
if (!regEx(/^\d/).test(stripped)) return null;
|
|
29
29
|
return semver.coerce(stripped);
|
|
30
30
|
}
|
|
31
31
|
function isValid(input) {
|
|
@@ -36,8 +36,7 @@ function isVersion(input) {
|
|
|
36
36
|
if (parseVersion(input)) return true;
|
|
37
37
|
const stripped = massageValue(input);
|
|
38
38
|
if (!regEx(/^\d/).test(stripped)) return false;
|
|
39
|
-
|
|
40
|
-
return r !== null && !isUndefined(r.minor);
|
|
39
|
+
return parseRange(input) !== null;
|
|
41
40
|
}
|
|
42
41
|
function isStable(version) {
|
|
43
42
|
const v = parseVersionCoerced(version);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../lib/modules/versioning/github-actions/index.ts"],"sourcesContent":["import { isEmptyArray, isUndefined } from '@sindresorhus/is';\nimport type { SemVer } from 'semver';\nimport semver from 'semver';\nimport { logger } from '../../../logger/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport type { NewValueConfig, VersioningApi } from '../types.ts';\n\nexport const id = 'github-actions';\nexport const displayName = 'GitHub Actions';\nexport const urls = [\n 'https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/find-and-customize-actions#using-release-management-for-your-custom-actions',\n];\nexport const supportsRanges = true;\nexport const supportedRangeStrategies = ['pin', 'replace'];\n\nfunction massageValue(input: string): string {\n return input.trim().replace(regEx(/^v/i), '');\n}\n\nfunction parseVersion(input: string): SemVer | null {\n return semver.parse(massageValue(input));\n}\n\ninterface Range {\n major: number;\n minor?: number;\n}\n\nfunction parseRange(input: string): Range | null {\n const stripped = massageValue(input);\n const coerced = semver.coerce(stripped);\n if (!coerced) {\n return null;\n }\n const { major, minor } = coerced;\n\n if (regEx(/^\\d+$/).test(stripped)) {\n return { major };\n }\n\n return { major, minor };\n}\n\n/*\n * Like parseVersion but also accepts floating minor-level tags (e.g. `v1.2`)\n * by coercing them to full semver. Rejects major-only tags (e.g. `v1`).\n */\nfunction parseVersionCoerced(input: string): SemVer | null {\n const v = parseVersion(input);\n if (v) {\n return v;\n }\n const stripped = massageValue(input);\n if (regEx(/^\\d+$/).test(stripped)) {\n return null;\n }\n return semver.coerce(stripped);\n}\n\nfunction isValid(input: string): boolean {\n return !!parseVersion(input) || !!parseRange(input);\n}\n\nfunction isVersion(input: string | undefined | null): boolean {\n if (!input) {\n return false;\n }\n\n if (parseVersion(input)) {\n return true;\n }\n\n const stripped = massageValue(input);\n if (!regEx(/^\\d/).test(stripped)) {\n return false;\n }\n\n const r = parseRange(input);\n return r !== null && !isUndefined(r.minor);\n}\n\nfunction isStable(version: string): boolean {\n const v = parseVersionCoerced(version);\n if (!v) {\n return false;\n }\n\n return v.prerelease.length === 0;\n}\n\nfunction isSingleVersion(input: string): boolean {\n return !!parseVersion(input);\n}\n\nfunction getMajor(version: string): number | null {\n return parseVersionCoerced(version)?.major ?? null;\n}\n\nfunction getMinor(version: string): number | null {\n return parseVersionCoerced(version)?.minor ?? null;\n}\n\nfunction getPatch(version: string): number | null {\n return parseVersionCoerced(version)?.patch ?? null;\n}\n\nfunction sortVersions(x: string, y: string): number {\n const a = parseVersionCoerced(x);\n const b = parseVersionCoerced(y);\n if (!a || !b) {\n return 0;\n }\n return semver.compare(a, b);\n}\n\nfunction equals(x: string, y: string): boolean {\n const a = parseVersionCoerced(x);\n const b = parseVersionCoerced(y);\n if (!a || !b) {\n return false;\n }\n return semver.eq(a, b);\n}\n\nfunction isGreaterThan(x: string, y: string): boolean {\n const a = parseVersionCoerced(x);\n const b = parseVersionCoerced(y);\n if (!a || !b) {\n return false;\n }\n return semver.gt(a, b);\n}\n\nfunction matches(version: string, range: string): boolean {\n const v = parseVersion(version);\n if (!v) {\n return false;\n }\n\n const rv = parseVersion(range);\n if (rv) {\n return semver.eq(v, rv);\n }\n\n const r = parseRange(range);\n if (!r) {\n return false;\n }\n\n if (v.prerelease.length > 0) {\n return false;\n }\n\n if (v.major !== r.major) {\n return false;\n }\n\n if (isUndefined(r.minor)) {\n return true;\n }\n\n return v.minor === r.minor;\n}\n\nfunction getSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n const sortedVersions = versions.sort(sortVersions).reverse();\n for (const version of sortedVersions) {\n if (matches(version, range)) {\n return version;\n }\n }\n return null;\n}\n\nfunction minSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n const sortedVersions = versions.sort(sortVersions);\n for (const version of sortedVersions) {\n if (matches(version, range)) {\n return version;\n }\n }\n return null;\n}\n\nfunction isLessThanRange(version: string, range: string): boolean {\n const v = parseVersionCoerced(version);\n const r = parseRange(range);\n\n if (!v || !r) {\n return false;\n }\n\n if (v.major !== r.major) {\n return v.major < r.major;\n }\n\n if (isUndefined(r.minor)) {\n return false;\n }\n\n if (v.minor !== r.minor) {\n return v.minor < r.minor;\n }\n\n return false;\n}\n\nfunction getNewValue({\n currentValue,\n currentVersion,\n rangeStrategy,\n newVersion,\n allVersions,\n}: NewValueConfig): string | null {\n if (rangeStrategy === 'pin') {\n return newVersion;\n }\n\n const range = parseRange(currentValue);\n if (!range) {\n return newVersion;\n }\n\n const newParsed = parseVersion(newVersion);\n if (!newParsed) {\n return newVersion;\n }\n\n // Check if currentValue is a full version (has patch component)\n const currentParsed = parseVersion(currentValue);\n if (currentParsed) {\n // currentValue is a full version, return full newVersion\n return newVersion;\n }\n\n const [prefix] = currentValue.split(massageValue(currentValue));\n\n if (isUndefined(allVersions) || isEmptyArray(allVersions)) {\n if (isUndefined(range.minor)) {\n return `${prefix}${newParsed.major}`;\n }\n\n return `${prefix}${newParsed.major}.${newParsed.minor}`;\n }\n\n const shortest = getShortestMatchingVersion(prefix, newParsed, allVersions);\n if (shortest) {\n return shortest;\n }\n\n logger.once.debug(\n {\n versioning: id,\n currentValue,\n currentVersion,\n newVersion,\n rangeStrategy,\n allVersions,\n },\n `Suggested newValue \\`${newVersion}\\` was not included in allVersions, but it should have been. Returning it anyway`,\n );\n\n return newVersion;\n}\n\nfunction getShortestMatchingVersion(\n prefix: string,\n newParsed: SemVer,\n allVersions: string[],\n): string | null {\n // in shortest-first order\n const options = [\n `${prefix}${newParsed.major}`,\n `${prefix}${newParsed.major}.${newParsed.minor}`,\n `${prefix}${newParsed.major}.${newParsed.minor}.${newParsed.patch}`,\n `${prefix}${newParsed.toString()}`,\n ];\n\n for (const option of options) {\n if (allVersions.includes(option)) {\n return option;\n }\n }\n\n return null;\n}\n\nfunction isCompatible(version: string): boolean {\n return isValid(version);\n}\n\nfunction isBreaking(version: string, current: string): boolean {\n const versionParsed = parseVersion(version);\n const currentParsed = parseVersion(current);\n\n if (!versionParsed || !currentParsed) {\n return false;\n }\n\n if (currentParsed.major === 0) {\n return versionParsed.major > 0 || versionParsed.minor > currentParsed.minor;\n }\n\n return versionParsed.major > currentParsed.major;\n}\n\nexport const api: VersioningApi = {\n equals,\n getMajor,\n getMinor,\n getPatch,\n isBreaking,\n isCompatible,\n isGreaterThan,\n isLessThanRange,\n isSingleVersion,\n isStable,\n isValid,\n isVersion,\n matches,\n getSatisfyingVersion,\n minSatisfyingVersion,\n getNewValue,\n sortVersions,\n};\n\nexport default api;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../lib/modules/versioning/github-actions/index.ts"],"sourcesContent":["import { isEmptyArray, isUndefined } from '@sindresorhus/is';\nimport type { SemVer } from 'semver';\nimport semver from 'semver';\nimport { logger } from '../../../logger/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport type { NewValueConfig, VersioningApi } from '../types.ts';\n\nexport const id = 'github-actions';\nexport const displayName = 'GitHub Actions';\nexport const urls = [\n 'https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/find-and-customize-actions#using-release-management-for-your-custom-actions',\n];\nexport const supportsRanges = true;\nexport const supportedRangeStrategies = ['pin', 'replace'];\n\nfunction massageValue(input: string): string {\n return input.trim().replace(regEx(/^v/i), '');\n}\n\nfunction parseVersion(input: string): SemVer | null {\n return semver.parse(massageValue(input));\n}\n\ninterface Range {\n major: number;\n minor?: number;\n}\n\nfunction parseRange(input: string): Range | null {\n const stripped = massageValue(input);\n const coerced = semver.coerce(stripped);\n if (!coerced) {\n return null;\n }\n const { major, minor } = coerced;\n\n if (regEx(/^\\d+$/).test(stripped)) {\n return { major };\n }\n\n return { major, minor };\n}\n\n/*\n * Like parseVersion but also accepts floating tags (e.g. `v1`, `v1.2`)\n * by coercing them to full semver.\n */\nfunction parseVersionCoerced(input: string): SemVer | null {\n const v = parseVersion(input);\n if (v) {\n return v;\n }\n const stripped = massageValue(input);\n if (!regEx(/^\\d/).test(stripped)) {\n return null;\n }\n return semver.coerce(stripped);\n}\n\nfunction isValid(input: string): boolean {\n return !!parseVersion(input) || !!parseRange(input);\n}\n\nfunction isVersion(input: string | undefined | null): boolean {\n if (!input) {\n return false;\n }\n\n if (parseVersion(input)) {\n return true;\n }\n\n const stripped = massageValue(input);\n if (!regEx(/^\\d/).test(stripped)) {\n return false;\n }\n\n return parseRange(input) !== null;\n}\n\nfunction isStable(version: string): boolean {\n const v = parseVersionCoerced(version);\n if (!v) {\n return false;\n }\n\n return v.prerelease.length === 0;\n}\n\nfunction isSingleVersion(input: string): boolean {\n return !!parseVersion(input);\n}\n\nfunction getMajor(version: string): number | null {\n return parseVersionCoerced(version)?.major ?? null;\n}\n\nfunction getMinor(version: string): number | null {\n return parseVersionCoerced(version)?.minor ?? null;\n}\n\nfunction getPatch(version: string): number | null {\n return parseVersionCoerced(version)?.patch ?? null;\n}\n\nfunction sortVersions(x: string, y: string): number {\n const a = parseVersionCoerced(x);\n const b = parseVersionCoerced(y);\n if (!a || !b) {\n return 0;\n }\n return semver.compare(a, b);\n}\n\nfunction equals(x: string, y: string): boolean {\n const a = parseVersionCoerced(x);\n const b = parseVersionCoerced(y);\n if (!a || !b) {\n return false;\n }\n return semver.eq(a, b);\n}\n\nfunction isGreaterThan(x: string, y: string): boolean {\n const a = parseVersionCoerced(x);\n const b = parseVersionCoerced(y);\n if (!a || !b) {\n return false;\n }\n return semver.gt(a, b);\n}\n\nfunction matches(version: string, range: string): boolean {\n const v = parseVersion(version);\n if (!v) {\n return false;\n }\n\n const rv = parseVersion(range);\n if (rv) {\n return semver.eq(v, rv);\n }\n\n const r = parseRange(range);\n if (!r) {\n return false;\n }\n\n if (v.prerelease.length > 0) {\n return false;\n }\n\n if (v.major !== r.major) {\n return false;\n }\n\n if (isUndefined(r.minor)) {\n return true;\n }\n\n return v.minor === r.minor;\n}\n\nfunction getSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n const sortedVersions = versions.sort(sortVersions).reverse();\n for (const version of sortedVersions) {\n if (matches(version, range)) {\n return version;\n }\n }\n return null;\n}\n\nfunction minSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n const sortedVersions = versions.sort(sortVersions);\n for (const version of sortedVersions) {\n if (matches(version, range)) {\n return version;\n }\n }\n return null;\n}\n\nfunction isLessThanRange(version: string, range: string): boolean {\n const v = parseVersionCoerced(version);\n const r = parseRange(range);\n\n if (!v || !r) {\n return false;\n }\n\n if (v.major !== r.major) {\n return v.major < r.major;\n }\n\n if (isUndefined(r.minor)) {\n return false;\n }\n\n if (v.minor !== r.minor) {\n return v.minor < r.minor;\n }\n\n return false;\n}\n\nfunction getNewValue({\n currentValue,\n currentVersion,\n rangeStrategy,\n newVersion,\n allVersions,\n}: NewValueConfig): string | null {\n if (rangeStrategy === 'pin') {\n return newVersion;\n }\n\n const range = parseRange(currentValue);\n if (!range) {\n return newVersion;\n }\n\n const newParsed = parseVersion(newVersion);\n if (!newParsed) {\n return newVersion;\n }\n\n // Check if currentValue is a full version (has patch component)\n const currentParsed = parseVersion(currentValue);\n if (currentParsed) {\n // currentValue is a full version, return full newVersion\n return newVersion;\n }\n\n const [prefix] = currentValue.split(massageValue(currentValue));\n\n if (isUndefined(allVersions) || isEmptyArray(allVersions)) {\n if (isUndefined(range.minor)) {\n return `${prefix}${newParsed.major}`;\n }\n\n return `${prefix}${newParsed.major}.${newParsed.minor}`;\n }\n\n const shortest = getShortestMatchingVersion(prefix, newParsed, allVersions);\n if (shortest) {\n return shortest;\n }\n\n logger.once.debug(\n {\n versioning: id,\n currentValue,\n currentVersion,\n newVersion,\n rangeStrategy,\n allVersions,\n },\n `Suggested newValue \\`${newVersion}\\` was not included in allVersions, but it should have been. Returning it anyway`,\n );\n\n return newVersion;\n}\n\nfunction getShortestMatchingVersion(\n prefix: string,\n newParsed: SemVer,\n allVersions: string[],\n): string | null {\n // in shortest-first order\n const options = [\n `${prefix}${newParsed.major}`,\n `${prefix}${newParsed.major}.${newParsed.minor}`,\n `${prefix}${newParsed.major}.${newParsed.minor}.${newParsed.patch}`,\n `${prefix}${newParsed.toString()}`,\n ];\n\n for (const option of options) {\n if (allVersions.includes(option)) {\n return option;\n }\n }\n\n return null;\n}\n\nfunction isCompatible(version: string): boolean {\n return isValid(version);\n}\n\nfunction isBreaking(version: string, current: string): boolean {\n const versionParsed = parseVersion(version);\n const currentParsed = parseVersion(current);\n\n if (!versionParsed || !currentParsed) {\n return false;\n }\n\n if (currentParsed.major === 0) {\n return versionParsed.major > 0 || versionParsed.minor > currentParsed.minor;\n }\n\n return versionParsed.major > currentParsed.major;\n}\n\nexport const api: VersioningApi = {\n equals,\n getMajor,\n getMinor,\n getPatch,\n isBreaking,\n isCompatible,\n isGreaterThan,\n isLessThanRange,\n isSingleVersion,\n isStable,\n isValid,\n isVersion,\n matches,\n getSatisfyingVersion,\n minSatisfyingVersion,\n getNewValue,\n sortVersions,\n};\n\nexport default api;\n"],"mappings":";;;;;AAOA,MAAa,KAAK;AAQlB,SAAS,aAAa,OAAuB;AAC3C,QAAO,MAAM,MAAM,CAAC,QAAQ,MAAM,MAAM,EAAE,GAAG;;AAG/C,SAAS,aAAa,OAA8B;AAClD,QAAO,OAAO,MAAM,aAAa,MAAM,CAAC;;AAQ1C,SAAS,WAAW,OAA6B;CAC/C,MAAM,WAAW,aAAa,MAAM;CACpC,MAAM,UAAU,OAAO,OAAO,SAAS;AACvC,KAAI,CAAC,QACH,QAAO;CAET,MAAM,EAAE,OAAO,UAAU;AAEzB,KAAI,MAAM,QAAQ,CAAC,KAAK,SAAS,CAC/B,QAAO,EAAE,OAAO;AAGlB,QAAO;EAAE;EAAO;EAAO;;AAOzB,SAAS,oBAAoB,OAA8B;CACzD,MAAM,IAAI,aAAa,MAAM;AAC7B,KAAI,EACF,QAAO;CAET,MAAM,WAAW,aAAa,MAAM;AACpC,KAAI,CAAC,MAAM,MAAM,CAAC,KAAK,SAAS,CAC9B,QAAO;AAET,QAAO,OAAO,OAAO,SAAS;;AAGhC,SAAS,QAAQ,OAAwB;AACvC,QAAO,CAAC,CAAC,aAAa,MAAM,IAAI,CAAC,CAAC,WAAW,MAAM;;AAGrD,SAAS,UAAU,OAA2C;AAC5D,KAAI,CAAC,MACH,QAAO;AAGT,KAAI,aAAa,MAAM,CACrB,QAAO;CAGT,MAAM,WAAW,aAAa,MAAM;AACpC,KAAI,CAAC,MAAM,MAAM,CAAC,KAAK,SAAS,CAC9B,QAAO;AAGT,QAAO,WAAW,MAAM,KAAK;;AAG/B,SAAS,SAAS,SAA0B;CAC1C,MAAM,IAAI,oBAAoB,QAAQ;AACtC,KAAI,CAAC,EACH,QAAO;AAGT,QAAO,EAAE,WAAW,WAAW;;AAGjC,SAAS,gBAAgB,OAAwB;AAC/C,QAAO,CAAC,CAAC,aAAa,MAAM;;AAG9B,SAAS,SAAS,SAAgC;AAChD,QAAO,oBAAoB,QAAQ,EAAE,SAAS;;AAGhD,SAAS,SAAS,SAAgC;AAChD,QAAO,oBAAoB,QAAQ,EAAE,SAAS;;AAGhD,SAAS,SAAS,SAAgC;AAChD,QAAO,oBAAoB,QAAQ,EAAE,SAAS;;AAGhD,SAAS,aAAa,GAAW,GAAmB;CAClD,MAAM,IAAI,oBAAoB,EAAE;CAChC,MAAM,IAAI,oBAAoB,EAAE;AAChC,KAAI,CAAC,KAAK,CAAC,EACT,QAAO;AAET,QAAO,OAAO,QAAQ,GAAG,EAAE;;AAG7B,SAAS,OAAO,GAAW,GAAoB;CAC7C,MAAM,IAAI,oBAAoB,EAAE;CAChC,MAAM,IAAI,oBAAoB,EAAE;AAChC,KAAI,CAAC,KAAK,CAAC,EACT,QAAO;AAET,QAAO,OAAO,GAAG,GAAG,EAAE;;AAGxB,SAAS,cAAc,GAAW,GAAoB;CACpD,MAAM,IAAI,oBAAoB,EAAE;CAChC,MAAM,IAAI,oBAAoB,EAAE;AAChC,KAAI,CAAC,KAAK,CAAC,EACT,QAAO;AAET,QAAO,OAAO,GAAG,GAAG,EAAE;;AAGxB,SAAS,QAAQ,SAAiB,OAAwB;CACxD,MAAM,IAAI,aAAa,QAAQ;AAC/B,KAAI,CAAC,EACH,QAAO;CAGT,MAAM,KAAK,aAAa,MAAM;AAC9B,KAAI,GACF,QAAO,OAAO,GAAG,GAAG,GAAG;CAGzB,MAAM,IAAI,WAAW,MAAM;AAC3B,KAAI,CAAC,EACH,QAAO;AAGT,KAAI,EAAE,WAAW,SAAS,EACxB,QAAO;AAGT,KAAI,EAAE,UAAU,EAAE,MAChB,QAAO;AAGT,KAAI,YAAY,EAAE,MAAM,CACtB,QAAO;AAGT,QAAO,EAAE,UAAU,EAAE;;AAGvB,SAAS,qBACP,UACA,OACe;CACf,MAAM,iBAAiB,SAAS,KAAK,aAAa,CAAC,SAAS;AAC5D,MAAK,MAAM,WAAW,eACpB,KAAI,QAAQ,SAAS,MAAM,CACzB,QAAO;AAGX,QAAO;;AAGT,SAAS,qBACP,UACA,OACe;CACf,MAAM,iBAAiB,SAAS,KAAK,aAAa;AAClD,MAAK,MAAM,WAAW,eACpB,KAAI,QAAQ,SAAS,MAAM,CACzB,QAAO;AAGX,QAAO;;AAGT,SAAS,gBAAgB,SAAiB,OAAwB;CAChE,MAAM,IAAI,oBAAoB,QAAQ;CACtC,MAAM,IAAI,WAAW,MAAM;AAE3B,KAAI,CAAC,KAAK,CAAC,EACT,QAAO;AAGT,KAAI,EAAE,UAAU,EAAE,MAChB,QAAO,EAAE,QAAQ,EAAE;AAGrB,KAAI,YAAY,EAAE,MAAM,CACtB,QAAO;AAGT,KAAI,EAAE,UAAU,EAAE,MAChB,QAAO,EAAE,QAAQ,EAAE;AAGrB,QAAO;;AAGT,SAAS,YAAY,EACnB,cACA,gBACA,eACA,YACA,eACgC;AAChC,KAAI,kBAAkB,MACpB,QAAO;CAGT,MAAM,QAAQ,WAAW,aAAa;AACtC,KAAI,CAAC,MACH,QAAO;CAGT,MAAM,YAAY,aAAa,WAAW;AAC1C,KAAI,CAAC,UACH,QAAO;AAKT,KADsB,aAAa,aAAa,CAG9C,QAAO;CAGT,MAAM,CAAC,UAAU,aAAa,MAAM,aAAa,aAAa,CAAC;AAE/D,KAAI,YAAY,YAAY,IAAI,aAAa,YAAY,EAAE;AACzD,MAAI,YAAY,MAAM,MAAM,CAC1B,QAAO,GAAG,SAAS,UAAU;AAG/B,SAAO,GAAG,SAAS,UAAU,MAAM,GAAG,UAAU;;CAGlD,MAAM,WAAW,2BAA2B,QAAQ,WAAW,YAAY;AAC3E,KAAI,SACF,QAAO;AAGT,QAAO,KAAK,MACV;EACE,YAAY;EACZ;EACA;EACA;EACA;EACA;EACD,EACD,wBAAwB,WAAW,kFACpC;AAED,QAAO;;AAGT,SAAS,2BACP,QACA,WACA,aACe;CAEf,MAAM,UAAU;EACd,GAAG,SAAS,UAAU;EACtB,GAAG,SAAS,UAAU,MAAM,GAAG,UAAU;EACzC,GAAG,SAAS,UAAU,MAAM,GAAG,UAAU,MAAM,GAAG,UAAU;EAC5D,GAAG,SAAS,UAAU,UAAU;EACjC;AAED,MAAK,MAAM,UAAU,QACnB,KAAI,YAAY,SAAS,OAAO,CAC9B,QAAO;AAIX,QAAO;;AAGT,SAAS,aAAa,SAA0B;AAC9C,QAAO,QAAQ,QAAQ;;AAGzB,SAAS,WAAW,SAAiB,SAA0B;CAC7D,MAAM,gBAAgB,aAAa,QAAQ;CAC3C,MAAM,gBAAgB,aAAa,QAAQ;AAE3C,KAAI,CAAC,iBAAiB,CAAC,cACrB,QAAO;AAGT,KAAI,cAAc,UAAU,EAC1B,QAAO,cAAc,QAAQ,KAAK,cAAc,QAAQ,cAAc;AAGxE,QAAO,cAAc,QAAQ,cAAc;;AAG7C,MAAa,MAAqB;CAChC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD"}
|
package/package.json
CHANGED
package/renovate-schema.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$id": "https://docs.renovatebot.com/renovate-schema.json",
|
|
3
|
-
"title": "JSON schema for Renovate 43.
|
|
3
|
+
"title": "JSON schema for Renovate 43.133.0 config files (https://renovatebot.com/)",
|
|
4
4
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
5
|
-
"x-renovate-version": "43.
|
|
5
|
+
"x-renovate-version": "43.133.0",
|
|
6
6
|
"allowComments": true,
|
|
7
7
|
"type": "object",
|
|
8
8
|
"properties": {
|