renovate 43.105.0 → 43.107.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.
@@ -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", "379ab2800e100ac87682b65edd43b0c3d890307581b8ffcf7817e4610daa89eb");
50
+ hashMap.set("gradle", "f430d8d768b56889ad1e5a69965841e85cc700e364d15db7bce680e8a5d6f821");
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','7d6414a195345c60a25a9d92c4b17c0b6df90be086fc5559150e2e5496976890');\nhashMap.set('argocd','5d35b1992e53130bf83b0e59a0f90ccd3a78919974c69044f306dc5d162f48ce');\nhashMap.set('asdf','1f6fcf620e9c6cd35991380cb6eafb94ec60cd77cbd13335ebe3a1d9727416c9');\nhashMap.set('azure-pipelines','4f635b0ecd388ee266d992e8281fd40e3db2f5867d86fc1cbce72dc33a66e796');\nhashMap.set('batect','fad98996bea8626525ab925f83a6ae0ce9262c53770e7aa7cb448a1e0f1ddf21');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','c6e0ad88ea468664c3a33263baf7452d83d2d37ff09ba920e18f64ee81fd0acb');\nhashMap.set('bazel-module','ff071fcf8b53036956627d2a430ccdf256e30bee4d7e80c329379879d836a931');\nhashMap.set('bazelisk','b6ec532dfa7c8f82ad4084df864ac6276e87c27285369323902afc146d3537ac');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','09eb044219d74331fea135f50121b7d4d146333eb97e4ccbfa9ddf0eb4012963');\nhashMap.set('bitrise','afdb46fe37fc0307943089e18b6724065394805e628b4b6c4430a6068c494030');\nhashMap.set('buildkite','a93effb1f1c5d65b3277c3b4709924eacde282e8efd028a8e3d8c1ce3ef69407');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','1322232bf1d0c4fa796e31a00488453bdcd00d4958431d9e424c1635e60a99bd');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','6d7e9d2018ac03e15f19e8b40ef70dd87d509d5affca24bc464d085899880a25');\nhashMap.set('cake','288c3c36a50371b26957fa71992cc335228d53563c75597b36919ac7286e96eb');\nhashMap.set('cargo','308d7ab4c6d24027b050bf659dfab0e510d9a22f8134695a7c68214908ee4634');\nhashMap.set('cdnurl','d3edf6cdc38e92eb43ff5a2b4e8df6a6a13154cf83244725c39e28d7e6ea9177');\nhashMap.set('circleci','135937d4720718304adb0ba998516f8ce38c3220ccd18b00b8c70c62b45df4da');\nhashMap.set('cloudbuild','8c0c739f7e4082bbfe8e3fdffebaf43e26f70a1314d95b306e9b93e4f4297886');\nhashMap.set('cocoapods','b6ac3b4a6b8a5b32daed37bf695fe177cdb1b4a94ae7f7fb2f4c4c096c0a004c');\nhashMap.set('composer','cdb6895574020cec402e0b878e4078b62f1acfd0392a861cbb523036634f6383');\nhashMap.set('conan','aecc3917d77146db4e57dd12944be1beff860e90b7ebdd2d8fbc449fc1a06574');\nhashMap.set('copier','faa3b79991256a6fc0957fdcd530a1bc8aee65913d5aff2b1b4d226dcd44d008');\nhashMap.set('cpanfile','6a1d67d9c8751123deaf0c7f3ac38a07024e960c140f8228fcbcb93954fdca01');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deps-edn','c87dd5e88587147ad1a78f047b814f3c4aa60d6de30d0c49d849391eeaf1b64c');\nhashMap.set('devbox','bcf5334e8a21190baaa25436acf2f17fbf095504262a4e9ee7c62ffb644eb716');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','5441af5b5abf8d347e46002d47f02f85743401bda28232f49fb7b3bbb772a4fb');\nhashMap.set('dockerfile','322b95f7e55dd78d7fe71306a6f649479eca61c60d75bb10b23604a230dbdd08');\nhashMap.set('droneci','237c8de87b9bf653fb943b56e84e99c45f6d86ae27d86e599b3f3f99c35ba8ee');\nhashMap.set('fleet','d73d5d35f10df0599a561d9c8d25f3935350407d0e3bd3a1d1545295f278912e');\nhashMap.set('flux','427e0c1a5b1d8337503a9a568a76532fbde0bab8b355fa8f47312de50eadf2f6');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','fbbf1c7b7b6f4166fa3beee96a3283d007b388e9ecb6a14f76123c8ab8c78071');\nhashMap.set('github-actions','d3b1deb4dfcdba586cd97b4d2d2f9f1b89531bcc31b6ead0d960b990586d6058');\nhashMap.set('gitlabci','0dec44dd398bfc5b3c19d0929bea2fef7f386c94acfd1b1d7bc2a31d81d96fd6');\nhashMap.set('gitlabci-include','354cfc4ea327c6d5cd5bee1f17763832efc7f5402e9fd22c579239fccb9c6dab');\nhashMap.set('glasskube','253d6db30bdec75ed5ab5d26f31d69bc07813ba10089a28da12c6a29eff4ec70');\nhashMap.set('gleam','b717a48c525ad6b1d434c6a9db828ddebbb85e94519e89ddc4040878e3600e84');\nhashMap.set('gomod','82e877b22c0dd0217368760bb5d38430657fff63d07c289793a866f0845d2976');\nhashMap.set('gradle','379ab2800e100ac87682b65edd43b0c3d890307581b8ffcf7817e4610daa89eb');\nhashMap.set('gradle-wrapper','90d2ecb9d0b113f8e946d4ea221c040f17f91af846e1ff4f9fc1514ad4324b74');\nhashMap.set('haskell-cabal','d796ec6859e63ab4f1b7030c4016071202c3a44c7c11d4a9131d7e2ba19b396d');\nhashMap.set('helm-requirements','4d90e5e18a380876ad48e21e1ad88ea62e25d973a1ddaa3763447fc0a9f9915b');\nhashMap.set('helm-values','b5c52c6a27d805557418c585c5d3030c95ee641d53057021f3fe060f81b6e1af');\nhashMap.set('helmfile','e5783484b81247279563da3c835afe4002edfc412e13fb91877818ca44ae65f2');\nhashMap.set('helmsman','ef9680c612f702c7f07aea9b6e5d811e91214dcfa5755c9f3803e9528090935e');\nhashMap.set('helmv3','7724bf6cc3ff4afec1809899f619a332f4350049b9578b5c4634514b4448cf2b');\nhashMap.set('hermit','672c328e4baea3a1ccd2cde2364db01c8033a8c077bf63a5b914fc20ee1de838');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','56ef90301143874355fd2ed25dff7c646875f701f97422d02e01d45608a88f31');\nhashMap.set('html','67c5f3c5c58e96f5dd257ba5987d900cf7fef81d667c3640e96c847b37de35a8');\nhashMap.set('jenkins','268ebfc8a1caf3edeb2192c2b1b2fa4bf18a78a3e731ba20a6c104940a5539f3');\nhashMap.set('jsonnet-bundler','4b73c32ddc3fe45d9777106d45b116777a2960e6e631256a6553060e602f893c');\nhashMap.set('kotlin-script','99ef296792a0ca575ed31d3defb514b05a58083dc01c52ea0890c69d867ba1dd');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','1e44d6ef8622252dac6d9649fb04badd12d4827eb2a55f74792aa9de2b915775');\nhashMap.set('leiningen','133fca2c3423f53f2ccc22518153ddbcafbf0f4812376c77e952eb3d24d81f85');\nhashMap.set('maven','fd6bfc21be851ed076eabea1a91a89b25eb82129734c7cb0c2e684385cf1ea69');\nhashMap.set('maven-wrapper','9a868d1328f911eb72f9e65a64d46c86ae347aab0153d1cf4e9a62ad9e0d6cb0');\nhashMap.set('meteor','4a93a326b27bedfe52118e27e06f39fecd7c55bd4cd7fccec4cb120cac14cec4');\nhashMap.set('mint','b816a49c8525716454d0a2bc9127916d5b27e5cca7b2aa2030312f218942af3e');\nhashMap.set('mise','6192273014bff02a3e0c68aa8a52c3563398adb4c7d3f7141c25f8736f488748');\nhashMap.set('mix','1116e1adf1c18c866f0a9e6fa065c4fb9da055d8d150e625344899bb94095481');\nhashMap.set('nix','f3ffec2f14e7261de8068895b91392e992dcef208fbaf52110d6862e4712c031');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','a7e42b0c5668d2f066532d3a2a373725f8555d6da451957594f6250e332ee6f4');\nhashMap.set('nuget','354abfda178ad549e8ff756303def7c58fa32e4e152b7e6f738a1c1f3f5d553c');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','32233a1a8a2725699d7448ba438e3d0b78141f7799cd2b588de278d41e26ed10');\nhashMap.set('pep621','f503497a4adef31b29572176e9a69d52fa9b0bfe3477b6e228c906aeb4861de5');\nhashMap.set('pep723','b96683163de63ed93207ec0538066705b1e58a1cd5b8bd11c63fc28b26bddba1');\nhashMap.set('pip-compile','89152ad6c89f278395f32d289dc3890823c233366547d228e97dd1319aa144b5');\nhashMap.set('pip_requirements','d5c474c524bc7adc1aae065da0531bd22d9f7f52523b018f2461f6c29e12fdf3');\nhashMap.set('pip_setup','0175fe550c19d9bd31c978bd83fdc088cb40fcacd5d6751f640164274ae64e61');\nhashMap.set('pipenv','50f5a54ed714fd3d738c1aa9a353cf3aab767899acdcb763088d4bd04f3a737b');\nhashMap.set('pixi','b17af6eaa33e7babcc52cfc9a617c7801c0efb1125bbd6d0d4e9f6fe33afd353');\nhashMap.set('poetry','7f227b8b912b405df7735e9dc7c178f03021844f0c027d4b321c023c330c390a');\nhashMap.set('pre-commit','a6a6e847fdb0f56650e66ef7d69e68de752b390913f79ac31d1a7ec5955d03da');\nhashMap.set('pub','0fbad9f77579fcec3a623c6feab56e71934c67a79bb8f4f0f847452051d2a0ba');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','e355e13e104351a8b3516a8e272fc5f7e625c9f39b0c492ba27283a36227c2d4');\nhashMap.set('renovate-config-presets','a394fe55f8b6ba356f29f76efd9f0d34b56baceb111e6d92f95b29b5ca50ac67');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('sbt','61f9323c91c45227da71d43120fa1eddc41685502be017118975f77b44fb1b8e');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','7dea08c5708625e753bd56918bc214df7fb4d8543a26e936926a21ab43b5f785');\nhashMap.set('sveltos','167a5cc79098803be3b815a28cc40ef3361c455751e1d6a7a99ba91bfce26709');\nhashMap.set('swift','79ec9a6a2a8bb4853bb78bbb3a2a6e64e3b32b0ddeb312385abb3a14366ad505');\nhashMap.set('tekton','4e35c75bba4abc9c3cf49c55da6c19db4f4e9181d1fd9583288ab55ef7c944fd');\nhashMap.set('terraform','5bd62ce12c23896b8ecb2385a60a3cb9eb72badf10f9984bfed38f50f9262266');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','b8474c65383a702602eee432cc1434f9a49a1ef886d1213de92d7a84fb98b9cd');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','4a975f0cc1aa22cd258aa835de3dc98d7a5c0d1cee0a1092324338968e08a827');\nhashMap.set('travis','bb482a0195cd009ec3896a6227bb95617f5c84bedb518c7d971e50c62235d9ca');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','4627230d3b7698c41aac192d57b65b091c860c8f858c89d6af4b06ed6a32fae6');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('jsonata','3b5f465b586993f92c8490e70885e7eecce9b6556bcc376dd9c11db8ee9e6960');\nhashMap.set('regex','7b643b49e498465cf91b25b8b840bb1fec8c8a3a59bfa8f97a39c976675325a0');"],"mappings":"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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','7d6414a195345c60a25a9d92c4b17c0b6df90be086fc5559150e2e5496976890');\nhashMap.set('argocd','5d35b1992e53130bf83b0e59a0f90ccd3a78919974c69044f306dc5d162f48ce');\nhashMap.set('asdf','1f6fcf620e9c6cd35991380cb6eafb94ec60cd77cbd13335ebe3a1d9727416c9');\nhashMap.set('azure-pipelines','4f635b0ecd388ee266d992e8281fd40e3db2f5867d86fc1cbce72dc33a66e796');\nhashMap.set('batect','fad98996bea8626525ab925f83a6ae0ce9262c53770e7aa7cb448a1e0f1ddf21');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','c6e0ad88ea468664c3a33263baf7452d83d2d37ff09ba920e18f64ee81fd0acb');\nhashMap.set('bazel-module','ff071fcf8b53036956627d2a430ccdf256e30bee4d7e80c329379879d836a931');\nhashMap.set('bazelisk','b6ec532dfa7c8f82ad4084df864ac6276e87c27285369323902afc146d3537ac');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','09eb044219d74331fea135f50121b7d4d146333eb97e4ccbfa9ddf0eb4012963');\nhashMap.set('bitrise','afdb46fe37fc0307943089e18b6724065394805e628b4b6c4430a6068c494030');\nhashMap.set('buildkite','a93effb1f1c5d65b3277c3b4709924eacde282e8efd028a8e3d8c1ce3ef69407');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','1322232bf1d0c4fa796e31a00488453bdcd00d4958431d9e424c1635e60a99bd');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','6d7e9d2018ac03e15f19e8b40ef70dd87d509d5affca24bc464d085899880a25');\nhashMap.set('cake','288c3c36a50371b26957fa71992cc335228d53563c75597b36919ac7286e96eb');\nhashMap.set('cargo','308d7ab4c6d24027b050bf659dfab0e510d9a22f8134695a7c68214908ee4634');\nhashMap.set('cdnurl','d3edf6cdc38e92eb43ff5a2b4e8df6a6a13154cf83244725c39e28d7e6ea9177');\nhashMap.set('circleci','135937d4720718304adb0ba998516f8ce38c3220ccd18b00b8c70c62b45df4da');\nhashMap.set('cloudbuild','8c0c739f7e4082bbfe8e3fdffebaf43e26f70a1314d95b306e9b93e4f4297886');\nhashMap.set('cocoapods','b6ac3b4a6b8a5b32daed37bf695fe177cdb1b4a94ae7f7fb2f4c4c096c0a004c');\nhashMap.set('composer','cdb6895574020cec402e0b878e4078b62f1acfd0392a861cbb523036634f6383');\nhashMap.set('conan','aecc3917d77146db4e57dd12944be1beff860e90b7ebdd2d8fbc449fc1a06574');\nhashMap.set('copier','faa3b79991256a6fc0957fdcd530a1bc8aee65913d5aff2b1b4d226dcd44d008');\nhashMap.set('cpanfile','6a1d67d9c8751123deaf0c7f3ac38a07024e960c140f8228fcbcb93954fdca01');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deps-edn','c87dd5e88587147ad1a78f047b814f3c4aa60d6de30d0c49d849391eeaf1b64c');\nhashMap.set('devbox','bcf5334e8a21190baaa25436acf2f17fbf095504262a4e9ee7c62ffb644eb716');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','5441af5b5abf8d347e46002d47f02f85743401bda28232f49fb7b3bbb772a4fb');\nhashMap.set('dockerfile','322b95f7e55dd78d7fe71306a6f649479eca61c60d75bb10b23604a230dbdd08');\nhashMap.set('droneci','237c8de87b9bf653fb943b56e84e99c45f6d86ae27d86e599b3f3f99c35ba8ee');\nhashMap.set('fleet','d73d5d35f10df0599a561d9c8d25f3935350407d0e3bd3a1d1545295f278912e');\nhashMap.set('flux','427e0c1a5b1d8337503a9a568a76532fbde0bab8b355fa8f47312de50eadf2f6');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','fbbf1c7b7b6f4166fa3beee96a3283d007b388e9ecb6a14f76123c8ab8c78071');\nhashMap.set('github-actions','d3b1deb4dfcdba586cd97b4d2d2f9f1b89531bcc31b6ead0d960b990586d6058');\nhashMap.set('gitlabci','0dec44dd398bfc5b3c19d0929bea2fef7f386c94acfd1b1d7bc2a31d81d96fd6');\nhashMap.set('gitlabci-include','354cfc4ea327c6d5cd5bee1f17763832efc7f5402e9fd22c579239fccb9c6dab');\nhashMap.set('glasskube','253d6db30bdec75ed5ab5d26f31d69bc07813ba10089a28da12c6a29eff4ec70');\nhashMap.set('gleam','b717a48c525ad6b1d434c6a9db828ddebbb85e94519e89ddc4040878e3600e84');\nhashMap.set('gomod','82e877b22c0dd0217368760bb5d38430657fff63d07c289793a866f0845d2976');\nhashMap.set('gradle','f430d8d768b56889ad1e5a69965841e85cc700e364d15db7bce680e8a5d6f821');\nhashMap.set('gradle-wrapper','90d2ecb9d0b113f8e946d4ea221c040f17f91af846e1ff4f9fc1514ad4324b74');\nhashMap.set('haskell-cabal','d796ec6859e63ab4f1b7030c4016071202c3a44c7c11d4a9131d7e2ba19b396d');\nhashMap.set('helm-requirements','4d90e5e18a380876ad48e21e1ad88ea62e25d973a1ddaa3763447fc0a9f9915b');\nhashMap.set('helm-values','b5c52c6a27d805557418c585c5d3030c95ee641d53057021f3fe060f81b6e1af');\nhashMap.set('helmfile','e5783484b81247279563da3c835afe4002edfc412e13fb91877818ca44ae65f2');\nhashMap.set('helmsman','ef9680c612f702c7f07aea9b6e5d811e91214dcfa5755c9f3803e9528090935e');\nhashMap.set('helmv3','7724bf6cc3ff4afec1809899f619a332f4350049b9578b5c4634514b4448cf2b');\nhashMap.set('hermit','672c328e4baea3a1ccd2cde2364db01c8033a8c077bf63a5b914fc20ee1de838');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','56ef90301143874355fd2ed25dff7c646875f701f97422d02e01d45608a88f31');\nhashMap.set('html','67c5f3c5c58e96f5dd257ba5987d900cf7fef81d667c3640e96c847b37de35a8');\nhashMap.set('jenkins','268ebfc8a1caf3edeb2192c2b1b2fa4bf18a78a3e731ba20a6c104940a5539f3');\nhashMap.set('jsonnet-bundler','4b73c32ddc3fe45d9777106d45b116777a2960e6e631256a6553060e602f893c');\nhashMap.set('kotlin-script','99ef296792a0ca575ed31d3defb514b05a58083dc01c52ea0890c69d867ba1dd');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','1e44d6ef8622252dac6d9649fb04badd12d4827eb2a55f74792aa9de2b915775');\nhashMap.set('leiningen','133fca2c3423f53f2ccc22518153ddbcafbf0f4812376c77e952eb3d24d81f85');\nhashMap.set('maven','fd6bfc21be851ed076eabea1a91a89b25eb82129734c7cb0c2e684385cf1ea69');\nhashMap.set('maven-wrapper','9a868d1328f911eb72f9e65a64d46c86ae347aab0153d1cf4e9a62ad9e0d6cb0');\nhashMap.set('meteor','4a93a326b27bedfe52118e27e06f39fecd7c55bd4cd7fccec4cb120cac14cec4');\nhashMap.set('mint','b816a49c8525716454d0a2bc9127916d5b27e5cca7b2aa2030312f218942af3e');\nhashMap.set('mise','6192273014bff02a3e0c68aa8a52c3563398adb4c7d3f7141c25f8736f488748');\nhashMap.set('mix','1116e1adf1c18c866f0a9e6fa065c4fb9da055d8d150e625344899bb94095481');\nhashMap.set('nix','f3ffec2f14e7261de8068895b91392e992dcef208fbaf52110d6862e4712c031');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','a7e42b0c5668d2f066532d3a2a373725f8555d6da451957594f6250e332ee6f4');\nhashMap.set('nuget','354abfda178ad549e8ff756303def7c58fa32e4e152b7e6f738a1c1f3f5d553c');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','32233a1a8a2725699d7448ba438e3d0b78141f7799cd2b588de278d41e26ed10');\nhashMap.set('pep621','f503497a4adef31b29572176e9a69d52fa9b0bfe3477b6e228c906aeb4861de5');\nhashMap.set('pep723','b96683163de63ed93207ec0538066705b1e58a1cd5b8bd11c63fc28b26bddba1');\nhashMap.set('pip-compile','89152ad6c89f278395f32d289dc3890823c233366547d228e97dd1319aa144b5');\nhashMap.set('pip_requirements','d5c474c524bc7adc1aae065da0531bd22d9f7f52523b018f2461f6c29e12fdf3');\nhashMap.set('pip_setup','0175fe550c19d9bd31c978bd83fdc088cb40fcacd5d6751f640164274ae64e61');\nhashMap.set('pipenv','50f5a54ed714fd3d738c1aa9a353cf3aab767899acdcb763088d4bd04f3a737b');\nhashMap.set('pixi','b17af6eaa33e7babcc52cfc9a617c7801c0efb1125bbd6d0d4e9f6fe33afd353');\nhashMap.set('poetry','7f227b8b912b405df7735e9dc7c178f03021844f0c027d4b321c023c330c390a');\nhashMap.set('pre-commit','a6a6e847fdb0f56650e66ef7d69e68de752b390913f79ac31d1a7ec5955d03da');\nhashMap.set('pub','0fbad9f77579fcec3a623c6feab56e71934c67a79bb8f4f0f847452051d2a0ba');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','e355e13e104351a8b3516a8e272fc5f7e625c9f39b0c492ba27283a36227c2d4');\nhashMap.set('renovate-config-presets','a394fe55f8b6ba356f29f76efd9f0d34b56baceb111e6d92f95b29b5ca50ac67');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('sbt','61f9323c91c45227da71d43120fa1eddc41685502be017118975f77b44fb1b8e');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','7dea08c5708625e753bd56918bc214df7fb4d8543a26e936926a21ab43b5f785');\nhashMap.set('sveltos','167a5cc79098803be3b815a28cc40ef3361c455751e1d6a7a99ba91bfce26709');\nhashMap.set('swift','79ec9a6a2a8bb4853bb78bbb3a2a6e64e3b32b0ddeb312385abb3a14366ad505');\nhashMap.set('tekton','4e35c75bba4abc9c3cf49c55da6c19db4f4e9181d1fd9583288ab55ef7c944fd');\nhashMap.set('terraform','5bd62ce12c23896b8ecb2385a60a3cb9eb72badf10f9984bfed38f50f9262266');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','b8474c65383a702602eee432cc1434f9a49a1ef886d1213de92d7a84fb98b9cd');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','4a975f0cc1aa22cd258aa835de3dc98d7a5c0d1cee0a1092324338968e08a827');\nhashMap.set('travis','bb482a0195cd009ec3896a6227bb95617f5c84bedb518c7d971e50c62235d9ca');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','4627230d3b7698c41aac192d57b65b091c860c8f858c89d6af4b06ed6a32fae6');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('jsonata','3b5f465b586993f92c8490e70885e7eecce9b6556bcc376dd9c11db8ee9e6960');\nhashMap.set('regex','7b643b49e498465cf91b25b8b840bb1fec8c8a3a59bfa8f97a39c976675325a0');"],"mappings":"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"}
@@ -3,7 +3,7 @@ import api from "../../versioning/gradle/index.js";
3
3
  import upath from "upath";
4
4
  //#region lib/modules/manager/gradle/utils.ts
5
5
  const artifactRegex = regEx("^[a-zA-Z][-_a-zA-Z0-9]*(?:\\.[a-zA-Z0-9][-_a-zA-Z0-9]*?)*$");
6
- const versionLikeRegex = regEx("^(?<version>[-_.\\[\\](),a-zA-Z0-9+ ]+)");
6
+ const versionLikeRegex = regEx("^(?<version>[-_.\\[\\](),a-zA-Z0-9+! ]+)");
7
7
  function versionLikeSubstring(input) {
8
8
  if (!input) return null;
9
9
  const version = versionLikeRegex.exec(input)?.groups?.version?.trim();
@@ -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 (isGradleVersionsFile(filename)) {\n return 1;\n }\n if (isGradleBuildFile(filename)) {\n return 3;\n }\n return 2;\n}\n\nexport function reorderFiles(packageFiles: string[]): string[] {\n return packageFiles\n .map((path) => {\n const absPath = toAbsolutePath(path);\n return {\n path,\n absPath,\n dir: upath.dirname(absPath),\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"],"mappings":"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"}
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 (isGradleVersionsFile(filename)) {\n return 1;\n }\n if (isGradleBuildFile(filename)) {\n return 3;\n }\n return 2;\n}\n\nexport function reorderFiles(packageFiles: string[]): string[] {\n return packageFiles\n .map((path) => {\n const absPath = toAbsolutePath(path);\n return {\n path,\n absPath,\n dir: upath.dirname(absPath),\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"],"mappings":"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"}
@@ -137,34 +137,29 @@ function parsePrefixRange(input) {
137
137
  }
138
138
  return null;
139
139
  }
140
- const mavenBasedRangeRegex = regEx(/^(?<leftBoundStr>[[\](]\s*)(?<leftVal>[-._+a-zA-Z0-9]*?)(?<separator>\s*,\s*)(?<rightVal>[-._+a-zA-Z0-9]*?)(?<rightBoundStr>\s*[[\])])$/);
140
+ const mavenBasedRangeRegex = regEx(/^(?<leftBoundStr>[[\](]\s*)(?<leftVal>[-._+a-zA-Z0-9]*?)(?<separator>\s*,\s*)(?<rightVal>[-._+a-zA-Z0-9]*?)(?<rightBoundStr>\s*[[\])])(?:!!(?<preferredVal>[-._+a-zA-Z0-9]+))?$/);
141
141
  function parseMavenBasedRange(input) {
142
142
  if (!input) return null;
143
143
  const matchGroups = mavenBasedRangeRegex.exec(input)?.groups;
144
- if (matchGroups) {
145
- const { leftBoundStr, separator, rightBoundStr } = matchGroups;
146
- let leftVal = matchGroups.leftVal;
147
- let rightVal = matchGroups.rightVal;
148
- if (!leftVal) leftVal = null;
149
- if (!rightVal) rightVal = null;
150
- const isVersionLeft = isString(leftVal) && isVersion(leftVal);
151
- const isVersionRight = isString(rightVal) && isVersion(rightVal);
152
- if ((leftVal === null || isVersionLeft) && (rightVal === null || isVersionRight)) {
153
- if (isVersionLeft && isVersionRight && leftVal && rightVal && compare(leftVal, rightVal) === 1) return null;
154
- const leftBound = leftBoundStr.trim() === "[" ? "inclusive" : "exclusive";
155
- const rightBound = rightBoundStr.trim() === "]" ? "inclusive" : "exclusive";
156
- return {
157
- leftBound,
158
- leftBoundStr,
159
- leftVal,
160
- separator,
161
- rightBound,
162
- rightBoundStr,
163
- rightVal
164
- };
165
- }
166
- }
167
- return null;
144
+ if (!matchGroups) return null;
145
+ const { leftBoundStr, separator, rightBoundStr } = matchGroups;
146
+ const leftVal = matchGroups.leftVal || null;
147
+ const rightVal = matchGroups.rightVal || null;
148
+ const preferredVal = matchGroups.preferredVal || null;
149
+ const isVersionLeft = isString(leftVal) && isVersion(leftVal);
150
+ const isVersionRight = isString(rightVal) && isVersion(rightVal);
151
+ if (leftVal !== null && !isVersionLeft || rightVal !== null && !isVersionRight) return null;
152
+ if (isVersionLeft && isVersionRight && leftVal && rightVal && compare(leftVal, rightVal) === 1) return null;
153
+ return {
154
+ leftBound: leftBoundStr.trim() === "[" ? "inclusive" : "exclusive",
155
+ leftBoundStr,
156
+ leftVal,
157
+ separator,
158
+ rightBound: rightBoundStr.trim() === "]" ? "inclusive" : "exclusive",
159
+ rightBoundStr,
160
+ rightVal,
161
+ preferredVal
162
+ };
168
163
  }
169
164
  const singleVersionRangeRegex = regEx(/^\[\s*(?<val>[-._+a-zA-Z0-9]*?)\s*\]$/);
170
165
  function parseSingleVersionRange(input) {
@@ -1 +1 @@
1
- {"version":3,"file":"compare.js","names":[],"sources":["../../../../lib/modules/versioning/gradle/compare.ts"],"sourcesContent":["import { isString } from '@sindresorhus/is';\nimport { regEx } from '../../../util/regex.ts';\n\nexport const TokenType = {\n Number: 1,\n String: 2,\n};\n\ninterface Token {\n type: number;\n val: string | number;\n}\n\nfunction iterateChars(\n str: string,\n cb: (p: string | null, n: string | null) => void,\n): void {\n let prev = null;\n let next = null;\n for (let i = 0; i < str.length; i += 1) {\n next = str.charAt(i);\n cb(prev, next);\n prev = next;\n }\n cb(prev, null);\n}\n\nfunction isSeparator(char: string): boolean {\n return regEx(/^[-._+]$/i).test(char);\n}\n\nfunction isDigit(char: string): boolean {\n return regEx(/^\\d$/).test(char);\n}\n\nfunction isLetter(char: string): boolean {\n return !isSeparator(char) && !isDigit(char);\n}\n\nfunction isTransition(prevChar: string, nextChar: string): boolean {\n return (\n (isDigit(prevChar) && isLetter(nextChar)) ||\n (isLetter(prevChar) && isDigit(nextChar))\n );\n}\n\nexport function tokenize(versionStr: string): Token[] | null {\n let result: Token[] | null = [];\n let currentVal = '';\n\n function yieldToken(): void {\n if (result) {\n const val = currentVal;\n if (regEx(/^\\d+$/).test(val)) {\n result.push({\n type: TokenType.Number,\n val: parseInt(val, 10),\n });\n } else {\n result.push({\n type: TokenType.String,\n val,\n });\n }\n }\n }\n\n iterateChars(versionStr, (prevChar, nextChar) => {\n if (nextChar === null) {\n yieldToken();\n } else if (isSeparator(nextChar)) {\n if (prevChar && !isSeparator(prevChar)) {\n yieldToken();\n currentVal = '';\n } else {\n result = null;\n }\n } else if (prevChar !== null && isTransition(prevChar, nextChar)) {\n yieldToken();\n currentVal = nextChar;\n } else {\n currentVal = currentVal.concat(nextChar);\n }\n });\n\n return result;\n}\n\nexport const QualifierRank = {\n Dev: -1,\n Default: 0,\n RC: 1,\n Snapshot: 2,\n Final: 3,\n GA: 4,\n Release: 5,\n SP: 6,\n} as const;\n\nexport function qualifierRank(input: string): number {\n const val = input.toLowerCase();\n if (val === 'dev') {\n return QualifierRank.Dev;\n }\n if (val === 'rc' || val === 'cr') {\n return QualifierRank.RC;\n }\n if (val === 'snapshot') {\n return QualifierRank.Snapshot;\n }\n if (val === 'ga') {\n return QualifierRank.GA;\n }\n if (val === 'final') {\n return QualifierRank.Final;\n }\n if (val === 'release' || val === 'latest' || val === 'sr') {\n return QualifierRank.Release;\n }\n if (val === 'sp') {\n return QualifierRank.SP;\n }\n return QualifierRank.Default;\n}\n\nfunction stringTokenCmp(left: string, right: string): number {\n const leftRank = qualifierRank(left);\n const rightRank = qualifierRank(right);\n if (leftRank === 0 && rightRank === 0) {\n if (left < right) {\n return -1;\n }\n\n if (left > right) {\n return 1;\n }\n } else {\n if (leftRank < rightRank) {\n return -1;\n }\n if (leftRank > rightRank) {\n return 1;\n }\n }\n return 0;\n}\n\nfunction tokenCmp(left: Token | null, right: Token | null): number {\n if (left === null) {\n if (right?.type === TokenType.String) {\n return 1;\n }\n return -1;\n }\n\n if (right === null) {\n if (left.type === TokenType.String) {\n return -1;\n }\n return 1;\n }\n\n if (left.type === TokenType.Number && right.type === TokenType.Number) {\n if (left.val < right.val) {\n return -1;\n }\n if (left.val > right.val) {\n return 1;\n }\n } else if (typeof left.val === 'string' && typeof right.val === 'string') {\n return stringTokenCmp(left.val, right.val);\n } else if (right.type === TokenType.Number) {\n return -1;\n } else if (left.type === TokenType.Number) {\n return 1;\n }\n\n return 0;\n}\n\nexport function compare(left: string, right: string): number {\n const leftTokens = tokenize(left) ?? [];\n const rightTokens = tokenize(right) ?? [];\n const length = Math.max(leftTokens.length, rightTokens.length);\n for (let idx = 0; idx < length; idx += 1) {\n const leftToken = leftTokens[idx] || null;\n const rightToken = rightTokens[idx] || null;\n const cmpResult = tokenCmp(leftToken, rightToken);\n if (cmpResult !== 0) {\n return cmpResult;\n }\n }\n return 0;\n}\n\nexport function parse(input: string): Token[] | null {\n if (!input) {\n return null;\n }\n\n if (!regEx(/^[-._+a-zA-Z0-9]+$/i).test(input)) {\n return null;\n }\n\n if (regEx(/^latest\\.?/i).test(input)) {\n return null;\n }\n\n const tokens = tokenize(input);\n // istanbul ignore if: should not happen\n if (!tokens?.length) {\n return null;\n }\n return tokens;\n}\n\nexport function isVersion(input: string): boolean {\n return !!parse(input);\n}\n\ninterface PrefixRange {\n tokens: Token[];\n}\n\nexport type RangeBound = 'inclusive' | 'exclusive';\n\ninterface MavenBasedRange {\n leftBound: RangeBound;\n leftBoundStr: string;\n leftVal: string | null;\n separator: string;\n rightBound: RangeBound;\n rightBoundStr: string;\n rightVal: string | null;\n}\n\nexport function parsePrefixRange(input: string): PrefixRange | null {\n if (!input) {\n return null;\n }\n\n if (input.trim() === '+') {\n return { tokens: [] };\n }\n\n const postfixRegex = regEx(/[^-._+][-._]\\+$/);\n if (postfixRegex.test(input)) {\n const prefixValue = input.replace(regEx(/[-._]\\+$/), '');\n const tokens = tokenize(prefixValue);\n if (tokens) {\n return { tokens };\n }\n }\n\n return null;\n}\n\nconst mavenBasedRangeRegex = regEx(\n /^(?<leftBoundStr>[[\\](]\\s*)(?<leftVal>[-._+a-zA-Z0-9]*?)(?<separator>\\s*,\\s*)(?<rightVal>[-._+a-zA-Z0-9]*?)(?<rightBoundStr>\\s*[[\\])])$/,\n);\n\nexport function parseMavenBasedRange(input: string): MavenBasedRange | null {\n if (!input) {\n return null;\n }\n\n const matchGroups = mavenBasedRangeRegex.exec(input)?.groups;\n if (matchGroups) {\n const { leftBoundStr, separator, rightBoundStr } = matchGroups;\n let leftVal: string | null = matchGroups.leftVal;\n let rightVal: string | null = matchGroups.rightVal;\n if (!leftVal) {\n leftVal = null;\n }\n if (!rightVal) {\n rightVal = null;\n }\n const isVersionLeft = isString(leftVal) && isVersion(leftVal);\n const isVersionRight = isString(rightVal) && isVersion(rightVal);\n if (\n (leftVal === null || isVersionLeft) &&\n (rightVal === null || isVersionRight)\n ) {\n if (\n isVersionLeft &&\n isVersionRight &&\n leftVal &&\n rightVal &&\n compare(leftVal, rightVal) === 1\n ) {\n return null;\n }\n const leftBound = leftBoundStr.trim() === '[' ? 'inclusive' : 'exclusive';\n const rightBound =\n rightBoundStr.trim() === ']' ? 'inclusive' : 'exclusive';\n return {\n leftBound,\n leftBoundStr,\n leftVal,\n separator,\n rightBound,\n rightBoundStr,\n rightVal,\n };\n }\n }\n\n return null;\n}\n\ninterface SingleVersionRange {\n val: string;\n}\n\nconst singleVersionRangeRegex = regEx(/^\\[\\s*(?<val>[-._+a-zA-Z0-9]*?)\\s*\\]$/);\n\nexport function parseSingleVersionRange(\n input: string,\n): SingleVersionRange | null {\n const matchGroups = singleVersionRangeRegex.exec(input)?.groups;\n if (!matchGroups) {\n return null;\n }\n\n const { val } = matchGroups;\n if (!isVersion(val)) {\n return null;\n }\n\n return { val };\n}\n\nexport function isValid(str: string): boolean {\n if (!str) {\n return false;\n }\n\n return (\n isVersion(str) ||\n !!parsePrefixRange(str) ||\n !!parseMavenBasedRange(str) ||\n !!parseSingleVersionRange(str)\n );\n}\n"],"mappings":";;;AAGA,MAAa,YAAY;CACvB,QAAQ;CACR,QAAQ;CACT;AAOD,SAAS,aACP,KACA,IACM;CACN,IAAI,OAAO;CACX,IAAI,OAAO;AACX,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK,GAAG;AACtC,SAAO,IAAI,OAAO,EAAE;AACpB,KAAG,MAAM,KAAK;AACd,SAAO;;AAET,IAAG,MAAM,KAAK;;AAGhB,SAAS,YAAY,MAAuB;AAC1C,QAAO,MAAM,YAAY,CAAC,KAAK,KAAK;;AAGtC,SAAS,QAAQ,MAAuB;AACtC,QAAO,MAAM,OAAO,CAAC,KAAK,KAAK;;AAGjC,SAAS,SAAS,MAAuB;AACvC,QAAO,CAAC,YAAY,KAAK,IAAI,CAAC,QAAQ,KAAK;;AAG7C,SAAS,aAAa,UAAkB,UAA2B;AACjE,QACG,QAAQ,SAAS,IAAI,SAAS,SAAS,IACvC,SAAS,SAAS,IAAI,QAAQ,SAAS;;AAI5C,SAAgB,SAAS,YAAoC;CAC3D,IAAI,SAAyB,EAAE;CAC/B,IAAI,aAAa;CAEjB,SAAS,aAAmB;AAC1B,MAAI,QAAQ;GACV,MAAM,MAAM;AACZ,OAAI,MAAM,QAAQ,CAAC,KAAK,IAAI,CAC1B,QAAO,KAAK;IACV,MAAM,UAAU;IAChB,KAAK,SAAS,KAAK,GAAG;IACvB,CAAC;OAEF,QAAO,KAAK;IACV,MAAM,UAAU;IAChB;IACD,CAAC;;;AAKR,cAAa,aAAa,UAAU,aAAa;AAC/C,MAAI,aAAa,KACf,aAAY;WACH,YAAY,SAAS,CAC9B,KAAI,YAAY,CAAC,YAAY,SAAS,EAAE;AACtC,eAAY;AACZ,gBAAa;QAEb,UAAS;WAEF,aAAa,QAAQ,aAAa,UAAU,SAAS,EAAE;AAChE,eAAY;AACZ,gBAAa;QAEb,cAAa,WAAW,OAAO,SAAS;GAE1C;AAEF,QAAO;;AAGT,MAAa,gBAAgB;CAC3B,KAAK;CACL,SAAS;CACT,IAAI;CACJ,UAAU;CACV,OAAO;CACP,IAAI;CACJ,SAAS;CACT,IAAI;CACL;AAED,SAAgB,cAAc,OAAuB;CACnD,MAAM,MAAM,MAAM,aAAa;AAC/B,KAAI,QAAQ,MACV,QAAO,cAAc;AAEvB,KAAI,QAAQ,QAAQ,QAAQ,KAC1B,QAAO,cAAc;AAEvB,KAAI,QAAQ,WACV,QAAO,cAAc;AAEvB,KAAI,QAAQ,KACV,QAAO,cAAc;AAEvB,KAAI,QAAQ,QACV,QAAO,cAAc;AAEvB,KAAI,QAAQ,aAAa,QAAQ,YAAY,QAAQ,KACnD,QAAO,cAAc;AAEvB,KAAI,QAAQ,KACV,QAAO,cAAc;AAEvB,QAAO,cAAc;;AAGvB,SAAS,eAAe,MAAc,OAAuB;CAC3D,MAAM,WAAW,cAAc,KAAK;CACpC,MAAM,YAAY,cAAc,MAAM;AACtC,KAAI,aAAa,KAAK,cAAc,GAAG;AACrC,MAAI,OAAO,MACT,QAAO;AAGT,MAAI,OAAO,MACT,QAAO;QAEJ;AACL,MAAI,WAAW,UACb,QAAO;AAET,MAAI,WAAW,UACb,QAAO;;AAGX,QAAO;;AAGT,SAAS,SAAS,MAAoB,OAA6B;AACjE,KAAI,SAAS,MAAM;AACjB,MAAI,OAAO,SAAS,UAAU,OAC5B,QAAO;AAET,SAAO;;AAGT,KAAI,UAAU,MAAM;AAClB,MAAI,KAAK,SAAS,UAAU,OAC1B,QAAO;AAET,SAAO;;AAGT,KAAI,KAAK,SAAS,UAAU,UAAU,MAAM,SAAS,UAAU,QAAQ;AACrE,MAAI,KAAK,MAAM,MAAM,IACnB,QAAO;AAET,MAAI,KAAK,MAAM,MAAM,IACnB,QAAO;YAEA,OAAO,KAAK,QAAQ,YAAY,OAAO,MAAM,QAAQ,SAC9D,QAAO,eAAe,KAAK,KAAK,MAAM,IAAI;UACjC,MAAM,SAAS,UAAU,OAClC,QAAO;UACE,KAAK,SAAS,UAAU,OACjC,QAAO;AAGT,QAAO;;AAGT,SAAgB,QAAQ,MAAc,OAAuB;CAC3D,MAAM,aAAa,SAAS,KAAK,IAAI,EAAE;CACvC,MAAM,cAAc,SAAS,MAAM,IAAI,EAAE;CACzC,MAAM,SAAS,KAAK,IAAI,WAAW,QAAQ,YAAY,OAAO;AAC9D,MAAK,IAAI,MAAM,GAAG,MAAM,QAAQ,OAAO,GAAG;EAGxC,MAAM,YAAY,SAFA,WAAW,QAAQ,MAClB,YAAY,QAAQ,KACU;AACjD,MAAI,cAAc,EAChB,QAAO;;AAGX,QAAO;;AAGT,SAAgB,MAAM,OAA+B;AACnD,KAAI,CAAC,MACH,QAAO;AAGT,KAAI,CAAC,MAAM,sBAAsB,CAAC,KAAK,MAAM,CAC3C,QAAO;AAGT,KAAI,MAAM,cAAc,CAAC,KAAK,MAAM,CAClC,QAAO;CAGT,MAAM,SAAS,SAAS,MAAM;;AAE9B,KAAI,CAAC,QAAQ,OACX,QAAO;AAET,QAAO;;AAGT,SAAgB,UAAU,OAAwB;AAChD,QAAO,CAAC,CAAC,MAAM,MAAM;;AAmBvB,SAAgB,iBAAiB,OAAmC;AAClE,KAAI,CAAC,MACH,QAAO;AAGT,KAAI,MAAM,MAAM,KAAK,IACnB,QAAO,EAAE,QAAQ,EAAE,EAAE;AAIvB,KADqB,MAAM,kBAAkB,CAC5B,KAAK,MAAM,EAAE;EAE5B,MAAM,SAAS,SADK,MAAM,QAAQ,MAAM,WAAW,EAAE,GAAG,CACpB;AACpC,MAAI,OACF,QAAO,EAAE,QAAQ;;AAIrB,QAAO;;AAGT,MAAM,uBAAuB,MAC3B,0IACD;AAED,SAAgB,qBAAqB,OAAuC;AAC1E,KAAI,CAAC,MACH,QAAO;CAGT,MAAM,cAAc,qBAAqB,KAAK,MAAM,EAAE;AACtD,KAAI,aAAa;EACf,MAAM,EAAE,cAAc,WAAW,kBAAkB;EACnD,IAAI,UAAyB,YAAY;EACzC,IAAI,WAA0B,YAAY;AAC1C,MAAI,CAAC,QACH,WAAU;AAEZ,MAAI,CAAC,SACH,YAAW;EAEb,MAAM,gBAAgB,SAAS,QAAQ,IAAI,UAAU,QAAQ;EAC7D,MAAM,iBAAiB,SAAS,SAAS,IAAI,UAAU,SAAS;AAChE,OACG,YAAY,QAAQ,mBACpB,aAAa,QAAQ,iBACtB;AACA,OACE,iBACA,kBACA,WACA,YACA,QAAQ,SAAS,SAAS,KAAK,EAE/B,QAAO;GAET,MAAM,YAAY,aAAa,MAAM,KAAK,MAAM,cAAc;GAC9D,MAAM,aACJ,cAAc,MAAM,KAAK,MAAM,cAAc;AAC/C,UAAO;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACD;;;AAIL,QAAO;;AAOT,MAAM,0BAA0B,MAAM,wCAAwC;AAE9E,SAAgB,wBACd,OAC2B;CAC3B,MAAM,cAAc,wBAAwB,KAAK,MAAM,EAAE;AACzD,KAAI,CAAC,YACH,QAAO;CAGT,MAAM,EAAE,QAAQ;AAChB,KAAI,CAAC,UAAU,IAAI,CACjB,QAAO;AAGT,QAAO,EAAE,KAAK;;AAGhB,SAAgB,QAAQ,KAAsB;AAC5C,KAAI,CAAC,IACH,QAAO;AAGT,QACE,UAAU,IAAI,IACd,CAAC,CAAC,iBAAiB,IAAI,IACvB,CAAC,CAAC,qBAAqB,IAAI,IAC3B,CAAC,CAAC,wBAAwB,IAAI"}
1
+ {"version":3,"file":"compare.js","names":[],"sources":["../../../../lib/modules/versioning/gradle/compare.ts"],"sourcesContent":["import { isString } from '@sindresorhus/is';\nimport { regEx } from '../../../util/regex.ts';\n\nexport const TokenType = {\n Number: 1,\n String: 2,\n};\n\ninterface Token {\n type: number;\n val: string | number;\n}\n\nfunction iterateChars(\n str: string,\n cb: (p: string | null, n: string | null) => void,\n): void {\n let prev = null;\n let next = null;\n for (let i = 0; i < str.length; i += 1) {\n next = str.charAt(i);\n cb(prev, next);\n prev = next;\n }\n cb(prev, null);\n}\n\nfunction isSeparator(char: string): boolean {\n return regEx(/^[-._+]$/i).test(char);\n}\n\nfunction isDigit(char: string): boolean {\n return regEx(/^\\d$/).test(char);\n}\n\nfunction isLetter(char: string): boolean {\n return !isSeparator(char) && !isDigit(char);\n}\n\nfunction isTransition(prevChar: string, nextChar: string): boolean {\n return (\n (isDigit(prevChar) && isLetter(nextChar)) ||\n (isLetter(prevChar) && isDigit(nextChar))\n );\n}\n\nexport function tokenize(versionStr: string): Token[] | null {\n let result: Token[] | null = [];\n let currentVal = '';\n\n function yieldToken(): void {\n if (result) {\n const val = currentVal;\n if (regEx(/^\\d+$/).test(val)) {\n result.push({\n type: TokenType.Number,\n val: parseInt(val, 10),\n });\n } else {\n result.push({\n type: TokenType.String,\n val,\n });\n }\n }\n }\n\n iterateChars(versionStr, (prevChar, nextChar) => {\n if (nextChar === null) {\n yieldToken();\n } else if (isSeparator(nextChar)) {\n if (prevChar && !isSeparator(prevChar)) {\n yieldToken();\n currentVal = '';\n } else {\n result = null;\n }\n } else if (prevChar !== null && isTransition(prevChar, nextChar)) {\n yieldToken();\n currentVal = nextChar;\n } else {\n currentVal = currentVal.concat(nextChar);\n }\n });\n\n return result;\n}\n\nexport const QualifierRank = {\n Dev: -1,\n Default: 0,\n RC: 1,\n Snapshot: 2,\n Final: 3,\n GA: 4,\n Release: 5,\n SP: 6,\n} as const;\n\nexport function qualifierRank(input: string): number {\n const val = input.toLowerCase();\n if (val === 'dev') {\n return QualifierRank.Dev;\n }\n if (val === 'rc' || val === 'cr') {\n return QualifierRank.RC;\n }\n if (val === 'snapshot') {\n return QualifierRank.Snapshot;\n }\n if (val === 'ga') {\n return QualifierRank.GA;\n }\n if (val === 'final') {\n return QualifierRank.Final;\n }\n if (val === 'release' || val === 'latest' || val === 'sr') {\n return QualifierRank.Release;\n }\n if (val === 'sp') {\n return QualifierRank.SP;\n }\n return QualifierRank.Default;\n}\n\nfunction stringTokenCmp(left: string, right: string): number {\n const leftRank = qualifierRank(left);\n const rightRank = qualifierRank(right);\n if (leftRank === 0 && rightRank === 0) {\n if (left < right) {\n return -1;\n }\n\n if (left > right) {\n return 1;\n }\n } else {\n if (leftRank < rightRank) {\n return -1;\n }\n if (leftRank > rightRank) {\n return 1;\n }\n }\n return 0;\n}\n\nfunction tokenCmp(left: Token | null, right: Token | null): number {\n if (left === null) {\n if (right?.type === TokenType.String) {\n return 1;\n }\n return -1;\n }\n\n if (right === null) {\n if (left.type === TokenType.String) {\n return -1;\n }\n return 1;\n }\n\n if (left.type === TokenType.Number && right.type === TokenType.Number) {\n if (left.val < right.val) {\n return -1;\n }\n if (left.val > right.val) {\n return 1;\n }\n } else if (typeof left.val === 'string' && typeof right.val === 'string') {\n return stringTokenCmp(left.val, right.val);\n } else if (right.type === TokenType.Number) {\n return -1;\n } else if (left.type === TokenType.Number) {\n return 1;\n }\n\n return 0;\n}\n\nexport function compare(left: string, right: string): number {\n const leftTokens = tokenize(left) ?? [];\n const rightTokens = tokenize(right) ?? [];\n const length = Math.max(leftTokens.length, rightTokens.length);\n for (let idx = 0; idx < length; idx += 1) {\n const leftToken = leftTokens[idx] || null;\n const rightToken = rightTokens[idx] || null;\n const cmpResult = tokenCmp(leftToken, rightToken);\n if (cmpResult !== 0) {\n return cmpResult;\n }\n }\n return 0;\n}\n\nexport function parse(input: string): Token[] | null {\n if (!input) {\n return null;\n }\n\n if (!regEx(/^[-._+a-zA-Z0-9]+$/i).test(input)) {\n return null;\n }\n\n if (regEx(/^latest\\.?/i).test(input)) {\n return null;\n }\n\n const tokens = tokenize(input);\n // istanbul ignore if: should not happen\n if (!tokens?.length) {\n return null;\n }\n return tokens;\n}\n\nexport function isVersion(input: string): boolean {\n return !!parse(input);\n}\n\ninterface PrefixRange {\n tokens: Token[];\n}\n\nexport type RangeBound = 'inclusive' | 'exclusive';\n\ninterface MavenBasedRange {\n leftBound: RangeBound;\n leftBoundStr: string;\n leftVal: string | null;\n separator: string;\n rightBound: RangeBound;\n rightBoundStr: string;\n rightVal: string | null;\n // The existence of preferredVal implies the \"strictly\" keyword \"!!\"\n // leading up to preferredVal: \"!![preferred version]\"\n preferredVal: string | null;\n}\n\nexport function parsePrefixRange(input: string): PrefixRange | null {\n if (!input) {\n return null;\n }\n\n if (input.trim() === '+') {\n return { tokens: [] };\n }\n\n const postfixRegex = regEx(/[^-._+][-._]\\+$/);\n if (postfixRegex.test(input)) {\n const prefixValue = input.replace(regEx(/[-._]\\+$/), '');\n const tokens = tokenize(prefixValue);\n if (tokens) {\n return { tokens };\n }\n }\n\n return null;\n}\n\nconst mavenBasedRangeRegex = regEx(\n /^(?<leftBoundStr>[[\\](]\\s*)(?<leftVal>[-._+a-zA-Z0-9]*?)(?<separator>\\s*,\\s*)(?<rightVal>[-._+a-zA-Z0-9]*?)(?<rightBoundStr>\\s*[[\\])])(?:!!(?<preferredVal>[-._+a-zA-Z0-9]+))?$/,\n);\n\nexport function parseMavenBasedRange(input: string): MavenBasedRange | null {\n if (!input) {\n return null;\n }\n\n const matchGroups = mavenBasedRangeRegex.exec(input)?.groups;\n if (!matchGroups) {\n return null;\n }\n\n const { leftBoundStr, separator, rightBoundStr } = matchGroups;\n const leftVal = matchGroups.leftVal || null;\n const rightVal = matchGroups.rightVal || null;\n const preferredVal = matchGroups.preferredVal || null;\n const isVersionLeft = isString(leftVal) && isVersion(leftVal);\n const isVersionRight = isString(rightVal) && isVersion(rightVal);\n if (\n (leftVal !== null && !isVersionLeft) ||\n (rightVal !== null && !isVersionRight)\n ) {\n return null;\n }\n\n if (\n isVersionLeft &&\n isVersionRight &&\n leftVal &&\n rightVal &&\n compare(leftVal, rightVal) === 1\n ) {\n return null;\n }\n\n const leftBound = leftBoundStr.trim() === '[' ? 'inclusive' : 'exclusive';\n const rightBound = rightBoundStr.trim() === ']' ? 'inclusive' : 'exclusive';\n\n return {\n leftBound,\n leftBoundStr,\n leftVal,\n separator,\n rightBound,\n rightBoundStr,\n rightVal,\n preferredVal,\n };\n}\n\ninterface SingleVersionRange {\n val: string;\n}\n\nconst singleVersionRangeRegex = regEx(/^\\[\\s*(?<val>[-._+a-zA-Z0-9]*?)\\s*\\]$/);\n\nexport function parseSingleVersionRange(\n input: string,\n): SingleVersionRange | null {\n const matchGroups = singleVersionRangeRegex.exec(input)?.groups;\n if (!matchGroups) {\n return null;\n }\n\n const { val } = matchGroups;\n if (!isVersion(val)) {\n return null;\n }\n\n return { val };\n}\n\nexport function isValid(str: string): boolean {\n if (!str) {\n return false;\n }\n\n return (\n isVersion(str) ||\n !!parsePrefixRange(str) ||\n !!parseMavenBasedRange(str) ||\n !!parseSingleVersionRange(str)\n );\n}\n"],"mappings":"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"}
@@ -108,6 +108,22 @@ function getNewValue({ currentValue, rangeStrategy, newVersion }) {
108
108
  if (prefixRange && parsedNewVersion) if (prefixRange.tokens.length > 0) if (prefixRange.tokens.length <= parsedNewVersion.length) return `${prefixRange.tokens.map((_, i) => parsedNewVersion[i].val).join(".")}.+`;
109
109
  else return newVersion;
110
110
  else return null;
111
+ const mavenRange = parseMavenBasedRange(currentValue);
112
+ if (mavenRange?.preferredVal) {
113
+ const { leftVal, rightVal, preferredVal } = mavenRange;
114
+ const baseRange = currentValue.slice(0, currentValue.lastIndexOf(`!!${preferredVal}`));
115
+ const newBaseRange = api$1.getNewValue({
116
+ currentValue: baseRange,
117
+ rangeStrategy,
118
+ newVersion
119
+ });
120
+ // v8 ignore if: the implementation has a non-null return type
121
+ if (newBaseRange === null) return null;
122
+ const preferredIsBoundary = preferredVal === leftVal || preferredVal === rightVal;
123
+ const newParsed = parseMavenBasedRange(newBaseRange);
124
+ const preferredStillPresent = newParsed?.leftVal === preferredVal || newParsed?.rightVal === preferredVal;
125
+ return `${newBaseRange}!!${preferredIsBoundary && !preferredStillPresent ? newVersion : preferredVal}`;
126
+ }
111
127
  return api$1.getNewValue({
112
128
  currentValue,
113
129
  rangeStrategy,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["mavenVersion"],"sources":["../../../../lib/modules/versioning/gradle/index.ts"],"sourcesContent":["import type { RangeStrategy } from '../../../types/versioning.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport mavenVersion from '../maven/index.ts';\nimport type { NewValueConfig, VersioningApi } from '../types.ts';\nimport {\n TokenType,\n compare,\n isValid,\n isVersion,\n parse,\n parseMavenBasedRange,\n parsePrefixRange,\n parseSingleVersionRange,\n} from './compare.ts';\n\nexport const id = 'gradle';\nexport const displayName = 'Gradle';\nexport const urls = [\n 'https://docs.gradle.org/current/userguide/single_versions.html#version_ordering',\n];\nexport const supportsRanges = true;\nexport const supportedRangeStrategies: RangeStrategy[] = ['bump'];\n\nconst equals = (a: string, b: string): boolean => compare(a, b) === 0;\n\nconst getMajor = (version: string): number | null => {\n const tokens = parse(version?.replace(regEx(/^v/i), ''));\n if (tokens) {\n const majorToken = tokens?.[0];\n if (majorToken?.type === TokenType.Number) {\n return majorToken.val as number;\n }\n }\n return null;\n};\n\nconst getMinor = (version: string): number | null => {\n const tokens = parse(version?.replace(regEx(/^v/i), ''));\n if (tokens) {\n const majorToken = tokens[0];\n const minorToken = tokens[1];\n if (\n majorToken?.type === TokenType.Number &&\n minorToken?.type === TokenType.Number\n ) {\n return minorToken.val as number;\n }\n return 0;\n }\n return null;\n};\n\nconst getPatch = (version: string): number | null => {\n const tokens = parse(version?.replace(regEx(/^v/i), ''));\n if (tokens) {\n const majorToken = tokens[0];\n const minorToken = tokens[1];\n const patchToken = tokens[2];\n if (\n majorToken?.type === TokenType.Number &&\n minorToken?.type === TokenType.Number &&\n patchToken?.type === TokenType.Number\n ) {\n return patchToken.val as number;\n }\n return 0;\n }\n return null;\n};\n\nconst isGreaterThan = (a: string, b: string): boolean => compare(a, b) === 1;\n\nconst unstable = new Set([\n 'dev',\n 'a',\n 'alpha',\n 'b',\n 'beta',\n 'm',\n 'mt',\n 'milestone',\n 'rc',\n 'cr',\n 'preview',\n 'snapshot',\n]);\n\nconst isStable = (version: string): boolean => {\n const tokens = parse(version);\n if (tokens) {\n for (const token of tokens) {\n if (token.type === TokenType.String) {\n const val = token.val.toString().toLowerCase();\n if (unstable.has(val)) {\n return false;\n }\n }\n }\n return true;\n }\n return false;\n};\n\nconst matches = (a: string, b: string): boolean => {\n const versionTokens = parse(a);\n if (!a || !versionTokens || !b) {\n return false;\n }\n if (isVersion(b)) {\n return equals(a, b);\n }\n\n const singleVersionRange = parseSingleVersionRange(b);\n if (singleVersionRange) {\n const { val } = singleVersionRange;\n return equals(a, val);\n }\n\n const prefixRange = parsePrefixRange(b);\n if (prefixRange) {\n const tokens = prefixRange.tokens;\n if (tokens.length === 0) {\n return true;\n }\n const x = versionTokens\n .slice(0, tokens.length)\n .map(({ val }) => val)\n .join('.');\n const y = tokens.map(({ val }) => val).join('.');\n return equals(x, y);\n }\n\n const mavenBasedRange = parseMavenBasedRange(b);\n if (!mavenBasedRange) {\n return false;\n }\n\n const { leftBound, leftVal, rightBound, rightVal } = mavenBasedRange;\n let leftResult = true;\n let rightResult = true;\n\n if (leftVal) {\n leftResult =\n leftBound === 'exclusive'\n ? compare(leftVal, a) === -1\n : compare(leftVal, a) !== 1;\n }\n\n if (rightVal) {\n rightResult =\n rightBound === 'exclusive'\n ? compare(a, rightVal) === -1\n : compare(a, rightVal) !== 1;\n }\n\n return leftResult && rightResult;\n};\n\nfunction getSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n return versions.reduce((result: string | null, version) => {\n if (matches(version, range)) {\n if (!result) {\n return version;\n }\n if (isGreaterThan(version, result)) {\n return version;\n }\n }\n return result;\n }, null);\n}\n\nfunction minSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n return versions.reduce((result: string | null, version) => {\n if (matches(version, range)) {\n if (!result) {\n return version;\n }\n if (compare(version, result) === -1) {\n return version;\n }\n }\n return result;\n }, null);\n}\n\nfunction getNewValue({\n currentValue,\n rangeStrategy,\n newVersion,\n}: NewValueConfig): string | null {\n if (isVersion(currentValue)) {\n return newVersion;\n }\n\n // Check if our version is of the form \"1.2.+\"\n const prefixRange = parsePrefixRange(currentValue);\n const parsedNewVersion = parse(newVersion);\n if (prefixRange && parsedNewVersion) {\n if (prefixRange.tokens.length > 0) {\n if (prefixRange.tokens.length <= parsedNewVersion.length) {\n const newPrefixed = prefixRange.tokens\n .map((_, i) => parsedNewVersion[i].val)\n .join('.');\n\n return `${newPrefixed}.+`;\n } else {\n // our new version is shorter than our prefix range so drop our prefix range\n return newVersion;\n }\n } else {\n // our version is already \"+\" which includes ever version\n return null;\n }\n }\n\n return mavenVersion.getNewValue({ currentValue, rangeStrategy, newVersion });\n}\n\nexport const api: VersioningApi = {\n equals,\n getMajor,\n getMinor,\n getPatch,\n isCompatible: isVersion,\n isGreaterThan,\n isSingleVersion: isVersion,\n isStable,\n isValid,\n isVersion,\n matches,\n getSatisfyingVersion,\n minSatisfyingVersion,\n getNewValue,\n sortVersions: compare,\n};\n\nexport default api;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["mavenVersion"],"sources":["../../../../lib/modules/versioning/gradle/index.ts"],"sourcesContent":["import type { RangeStrategy } from '../../../types/versioning.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport mavenVersion from '../maven/index.ts';\nimport type { NewValueConfig, VersioningApi } from '../types.ts';\nimport {\n TokenType,\n compare,\n isValid,\n isVersion,\n parse,\n parseMavenBasedRange,\n parsePrefixRange,\n parseSingleVersionRange,\n} from './compare.ts';\n\nexport const id = 'gradle';\nexport const displayName = 'Gradle';\nexport const urls = [\n 'https://docs.gradle.org/current/userguide/single_versions.html#version_ordering',\n];\nexport const supportsRanges = true;\nexport const supportedRangeStrategies: RangeStrategy[] = ['bump'];\n\nconst equals = (a: string, b: string): boolean => compare(a, b) === 0;\n\nconst getMajor = (version: string): number | null => {\n const tokens = parse(version?.replace(regEx(/^v/i), ''));\n if (tokens) {\n const majorToken = tokens?.[0];\n if (majorToken?.type === TokenType.Number) {\n return majorToken.val as number;\n }\n }\n return null;\n};\n\nconst getMinor = (version: string): number | null => {\n const tokens = parse(version?.replace(regEx(/^v/i), ''));\n if (tokens) {\n const majorToken = tokens[0];\n const minorToken = tokens[1];\n if (\n majorToken?.type === TokenType.Number &&\n minorToken?.type === TokenType.Number\n ) {\n return minorToken.val as number;\n }\n return 0;\n }\n return null;\n};\n\nconst getPatch = (version: string): number | null => {\n const tokens = parse(version?.replace(regEx(/^v/i), ''));\n if (tokens) {\n const majorToken = tokens[0];\n const minorToken = tokens[1];\n const patchToken = tokens[2];\n if (\n majorToken?.type === TokenType.Number &&\n minorToken?.type === TokenType.Number &&\n patchToken?.type === TokenType.Number\n ) {\n return patchToken.val as number;\n }\n return 0;\n }\n return null;\n};\n\nconst isGreaterThan = (a: string, b: string): boolean => compare(a, b) === 1;\n\nconst unstable = new Set([\n 'dev',\n 'a',\n 'alpha',\n 'b',\n 'beta',\n 'm',\n 'mt',\n 'milestone',\n 'rc',\n 'cr',\n 'preview',\n 'snapshot',\n]);\n\nconst isStable = (version: string): boolean => {\n const tokens = parse(version);\n if (tokens) {\n for (const token of tokens) {\n if (token.type === TokenType.String) {\n const val = token.val.toString().toLowerCase();\n if (unstable.has(val)) {\n return false;\n }\n }\n }\n return true;\n }\n return false;\n};\n\nconst matches = (a: string, b: string): boolean => {\n const versionTokens = parse(a);\n if (!a || !versionTokens || !b) {\n return false;\n }\n if (isVersion(b)) {\n return equals(a, b);\n }\n\n const singleVersionRange = parseSingleVersionRange(b);\n if (singleVersionRange) {\n const { val } = singleVersionRange;\n return equals(a, val);\n }\n\n const prefixRange = parsePrefixRange(b);\n if (prefixRange) {\n const tokens = prefixRange.tokens;\n if (tokens.length === 0) {\n return true;\n }\n const x = versionTokens\n .slice(0, tokens.length)\n .map(({ val }) => val)\n .join('.');\n const y = tokens.map(({ val }) => val).join('.');\n return equals(x, y);\n }\n\n const mavenBasedRange = parseMavenBasedRange(b);\n if (!mavenBasedRange) {\n return false;\n }\n\n const { leftBound, leftVal, rightBound, rightVal } = mavenBasedRange;\n let leftResult = true;\n let rightResult = true;\n\n if (leftVal) {\n leftResult =\n leftBound === 'exclusive'\n ? compare(leftVal, a) === -1\n : compare(leftVal, a) !== 1;\n }\n\n if (rightVal) {\n rightResult =\n rightBound === 'exclusive'\n ? compare(a, rightVal) === -1\n : compare(a, rightVal) !== 1;\n }\n\n return leftResult && rightResult;\n};\n\nfunction getSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n return versions.reduce((result: string | null, version) => {\n if (matches(version, range)) {\n if (!result) {\n return version;\n }\n if (isGreaterThan(version, result)) {\n return version;\n }\n }\n return result;\n }, null);\n}\n\nfunction minSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n return versions.reduce((result: string | null, version) => {\n if (matches(version, range)) {\n if (!result) {\n return version;\n }\n if (compare(version, result) === -1) {\n return version;\n }\n }\n return result;\n }, null);\n}\n\nfunction getNewValue({\n currentValue,\n rangeStrategy,\n newVersion,\n}: NewValueConfig): string | null {\n if (isVersion(currentValue)) {\n return newVersion;\n }\n\n // Check if our version is of the form \"1.2.+\"\n const prefixRange = parsePrefixRange(currentValue);\n const parsedNewVersion = parse(newVersion);\n if (prefixRange && parsedNewVersion) {\n if (prefixRange.tokens.length > 0) {\n if (prefixRange.tokens.length <= parsedNewVersion.length) {\n const newPrefixed = prefixRange.tokens\n .map((_, i) => parsedNewVersion[i].val)\n .join('.');\n\n return `${newPrefixed}.+`;\n } else {\n // our new version is shorter than our prefix range so drop our prefix range\n return newVersion;\n }\n } else {\n // our version is already \"+\" which includes ever version\n return null;\n }\n }\n\n const mavenRange = parseMavenBasedRange(currentValue);\n if (mavenRange?.preferredVal) {\n const { leftVal, rightVal, preferredVal } = mavenRange;\n const baseRange = currentValue.slice(\n 0,\n currentValue.lastIndexOf(`!!${preferredVal}`),\n );\n const newBaseRange = mavenVersion.getNewValue({\n currentValue: baseRange,\n rangeStrategy,\n newVersion,\n });\n // v8 ignore if: the implementation has a non-null return type\n if (newBaseRange === null) {\n return null;\n }\n\n const preferredIsBoundary =\n preferredVal === leftVal || preferredVal === rightVal;\n const newParsed = parseMavenBasedRange(newBaseRange);\n const preferredStillPresent =\n newParsed?.leftVal === preferredVal ||\n newParsed?.rightVal === preferredVal;\n const newPreferredVal =\n preferredIsBoundary && !preferredStillPresent ? newVersion : preferredVal;\n\n return `${newBaseRange}!!${newPreferredVal}`;\n }\n\n return mavenVersion.getNewValue({ currentValue, rangeStrategy, newVersion });\n}\n\nexport const api: VersioningApi = {\n equals,\n getMajor,\n getMinor,\n getPatch,\n isCompatible: isVersion,\n isGreaterThan,\n isSingleVersion: isVersion,\n isStable,\n isValid,\n isVersion,\n matches,\n getSatisfyingVersion,\n minSatisfyingVersion,\n getNewValue,\n sortVersions: compare,\n};\n\nexport default api;\n"],"mappings":"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"}
@@ -1,6 +1,4 @@
1
1
  import { logger } from "../../../../logger/index.js";
2
- import { emojify } from "../../../../util/emoji.js";
3
- import { getDefaultConfigFileName } from "../common.js";
4
2
  import { isArray, isString } from "@sindresorhus/is";
5
3
  //#region lib/workers/repository/onboarding/pr/config-description.ts
6
4
  function getScheduleDesc(config) {
@@ -18,7 +16,6 @@ function getDescriptionArray(config) {
18
16
  return (isArray(config.description, isString) ? config.description : []).concat(getScheduleDesc(config));
19
17
  }
20
18
  function getConfigDesc(config, _packageFiles) {
21
- const configFile = getDefaultConfigFileName();
22
19
  logger.debug("getConfigDesc()");
23
20
  logger.trace({ config });
24
21
  const descriptionArr = getDescriptionArray(config);
@@ -32,10 +29,7 @@ function getConfigDesc(config, _packageFiles) {
32
29
  descriptionArr.forEach((d) => {
33
30
  desc += ` - ${d}\n`;
34
31
  });
35
- desc += "\n";
36
- desc += emojify(`:abcd: Do you want to change how Renovate upgrades your dependencies?`);
37
- desc += ` Add your custom config to \`${configFile}\` in this branch${config.onboardingRebaseCheckbox ? " and select the Retry/Rebase checkbox below" : ""}. Renovate will update the Pull Request description the next time it runs.`;
38
- desc += "\n\n---\n";
32
+ desc += "\n---\n";
39
33
  return desc;
40
34
  }
41
35
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"config-description.js","names":[],"sources":["../../../../../lib/workers/repository/onboarding/pr/config-description.ts"],"sourcesContent":["import { isArray, isString } from '@sindresorhus/is';\nimport type { RenovateConfig } from '../../../../config/types.ts';\nimport { logger } from '../../../../logger/index.ts';\nimport type { PackageFile } from '../../../../modules/manager/types.ts';\nimport { emojify } from '../../../../util/emoji.ts';\nimport { getDefaultConfigFileName } from '../common.ts';\n\nexport function getScheduleDesc(config: RenovateConfig): string[] {\n logger.debug('getScheduleDesc()');\n logger.trace({ config });\n if (\n !config.schedule ||\n (config.schedule as never) === 'at any time' ||\n config.schedule[0] === 'at any time'\n ) {\n logger.debug('No schedule');\n return [];\n }\n const desc = `Run Renovate on following schedule: ${String(config.schedule)}`;\n return [desc];\n}\n\nfunction getDescriptionArray(config: RenovateConfig): string[] {\n logger.debug('getDescriptionArray()');\n logger.trace({ config });\n const desc = isArray(config.description, isString) ? config.description : [];\n return desc.concat(getScheduleDesc(config));\n}\n\nexport function getConfigDesc(\n config: RenovateConfig,\n // TODO: remove unused parameter\n _packageFiles?: Record<string, PackageFile[]>,\n): string {\n // TODO: type (#22198)\n const configFile = getDefaultConfigFileName();\n logger.debug('getConfigDesc()');\n logger.trace({ config });\n const descriptionArr = getDescriptionArray(config);\n if (!descriptionArr.length) {\n logger.debug('No config description found');\n return '';\n }\n logger.debug(`Found description array with length:${descriptionArr.length}`);\n let desc = `\\n### Configuration Summary\\n\\nBased on the default config's presets, Renovate will:\\n\\n`;\n desc += ` - Start dependency updates only once this onboarding PR is merged\\n`;\n descriptionArr.forEach((d) => {\n desc += ` - ${d}\\n`;\n });\n desc += '\\n';\n desc += emojify(\n `:abcd: Do you want to change how Renovate upgrades your dependencies?`,\n );\n desc += ` Add your custom config to \\`${configFile}\\` in this branch${\n config.onboardingRebaseCheckbox\n ? ' and select the Retry/Rebase checkbox below'\n : ''\n }. Renovate will update the Pull Request description the next time it runs.`;\n desc += '\\n\\n---\\n';\n return desc;\n}\n"],"mappings":";;;;;AAOA,SAAgB,gBAAgB,QAAkC;AAChE,QAAO,MAAM,oBAAoB;AACjC,QAAO,MAAM,EAAE,QAAQ,CAAC;AACxB,KACE,CAAC,OAAO,YACP,OAAO,aAAuB,iBAC/B,OAAO,SAAS,OAAO,eACvB;AACA,SAAO,MAAM,cAAc;AAC3B,SAAO,EAAE;;AAGX,QAAO,CADM,uCAAuC,OAAO,OAAO,SAAS,GAC9D;;AAGf,SAAS,oBAAoB,QAAkC;AAC7D,QAAO,MAAM,wBAAwB;AACrC,QAAO,MAAM,EAAE,QAAQ,CAAC;AAExB,SADa,QAAQ,OAAO,aAAa,SAAS,GAAG,OAAO,cAAc,EAAE,EAChE,OAAO,gBAAgB,OAAO,CAAC;;AAG7C,SAAgB,cACd,QAEA,eACQ;CAER,MAAM,aAAa,0BAA0B;AAC7C,QAAO,MAAM,kBAAkB;AAC/B,QAAO,MAAM,EAAE,QAAQ,CAAC;CACxB,MAAM,iBAAiB,oBAAoB,OAAO;AAClD,KAAI,CAAC,eAAe,QAAQ;AAC1B,SAAO,MAAM,8BAA8B;AAC3C,SAAO;;AAET,QAAO,MAAM,uCAAuC,eAAe,SAAS;CAC5E,IAAI,OAAO;AACX,SAAQ;AACR,gBAAe,SAAS,MAAM;AAC5B,UAAQ,OAAO,EAAE;GACjB;AACF,SAAQ;AACR,SAAQ,QACN,wEACD;AACD,SAAQ,gCAAgC,WAAW,mBACjD,OAAO,2BACH,gDACA,GACL;AACD,SAAQ;AACR,QAAO"}
1
+ {"version":3,"file":"config-description.js","names":[],"sources":["../../../../../lib/workers/repository/onboarding/pr/config-description.ts"],"sourcesContent":["import { isArray, isString } from '@sindresorhus/is';\nimport type { RenovateConfig } from '../../../../config/types.ts';\nimport { logger } from '../../../../logger/index.ts';\nimport type { PackageFile } from '../../../../modules/manager/types.ts';\n\nexport function getScheduleDesc(config: RenovateConfig): string[] {\n logger.debug('getScheduleDesc()');\n logger.trace({ config });\n if (\n !config.schedule ||\n (config.schedule as never) === 'at any time' ||\n config.schedule[0] === 'at any time'\n ) {\n logger.debug('No schedule');\n return [];\n }\n const desc = `Run Renovate on following schedule: ${String(config.schedule)}`;\n return [desc];\n}\n\nfunction getDescriptionArray(config: RenovateConfig): string[] {\n logger.debug('getDescriptionArray()');\n logger.trace({ config });\n const desc = isArray(config.description, isString) ? config.description : [];\n return desc.concat(getScheduleDesc(config));\n}\n\nexport function getConfigDesc(\n config: RenovateConfig,\n // TODO: remove unused parameter\n _packageFiles?: Record<string, PackageFile[]>,\n): string {\n logger.debug('getConfigDesc()');\n logger.trace({ config });\n const descriptionArr = getDescriptionArray(config);\n if (!descriptionArr.length) {\n logger.debug('No config description found');\n return '';\n }\n logger.debug(`Found description array with length:${descriptionArr.length}`);\n let desc = `\\n### Configuration Summary\\n\\nBased on the default config's presets, Renovate will:\\n\\n`;\n desc += ` - Start dependency updates only once this onboarding PR is merged\\n`;\n descriptionArr.forEach((d) => {\n desc += ` - ${d}\\n`;\n });\n desc += '\\n---\\n';\n return desc;\n}\n"],"mappings":";;;AAKA,SAAgB,gBAAgB,QAAkC;AAChE,QAAO,MAAM,oBAAoB;AACjC,QAAO,MAAM,EAAE,QAAQ,CAAC;AACxB,KACE,CAAC,OAAO,YACP,OAAO,aAAuB,iBAC/B,OAAO,SAAS,OAAO,eACvB;AACA,SAAO,MAAM,cAAc;AAC3B,SAAO,EAAE;;AAGX,QAAO,CADM,uCAAuC,OAAO,OAAO,SAAS,GAC9D;;AAGf,SAAS,oBAAoB,QAAkC;AAC7D,QAAO,MAAM,wBAAwB;AACrC,QAAO,MAAM,EAAE,QAAQ,CAAC;AAExB,SADa,QAAQ,OAAO,aAAa,SAAS,GAAG,OAAO,cAAc,EAAE,EAChE,OAAO,gBAAgB,OAAO,CAAC;;AAG7C,SAAgB,cACd,QAEA,eACQ;AACR,QAAO,MAAM,kBAAkB;AAC/B,QAAO,MAAM,EAAE,QAAQ,CAAC;CACxB,MAAM,iBAAiB,oBAAoB,OAAO;AAClD,KAAI,CAAC,eAAe,QAAQ;AAC1B,SAAO,MAAM,8BAA8B;AAC3C,SAAO;;AAET,QAAO,MAAM,uCAAuC,eAAe,SAAS;CAC5E,IAAI,OAAO;AACX,SAAQ;AACR,gBAAe,SAAS,MAAM;AAC5B,UAAQ,OAAO,EAAE;GACjB;AACF,SAAQ;AACR,QAAO"}
@@ -81,6 +81,10 @@ async function ensureOnboardingPr(config, packageFiles, branches) {
81
81
  logger.debug("Filling in onboarding PR template");
82
82
  let prTemplate = `Welcome to [Renovate](${config.productLinks.homepage})! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.\n\n`;
83
83
  prTemplate += config.requireConfig === "required" ? emojify(`:vertical_traffic_light: To activate Renovate, merge this Pull Request. To disable Renovate, simply close this Pull Request unmerged.\n\n`) : emojify(`:vertical_traffic_light: Renovate will begin keeping your dependencies up-to-date only once you merge or close this Pull Request.\n\n`);
84
+ const configFile = getDefaultConfigFileName();
85
+ prTemplate += emojify(`:abcd: Do you want to change how Renovate upgrades your dependencies?`);
86
+ prTemplate += ` Add your custom config to \`${configFile}\` in this branch${config.onboardingRebaseCheckbox ? " and select the Retry/Rebase checkbox below" : ""}. Renovate will update the Pull Request description the next time it runs.`;
87
+ prTemplate += "\n\n";
84
88
  prTemplate += emojify(`
85
89
 
86
90
  ---
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["template.compile"],"sources":["../../../../../lib/workers/repository/onboarding/pr/index.ts"],"sourcesContent":["import { isNumber, isString } from '@sindresorhus/is';\nimport { GlobalConfig } from '../../../../config/global.ts';\nimport type { RenovateConfig } from '../../../../config/types.ts';\nimport { REPOSITORY_CLOSED_ONBOARDING } from '../../../../constants/error-messages.ts';\nimport { logger } from '../../../../logger/index.ts';\nimport type { PackageFile } from '../../../../modules/manager/types.ts';\nimport { ensureComment } from '../../../../modules/platform/comment.ts';\nimport type { Pr } from '../../../../modules/platform/index.ts';\nimport { platform } from '../../../../modules/platform/index.ts';\nimport { hashBody } from '../../../../modules/platform/pr-body.ts';\nimport { scm } from '../../../../modules/platform/scm.ts';\nimport { getInheritedOrGlobal } from '../../../../util/common.ts';\nimport { getElapsedDays } from '../../../../util/date.ts';\nimport { emojify } from '../../../../util/emoji.ts';\nimport { getFile } from '../../../../util/git/index.ts';\nimport { toSha256 } from '../../../../util/hash.ts';\nimport * as template from '../../../../util/template/index.ts';\nimport type { BranchConfig } from '../../../types.ts';\nimport {\n getDepWarningsOnboardingPR,\n getErrors,\n getWarnings,\n} from '../../errors-warnings.ts';\nimport { getPlatformPrOptions } from '../../update/pr/index.ts';\nimport { prepareLabels } from '../../update/pr/labels.ts';\nimport { addParticipants } from '../../update/pr/participants.ts';\nimport { isOnboardingBranchConflicted } from '../branch/onboarding-branch-cache.ts';\nimport {\n OnboardingState,\n getDefaultConfigFileName,\n getSemanticCommitPrTitle,\n} from '../common.ts';\nimport { getBaseBranchDesc } from './base-branch.ts';\nimport { getConfigDesc } from './config-description.ts';\nimport { getExpectedPrList } from './pr-list.ts';\n\n/**\n * Given an existing PR, if onboardingAutoCloseAge has passed, close the PR.\n *\n * Returns true if the PR was closed.\n */\nasync function ensureOnboardingAutoCloseAge(existingPr: Pr): Promise<boolean> {\n // check if the existing pr crosses the onboarding autoclose age\n const ageOfOnboardingPr = getElapsedDays(existingPr.createdAt!, false);\n const onboardingAutoCloseAge = getInheritedOrGlobal('onboardingAutoCloseAge');\n if (onboardingAutoCloseAge) {\n logger.debug(\n {\n onboardingAutoCloseAge,\n createdAt: existingPr.createdAt!,\n ageOfOnboardingPr,\n },\n `Determining that the onboarding PR created at \\`${existingPr.createdAt!}\\` was created ${ageOfOnboardingPr.toFixed(2)} days ago`,\n );\n }\n if (\n isNumber(onboardingAutoCloseAge) &&\n ageOfOnboardingPr > onboardingAutoCloseAge\n ) {\n // close the pr\n await platform.updatePr({\n number: existingPr.number,\n state: 'closed',\n prTitle: existingPr.title,\n });\n // ensure comment\n await ensureComment({\n number: existingPr.number,\n topic: `Renovate is disabled`,\n content: `Renovate is disabled because the onboarding PR has been unmerged for more than ${onboardingAutoCloseAge} days. To enable Renovate, you can either (a) change this PR's title to get a new onboarding PR, and merge the new onboarding PR, or (b) create a Renovate config file, and commit that file to your base branch.`,\n });\n logger.debug(\n {\n ageOfOnboardingPr,\n onboardingAutoCloseAge,\n },\n `Renovate is being disabled for this repository as the onboarding PR has been unmerged for more than ${onboardingAutoCloseAge} days`,\n );\n return true;\n }\n return false;\n}\n\nexport async function ensureOnboardingPr(\n config: RenovateConfig,\n packageFiles: Record<string, PackageFile[]> | null,\n branches: BranchConfig[],\n): Promise<void> {\n if (\n config.repoIsOnboarded === true ||\n (config.onboardingRebaseCheckbox && !OnboardingState.prUpdateRequested)\n ) {\n return;\n }\n logger.debug('ensureOnboardingPr()');\n logger.trace({ config });\n // TODO #22198\n const onboardingBranch = getInheritedOrGlobal('onboardingBranch')!;\n const existingPr = await platform.getBranchPr(\n onboardingBranch,\n config.defaultBranch,\n );\n if (existingPr) {\n const wasClosed = await ensureOnboardingAutoCloseAge(existingPr);\n if (wasClosed) {\n throw new Error(REPOSITORY_CLOSED_ONBOARDING);\n }\n\n // skip pr-update if branch is conflicted\n if (\n await isOnboardingBranchConflicted(\n config.defaultBranch!,\n onboardingBranch,\n )\n ) {\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n 'DRY-RUN: Would comment that Onboarding PR is conflicted and needs manual resolving',\n );\n return;\n }\n await ensureComment({\n number: existingPr.number,\n topic: 'Branch Conflicted',\n content: emojify(\n `:warning: This PR has a merge conflict which Renovate is unable to automatically resolve, so updates to this PR description are now paused. Please resolve the merge conflict manually.\\n\\n`,\n ),\n });\n return;\n }\n }\n\n if (OnboardingState.onboardingCacheValid) {\n return;\n }\n\n const onboardingConfigHashComment = await getOnboardingConfigHashComment();\n const rebaseCheckBox = getRebaseCheckbox(config.onboardingRebaseCheckbox);\n logger.debug('Filling in onboarding PR template');\n let prTemplate = `Welcome to [Renovate](${\n config.productLinks!.homepage\n })! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.\\n\\n`;\n prTemplate +=\n config.requireConfig === 'required'\n ? emojify(\n `:vertical_traffic_light: To activate Renovate, merge this Pull Request. To disable Renovate, simply close this Pull Request unmerged.\\n\\n`,\n )\n : emojify(\n `:vertical_traffic_light: Renovate will begin keeping your dependencies up-to-date only once you merge or close this Pull Request.\\n\\n`,\n );\n // TODO #22198\n prTemplate += emojify(\n `\n\n---\n{{PACKAGE FILES}}\n{{CONFIG}}\n{{BASEBRANCH}}\n{{PRLIST}}\n{{WARNINGS}}\n{{ERRORS}}\n\n---\n\n:question: Got questions? Check out Renovate's [Docs](${\n config.productLinks!.documentation\n }), particularly the Getting Started section.\nIf you need any further assistance then you can also [request help here](${\n config.productLinks!.help\n }).\n`,\n );\n prTemplate += rebaseCheckBox;\n let prBody = prTemplate;\n if (packageFiles && Object.entries(packageFiles).length) {\n let files: string[] = [];\n for (const [manager, managerFiles] of Object.entries(packageFiles)) {\n files = files.concat(\n managerFiles.map((file) => ` * \\`${file.packageFile}\\` (${manager})`),\n );\n }\n prBody =\n prBody.replace(\n '{{PACKAGE FILES}}',\n '### Detected Package Files\\n\\n' + files.join('\\n'),\n ) + '\\n';\n } else {\n prBody = prBody.replace('{{PACKAGE FILES}}\\n', '');\n }\n let configDesc = '';\n if (GlobalConfig.get('dryRun')) {\n // TODO: types (#22198)\n logger.info(`DRY-RUN: Would check branch ${onboardingBranch}`);\n } else {\n configDesc = getConfigDesc(config, packageFiles!);\n }\n prBody = prBody.replace('{{CONFIG}}\\n', configDesc);\n prBody = prBody.replace(\n '{{WARNINGS}}\\n',\n getWarnings(config) + getDepWarningsOnboardingPR(packageFiles!, config),\n );\n prBody = prBody.replace('{{ERRORS}}\\n', getErrors(config));\n prBody = prBody.replace('{{BASEBRANCH}}\\n', getBaseBranchDesc(config));\n prBody = prBody.replace('{{PRLIST}}\\n', getExpectedPrList(config, branches));\n if (isString(config.prHeader)) {\n prBody = `${template.compile(config.prHeader, config)}\\n\\n${prBody}`;\n }\n if (isString(config.prFooter)) {\n prBody = `${prBody}\\n---\\n\\n${template.compile(config.prFooter, config)}\\n`;\n }\n\n prBody += onboardingConfigHashComment;\n\n logger.trace('prBody:\\n' + prBody);\n\n prBody = platform.massageMarkdown(prBody, config.rebaseLabel);\n\n if (existingPr) {\n logger.debug('Found open onboarding PR');\n // Check if existing PR needs updating\n const prBodyHash = hashBody(prBody);\n if (existingPr.bodyStruct?.hash === prBodyHash) {\n logger.debug(`Pull Request #${existingPr.number} does not need updating`);\n return;\n }\n // PR must need updating\n if (GlobalConfig.get('dryRun')) {\n logger.info('DRY-RUN: Would update onboarding PR');\n } else {\n await platform.updatePr({\n number: existingPr.number,\n prTitle: existingPr.title,\n prBody,\n });\n logger.info({ pr: existingPr.number }, 'Onboarding PR updated');\n }\n return;\n }\n logger.debug('Creating onboarding PR');\n const labels: string[] = prepareLabels(config);\n try {\n if (GlobalConfig.get('dryRun')) {\n logger.info('DRY-RUN: Would create onboarding PR');\n } else {\n // TODO #22198\n const prTitle =\n config.semanticCommits === 'enabled'\n ? getSemanticCommitPrTitle(config)\n : getInheritedOrGlobal('onboardingPrTitle')!;\n const pr = await platform.createPr({\n sourceBranch: onboardingBranch,\n targetBranch: config.defaultBranch!,\n prTitle,\n prBody,\n labels,\n platformPrOptions: getPlatformPrOptions({\n ...config,\n automerge: false,\n }),\n });\n logger.info(\n { pr: `Pull Request #${pr!.number}` },\n 'Onboarding PR created',\n );\n await addParticipants(config, pr!);\n }\n } catch (err) {\n if (\n err.response?.statusCode === 422 &&\n err.response?.body?.errors?.[0]?.message?.startsWith(\n 'A pull request already exists',\n )\n ) {\n logger.warn(\n 'Onboarding PR already exists but cannot find it. It was probably created by a different user.',\n );\n await scm.deleteBranch(onboardingBranch);\n return;\n }\n throw err;\n }\n}\n\nfunction getRebaseCheckbox(onboardingRebaseCheckbox?: boolean): string {\n let rebaseCheckBox = '';\n if (onboardingRebaseCheckbox) {\n // Create markdown checkbox\n rebaseCheckBox = `\\n\\n---\\n\\n - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click this checkbox.\\n`;\n }\n\n return rebaseCheckBox;\n}\n\nasync function getOnboardingConfigHashComment(): Promise<string> {\n const configFile = getDefaultConfigFileName();\n const existingContents =\n (await getFile(configFile, getInheritedOrGlobal('onboardingBranch'))) ?? '';\n const hash = toSha256(existingContents);\n\n return `\\n<!--renovate-config-hash:${hash}-->\\n`;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["template.compile"],"sources":["../../../../../lib/workers/repository/onboarding/pr/index.ts"],"sourcesContent":["import { isNumber, isString } from '@sindresorhus/is';\nimport { GlobalConfig } from '../../../../config/global.ts';\nimport type { RenovateConfig } from '../../../../config/types.ts';\nimport { REPOSITORY_CLOSED_ONBOARDING } from '../../../../constants/error-messages.ts';\nimport { logger } from '../../../../logger/index.ts';\nimport type { PackageFile } from '../../../../modules/manager/types.ts';\nimport { ensureComment } from '../../../../modules/platform/comment.ts';\nimport type { Pr } from '../../../../modules/platform/index.ts';\nimport { platform } from '../../../../modules/platform/index.ts';\nimport { hashBody } from '../../../../modules/platform/pr-body.ts';\nimport { scm } from '../../../../modules/platform/scm.ts';\nimport { getInheritedOrGlobal } from '../../../../util/common.ts';\nimport { getElapsedDays } from '../../../../util/date.ts';\nimport { emojify } from '../../../../util/emoji.ts';\nimport { getFile } from '../../../../util/git/index.ts';\nimport { toSha256 } from '../../../../util/hash.ts';\nimport * as template from '../../../../util/template/index.ts';\nimport type { BranchConfig } from '../../../types.ts';\nimport {\n getDepWarningsOnboardingPR,\n getErrors,\n getWarnings,\n} from '../../errors-warnings.ts';\nimport { getPlatformPrOptions } from '../../update/pr/index.ts';\nimport { prepareLabels } from '../../update/pr/labels.ts';\nimport { addParticipants } from '../../update/pr/participants.ts';\nimport { isOnboardingBranchConflicted } from '../branch/onboarding-branch-cache.ts';\nimport {\n OnboardingState,\n getDefaultConfigFileName,\n getSemanticCommitPrTitle,\n} from '../common.ts';\nimport { getBaseBranchDesc } from './base-branch.ts';\nimport { getConfigDesc } from './config-description.ts';\nimport { getExpectedPrList } from './pr-list.ts';\n\n/**\n * Given an existing PR, if onboardingAutoCloseAge has passed, close the PR.\n *\n * Returns true if the PR was closed.\n */\nasync function ensureOnboardingAutoCloseAge(existingPr: Pr): Promise<boolean> {\n // check if the existing pr crosses the onboarding autoclose age\n const ageOfOnboardingPr = getElapsedDays(existingPr.createdAt!, false);\n const onboardingAutoCloseAge = getInheritedOrGlobal('onboardingAutoCloseAge');\n if (onboardingAutoCloseAge) {\n logger.debug(\n {\n onboardingAutoCloseAge,\n createdAt: existingPr.createdAt!,\n ageOfOnboardingPr,\n },\n `Determining that the onboarding PR created at \\`${existingPr.createdAt!}\\` was created ${ageOfOnboardingPr.toFixed(2)} days ago`,\n );\n }\n if (\n isNumber(onboardingAutoCloseAge) &&\n ageOfOnboardingPr > onboardingAutoCloseAge\n ) {\n // close the pr\n await platform.updatePr({\n number: existingPr.number,\n state: 'closed',\n prTitle: existingPr.title,\n });\n // ensure comment\n await ensureComment({\n number: existingPr.number,\n topic: `Renovate is disabled`,\n content: `Renovate is disabled because the onboarding PR has been unmerged for more than ${onboardingAutoCloseAge} days. To enable Renovate, you can either (a) change this PR's title to get a new onboarding PR, and merge the new onboarding PR, or (b) create a Renovate config file, and commit that file to your base branch.`,\n });\n logger.debug(\n {\n ageOfOnboardingPr,\n onboardingAutoCloseAge,\n },\n `Renovate is being disabled for this repository as the onboarding PR has been unmerged for more than ${onboardingAutoCloseAge} days`,\n );\n return true;\n }\n return false;\n}\n\nexport async function ensureOnboardingPr(\n config: RenovateConfig,\n packageFiles: Record<string, PackageFile[]> | null,\n branches: BranchConfig[],\n): Promise<void> {\n if (\n config.repoIsOnboarded === true ||\n (config.onboardingRebaseCheckbox && !OnboardingState.prUpdateRequested)\n ) {\n return;\n }\n logger.debug('ensureOnboardingPr()');\n logger.trace({ config });\n // TODO #22198\n const onboardingBranch = getInheritedOrGlobal('onboardingBranch')!;\n const existingPr = await platform.getBranchPr(\n onboardingBranch,\n config.defaultBranch,\n );\n if (existingPr) {\n const wasClosed = await ensureOnboardingAutoCloseAge(existingPr);\n if (wasClosed) {\n throw new Error(REPOSITORY_CLOSED_ONBOARDING);\n }\n\n // skip pr-update if branch is conflicted\n if (\n await isOnboardingBranchConflicted(\n config.defaultBranch!,\n onboardingBranch,\n )\n ) {\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n 'DRY-RUN: Would comment that Onboarding PR is conflicted and needs manual resolving',\n );\n return;\n }\n await ensureComment({\n number: existingPr.number,\n topic: 'Branch Conflicted',\n content: emojify(\n `:warning: This PR has a merge conflict which Renovate is unable to automatically resolve, so updates to this PR description are now paused. Please resolve the merge conflict manually.\\n\\n`,\n ),\n });\n return;\n }\n }\n\n if (OnboardingState.onboardingCacheValid) {\n return;\n }\n\n const onboardingConfigHashComment = await getOnboardingConfigHashComment();\n const rebaseCheckBox = getRebaseCheckbox(config.onboardingRebaseCheckbox);\n logger.debug('Filling in onboarding PR template');\n let prTemplate = `Welcome to [Renovate](${\n config.productLinks!.homepage\n })! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.\\n\\n`;\n prTemplate +=\n config.requireConfig === 'required'\n ? emojify(\n `:vertical_traffic_light: To activate Renovate, merge this Pull Request. To disable Renovate, simply close this Pull Request unmerged.\\n\\n`,\n )\n : emojify(\n `:vertical_traffic_light: Renovate will begin keeping your dependencies up-to-date only once you merge or close this Pull Request.\\n\\n`,\n );\n\n const configFile = getDefaultConfigFileName();\n prTemplate += emojify(\n `:abcd: Do you want to change how Renovate upgrades your dependencies?`,\n );\n prTemplate += ` Add your custom config to \\`${configFile}\\` in this branch${\n config.onboardingRebaseCheckbox\n ? ' and select the Retry/Rebase checkbox below'\n : ''\n }. Renovate will update the Pull Request description the next time it runs.`;\n prTemplate += '\\n\\n';\n // TODO #22198\n prTemplate += emojify(\n `\n\n---\n{{PACKAGE FILES}}\n{{CONFIG}}\n{{BASEBRANCH}}\n{{PRLIST}}\n{{WARNINGS}}\n{{ERRORS}}\n\n---\n\n:question: Got questions? Check out Renovate's [Docs](${\n config.productLinks!.documentation\n }), particularly the Getting Started section.\nIf you need any further assistance then you can also [request help here](${\n config.productLinks!.help\n }).\n`,\n );\n prTemplate += rebaseCheckBox;\n let prBody = prTemplate;\n if (packageFiles && Object.entries(packageFiles).length) {\n let files: string[] = [];\n for (const [manager, managerFiles] of Object.entries(packageFiles)) {\n files = files.concat(\n managerFiles.map((file) => ` * \\`${file.packageFile}\\` (${manager})`),\n );\n }\n prBody =\n prBody.replace(\n '{{PACKAGE FILES}}',\n '### Detected Package Files\\n\\n' + files.join('\\n'),\n ) + '\\n';\n } else {\n prBody = prBody.replace('{{PACKAGE FILES}}\\n', '');\n }\n let configDesc = '';\n if (GlobalConfig.get('dryRun')) {\n // TODO: types (#22198)\n logger.info(`DRY-RUN: Would check branch ${onboardingBranch}`);\n } else {\n configDesc = getConfigDesc(config, packageFiles!);\n }\n prBody = prBody.replace('{{CONFIG}}\\n', configDesc);\n prBody = prBody.replace(\n '{{WARNINGS}}\\n',\n getWarnings(config) + getDepWarningsOnboardingPR(packageFiles!, config),\n );\n prBody = prBody.replace('{{ERRORS}}\\n', getErrors(config));\n prBody = prBody.replace('{{BASEBRANCH}}\\n', getBaseBranchDesc(config));\n prBody = prBody.replace('{{PRLIST}}\\n', getExpectedPrList(config, branches));\n if (isString(config.prHeader)) {\n prBody = `${template.compile(config.prHeader, config)}\\n\\n${prBody}`;\n }\n if (isString(config.prFooter)) {\n prBody = `${prBody}\\n---\\n\\n${template.compile(config.prFooter, config)}\\n`;\n }\n\n prBody += onboardingConfigHashComment;\n\n logger.trace('prBody:\\n' + prBody);\n\n prBody = platform.massageMarkdown(prBody, config.rebaseLabel);\n\n if (existingPr) {\n logger.debug('Found open onboarding PR');\n // Check if existing PR needs updating\n const prBodyHash = hashBody(prBody);\n if (existingPr.bodyStruct?.hash === prBodyHash) {\n logger.debug(`Pull Request #${existingPr.number} does not need updating`);\n return;\n }\n // PR must need updating\n if (GlobalConfig.get('dryRun')) {\n logger.info('DRY-RUN: Would update onboarding PR');\n } else {\n await platform.updatePr({\n number: existingPr.number,\n prTitle: existingPr.title,\n prBody,\n });\n logger.info({ pr: existingPr.number }, 'Onboarding PR updated');\n }\n return;\n }\n logger.debug('Creating onboarding PR');\n const labels: string[] = prepareLabels(config);\n try {\n if (GlobalConfig.get('dryRun')) {\n logger.info('DRY-RUN: Would create onboarding PR');\n } else {\n // TODO #22198\n const prTitle =\n config.semanticCommits === 'enabled'\n ? getSemanticCommitPrTitle(config)\n : getInheritedOrGlobal('onboardingPrTitle')!;\n const pr = await platform.createPr({\n sourceBranch: onboardingBranch,\n targetBranch: config.defaultBranch!,\n prTitle,\n prBody,\n labels,\n platformPrOptions: getPlatformPrOptions({\n ...config,\n automerge: false,\n }),\n });\n logger.info(\n { pr: `Pull Request #${pr!.number}` },\n 'Onboarding PR created',\n );\n await addParticipants(config, pr!);\n }\n } catch (err) {\n if (\n err.response?.statusCode === 422 &&\n err.response?.body?.errors?.[0]?.message?.startsWith(\n 'A pull request already exists',\n )\n ) {\n logger.warn(\n 'Onboarding PR already exists but cannot find it. It was probably created by a different user.',\n );\n await scm.deleteBranch(onboardingBranch);\n return;\n }\n throw err;\n }\n}\n\nfunction getRebaseCheckbox(onboardingRebaseCheckbox?: boolean): string {\n let rebaseCheckBox = '';\n if (onboardingRebaseCheckbox) {\n // Create markdown checkbox\n rebaseCheckBox = `\\n\\n---\\n\\n - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click this checkbox.\\n`;\n }\n\n return rebaseCheckBox;\n}\n\nasync function getOnboardingConfigHashComment(): Promise<string> {\n const configFile = getDefaultConfigFileName();\n const existingContents =\n (await getFile(configFile, getInheritedOrGlobal('onboardingBranch'))) ?? '';\n const hash = toSha256(existingContents);\n\n return `\\n<!--renovate-config-hash:${hash}-->\\n`;\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "renovate",
3
3
  "description": "Automated dependency updates. Flexible so you don't need to be.",
4
- "version": "43.105.0",
4
+ "version": "43.107.0",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "renovate": "dist/renovate.js",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$id": "https://docs.renovatebot.com/renovate-schema.json",
3
- "title": "JSON schema for Renovate 43.105.0 config files (https://renovatebot.com/)",
3
+ "title": "JSON schema for Renovate 43.107.0 config files (https://renovatebot.com/)",
4
4
  "$schema": "http://json-schema.org/draft-07/schema#",
5
- "x-renovate-version": "43.105.0",
5
+ "x-renovate-version": "43.107.0",
6
6
  "allowComments": true,
7
7
  "type": "object",
8
8
  "properties": {