renovate 43.263.0 → 43.263.1

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.
@@ -27,7 +27,7 @@ hashMap.set("cloudbuild", "8c0c739f7e4082bbfe8e3fdffebaf43e26f70a1314d95b306e9b9
27
27
  hashMap.set("cocoapods", "08310c39254947632d42058f74f755e9d3f3019c2edeeaf52b5142917085e2df");
28
28
  hashMap.set("composer", "991a845be7ede562df4abfb005caf5e22cded077cec46711f8c008e468fbd633");
29
29
  hashMap.set("conan", "b846e8812d65d4201dc0bf7c1d5c344e3a1edaaff6441010875171028be2f0fb");
30
- hashMap.set("copier", "b26904512023c7785e86ee57744f16b336a380ae80d2b85924bf7c30e3c6f1c5");
30
+ hashMap.set("copier", "3ff250122cf49d52f23fcd3686274b0e86a99d0cb8bfa7e3e2ee3dd3b3babd56");
31
31
  hashMap.set("cpanfile", "6a1d67d9c8751123deaf0c7f3ac38a07024e960c140f8228fcbcb93954fdca01");
32
32
  hashMap.set("crossplane", "5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40");
33
33
  hashMap.set("crow", "eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0");
@@ -70,7 +70,7 @@ hashMap.set("maven", "2bf7b65d51718daf3eec4f30c0fc7f2f045f4f8f24862bebe17c2174ab
70
70
  hashMap.set("maven-wrapper", "976ed8a59cf43b0c765b1a49ebc5669478e78278cf48f4ce3d0deb49647d10e3");
71
71
  hashMap.set("meteor", "4a93a326b27bedfe52118e27e06f39fecd7c55bd4cd7fccec4cb120cac14cec4");
72
72
  hashMap.set("mint", "248fe4f1ea5c985921c286785792c97e06fc41f402b2d45df82f6aecd17f710e");
73
- hashMap.set("mise", "670975cb441aaa5524010e5b681c0a70a4fe96b1785da51f10a8fd45eebff4e0");
73
+ hashMap.set("mise", "633e7e325055c9a39413dbce346c32cda6dec83ed9f20d6cdfc7d1255b94bafb");
74
74
  hashMap.set("mix", "ead2078c33550ec8695298c053f549866e1701fa096440d4228e3e51f8f1e49c");
75
75
  hashMap.set("nix", "95f0827f7ec9a3bfd5119534f129aad6cf26b28e99d55aec0945f08bbfff9fb1");
76
76
  hashMap.set("nodenv", "ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8");
@@ -81,7 +81,7 @@ hashMap.set("ocb", "032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c8
81
81
  hashMap.set("osgi", "32233a1a8a2725699d7448ba438e3d0b78141f7799cd2b588de278d41e26ed10");
82
82
  hashMap.set("pep621", "fffd093eaf6de3cab7b2f6b57e57715aa240fcd958954f31fbc47f18e1730a4d");
83
83
  hashMap.set("pep723", "b96683163de63ed93207ec0538066705b1e58a1cd5b8bd11c63fc28b26bddba1");
84
- hashMap.set("pip-compile", "4a46edd733ab3ebbc398b57ba1d6b0a3a49e98b23841631ab9a716ff1146d510");
84
+ hashMap.set("pip-compile", "5bf2798666b36b613ce61ca8101b6d17100e062a6dd5866a4e91c6a266f19333");
85
85
  hashMap.set("pip_requirements", "5ef648e398281294c79ec5dc56a868af904efddc536c9ce8d693a8425afd9677");
86
86
  hashMap.set("pip_setup", "0175fe550c19d9bd31c978bd83fdc088cb40fcacd5d6751f640164274ae64e61");
87
87
  hashMap.set("pipenv", "1d0af710667f6dce377feae9aa238b21fe5e0e75e75758a70f5e9758c6cb6678");
@@ -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','2df5943cf0ed19a21b94df13729dbb925655548130caf37e3e22bebaed518e17');\nhashMap.set('argocd','5d35b1992e53130bf83b0e59a0f90ccd3a78919974c69044f306dc5d162f48ce');\nhashMap.set('asdf','a599d9834f33a92e7c25753f933621f0b1b076ba8a068628a3f64e1dc545b739');\nhashMap.set('azure-pipelines','4f635b0ecd388ee266d992e8281fd40e3db2f5867d86fc1cbce72dc33a66e796');\nhashMap.set('batect','fad98996bea8626525ab925f83a6ae0ce9262c53770e7aa7cb448a1e0f1ddf21');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','c6e0ad88ea468664c3a33263baf7452d83d2d37ff09ba920e18f64ee81fd0acb');\nhashMap.set('bazel-module','8d5314f630038df8a974a285ab5066a0b4d69bc4dcd0a4fa2e9e6c6747073229');\nhashMap.set('bazelisk','49e6bd1fc8f03facd06e517dc64596833b90ee0a079a45cff78f0eeb3c3566f8');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','59c0503494ab1442b127914503c01b97ac17b6742b19c632292d5aa24de115cd');\nhashMap.set('bitrise','478dfd316221fad7c29e177c70d1018d832fb2626b53308a5d0f1f0380e69f42');\nhashMap.set('buildkite','a93effb1f1c5d65b3277c3b4709924eacde282e8efd028a8e3d8c1ce3ef69407');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','2df1756b14b3d690e5ad1295bc1e78d8a8d7b967a552fd7b8e3274866a5acf3e');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','cf7b07339eec46097c479fc5d9aa1c699d74b11954aea156eef7b893251b070d');\nhashMap.set('cake','65ad4f28c318675b9edb49dbd11d677f42c762b01b3f5a25dd3b2f345ecd387e');\nhashMap.set('cargo','23fcc425ccd3a50559210e0ab8c84c1d47cf5c617cd5d58afdcf258ab862bafa');\nhashMap.set('cdnurl','d3edf6cdc38e92eb43ff5a2b4e8df6a6a13154cf83244725c39e28d7e6ea9177');\nhashMap.set('circleci','91cbeb33ea20f9838e2c81a1195eb806f0b38fa282bc3679f62552f20575ca85');\nhashMap.set('cloudbuild','8c0c739f7e4082bbfe8e3fdffebaf43e26f70a1314d95b306e9b93e4f4297886');\nhashMap.set('cocoapods','08310c39254947632d42058f74f755e9d3f3019c2edeeaf52b5142917085e2df');\nhashMap.set('composer','991a845be7ede562df4abfb005caf5e22cded077cec46711f8c008e468fbd633');\nhashMap.set('conan','b846e8812d65d4201dc0bf7c1d5c344e3a1edaaff6441010875171028be2f0fb');\nhashMap.set('copier','b26904512023c7785e86ee57744f16b336a380ae80d2b85924bf7c30e3c6f1c5');\nhashMap.set('cpanfile','6a1d67d9c8751123deaf0c7f3ac38a07024e960c140f8228fcbcb93954fdca01');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deno','1c418ca043ad0cbba47282c9cd602ed0945b4adcfcdb2d968fb1bcafe727190e');\nhashMap.set('deps-edn','c87dd5e88587147ad1a78f047b814f3c4aa60d6de30d0c49d849391eeaf1b64c');\nhashMap.set('devbox','ac472ae4897dc1df85326dbd89a8c3488579ae2b180014ffcf085ce422e19dbd');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','5441af5b5abf8d347e46002d47f02f85743401bda28232f49fb7b3bbb772a4fb');\nhashMap.set('dockerfile','322b95f7e55dd78d7fe71306a6f649479eca61c60d75bb10b23604a230dbdd08');\nhashMap.set('droneci','237c8de87b9bf653fb943b56e84e99c45f6d86ae27d86e599b3f3f99c35ba8ee');\nhashMap.set('fleet','d73d5d35f10df0599a561d9c8d25f3935350407d0e3bd3a1d1545295f278912e');\nhashMap.set('flux','22de4afb277e579dcbc7ec765eca2ddc5e4b1bb39d49e762e8af026fa062c53f');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','475d08a1a75e5732dd6003f63bd98c91ce09e42229cdcd9d2d060c60ce474e49');\nhashMap.set('github-actions','100d3ecacf720978aef32ec929d879b6392485ecaab0cb395d497f24a0ab3850');\nhashMap.set('gitlabci','0dec44dd398bfc5b3c19d0929bea2fef7f386c94acfd1b1d7bc2a31d81d96fd6');\nhashMap.set('gitlabci-include','354cfc4ea327c6d5cd5bee1f17763832efc7f5402e9fd22c579239fccb9c6dab');\nhashMap.set('glasskube','253d6db30bdec75ed5ab5d26f31d69bc07813ba10089a28da12c6a29eff4ec70');\nhashMap.set('gleam','e7ee3392d1f900fc1299308c8e930db9288790c6d0b6c35f1a62e55683090d34');\nhashMap.set('gomod','9ab033fb37fbf3b212232019ba2d36e247acc9831f7c17818a40cb155606abfe');\nhashMap.set('gradle','1108234b4fcfebf95c453111f652ab75f5c6cc6c4472efb60b7bc29cbe683612');\nhashMap.set('gradle-wrapper','f85031e7feb4e811aa5f29c589a30f8076a078e5bbf366fb65fb28b5a47d2c44');\nhashMap.set('haskell-cabal','89bfcc4c52dd2556ce50bb00e86a9e6ff5ec842e6bbf91b3608049205da109a5');\nhashMap.set('helm-requirements','4d90e5e18a380876ad48e21e1ad88ea62e25d973a1ddaa3763447fc0a9f9915b');\nhashMap.set('helm-values','b5c52c6a27d805557418c585c5d3030c95ee641d53057021f3fe060f81b6e1af');\nhashMap.set('helmfile','5bbc18bf059640191e2237408ca3b442556834e5c1c05d3317e82e7e097ae1f2');\nhashMap.set('helmsman','ef9680c612f702c7f07aea9b6e5d811e91214dcfa5755c9f3803e9528090935e');\nhashMap.set('helmv3','86799a6d3fba17b1f4c8017d308cba44a1efcf6d6290371263b8cf14be9e16ae');\nhashMap.set('hermit','f30ba5fe8ee46997c1f3d15235e6ff64c96d7ce5e439ee99f8008580348fe0da');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','56ef90301143874355fd2ed25dff7c646875f701f97422d02e01d45608a88f31');\nhashMap.set('html','67c5f3c5c58e96f5dd257ba5987d900cf7fef81d667c3640e96c847b37de35a8');\nhashMap.set('jenkins','268ebfc8a1caf3edeb2192c2b1b2fa4bf18a78a3e731ba20a6c104940a5539f3');\nhashMap.set('jsonnet-bundler','f918a7f378dc207cadf291e7481006008c69623f690902ed921e1e33db270b78');\nhashMap.set('kotlin-script','99ef296792a0ca575ed31d3defb514b05a58083dc01c52ea0890c69d867ba1dd');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','c6ee547378d5c5619a0fe94be35f9838e0f006b4807a896e9caefefa20efacf7');\nhashMap.set('leiningen','133fca2c3423f53f2ccc22518153ddbcafbf0f4812376c77e952eb3d24d81f85');\nhashMap.set('maven','2bf7b65d51718daf3eec4f30c0fc7f2f045f4f8f24862bebe17c2174abb606b9');\nhashMap.set('maven-wrapper','976ed8a59cf43b0c765b1a49ebc5669478e78278cf48f4ce3d0deb49647d10e3');\nhashMap.set('meteor','4a93a326b27bedfe52118e27e06f39fecd7c55bd4cd7fccec4cb120cac14cec4');\nhashMap.set('mint','248fe4f1ea5c985921c286785792c97e06fc41f402b2d45df82f6aecd17f710e');\nhashMap.set('mise','670975cb441aaa5524010e5b681c0a70a4fe96b1785da51f10a8fd45eebff4e0');\nhashMap.set('mix','ead2078c33550ec8695298c053f549866e1701fa096440d4228e3e51f8f1e49c');\nhashMap.set('nix','95f0827f7ec9a3bfd5119534f129aad6cf26b28e99d55aec0945f08bbfff9fb1');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','e678d3f9b386632766452c93fd1b04eb6849fdb4a6dcc5c9e0fff10ce4d293fa');\nhashMap.set('nuget','54c1e149b47e4f588e99857e3e62b420f50649a868a28944a0c82a7b7fb530e7');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','32233a1a8a2725699d7448ba438e3d0b78141f7799cd2b588de278d41e26ed10');\nhashMap.set('pep621','fffd093eaf6de3cab7b2f6b57e57715aa240fcd958954f31fbc47f18e1730a4d');\nhashMap.set('pep723','b96683163de63ed93207ec0538066705b1e58a1cd5b8bd11c63fc28b26bddba1');\nhashMap.set('pip-compile','4a46edd733ab3ebbc398b57ba1d6b0a3a49e98b23841631ab9a716ff1146d510');\nhashMap.set('pip_requirements','5ef648e398281294c79ec5dc56a868af904efddc536c9ce8d693a8425afd9677');\nhashMap.set('pip_setup','0175fe550c19d9bd31c978bd83fdc088cb40fcacd5d6751f640164274ae64e61');\nhashMap.set('pipenv','1d0af710667f6dce377feae9aa238b21fe5e0e75e75758a70f5e9758c6cb6678');\nhashMap.set('pixi','7d183aaae4370a0c62496bbff60ad12fd4dd46822630541f712f437dcea021e1');\nhashMap.set('poetry','0211739556f8193c70fa69cbf66c60e688042fd7dc7a2fe08f9f328b35ad1f82');\nhashMap.set('pre-commit','a6a6e847fdb0f56650e66ef7d69e68de752b390913f79ac31d1a7ec5955d03da');\nhashMap.set('proto','412053d4550026b4ace490b46e970915b87ec1abf0b0a0c6c8c58ccf1fc16843');\nhashMap.set('pub','aad0dd6524158fda5345d75662f337b275c6c46b29f051ba94201d42c22b0da8');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','e355e13e104351a8b3516a8e272fc5f7e625c9f39b0c492ba27283a36227c2d4');\nhashMap.set('renovate-config','2a4e4fb671aed5d0c900b8d54c31bfef46ca36d0f4e16b00ff73377b9c09fb69');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('rust-toolchain','e957f1f1563af4e5fbd1c552ca15632b7808d9d2e51ec0da6022a1f84372caec');\nhashMap.set('sbt','74125bd9c76a5724092258cd1dee1ea99fc0d735b463a2b64fedc5d950efde2a');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','7dea08c5708625e753bd56918bc214df7fb4d8543a26e936926a21ab43b5f785');\nhashMap.set('sveltos','05b3158e88771ed4629e171592cf4f1bf0ff342f8aeae89be0b340c630cc6d8e');\nhashMap.set('swift','56cdc6fe4cd00519f953459f94323c71677f6bde007537eef891154fb8696db1');\nhashMap.set('tekton','fdc5b9b5edec2a90cda2f858f3ebc532aa8efb1187d1e0b7c89b07796e9cb6cd');\nhashMap.set('terraform','045931e1d5ae5607fb7fbcdfe6d2cd9cf45020432de7c78fbb3432579c8b3310');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','142c3f0549c4152297615b5bbf3a78ba8f7ce6a0cebcea63b81e9815dca40494');\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','dfd7b905577b362093ce72e6ee597308f97c83678ddb15d6455a1627969b8b7d');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('xcodegen','dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683');\nhashMap.set('jsonata','06d83ae6bf80f77b12638d5c785f30bfce4195a37a63026f60e4c16c960ae18b');\nhashMap.set('regex','dbe6889ea021a05127fed06226d73366fdada2ae577147a5c027996fd325416e');"],"mappings":"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"}
1
+ {"version":3,"file":"fingerprint.generated.js","names":[],"sources":["../../../lib/modules/manager/fingerprint.generated.ts"],"sourcesContent":["export const hashMap = new Map<string, string>();\n\nhashMap.set('ansible','1fbc76f78daa14a8c9ab1142e9d1e05c746c0419a9f1455e4279f476590d0c04');\nhashMap.set('ansible-galaxy','8226d47128f2018825d4d6f84794e3183eb79c706045fa7e88491edd5e64106f');\nhashMap.set('ant','2df5943cf0ed19a21b94df13729dbb925655548130caf37e3e22bebaed518e17');\nhashMap.set('argocd','5d35b1992e53130bf83b0e59a0f90ccd3a78919974c69044f306dc5d162f48ce');\nhashMap.set('asdf','a599d9834f33a92e7c25753f933621f0b1b076ba8a068628a3f64e1dc545b739');\nhashMap.set('azure-pipelines','4f635b0ecd388ee266d992e8281fd40e3db2f5867d86fc1cbce72dc33a66e796');\nhashMap.set('batect','fad98996bea8626525ab925f83a6ae0ce9262c53770e7aa7cb448a1e0f1ddf21');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','c6e0ad88ea468664c3a33263baf7452d83d2d37ff09ba920e18f64ee81fd0acb');\nhashMap.set('bazel-module','8d5314f630038df8a974a285ab5066a0b4d69bc4dcd0a4fa2e9e6c6747073229');\nhashMap.set('bazelisk','49e6bd1fc8f03facd06e517dc64596833b90ee0a079a45cff78f0eeb3c3566f8');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','59c0503494ab1442b127914503c01b97ac17b6742b19c632292d5aa24de115cd');\nhashMap.set('bitrise','478dfd316221fad7c29e177c70d1018d832fb2626b53308a5d0f1f0380e69f42');\nhashMap.set('buildkite','a93effb1f1c5d65b3277c3b4709924eacde282e8efd028a8e3d8c1ce3ef69407');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','2df1756b14b3d690e5ad1295bc1e78d8a8d7b967a552fd7b8e3274866a5acf3e');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','cf7b07339eec46097c479fc5d9aa1c699d74b11954aea156eef7b893251b070d');\nhashMap.set('cake','65ad4f28c318675b9edb49dbd11d677f42c762b01b3f5a25dd3b2f345ecd387e');\nhashMap.set('cargo','23fcc425ccd3a50559210e0ab8c84c1d47cf5c617cd5d58afdcf258ab862bafa');\nhashMap.set('cdnurl','d3edf6cdc38e92eb43ff5a2b4e8df6a6a13154cf83244725c39e28d7e6ea9177');\nhashMap.set('circleci','91cbeb33ea20f9838e2c81a1195eb806f0b38fa282bc3679f62552f20575ca85');\nhashMap.set('cloudbuild','8c0c739f7e4082bbfe8e3fdffebaf43e26f70a1314d95b306e9b93e4f4297886');\nhashMap.set('cocoapods','08310c39254947632d42058f74f755e9d3f3019c2edeeaf52b5142917085e2df');\nhashMap.set('composer','991a845be7ede562df4abfb005caf5e22cded077cec46711f8c008e468fbd633');\nhashMap.set('conan','b846e8812d65d4201dc0bf7c1d5c344e3a1edaaff6441010875171028be2f0fb');\nhashMap.set('copier','3ff250122cf49d52f23fcd3686274b0e86a99d0cb8bfa7e3e2ee3dd3b3babd56');\nhashMap.set('cpanfile','6a1d67d9c8751123deaf0c7f3ac38a07024e960c140f8228fcbcb93954fdca01');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deno','1c418ca043ad0cbba47282c9cd602ed0945b4adcfcdb2d968fb1bcafe727190e');\nhashMap.set('deps-edn','c87dd5e88587147ad1a78f047b814f3c4aa60d6de30d0c49d849391eeaf1b64c');\nhashMap.set('devbox','ac472ae4897dc1df85326dbd89a8c3488579ae2b180014ffcf085ce422e19dbd');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','5441af5b5abf8d347e46002d47f02f85743401bda28232f49fb7b3bbb772a4fb');\nhashMap.set('dockerfile','322b95f7e55dd78d7fe71306a6f649479eca61c60d75bb10b23604a230dbdd08');\nhashMap.set('droneci','237c8de87b9bf653fb943b56e84e99c45f6d86ae27d86e599b3f3f99c35ba8ee');\nhashMap.set('fleet','d73d5d35f10df0599a561d9c8d25f3935350407d0e3bd3a1d1545295f278912e');\nhashMap.set('flux','22de4afb277e579dcbc7ec765eca2ddc5e4b1bb39d49e762e8af026fa062c53f');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','475d08a1a75e5732dd6003f63bd98c91ce09e42229cdcd9d2d060c60ce474e49');\nhashMap.set('github-actions','100d3ecacf720978aef32ec929d879b6392485ecaab0cb395d497f24a0ab3850');\nhashMap.set('gitlabci','0dec44dd398bfc5b3c19d0929bea2fef7f386c94acfd1b1d7bc2a31d81d96fd6');\nhashMap.set('gitlabci-include','354cfc4ea327c6d5cd5bee1f17763832efc7f5402e9fd22c579239fccb9c6dab');\nhashMap.set('glasskube','253d6db30bdec75ed5ab5d26f31d69bc07813ba10089a28da12c6a29eff4ec70');\nhashMap.set('gleam','e7ee3392d1f900fc1299308c8e930db9288790c6d0b6c35f1a62e55683090d34');\nhashMap.set('gomod','9ab033fb37fbf3b212232019ba2d36e247acc9831f7c17818a40cb155606abfe');\nhashMap.set('gradle','1108234b4fcfebf95c453111f652ab75f5c6cc6c4472efb60b7bc29cbe683612');\nhashMap.set('gradle-wrapper','f85031e7feb4e811aa5f29c589a30f8076a078e5bbf366fb65fb28b5a47d2c44');\nhashMap.set('haskell-cabal','89bfcc4c52dd2556ce50bb00e86a9e6ff5ec842e6bbf91b3608049205da109a5');\nhashMap.set('helm-requirements','4d90e5e18a380876ad48e21e1ad88ea62e25d973a1ddaa3763447fc0a9f9915b');\nhashMap.set('helm-values','b5c52c6a27d805557418c585c5d3030c95ee641d53057021f3fe060f81b6e1af');\nhashMap.set('helmfile','5bbc18bf059640191e2237408ca3b442556834e5c1c05d3317e82e7e097ae1f2');\nhashMap.set('helmsman','ef9680c612f702c7f07aea9b6e5d811e91214dcfa5755c9f3803e9528090935e');\nhashMap.set('helmv3','86799a6d3fba17b1f4c8017d308cba44a1efcf6d6290371263b8cf14be9e16ae');\nhashMap.set('hermit','f30ba5fe8ee46997c1f3d15235e6ff64c96d7ce5e439ee99f8008580348fe0da');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','56ef90301143874355fd2ed25dff7c646875f701f97422d02e01d45608a88f31');\nhashMap.set('html','67c5f3c5c58e96f5dd257ba5987d900cf7fef81d667c3640e96c847b37de35a8');\nhashMap.set('jenkins','268ebfc8a1caf3edeb2192c2b1b2fa4bf18a78a3e731ba20a6c104940a5539f3');\nhashMap.set('jsonnet-bundler','f918a7f378dc207cadf291e7481006008c69623f690902ed921e1e33db270b78');\nhashMap.set('kotlin-script','99ef296792a0ca575ed31d3defb514b05a58083dc01c52ea0890c69d867ba1dd');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','c6ee547378d5c5619a0fe94be35f9838e0f006b4807a896e9caefefa20efacf7');\nhashMap.set('leiningen','133fca2c3423f53f2ccc22518153ddbcafbf0f4812376c77e952eb3d24d81f85');\nhashMap.set('maven','2bf7b65d51718daf3eec4f30c0fc7f2f045f4f8f24862bebe17c2174abb606b9');\nhashMap.set('maven-wrapper','976ed8a59cf43b0c765b1a49ebc5669478e78278cf48f4ce3d0deb49647d10e3');\nhashMap.set('meteor','4a93a326b27bedfe52118e27e06f39fecd7c55bd4cd7fccec4cb120cac14cec4');\nhashMap.set('mint','248fe4f1ea5c985921c286785792c97e06fc41f402b2d45df82f6aecd17f710e');\nhashMap.set('mise','633e7e325055c9a39413dbce346c32cda6dec83ed9f20d6cdfc7d1255b94bafb');\nhashMap.set('mix','ead2078c33550ec8695298c053f549866e1701fa096440d4228e3e51f8f1e49c');\nhashMap.set('nix','95f0827f7ec9a3bfd5119534f129aad6cf26b28e99d55aec0945f08bbfff9fb1');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','e678d3f9b386632766452c93fd1b04eb6849fdb4a6dcc5c9e0fff10ce4d293fa');\nhashMap.set('nuget','54c1e149b47e4f588e99857e3e62b420f50649a868a28944a0c82a7b7fb530e7');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','32233a1a8a2725699d7448ba438e3d0b78141f7799cd2b588de278d41e26ed10');\nhashMap.set('pep621','fffd093eaf6de3cab7b2f6b57e57715aa240fcd958954f31fbc47f18e1730a4d');\nhashMap.set('pep723','b96683163de63ed93207ec0538066705b1e58a1cd5b8bd11c63fc28b26bddba1');\nhashMap.set('pip-compile','5bf2798666b36b613ce61ca8101b6d17100e062a6dd5866a4e91c6a266f19333');\nhashMap.set('pip_requirements','5ef648e398281294c79ec5dc56a868af904efddc536c9ce8d693a8425afd9677');\nhashMap.set('pip_setup','0175fe550c19d9bd31c978bd83fdc088cb40fcacd5d6751f640164274ae64e61');\nhashMap.set('pipenv','1d0af710667f6dce377feae9aa238b21fe5e0e75e75758a70f5e9758c6cb6678');\nhashMap.set('pixi','7d183aaae4370a0c62496bbff60ad12fd4dd46822630541f712f437dcea021e1');\nhashMap.set('poetry','0211739556f8193c70fa69cbf66c60e688042fd7dc7a2fe08f9f328b35ad1f82');\nhashMap.set('pre-commit','a6a6e847fdb0f56650e66ef7d69e68de752b390913f79ac31d1a7ec5955d03da');\nhashMap.set('proto','412053d4550026b4ace490b46e970915b87ec1abf0b0a0c6c8c58ccf1fc16843');\nhashMap.set('pub','aad0dd6524158fda5345d75662f337b275c6c46b29f051ba94201d42c22b0da8');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','e355e13e104351a8b3516a8e272fc5f7e625c9f39b0c492ba27283a36227c2d4');\nhashMap.set('renovate-config','2a4e4fb671aed5d0c900b8d54c31bfef46ca36d0f4e16b00ff73377b9c09fb69');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('rust-toolchain','e957f1f1563af4e5fbd1c552ca15632b7808d9d2e51ec0da6022a1f84372caec');\nhashMap.set('sbt','74125bd9c76a5724092258cd1dee1ea99fc0d735b463a2b64fedc5d950efde2a');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','7dea08c5708625e753bd56918bc214df7fb4d8543a26e936926a21ab43b5f785');\nhashMap.set('sveltos','05b3158e88771ed4629e171592cf4f1bf0ff342f8aeae89be0b340c630cc6d8e');\nhashMap.set('swift','56cdc6fe4cd00519f953459f94323c71677f6bde007537eef891154fb8696db1');\nhashMap.set('tekton','fdc5b9b5edec2a90cda2f858f3ebc532aa8efb1187d1e0b7c89b07796e9cb6cd');\nhashMap.set('terraform','045931e1d5ae5607fb7fbcdfe6d2cd9cf45020432de7c78fbb3432579c8b3310');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','142c3f0549c4152297615b5bbf3a78ba8f7ce6a0cebcea63b81e9815dca40494');\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','dfd7b905577b362093ce72e6ee597308f97c83678ddb15d6455a1627969b8b7d');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('xcodegen','dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683');\nhashMap.set('jsonata','06d83ae6bf80f77b12638d5c785f30bfce4195a37a63026f60e4c16c960ae18b');\nhashMap.set('regex','dbe6889ea021a05127fed06226d73366fdada2ae577147a5c027996fd325416e');"],"mappings":";AAAA,MAAa,0BAAU,IAAI,IAAoB;AAE/C,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,mBAAkB,kEAAkE;AAChG,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,gBAAe,kEAAkE;AAC7F,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,uBAAsB,kEAAkE;AACpG,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,eAAc,kEAAkE;AAC5F,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,gBAAe,kEAAkE;AAC7F,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,oBAAmB,kEAAkE;AACjG,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,iBAAgB,kEAAkE;AAC9F,QAAQ,IAAI,qBAAoB,kEAAkE;AAClG,QAAQ,IAAI,eAAc,kEAAkE;AAC5F,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,0BAAyB,kEAAkE;AACvG,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,mBAAkB,kEAAkE;AAChG,QAAQ,IAAI,iBAAgB,kEAAkE;AAC9F,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,iBAAgB,kEAAkE;AAC9F,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,eAAc,kEAAkE;AAC5F,QAAQ,IAAI,oBAAmB,kEAAkE;AACjG,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,mBAAkB,kEAAkE;AAChG,QAAQ,IAAI,gBAAe,kEAAkE;AAC7F,QAAQ,IAAI,mBAAkB,kEAAkE;AAChG,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,qBAAoB,kEAAkE;AAClG,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,sBAAqB,kEAAkE;AACnG,QAAQ,IAAI,iBAAgB,kEAAkE;AAC9F,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,SAAQ,kEAAkE"}
@@ -27,9 +27,8 @@ async function extractPackageFile(content, packageFile) {
27
27
  depBuffer += `${contentArr[lineNumber]}\n`;
28
28
  lineNumber += 1;
29
29
  } while (contentArr[lineNumber].trim() !== "end");
30
- let depMatchGroups = depMatchRegExp.exec(depBuffer)?.groups;
31
- while (depMatchGroups) {
32
- const { app, requirement, opts } = depMatchGroups;
30
+ for (const depMatch of depBuffer.matchAll(depMatchRegExp)) {
31
+ const { app, requirement, opts } = depMatch.groups;
33
32
  const github = githubRegexp.exec(opts)?.groups?.value;
34
33
  const git = gitRegexp.exec(opts)?.groups?.value;
35
34
  const ref = refRegexp.exec(opts)?.groups?.value;
@@ -39,8 +38,7 @@ async function extractPackageFile(content, packageFile) {
39
38
  const hex = hexGroups?.strValue ?? hexGroups?.atomValue;
40
39
  const onlyValue = onlyValueRegexp.exec(opts)?.groups?.only;
41
40
  const onlyEnvironments = [];
42
- let match;
43
- if (onlyValue) while ((match = onlyEnvironmentsRegexp.exec(onlyValue)) !== null) onlyEnvironments.push(match[1]);
41
+ if (onlyValue) for (const match of onlyValue.matchAll(onlyEnvironmentsRegexp)) onlyEnvironments.push(match[1]);
44
42
  const dep = {
45
43
  depName: app,
46
44
  depType: "prod"
@@ -61,7 +59,6 @@ async function extractPackageFile(content, packageFile) {
61
59
  if (onlyValue !== void 0 && !onlyEnvironments.includes("prod")) dep.depType = "dev";
62
60
  deps.set(app, dep);
63
61
  logger.trace({ dep }, `setting ${app}`);
64
- depMatchGroups = depMatchRegExp.exec(depBuffer)?.groups;
65
62
  }
66
63
  }
67
64
  const lockFileName = await findLocalSiblingOrParent(packageFile, "mix.lock") ?? "mix.lock";
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/mix/extract.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport {\n findLocalSiblingOrParent,\n readLocalFile,\n} from '../../../util/fs/index.ts';\nimport { newlineRegex, regEx } from '../../../util/regex.ts';\nimport { GitTagsDatasource } from '../../datasource/git-tags/index.ts';\nimport { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';\nimport { HexDatasource } from '../../datasource/hex/index.ts';\nimport type { PackageDependency, PackageFileContent } from '../types.ts';\n\nconst depSectionRegExp = regEx(/defp\\s+deps.*do/g);\nconst depMatchRegExp = regEx(\n /{:(?<app>\\w+)(\\s*,\\s*\"(?<requirement>[^\"]+)\")?(\\s*,\\s*(?<opts>[^}]+))?}/gm,\n);\nconst gitRegexp = regEx(/git:\\s*\"(?<value>[^\"]+)\"/);\nconst githubRegexp = regEx(/github:\\s*\"(?<value>[^\"]+)\"/);\nconst refRegexp = regEx(/ref:\\s*\"(?<value>[^\"]+)\"/);\nconst branchOrTagRegexp = regEx(/(?:branch|tag):\\s*\"(?<value>[^\"]+)\"/);\nconst organizationRegexp = regEx(/organization:\\s*\"(?<value>[^\"]+)\"/);\nconst commentMatchRegExp = regEx(/#.*$/);\nconst lockedVersionRegExp = regEx(\n /^\\s+\"(?<app>\\w+)\".*?\"(?<lockedVersion>\\d+\\.\\d+\\.\\d+)\"/,\n);\nconst hexRegexp = regEx(/hex:\\s*(?:\"(?<strValue>[^\"]+)\"|:(?<atomValue>\\w+))/);\nconst onlyValueRegexp = regEx(/only:\\s*(?<only>\\[[^\\]]*\\]|:\\w+)/);\nconst onlyEnvironmentsRegexp = regEx(/:(\\w+)/gm);\n\nexport async function extractPackageFile(\n content: string,\n packageFile: string,\n): Promise<PackageFileContent | null> {\n logger.trace(`mix.extractPackageFile(${packageFile})`);\n const deps = new Map<string, PackageDependency>();\n const contentArr = content\n .split(newlineRegex)\n .map((line) => line.replace(commentMatchRegExp, ''));\n for (let lineNumber = 0; lineNumber < contentArr.length; lineNumber += 1) {\n if (contentArr[lineNumber].match(depSectionRegExp)) {\n let depBuffer = '';\n do {\n depBuffer += `${contentArr[lineNumber]}\\n`;\n lineNumber += 1;\n } while (contentArr[lineNumber].trim() !== 'end');\n let depMatchGroups = depMatchRegExp.exec(depBuffer)?.groups;\n while (depMatchGroups) {\n const { app, requirement, opts } = depMatchGroups;\n const github = githubRegexp.exec(opts)?.groups?.value;\n const git = gitRegexp.exec(opts)?.groups?.value;\n const ref = refRegexp.exec(opts)?.groups?.value;\n const branchOrTag = branchOrTagRegexp.exec(opts)?.groups?.value;\n const organization = organizationRegexp.exec(opts)?.groups?.value;\n const hexGroups = hexRegexp.exec(opts)?.groups;\n const hex = hexGroups?.strValue ?? hexGroups?.atomValue;\n\n const onlyValue = onlyValueRegexp.exec(opts)?.groups?.only;\n const onlyEnvironments = [];\n let match;\n if (onlyValue) {\n while ((match = onlyEnvironmentsRegexp.exec(onlyValue)) !== null) {\n onlyEnvironments.push(match[1]);\n }\n }\n\n const dep: PackageDependency = {\n depName: app,\n depType: 'prod',\n };\n\n if (git ?? github) {\n dep.currentDigest = ref;\n dep.currentValue = branchOrTag;\n dep.datasource = git ? GitTagsDatasource.id : GithubTagsDatasource.id;\n dep.packageName = git ?? github;\n } else {\n dep.currentValue = requirement;\n dep.datasource = HexDatasource.id;\n if (organization) {\n dep.packageName = `${app}:${organization}`;\n } else if (hex) {\n dep.packageName = hex;\n } else {\n dep.packageName = app;\n }\n\n if (requirement?.startsWith('==')) {\n dep.currentVersion = requirement.replace(regEx(/^==\\s*/), '');\n }\n }\n\n if (onlyValue !== undefined && !onlyEnvironments.includes('prod')) {\n dep.depType = 'dev';\n }\n\n deps.set(app, dep);\n logger.trace({ dep }, `setting ${app}`);\n depMatchGroups = depMatchRegExp.exec(depBuffer)?.groups;\n }\n }\n }\n const lockFileName =\n (await findLocalSiblingOrParent(packageFile, 'mix.lock')) ?? 'mix.lock';\n const lockFileContent = await readLocalFile(lockFileName, 'utf8');\n\n if (lockFileContent) {\n const lockFileLines = lockFileContent.split(newlineRegex).slice(1, -1);\n\n for (const line of lockFileLines) {\n const groups = lockedVersionRegExp.exec(line)?.groups;\n if (groups?.app && groups?.lockedVersion) {\n const dep = deps.get(groups.app);\n if (!dep) {\n continue;\n }\n dep.lockedVersion = groups.lockedVersion;\n logger.trace(`Found ${groups.lockedVersion} for ${groups.app}`);\n }\n }\n }\n const depsArray = Array.from(deps.values());\n if (depsArray.length === 0) {\n return null;\n }\n return {\n deps: depsArray,\n lockFiles: lockFileContent ? [lockFileName] : undefined,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/mix/extract.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport {\n findLocalSiblingOrParent,\n readLocalFile,\n} from '../../../util/fs/index.ts';\nimport { newlineRegex, regEx } from '../../../util/regex.ts';\nimport { GitTagsDatasource } from '../../datasource/git-tags/index.ts';\nimport { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';\nimport { HexDatasource } from '../../datasource/hex/index.ts';\nimport type { PackageDependency, PackageFileContent } from '../types.ts';\n\nconst depSectionRegExp = regEx(/defp\\s+deps.*do/g);\nconst depMatchRegExp = regEx(\n /{:(?<app>\\w+)(\\s*,\\s*\"(?<requirement>[^\"]+)\")?(\\s*,\\s*(?<opts>[^}]+))?}/gm,\n);\nconst gitRegexp = regEx(/git:\\s*\"(?<value>[^\"]+)\"/);\nconst githubRegexp = regEx(/github:\\s*\"(?<value>[^\"]+)\"/);\nconst refRegexp = regEx(/ref:\\s*\"(?<value>[^\"]+)\"/);\nconst branchOrTagRegexp = regEx(/(?:branch|tag):\\s*\"(?<value>[^\"]+)\"/);\nconst organizationRegexp = regEx(/organization:\\s*\"(?<value>[^\"]+)\"/);\nconst commentMatchRegExp = regEx(/#.*$/);\nconst lockedVersionRegExp = regEx(\n /^\\s+\"(?<app>\\w+)\".*?\"(?<lockedVersion>\\d+\\.\\d+\\.\\d+)\"/,\n);\nconst hexRegexp = regEx(/hex:\\s*(?:\"(?<strValue>[^\"]+)\"|:(?<atomValue>\\w+))/);\nconst onlyValueRegexp = regEx(/only:\\s*(?<only>\\[[^\\]]*\\]|:\\w+)/);\nconst onlyEnvironmentsRegexp = regEx(/:(\\w+)/gm);\n\nexport async function extractPackageFile(\n content: string,\n packageFile: string,\n): Promise<PackageFileContent | null> {\n logger.trace(`mix.extractPackageFile(${packageFile})`);\n const deps = new Map<string, PackageDependency>();\n const contentArr = content\n .split(newlineRegex)\n .map((line) => line.replace(commentMatchRegExp, ''));\n for (let lineNumber = 0; lineNumber < contentArr.length; lineNumber += 1) {\n if (contentArr[lineNumber].match(depSectionRegExp)) {\n let depBuffer = '';\n do {\n depBuffer += `${contentArr[lineNumber]}\\n`;\n lineNumber += 1;\n } while (contentArr[lineNumber].trim() !== 'end');\n for (const depMatch of depBuffer.matchAll(depMatchRegExp)) {\n const { app, requirement, opts } = depMatch.groups!;\n const github = githubRegexp.exec(opts)?.groups?.value;\n const git = gitRegexp.exec(opts)?.groups?.value;\n const ref = refRegexp.exec(opts)?.groups?.value;\n const branchOrTag = branchOrTagRegexp.exec(opts)?.groups?.value;\n const organization = organizationRegexp.exec(opts)?.groups?.value;\n const hexGroups = hexRegexp.exec(opts)?.groups;\n const hex = hexGroups?.strValue ?? hexGroups?.atomValue;\n\n const onlyValue = onlyValueRegexp.exec(opts)?.groups?.only;\n const onlyEnvironments = [];\n if (onlyValue) {\n for (const match of onlyValue.matchAll(onlyEnvironmentsRegexp)) {\n onlyEnvironments.push(match[1]);\n }\n }\n\n const dep: PackageDependency = {\n depName: app,\n depType: 'prod',\n };\n\n if (git ?? github) {\n dep.currentDigest = ref;\n dep.currentValue = branchOrTag;\n dep.datasource = git ? GitTagsDatasource.id : GithubTagsDatasource.id;\n dep.packageName = git ?? github;\n } else {\n dep.currentValue = requirement;\n dep.datasource = HexDatasource.id;\n if (organization) {\n dep.packageName = `${app}:${organization}`;\n } else if (hex) {\n dep.packageName = hex;\n } else {\n dep.packageName = app;\n }\n\n if (requirement?.startsWith('==')) {\n dep.currentVersion = requirement.replace(regEx(/^==\\s*/), '');\n }\n }\n\n if (onlyValue !== undefined && !onlyEnvironments.includes('prod')) {\n dep.depType = 'dev';\n }\n\n deps.set(app, dep);\n logger.trace({ dep }, `setting ${app}`);\n }\n }\n }\n const lockFileName =\n (await findLocalSiblingOrParent(packageFile, 'mix.lock')) ?? 'mix.lock';\n const lockFileContent = await readLocalFile(lockFileName, 'utf8');\n\n if (lockFileContent) {\n const lockFileLines = lockFileContent.split(newlineRegex).slice(1, -1);\n\n for (const line of lockFileLines) {\n const groups = lockedVersionRegExp.exec(line)?.groups;\n if (groups?.app && groups?.lockedVersion) {\n const dep = deps.get(groups.app);\n if (!dep) {\n continue;\n }\n dep.lockedVersion = groups.lockedVersion;\n logger.trace(`Found ${groups.lockedVersion} for ${groups.app}`);\n }\n }\n }\n const depsArray = Array.from(deps.values());\n if (depsArray.length === 0) {\n return null;\n }\n return {\n deps: depsArray,\n lockFiles: lockFileContent ? [lockFileName] : undefined,\n };\n}\n"],"mappings":"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"}
@@ -1,12 +1,60 @@
1
1
  import { sanitize } from "../../../util/sanitize.js";
2
2
  import { logger } from "../../../logger/index.js";
3
+ import { Lazy } from "../../../util/lazy.js";
3
4
  import { workItemTrackingApi } from "./azure-got-wrapper.js";
4
5
  import { getWorkItemTitle } from "./util.js";
5
6
  //#region lib/modules/platform/azure/issue.ts
7
+ const workItemType = "Issue";
8
+ const defaultOpenState = "New";
9
+ const defaultClosedState = "Closed";
10
+ const openCategories = ["Proposed", "InProgress"];
11
+ const closedCategories = [
12
+ "Completed",
13
+ "Resolved",
14
+ "Removed"
15
+ ];
16
+ /**
17
+ * Return the names of the states whose category is one of `categories`,
18
+ * preserving the order Azure DevOps returns them in (workflow order).
19
+ */
20
+ function namesByCategory(stateColors, categories) {
21
+ return stateColors.filter((s) => s.category && categories.includes(s.category) && s.name).map((s) => s.name);
22
+ }
6
23
  var IssueService = class {
7
24
  config;
25
+ workItemStates;
8
26
  constructor(config) {
9
27
  this.config = config;
28
+ this.workItemStates = new Lazy(() => this.resolveWorkItemStates());
29
+ }
30
+ /**
31
+ * Resolve the concrete open/closed state names for the `Issue` work item type
32
+ * from its process, so Renovate does not depend on hardcoded state names that
33
+ * only exist in some Azure DevOps processes. Falls back to the historical
34
+ * `New`/`Closed` values if the states cannot be fetched.
35
+ */
36
+ async resolveWorkItemStates() {
37
+ const states = {
38
+ open: defaultOpenState,
39
+ closed: defaultClosedState,
40
+ closedNames: /* @__PURE__ */ new Set([defaultClosedState])
41
+ };
42
+ try {
43
+ const stateColors = await (await workItemTrackingApi()).getWorkItemTypeStates(this.config.project, workItemType);
44
+ if (stateColors?.length) {
45
+ const openNames = namesByCategory(stateColors, openCategories);
46
+ const completed = stateColors.find((s) => s.category === "Completed" && s.name);
47
+ const closedNames = namesByCategory(stateColors, closedCategories);
48
+ states.open = openNames[0] ?? stateColors[0].name ?? states.open;
49
+ if (closedNames.length) {
50
+ states.closed = completed?.name ?? closedNames[0];
51
+ states.closedNames = new Set(closedNames);
52
+ }
53
+ }
54
+ } catch (err) {
55
+ logger.debug({ err }, "Azure: could not resolve work item states, using default state names");
56
+ }
57
+ return states;
10
58
  }
11
59
  async findIssue(title) {
12
60
  logger.debug(`findIssue(${title})`);
@@ -25,7 +73,7 @@ var IssueService = class {
25
73
  let wiql = `
26
74
  SELECT [System.Id]
27
75
  FROM WorkItems
28
- WHERE [System.WorkItemType] = 'Issue'
76
+ WHERE [System.WorkItemType] = '${workItemType}'
29
77
  AND [System.TeamProject] = '${this.config.project}'
30
78
  `;
31
79
  if (titleFilter) {
@@ -38,17 +86,19 @@ var IssueService = class {
38
86
  return [];
39
87
  }
40
88
  const workItemIds = result.workItems.map((wi) => wi.id);
41
- return (await azureApiWit.getWorkItems(workItemIds, [
89
+ const workItems = await azureApiWit.getWorkItems(workItemIds, [
42
90
  "System.Id",
43
91
  "System.Title",
44
92
  "System.State",
45
93
  "System.Description",
46
94
  "System.CreatedDate",
47
95
  "System.ChangedDate"
48
- ])).map((wi) => ({
96
+ ]);
97
+ const { closedNames } = await this.workItemStates.getValue();
98
+ return workItems.map((wi) => ({
49
99
  number: wi.id,
50
100
  title: wi.fields["System.Title"],
51
- state: wi.fields["System.State"] === "Closed" ? "closed" : "open",
101
+ state: closedNames.has(wi.fields["System.State"]) ? "closed" : "open",
52
102
  body: wi.fields["System.Description"],
53
103
  createdAt: wi.fields["System.CreatedDate"],
54
104
  lastModified: wi.fields["System.ChangedDate"]
@@ -63,10 +113,12 @@ var IssueService = class {
63
113
  try {
64
114
  const issue = await this.findIssue(title);
65
115
  if (issue?.state === "open" && issue.number) {
66
- await (await workItemTrackingApi()).updateWorkItem(void 0, [{
116
+ const azureApiWit = await workItemTrackingApi();
117
+ const { closed } = await this.workItemStates.getValue();
118
+ await azureApiWit.updateWorkItem(void 0, [{
67
119
  op: "replace",
68
120
  path: "/fields/System.State",
69
- value: "Closed"
121
+ value: closed
70
122
  }], issue.number, this.config.project);
71
123
  logger.debug(`Closed issue #${issue.number}: ${title}`);
72
124
  }
@@ -80,6 +132,7 @@ var IssueService = class {
80
132
  const azureApiWit = await workItemTrackingApi();
81
133
  const finalTitle = getWorkItemTitle(title, this.config.repository);
82
134
  const issues = await this.getIssueList(finalTitle);
135
+ const { open, closed } = await this.workItemStates.getValue();
83
136
  const openIssues = issues.filter((issue) => issue.state === "open");
84
137
  if (openIssues.length > 1) for (let i = 1; i < openIssues.length; i++) {
85
138
  const issueNumber = openIssues[i].number;
@@ -87,7 +140,7 @@ var IssueService = class {
87
140
  await azureApiWit.updateWorkItem(void 0, [{
88
141
  op: "replace",
89
142
  path: "/fields/System.State",
90
- value: "Closed"
143
+ value: closed
91
144
  }], issueNumber, this.config.project);
92
145
  logger.info(`Closed duplicate issue #${issueNumber}`);
93
146
  }
@@ -106,7 +159,7 @@ var IssueService = class {
106
159
  {
107
160
  op: "replace",
108
161
  path: "/fields/System.State",
109
- value: "New"
162
+ value: open
110
163
  },
111
164
  {
112
165
  op: "replace",
@@ -160,7 +213,7 @@ var IssueService = class {
160
213
  {
161
214
  op: "add",
162
215
  path: "/fields/System.WorkItemType",
163
- value: "Issue"
216
+ value: workItemType
164
217
  },
165
218
  {
166
219
  op: "add",
@@ -176,13 +229,8 @@ var IssueService = class {
176
229
  op: "add",
177
230
  path: "/multilineFieldsFormat/System.Description",
178
231
  value: "Markdown"
179
- },
180
- {
181
- op: "add",
182
- path: "/fields/System.State",
183
- value: "New"
184
232
  }
185
- ], this.config.project, "Issue");
233
+ ], this.config.project, workItemType);
186
234
  logger.debug(`Created new issue #${newWorkItem.id}`);
187
235
  return "created";
188
236
  } catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"issue.js","names":["azureApi.workItemTrackingApi"],"sources":["../../../../lib/modules/platform/azure/issue.ts"],"sourcesContent":["import type { WorkItem } from 'azure-devops-node-api/interfaces/WorkItemTrackingInterfaces.js';\nimport { logger } from '../../../logger/index.ts';\nimport { sanitize } from '../../../util/sanitize.ts';\nimport type { EnsureIssueConfig, EnsureIssueResult, Issue } from '../types.ts';\nimport * as azureApi from './azure-got-wrapper.ts';\nimport type { Config } from './types.ts';\nimport { getWorkItemTitle } from './util.ts';\n\nexport class IssueService {\n private config: Config;\n\n constructor(config: Config) {\n this.config = config;\n }\n\n async findIssue(title: string): Promise<Issue | null> {\n logger.debug(`findIssue(${title})`);\n try {\n const finalTitle = getWorkItemTitle(title, this.config.repository);\n const issues = await this.getIssueList(finalTitle);\n return issues[0] ?? null;\n } catch (err) {\n logger.error({ err }, 'Error finding issue');\n return null;\n }\n }\n\n async getIssueList(titleFilter?: string): Promise<Issue[]> {\n logger.debug('getIssueList()');\n try {\n const azureApiWit = await azureApi.workItemTrackingApi();\n\n let wiql = `\n SELECT [System.Id]\n FROM WorkItems\n WHERE [System.WorkItemType] = 'Issue'\n AND [System.TeamProject] = '${this.config.project}'\n `;\n\n if (titleFilter) {\n const escapedTitle = titleFilter.replace(/'/g, \"''\");\n wiql += ` AND [System.Title] = '${escapedTitle}'`;\n }\n\n const result = await azureApiWit.queryByWiql({ query: wiql });\n\n if (!result.workItems?.length) {\n logger.debug('getIssueList() no work items found');\n return [];\n }\n\n const workItemIds = result.workItems.map((wi: WorkItem) => wi.id!);\n const workItems = await azureApiWit.getWorkItems(workItemIds, [\n 'System.Id',\n 'System.Title',\n 'System.State',\n 'System.Description',\n 'System.CreatedDate',\n 'System.ChangedDate',\n ]);\n\n return workItems.map((wi: WorkItem) => ({\n number: wi.id!,\n title: wi.fields!['System.Title'],\n state: wi.fields!['System.State'] === 'Closed' ? 'closed' : 'open',\n body: wi.fields!['System.Description'],\n createdAt: wi.fields!['System.CreatedDate'],\n lastModified: wi.fields!['System.ChangedDate'],\n }));\n } catch (err) {\n logger.warn({ err }, 'Error fetching issue list');\n return [];\n }\n }\n\n async ensureIssueClosing(title: string): Promise<void> {\n logger.debug(`ensureIssueClosing(${title})`);\n try {\n const issue = await this.findIssue(title);\n if (issue?.state === 'open' && issue.number) {\n const azureApiWit = await azureApi.workItemTrackingApi();\n await azureApiWit.updateWorkItem(\n undefined,\n [{ op: 'replace', path: '/fields/System.State', value: 'Closed' }],\n issue.number,\n this.config.project,\n );\n logger.debug(`Closed issue #${issue.number}: ${title}`);\n }\n } catch (err) {\n logger.error({ err }, 'Error closing issue');\n }\n }\n\n async ensureIssue({\n title,\n body,\n once = false,\n shouldReOpen = true,\n }: EnsureIssueConfig): Promise<EnsureIssueResult | null> {\n logger.debug(`ensureIssue()`);\n\n try {\n const azureApiWit = await azureApi.workItemTrackingApi();\n const finalTitle = getWorkItemTitle(title, this.config.repository);\n const issues = await this.getIssueList(finalTitle);\n\n // Close duplicate open issues if any\n const openIssues = issues.filter((issue) => issue.state === 'open');\n if (openIssues.length > 1) {\n for (let i = 1; i < openIssues.length; i++) {\n const issueNumber = openIssues[i].number;\n if (issueNumber) {\n await azureApiWit.updateWorkItem(\n undefined,\n [\n {\n op: 'replace',\n path: '/fields/System.State',\n value: 'Closed',\n },\n ],\n issueNumber,\n this.config.project,\n );\n logger.info(`Closed duplicate issue #${issueNumber}`);\n }\n }\n }\n\n const existingIssue =\n openIssues[0] ?? issues.find((issue) => issue.state === 'closed');\n\n if (existingIssue) {\n if (existingIssue.state === 'closed' && once) {\n logger.debug('Issue already closed - skipping update');\n return null;\n } else if (existingIssue.state === 'closed' && shouldReOpen) {\n // Reopen and update work item\n if (!existingIssue.number) {\n logger.warn('Cannot reopen issue without number');\n return null;\n }\n await azureApiWit.updateWorkItem(\n undefined,\n [\n { op: 'replace', path: '/fields/System.State', value: 'New' },\n {\n op: 'replace',\n path: '/fields/System.Title',\n value: finalTitle,\n },\n {\n op: 'replace',\n path: '/fields/System.Description',\n value: sanitize(body),\n },\n {\n op: 'replace',\n path: '/multilineFieldsFormat/System.Description',\n value: 'Markdown',\n },\n ],\n existingIssue.number,\n this.config.project,\n );\n logger.debug(`Reopened issue #${existingIssue.number}`);\n return 'updated';\n } else if (existingIssue.state === 'open') {\n // Update work item if needed\n if (\n existingIssue.title !== finalTitle ||\n existingIssue.body !== body\n ) {\n if (!existingIssue.number) {\n logger.warn('Cannot update issue without number');\n return null;\n }\n await azureApiWit.updateWorkItem(\n undefined,\n [\n {\n op: 'replace',\n path: '/fields/System.Title',\n value: finalTitle,\n },\n {\n op: 'replace',\n path: '/fields/System.Description',\n value: sanitize(body),\n },\n {\n op: 'replace',\n path: '/multilineFieldsFormat/System.Description',\n value: 'Markdown',\n },\n ],\n existingIssue.number,\n this.config.project,\n );\n logger.debug(`Updated issue #${existingIssue.number}`);\n return 'updated';\n }\n logger.debug(`Issue #${existingIssue.number} is already up-to-date`);\n return 'updated';\n }\n }\n\n // Create new work item if none found\n const newWorkItem = await azureApiWit.createWorkItem(\n undefined,\n [\n { op: 'add', path: '/fields/System.WorkItemType', value: 'Issue' },\n { op: 'add', path: '/fields/System.Title', value: finalTitle },\n {\n op: 'add',\n path: '/fields/System.Description',\n value: sanitize(body),\n },\n {\n op: 'add',\n path: '/multilineFieldsFormat/System.Description',\n value: 'Markdown',\n },\n { op: 'add', path: '/fields/System.State', value: 'New' },\n ],\n this.config.project,\n 'Issue',\n );\n\n logger.debug(`Created new issue #${newWorkItem.id}`);\n return 'created';\n } catch (err) {\n logger.warn({ err }, 'Error ensuring issue');\n return null;\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"issue.js","names":["azureApi.workItemTrackingApi"],"sources":["../../../../lib/modules/platform/azure/issue.ts"],"sourcesContent":["import type {\n WorkItem,\n WorkItemStateColor,\n} from 'azure-devops-node-api/interfaces/WorkItemTrackingInterfaces.js';\nimport { logger } from '../../../logger/index.ts';\nimport { Lazy } from '../../../util/lazy.ts';\nimport { sanitize } from '../../../util/sanitize.ts';\nimport type { EnsureIssueConfig, EnsureIssueResult, Issue } from '../types.ts';\nimport * as azureApi from './azure-got-wrapper.ts';\nimport type { Config } from './types.ts';\nimport { getWorkItemTitle } from './util.ts';\n\nconst workItemType = 'Issue';\n\n// Historical fallbacks, used when the work item type's states cannot be\n// resolved from the API (e.g. Azure DevOps Server versions without the\n// endpoint). These match the values Renovate hardcoded previously.\nconst defaultOpenState = 'New';\nconst defaultClosedState = 'Closed';\n\n// Azure Boards groups every work item state into one of these meta-state\n// categories. Which concrete state name maps to a category depends on the\n// project's process (Basic: To Do/Doing/Done, Agile: New/Active/.../Closed,\n// custom inherited processes: anything). Categories are stable, so we resolve\n// the concrete names from them instead of hardcoding process-specific values.\nconst openCategories = ['Proposed', 'InProgress'];\nconst closedCategories = ['Completed', 'Resolved', 'Removed'];\n\ninterface WorkItemStates {\n /** State to move a work item to when (re)opening it. */\n open: string;\n /** State to move a work item to when closing it. */\n closed: string;\n /** All state names that represent a closed/completed work item. */\n closedNames: Set<string>;\n}\n\n/**\n * Return the names of the states whose category is one of `categories`,\n * preserving the order Azure DevOps returns them in (workflow order).\n */\nfunction namesByCategory(\n stateColors: WorkItemStateColor[],\n categories: string[],\n): string[] {\n return stateColors\n .filter((s) => s.category && categories.includes(s.category) && s.name)\n .map((s) => s.name!);\n}\n\nexport class IssueService {\n private config: Config;\n private readonly workItemStates: Lazy<Promise<WorkItemStates>>;\n\n constructor(config: Config) {\n this.config = config;\n // Wrapped in `Lazy` so concurrent callers share a single resolution\n // instead of each firing a duplicate `getWorkItemTypeStates` request.\n this.workItemStates = new Lazy(() => this.resolveWorkItemStates());\n }\n\n /**\n * Resolve the concrete open/closed state names for the `Issue` work item type\n * from its process, so Renovate does not depend on hardcoded state names that\n * only exist in some Azure DevOps processes. Falls back to the historical\n * `New`/`Closed` values if the states cannot be fetched.\n */\n private async resolveWorkItemStates(): Promise<WorkItemStates> {\n const states: WorkItemStates = {\n open: defaultOpenState,\n closed: defaultClosedState,\n closedNames: new Set([defaultClosedState]),\n };\n\n try {\n const azureApiWit = await azureApi.workItemTrackingApi();\n const stateColors = await azureApiWit.getWorkItemTypeStates(\n this.config.project,\n workItemType,\n );\n\n if (stateColors?.length) {\n const openNames = namesByCategory(stateColors, openCategories);\n // A `Completed` state (e.g. Agile's `Closed`) is the true \"done\" state.\n // `Resolved`/`Removed` states also count as closed but must not be\n // picked over `Completed` when moving an item to closed.\n const completed = stateColors.find(\n (s) => s.category === 'Completed' && s.name,\n );\n const closedNames = namesByCategory(stateColors, closedCategories);\n\n // First open-category state, else the type's first state overall. If a\n // process somehow exposes only closed states, this falls back to a\n // closed state name; that is intentional (there is no better reopen\n // target) rather than a bug.\n states.open = openNames[0] ?? stateColors[0].name ?? states.open;\n if (closedNames.length) {\n // Prefer a `Completed` state as the close target so processes that\n // order `Resolved` before `Closed` (e.g. some custom Agile\n // inheritances) still close to `Closed`; fall back to the wider set\n // only when no `Completed` state exists. Keep the full set for\n // recognising already-closed items.\n states.closed = completed?.name ?? closedNames[0];\n states.closedNames = new Set(closedNames);\n }\n }\n } catch (err) {\n logger.debug(\n { err },\n 'Azure: could not resolve work item states, using default state names',\n );\n }\n\n return states;\n }\n\n async findIssue(title: string): Promise<Issue | null> {\n logger.debug(`findIssue(${title})`);\n try {\n const finalTitle = getWorkItemTitle(title, this.config.repository);\n const issues = await this.getIssueList(finalTitle);\n return issues[0] ?? null;\n } catch (err) {\n logger.error({ err }, 'Error finding issue');\n return null;\n }\n }\n\n async getIssueList(titleFilter?: string): Promise<Issue[]> {\n logger.debug('getIssueList()');\n try {\n const azureApiWit = await azureApi.workItemTrackingApi();\n\n let wiql = `\n SELECT [System.Id]\n FROM WorkItems\n WHERE [System.WorkItemType] = '${workItemType}'\n AND [System.TeamProject] = '${this.config.project}'\n `;\n\n if (titleFilter) {\n const escapedTitle = titleFilter.replace(/'/g, \"''\");\n wiql += ` AND [System.Title] = '${escapedTitle}'`;\n }\n\n const result = await azureApiWit.queryByWiql({ query: wiql });\n\n if (!result.workItems?.length) {\n logger.debug('getIssueList() no work items found');\n return [];\n }\n\n const workItemIds = result.workItems.map((wi: WorkItem) => wi.id!);\n const workItems = await azureApiWit.getWorkItems(workItemIds, [\n 'System.Id',\n 'System.Title',\n 'System.State',\n 'System.Description',\n 'System.CreatedDate',\n 'System.ChangedDate',\n ]);\n\n const { closedNames } = await this.workItemStates.getValue();\n\n return workItems.map((wi: WorkItem) => ({\n number: wi.id!,\n title: wi.fields!['System.Title'],\n state: closedNames.has(wi.fields!['System.State']) ? 'closed' : 'open',\n body: wi.fields!['System.Description'],\n createdAt: wi.fields!['System.CreatedDate'],\n lastModified: wi.fields!['System.ChangedDate'],\n }));\n } catch (err) {\n logger.warn({ err }, 'Error fetching issue list');\n return [];\n }\n }\n\n async ensureIssueClosing(title: string): Promise<void> {\n logger.debug(`ensureIssueClosing(${title})`);\n try {\n const issue = await this.findIssue(title);\n if (issue?.state === 'open' && issue.number) {\n const azureApiWit = await azureApi.workItemTrackingApi();\n const { closed } = await this.workItemStates.getValue();\n await azureApiWit.updateWorkItem(\n undefined,\n [{ op: 'replace', path: '/fields/System.State', value: closed }],\n issue.number,\n this.config.project,\n );\n logger.debug(`Closed issue #${issue.number}: ${title}`);\n }\n } catch (err) {\n logger.error({ err }, 'Error closing issue');\n }\n }\n\n async ensureIssue({\n title,\n body,\n once = false,\n shouldReOpen = true,\n }: EnsureIssueConfig): Promise<EnsureIssueResult | null> {\n logger.debug(`ensureIssue()`);\n\n try {\n const azureApiWit = await azureApi.workItemTrackingApi();\n const finalTitle = getWorkItemTitle(title, this.config.repository);\n const issues = await this.getIssueList(finalTitle);\n const { open, closed } = await this.workItemStates.getValue();\n\n // Close duplicate open issues if any\n const openIssues = issues.filter((issue) => issue.state === 'open');\n if (openIssues.length > 1) {\n for (let i = 1; i < openIssues.length; i++) {\n const issueNumber = openIssues[i].number;\n if (issueNumber) {\n await azureApiWit.updateWorkItem(\n undefined,\n [\n {\n op: 'replace',\n path: '/fields/System.State',\n value: closed,\n },\n ],\n issueNumber,\n this.config.project,\n );\n logger.info(`Closed duplicate issue #${issueNumber}`);\n }\n }\n }\n\n const existingIssue =\n openIssues[0] ?? issues.find((issue) => issue.state === 'closed');\n\n if (existingIssue) {\n if (existingIssue.state === 'closed' && once) {\n logger.debug('Issue already closed - skipping update');\n return null;\n } else if (existingIssue.state === 'closed' && shouldReOpen) {\n // Reopen and update work item\n if (!existingIssue.number) {\n logger.warn('Cannot reopen issue without number');\n return null;\n }\n await azureApiWit.updateWorkItem(\n undefined,\n [\n { op: 'replace', path: '/fields/System.State', value: open },\n {\n op: 'replace',\n path: '/fields/System.Title',\n value: finalTitle,\n },\n {\n op: 'replace',\n path: '/fields/System.Description',\n value: sanitize(body),\n },\n {\n op: 'replace',\n path: '/multilineFieldsFormat/System.Description',\n value: 'Markdown',\n },\n ],\n existingIssue.number,\n this.config.project,\n );\n logger.debug(`Reopened issue #${existingIssue.number}`);\n return 'updated';\n } else if (existingIssue.state === 'open') {\n // Update work item if needed\n if (\n existingIssue.title !== finalTitle ||\n existingIssue.body !== body\n ) {\n if (!existingIssue.number) {\n logger.warn('Cannot update issue without number');\n return null;\n }\n await azureApiWit.updateWorkItem(\n undefined,\n [\n {\n op: 'replace',\n path: '/fields/System.Title',\n value: finalTitle,\n },\n {\n op: 'replace',\n path: '/fields/System.Description',\n value: sanitize(body),\n },\n {\n op: 'replace',\n path: '/multilineFieldsFormat/System.Description',\n value: 'Markdown',\n },\n ],\n existingIssue.number,\n this.config.project,\n );\n logger.debug(`Updated issue #${existingIssue.number}`);\n return 'updated';\n }\n logger.debug(`Issue #${existingIssue.number} is already up-to-date`);\n return 'updated';\n }\n }\n\n // Create new work item if none found. System.State is intentionally\n // omitted so Azure DevOps applies the work item type's default initial\n // state for the project's process (e.g. `To Do` on Basic, `New`/`Active`\n // on Agile). Passing a hardcoded state fails on processes that lack it.\n const newWorkItem = await azureApiWit.createWorkItem(\n undefined,\n [\n {\n op: 'add',\n path: '/fields/System.WorkItemType',\n value: workItemType,\n },\n { op: 'add', path: '/fields/System.Title', value: finalTitle },\n {\n op: 'add',\n path: '/fields/System.Description',\n value: sanitize(body),\n },\n {\n op: 'add',\n path: '/multilineFieldsFormat/System.Description',\n value: 'Markdown',\n },\n ],\n this.config.project,\n workItemType,\n );\n\n logger.debug(`Created new issue #${newWorkItem.id}`);\n return 'created';\n } catch (err) {\n logger.warn({ err }, 'Error ensuring issue');\n return null;\n }\n }\n}\n"],"mappings":"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"}
@@ -49,7 +49,7 @@ function getMergeMethod(strategy) {
49
49
  }
50
50
  const API_PATH = "/api/v1";
51
51
  const DRAFT_PREFIX = "WIP: ";
52
- const reconfigurePrRegex = regEx(/reconfigure$/g);
52
+ const reconfigurePrRegex = regEx(/reconfigure$/);
53
53
  function toRenovatePR(data, author) {
54
54
  if (!data.base?.ref || !data.head?.label || !data.head?.sha || !data.head?.repo?.full_name) {
55
55
  logger.trace(`Skipping Pull Request #${data.number} due to missing base and/or head branch`);
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["hostRules.find"],"sources":["../../../../lib/modules/platform/forgejo/utils.ts"],"sourcesContent":["import { isNonEmptyArray } from '@sindresorhus/is';\nimport type { MergeStrategy } from '../../../config/types.ts';\nimport { CONFIG_GIT_URL_UNAVAILABLE } from '../../../constants/error-messages.ts';\nimport { logger } from '../../../logger/index.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport * as hostRules from '../../../util/host-rules.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { parseUrl } from '../../../util/url.ts';\nimport { getPrBodyStruct } from '../pr-body.ts';\nimport type { GitUrlOption, Pr } from '../types.ts';\nimport type { PR, PRMergeMethod, Repo } from './schema.ts';\n\nexport function smartLinks(body: string): string {\n return body\n ?.replace(regEx(/\\]\\(\\.\\.\\/issues\\//g), '](issues/')\n .replace(regEx(/\\]\\(\\.\\.\\/pull\\//g), '](pulls/');\n}\n\nexport function trimTrailingApiPath(url: string): string {\n return url?.replace(regEx(/api\\/v1\\/?$/g), '');\n}\n\nexport function getRepoUrl(\n repo: Repo,\n gitUrl: GitUrlOption | undefined,\n endpoint: string,\n): string {\n if (gitUrl === 'ssh') {\n if (!repo.ssh_url) {\n throw new Error(CONFIG_GIT_URL_UNAVAILABLE);\n }\n logger.debug(`Using SSH URL: ${repo.ssh_url}`);\n return repo.ssh_url;\n }\n\n // Find options for current host and determine Git endpoint\n const opts = hostRules.find({\n hostType: 'forgejo',\n url: endpoint,\n });\n\n if (gitUrl === 'endpoint') {\n const url = parseUrl(endpoint);\n if (!url) {\n throw new Error(CONFIG_GIT_URL_UNAVAILABLE);\n }\n url.username = opts.token ?? '';\n url.pathname = `${url.pathname}${repo.full_name}.git`;\n logger.debug(\n { url: url.toString() },\n 'using URL based on configured endpoint',\n );\n return url.toString();\n }\n\n if (!repo.clone_url) {\n throw new Error(CONFIG_GIT_URL_UNAVAILABLE);\n }\n\n logger.debug(`Using HTTP URL: ${repo.clone_url}`);\n const repoUrl = parseUrl(repo.clone_url);\n if (!repoUrl) {\n throw new Error(CONFIG_GIT_URL_UNAVAILABLE);\n }\n repoUrl.username = opts.token ?? '';\n return repoUrl.toString();\n}\n\nexport function getMergeMethod(\n strategy: MergeStrategy | undefined,\n): PRMergeMethod | null {\n switch (strategy) {\n case 'fast-forward':\n return 'rebase';\n case 'merge-commit':\n return 'merge';\n case 'rebase':\n return 'rebase-merge';\n case 'squash':\n return strategy;\n case 'auto':\n default:\n return null;\n }\n}\n\nexport const API_PATH = '/api/v1';\n\nexport const DRAFT_PREFIX = 'WIP: ';\nconst reconfigurePrRegex = regEx(/reconfigure$/g);\n\nexport function toRenovatePR(data: PR, author: string | null): Pr | null {\n if (\n !data.base?.ref ||\n !data.head?.label ||\n !data.head?.sha ||\n !data.head?.repo?.full_name\n ) {\n logger.trace(\n `Skipping Pull Request #${data.number} due to missing base and/or head branch`,\n );\n return null;\n }\n\n const createdBy = data.user?.login;\n if (\n createdBy &&\n author &&\n !reconfigurePrRegex.test(data.head.label) &&\n createdBy !== author\n ) {\n return null;\n }\n\n let title = data.title;\n let isDraft = false;\n if (title.startsWith(DRAFT_PREFIX)) {\n title = title.substring(DRAFT_PREFIX.length);\n isDraft = true;\n }\n const labels = coerceArray(data.labels).map((l) => l.name);\n\n return {\n labels,\n number: data.number,\n state: data.merged ? 'merged' : data.state,\n title,\n isDraft,\n bodyStruct: getPrBodyStruct(data.body),\n sha: data.head.sha,\n sourceBranch: data.head.label,\n targetBranch: data.base.ref,\n sourceRepo: data.head.repo.full_name,\n createdAt: data.created_at,\n cannotMergeReason: data.mergeable\n ? undefined\n : `pr.mergeable=\"${data.mergeable}\"`,\n hasAssignees: !!(data.assignee?.login ?? isNonEmptyArray(data.assignees)),\n };\n}\n\n/**\n * Check if a repository is usable.\n * A repo isn't usable if one of the following conditions is met:\n * - The repo is a `mirror`\n * - We don't have pull or push permissions\n * - Pull requests are disabled\n * @param repo Repo to check\n * @returns `true` if the repository is usable, `false` otherwise\n */\nexport function usableRepo(repo: Repo): boolean {\n if (repo.mirror === true) {\n return false;\n }\n\n if (repo.permissions.pull === false || repo.permissions.push === false) {\n logger.debug(\n `Skipping repository ${repo.full_name} because of missing pull or push permissions`,\n );\n return false;\n }\n\n if (repo.has_pull_requests === false) {\n logger.debug(\n `Skipping repository ${repo.full_name} because pull requests are disabled`,\n );\n return false;\n }\n return true;\n}\n\nexport function isAllowed(style: PRMergeMethod, repo: Repo): boolean {\n switch (style) {\n case 'merge':\n return repo.allow_merge_commits;\n case 'rebase':\n return repo.allow_rebase;\n case 'rebase-merge':\n return repo.allow_rebase_explicit;\n case 'squash':\n return repo.allow_squash_merge;\n case 'fast-forward-only':\n return repo.allow_fast_forward_only_merge;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","names":["hostRules.find"],"sources":["../../../../lib/modules/platform/forgejo/utils.ts"],"sourcesContent":["import { isNonEmptyArray } from '@sindresorhus/is';\nimport type { MergeStrategy } from '../../../config/types.ts';\nimport { CONFIG_GIT_URL_UNAVAILABLE } from '../../../constants/error-messages.ts';\nimport { logger } from '../../../logger/index.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport * as hostRules from '../../../util/host-rules.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { parseUrl } from '../../../util/url.ts';\nimport { getPrBodyStruct } from '../pr-body.ts';\nimport type { GitUrlOption, Pr } from '../types.ts';\nimport type { PR, PRMergeMethod, Repo } from './schema.ts';\n\nexport function smartLinks(body: string): string {\n return body\n ?.replace(regEx(/\\]\\(\\.\\.\\/issues\\//g), '](issues/')\n .replace(regEx(/\\]\\(\\.\\.\\/pull\\//g), '](pulls/');\n}\n\nexport function trimTrailingApiPath(url: string): string {\n return url?.replace(regEx(/api\\/v1\\/?$/g), '');\n}\n\nexport function getRepoUrl(\n repo: Repo,\n gitUrl: GitUrlOption | undefined,\n endpoint: string,\n): string {\n if (gitUrl === 'ssh') {\n if (!repo.ssh_url) {\n throw new Error(CONFIG_GIT_URL_UNAVAILABLE);\n }\n logger.debug(`Using SSH URL: ${repo.ssh_url}`);\n return repo.ssh_url;\n }\n\n // Find options for current host and determine Git endpoint\n const opts = hostRules.find({\n hostType: 'forgejo',\n url: endpoint,\n });\n\n if (gitUrl === 'endpoint') {\n const url = parseUrl(endpoint);\n if (!url) {\n throw new Error(CONFIG_GIT_URL_UNAVAILABLE);\n }\n url.username = opts.token ?? '';\n url.pathname = `${url.pathname}${repo.full_name}.git`;\n logger.debug(\n { url: url.toString() },\n 'using URL based on configured endpoint',\n );\n return url.toString();\n }\n\n if (!repo.clone_url) {\n throw new Error(CONFIG_GIT_URL_UNAVAILABLE);\n }\n\n logger.debug(`Using HTTP URL: ${repo.clone_url}`);\n const repoUrl = parseUrl(repo.clone_url);\n if (!repoUrl) {\n throw new Error(CONFIG_GIT_URL_UNAVAILABLE);\n }\n repoUrl.username = opts.token ?? '';\n return repoUrl.toString();\n}\n\nexport function getMergeMethod(\n strategy: MergeStrategy | undefined,\n): PRMergeMethod | null {\n switch (strategy) {\n case 'fast-forward':\n return 'rebase';\n case 'merge-commit':\n return 'merge';\n case 'rebase':\n return 'rebase-merge';\n case 'squash':\n return strategy;\n case 'auto':\n default:\n return null;\n }\n}\n\nexport const API_PATH = '/api/v1';\n\nexport const DRAFT_PREFIX = 'WIP: ';\nconst reconfigurePrRegex = regEx(/reconfigure$/);\n\nexport function toRenovatePR(data: PR, author: string | null): Pr | null {\n if (\n !data.base?.ref ||\n !data.head?.label ||\n !data.head?.sha ||\n !data.head?.repo?.full_name\n ) {\n logger.trace(\n `Skipping Pull Request #${data.number} due to missing base and/or head branch`,\n );\n return null;\n }\n\n const createdBy = data.user?.login;\n if (\n createdBy &&\n author &&\n !reconfigurePrRegex.test(data.head.label) &&\n createdBy !== author\n ) {\n return null;\n }\n\n let title = data.title;\n let isDraft = false;\n if (title.startsWith(DRAFT_PREFIX)) {\n title = title.substring(DRAFT_PREFIX.length);\n isDraft = true;\n }\n const labels = coerceArray(data.labels).map((l) => l.name);\n\n return {\n labels,\n number: data.number,\n state: data.merged ? 'merged' : data.state,\n title,\n isDraft,\n bodyStruct: getPrBodyStruct(data.body),\n sha: data.head.sha,\n sourceBranch: data.head.label,\n targetBranch: data.base.ref,\n sourceRepo: data.head.repo.full_name,\n createdAt: data.created_at,\n cannotMergeReason: data.mergeable\n ? undefined\n : `pr.mergeable=\"${data.mergeable}\"`,\n hasAssignees: !!(data.assignee?.login ?? isNonEmptyArray(data.assignees)),\n };\n}\n\n/**\n * Check if a repository is usable.\n * A repo isn't usable if one of the following conditions is met:\n * - The repo is a `mirror`\n * - We don't have pull or push permissions\n * - Pull requests are disabled\n * @param repo Repo to check\n * @returns `true` if the repository is usable, `false` otherwise\n */\nexport function usableRepo(repo: Repo): boolean {\n if (repo.mirror === true) {\n return false;\n }\n\n if (repo.permissions.pull === false || repo.permissions.push === false) {\n logger.debug(\n `Skipping repository ${repo.full_name} because of missing pull or push permissions`,\n );\n return false;\n }\n\n if (repo.has_pull_requests === false) {\n logger.debug(\n `Skipping repository ${repo.full_name} because pull requests are disabled`,\n );\n return false;\n }\n return true;\n}\n\nexport function isAllowed(style: PRMergeMethod, repo: Repo): boolean {\n switch (style) {\n case 'merge':\n return repo.allow_merge_commits;\n case 'rebase':\n return repo.allow_rebase;\n case 'rebase-merge':\n return repo.allow_rebase_explicit;\n case 'squash':\n return repo.allow_squash_merge;\n case 'fast-forward-only':\n return repo.allow_fast_forward_only_merge;\n }\n}\n"],"mappings":"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"}
@@ -48,7 +48,7 @@ function getMergeMethod(strategy) {
48
48
  }
49
49
  const API_PATH = "/api/v1";
50
50
  const DRAFT_PREFIX = "WIP: ";
51
- const reconfigurePrRegex = regEx(/reconfigure$/g);
51
+ const reconfigurePrRegex = regEx(/reconfigure$/);
52
52
  function toRenovatePR(data, author) {
53
53
  if (!data) return null;
54
54
  if (!data.base?.ref || !data.head?.label || !data.head?.sha || !data.head?.repo?.full_name) {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["hostRules.find"],"sources":["../../../../lib/modules/platform/gitea/utils.ts"],"sourcesContent":["import { isNonEmptyArray } from '@sindresorhus/is';\nimport type { MergeStrategy } from '../../../config/types.ts';\nimport {\n CONFIG_GIT_URL_UNAVAILABLE,\n REPOSITORY_BLOCKED,\n} from '../../../constants/error-messages.ts';\nimport { logger } from '../../../logger/index.ts';\nimport * as hostRules from '../../../util/host-rules.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { parseUrl } from '../../../util/url.ts';\nimport { getPrBodyStruct } from '../pr-body.ts';\nimport type { GitUrlOption, Pr } from '../types.ts';\nimport type { PR, PRMergeMethod, Repo } from './types.ts';\n\nexport function smartLinks(body: string): string {\n return body\n ?.replace(regEx(/\\]\\(\\.\\.\\/issues\\//g), '](issues/')\n .replace(regEx(/\\]\\(\\.\\.\\/pull\\//g), '](pulls/');\n}\n\nexport function trimTrailingApiPath(url: string): string {\n return url?.replace(regEx(/api\\/v1\\/?$/g), '');\n}\n\nexport function getRepoUrl(\n repo: Repo,\n gitUrl: GitUrlOption | undefined,\n endpoint: string,\n): string {\n if (gitUrl === 'ssh') {\n if (!repo.ssh_url) {\n throw new Error(CONFIG_GIT_URL_UNAVAILABLE);\n }\n logger.debug(`Using SSH URL: ${repo.ssh_url}`);\n return repo.ssh_url;\n }\n\n // Find options for current host and determine Git endpoint\n const opts = hostRules.find({\n hostType: 'gitea',\n url: endpoint,\n });\n\n if (gitUrl === 'endpoint') {\n const url = parseUrl(endpoint);\n if (!url) {\n throw new Error(CONFIG_GIT_URL_UNAVAILABLE);\n }\n url.username = opts.token ?? '';\n url.pathname = `${url.pathname}${repo.full_name}.git`;\n logger.debug(\n { url: url.toString() },\n 'using URL based on configured endpoint',\n );\n return url.toString();\n }\n\n if (!repo.clone_url) {\n throw new Error(CONFIG_GIT_URL_UNAVAILABLE);\n }\n\n logger.debug(`Using HTTP URL: ${repo.clone_url}`);\n const repoUrl = parseUrl(repo.clone_url);\n if (!repoUrl) {\n throw new Error(CONFIG_GIT_URL_UNAVAILABLE);\n }\n repoUrl.username = opts.token ?? '';\n return repoUrl.toString();\n}\n\nexport function getMergeMethod(\n strategy: MergeStrategy | undefined,\n): PRMergeMethod | null {\n switch (strategy) {\n case 'fast-forward':\n return 'rebase';\n case 'merge-commit':\n return 'merge';\n case 'rebase':\n return 'rebase-merge';\n case 'squash':\n return strategy;\n case 'auto':\n default:\n return null;\n }\n}\n\nexport const API_PATH = '/api/v1';\n\nexport const DRAFT_PREFIX = 'WIP: ';\nconst reconfigurePrRegex = regEx(/reconfigure$/g);\n\nexport function toRenovatePR(data: PR, author: string | null): Pr | null {\n if (!data) {\n return null;\n }\n\n if (\n !data.base?.ref ||\n !data.head?.label ||\n !data.head?.sha ||\n !data.head?.repo?.full_name\n ) {\n logger.trace(\n `Skipping Pull Request #${data.number} due to missing base and/or head branch`,\n );\n return null;\n }\n\n const createdBy = data.user?.login;\n if (\n createdBy &&\n author &&\n !reconfigurePrRegex.test(data.head.label) &&\n createdBy !== author\n ) {\n return null;\n }\n\n let title = data.title;\n let isDraft = false;\n if (title.startsWith(DRAFT_PREFIX)) {\n title = title.substring(DRAFT_PREFIX.length);\n isDraft = true;\n }\n const labels = (data?.labels ?? []).map((l) => l.name);\n\n return {\n labels,\n number: data.number,\n state: data.merged ? 'merged' : data.state,\n title,\n isDraft,\n bodyStruct: getPrBodyStruct(data.body),\n sha: data.head.sha,\n sourceBranch: data.head.label,\n targetBranch: data.base.ref,\n sourceRepo: data.head.repo.full_name,\n createdAt: data.created_at,\n cannotMergeReason: data.mergeable\n ? undefined\n : `pr.mergeable=\"${data.mergeable}\"`,\n hasAssignees: !!(data.assignee?.login ?? isNonEmptyArray(data.assignees)),\n };\n}\n\n/**\n * Check if a repository is usable.\n * A repo isn't usable if one of the following conditions is met:\n * - The repo is a `mirror`\n * - We don't have pull or push permissions\n * - Pull requests are disabled\n * @param repo Repo to check\n * @returns `true` if the repository is usable, `false` otherwise\n */\nexport function usableRepo(repo: Repo): boolean {\n if (repo.mirror === true) {\n return false;\n }\n\n if (repo.permissions.pull === false || repo.permissions.push === false) {\n logger.debug(\n `Skipping repository ${repo.full_name} because of missing pull or push permissions`,\n );\n return false;\n }\n\n if (repo.has_pull_requests === false) {\n logger.debug(\n `Skipping repository ${repo.full_name} because pull requests are disabled`,\n );\n return false;\n }\n return true;\n}\n\nexport function isAllowed(style: PRMergeMethod, repo: Repo): boolean {\n switch (style) {\n case 'merge':\n return repo.allow_merge_commits;\n case 'rebase':\n return repo.allow_rebase;\n case 'rebase-merge':\n return repo.allow_rebase_explicit;\n case 'squash':\n return repo.allow_squash_merge;\n case 'fast-forward-only':\n return repo.allow_fast_forward_only_merge;\n }\n logger.debug('Repo has unknown merge style - aborting renovation');\n throw new Error(REPOSITORY_BLOCKED);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","names":["hostRules.find"],"sources":["../../../../lib/modules/platform/gitea/utils.ts"],"sourcesContent":["import { isNonEmptyArray } from '@sindresorhus/is';\nimport type { MergeStrategy } from '../../../config/types.ts';\nimport {\n CONFIG_GIT_URL_UNAVAILABLE,\n REPOSITORY_BLOCKED,\n} from '../../../constants/error-messages.ts';\nimport { logger } from '../../../logger/index.ts';\nimport * as hostRules from '../../../util/host-rules.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { parseUrl } from '../../../util/url.ts';\nimport { getPrBodyStruct } from '../pr-body.ts';\nimport type { GitUrlOption, Pr } from '../types.ts';\nimport type { PR, PRMergeMethod, Repo } from './types.ts';\n\nexport function smartLinks(body: string): string {\n return body\n ?.replace(regEx(/\\]\\(\\.\\.\\/issues\\//g), '](issues/')\n .replace(regEx(/\\]\\(\\.\\.\\/pull\\//g), '](pulls/');\n}\n\nexport function trimTrailingApiPath(url: string): string {\n return url?.replace(regEx(/api\\/v1\\/?$/g), '');\n}\n\nexport function getRepoUrl(\n repo: Repo,\n gitUrl: GitUrlOption | undefined,\n endpoint: string,\n): string {\n if (gitUrl === 'ssh') {\n if (!repo.ssh_url) {\n throw new Error(CONFIG_GIT_URL_UNAVAILABLE);\n }\n logger.debug(`Using SSH URL: ${repo.ssh_url}`);\n return repo.ssh_url;\n }\n\n // Find options for current host and determine Git endpoint\n const opts = hostRules.find({\n hostType: 'gitea',\n url: endpoint,\n });\n\n if (gitUrl === 'endpoint') {\n const url = parseUrl(endpoint);\n if (!url) {\n throw new Error(CONFIG_GIT_URL_UNAVAILABLE);\n }\n url.username = opts.token ?? '';\n url.pathname = `${url.pathname}${repo.full_name}.git`;\n logger.debug(\n { url: url.toString() },\n 'using URL based on configured endpoint',\n );\n return url.toString();\n }\n\n if (!repo.clone_url) {\n throw new Error(CONFIG_GIT_URL_UNAVAILABLE);\n }\n\n logger.debug(`Using HTTP URL: ${repo.clone_url}`);\n const repoUrl = parseUrl(repo.clone_url);\n if (!repoUrl) {\n throw new Error(CONFIG_GIT_URL_UNAVAILABLE);\n }\n repoUrl.username = opts.token ?? '';\n return repoUrl.toString();\n}\n\nexport function getMergeMethod(\n strategy: MergeStrategy | undefined,\n): PRMergeMethod | null {\n switch (strategy) {\n case 'fast-forward':\n return 'rebase';\n case 'merge-commit':\n return 'merge';\n case 'rebase':\n return 'rebase-merge';\n case 'squash':\n return strategy;\n case 'auto':\n default:\n return null;\n }\n}\n\nexport const API_PATH = '/api/v1';\n\nexport const DRAFT_PREFIX = 'WIP: ';\nconst reconfigurePrRegex = regEx(/reconfigure$/);\n\nexport function toRenovatePR(data: PR, author: string | null): Pr | null {\n if (!data) {\n return null;\n }\n\n if (\n !data.base?.ref ||\n !data.head?.label ||\n !data.head?.sha ||\n !data.head?.repo?.full_name\n ) {\n logger.trace(\n `Skipping Pull Request #${data.number} due to missing base and/or head branch`,\n );\n return null;\n }\n\n const createdBy = data.user?.login;\n if (\n createdBy &&\n author &&\n !reconfigurePrRegex.test(data.head.label) &&\n createdBy !== author\n ) {\n return null;\n }\n\n let title = data.title;\n let isDraft = false;\n if (title.startsWith(DRAFT_PREFIX)) {\n title = title.substring(DRAFT_PREFIX.length);\n isDraft = true;\n }\n const labels = (data?.labels ?? []).map((l) => l.name);\n\n return {\n labels,\n number: data.number,\n state: data.merged ? 'merged' : data.state,\n title,\n isDraft,\n bodyStruct: getPrBodyStruct(data.body),\n sha: data.head.sha,\n sourceBranch: data.head.label,\n targetBranch: data.base.ref,\n sourceRepo: data.head.repo.full_name,\n createdAt: data.created_at,\n cannotMergeReason: data.mergeable\n ? undefined\n : `pr.mergeable=\"${data.mergeable}\"`,\n hasAssignees: !!(data.assignee?.login ?? isNonEmptyArray(data.assignees)),\n };\n}\n\n/**\n * Check if a repository is usable.\n * A repo isn't usable if one of the following conditions is met:\n * - The repo is a `mirror`\n * - We don't have pull or push permissions\n * - Pull requests are disabled\n * @param repo Repo to check\n * @returns `true` if the repository is usable, `false` otherwise\n */\nexport function usableRepo(repo: Repo): boolean {\n if (repo.mirror === true) {\n return false;\n }\n\n if (repo.permissions.pull === false || repo.permissions.push === false) {\n logger.debug(\n `Skipping repository ${repo.full_name} because of missing pull or push permissions`,\n );\n return false;\n }\n\n if (repo.has_pull_requests === false) {\n logger.debug(\n `Skipping repository ${repo.full_name} because pull requests are disabled`,\n );\n return false;\n }\n return true;\n}\n\nexport function isAllowed(style: PRMergeMethod, repo: Repo): boolean {\n switch (style) {\n case 'merge':\n return repo.allow_merge_commits;\n case 'rebase':\n return repo.allow_rebase;\n case 'rebase-merge':\n return repo.allow_rebase_explicit;\n case 'squash':\n return repo.allow_squash_merge;\n case 'fast-forward-only':\n return repo.allow_fast_forward_only_merge;\n }\n logger.debug('Repo has unknown merge style - aborting renovation');\n throw new Error(REPOSITORY_BLOCKED);\n}\n"],"mappings":"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"}
@@ -27,7 +27,7 @@ declare const GithubVulnerabilityAlerts: z.ZodPipe<z.ZodType<{
27
27
  };
28
28
  security_vulnerability: {
29
29
  package: {
30
- ecosystem: "composer" | "maven" | "npm" | "rust" | "go" | "rubygems" | "nuget" | "actions" | "pip";
30
+ ecosystem: "composer" | "maven" | "npm" | "rust" | "go" | "rubygems" | "actions" | "nuget" | "pip";
31
31
  name: string;
32
32
  };
33
33
  severity: "low" | "medium" | "high" | "critical";
@@ -66,7 +66,7 @@ declare const GithubVulnerabilityAlerts: z.ZodPipe<z.ZodType<{
66
66
  };
67
67
  security_vulnerability: {
68
68
  package: {
69
- ecosystem: "composer" | "maven" | "npm" | "rust" | "go" | "rubygems" | "nuget" | "actions" | "pip";
69
+ ecosystem: "composer" | "maven" | "npm" | "rust" | "go" | "rubygems" | "actions" | "nuget" | "pip";
70
70
  name: string;
71
71
  };
72
72
  severity: "low" | "medium" | "high" | "critical";
@@ -105,7 +105,7 @@ declare const GithubVulnerabilityAlerts: z.ZodPipe<z.ZodType<{
105
105
  };
106
106
  security_vulnerability: {
107
107
  package: {
108
- ecosystem: "composer" | "maven" | "npm" | "rust" | "go" | "rubygems" | "nuget" | "actions" | "pip";
108
+ ecosystem: "composer" | "maven" | "npm" | "rust" | "go" | "rubygems" | "actions" | "nuget" | "pip";
109
109
  name: string;
110
110
  };
111
111
  severity: "low" | "medium" | "high" | "critical";
@@ -144,7 +144,7 @@ declare const GithubVulnerabilityAlerts: z.ZodPipe<z.ZodType<{
144
144
  };
145
145
  security_vulnerability: {
146
146
  package: {
147
- ecosystem: "composer" | "maven" | "npm" | "rust" | "go" | "rubygems" | "nuget" | "actions" | "pip";
147
+ ecosystem: "composer" | "maven" | "npm" | "rust" | "go" | "rubygems" | "actions" | "nuget" | "pip";
148
148
  name: string;
149
149
  };
150
150
  severity: "low" | "medium" | "high" | "critical";
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.263.0",
4
+ "version": "43.263.1",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "renovate": "dist/renovate.js",
@@ -269,7 +269,7 @@
269
269
  "lint-staged": "17.0.8",
270
270
  "markdownlint-cli2": "0.23.0",
271
271
  "markdownlint-cli2-formatter-template": "0.0.4",
272
- "memfs": "4.59.0",
272
+ "memfs": "4.60.0",
273
273
  "nock": "14.0.16",
274
274
  "npm-run-all2": "8.0.4",
275
275
  "nyc": "18.0.0",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$id": "https://docs.renovatebot.com/renovate-schema.json",
3
- "title": "JSON schema for Renovate 43.263.0 config files (https://renovatebot.com/)",
3
+ "title": "JSON schema for Renovate 43.263.1 config files (https://renovatebot.com/)",
4
4
  "$schema": "http://json-schema.org/draft-07/schema#",
5
- "x-renovate-version": "43.263.0",
5
+ "x-renovate-version": "43.263.1",
6
6
  "allowComments": true,
7
7
  "type": "object",
8
8
  "definitions": {