renovate 44.126.1 → 44.127.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.
- package/dist/modules/manager/fingerprint.generated.js +1 -1
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/mise/dep-types.js +4 -1
- package/dist/modules/manager/mise/dep-types.js.map +1 -1
- package/dist/modules/manager/mise/extract.js +14 -2
- package/dist/modules/manager/mise/extract.js.map +1 -1
- package/dist/modules/manager/mise/git-reference.js +127 -0
- package/dist/modules/manager/mise/git-reference.js.map +1 -0
- package/dist/modules/manager/mise/include.js +30 -0
- package/dist/modules/manager/mise/include.js.map +1 -0
- package/dist/modules/manager/mise/index.js +14 -1
- package/dist/modules/manager/mise/index.js.map +1 -1
- package/dist/modules/manager/mise/schema.js +6 -2
- package/dist/modules/manager/mise/schema.js.map +1 -1
- package/dist/util/http/http.js +17 -13
- package/dist/util/http/http.js.map +1 -1
- package/package.json +1 -1
- package/renovate-schema.json +2 -2
|
@@ -71,7 +71,7 @@ hashMap.set("maven", "c110b99291c2a5bc82cf7a69330275e9bbd7dc8ba3e9e987611dfcffbe
|
|
|
71
71
|
hashMap.set("maven-wrapper", "6e53b6e4abf1d20b75094c7a70d66b4a5ac39954f009aa401f5e55dada8be4d0");
|
|
72
72
|
hashMap.set("meteor", "4636a47ba4dcfff19fe662572ef7a40d17146be3c966e00ef437e1fc8de92776");
|
|
73
73
|
hashMap.set("mint", "248fe4f1ea5c985921c286785792c97e06fc41f402b2d45df82f6aecd17f710e");
|
|
74
|
-
hashMap.set("mise", "
|
|
74
|
+
hashMap.set("mise", "59c691024c34cb4be4d9b4f811019ae9b22410df0da54977cdcecea261fbbbf5");
|
|
75
75
|
hashMap.set("mix", "0f79163dc2a1c896599d152be635c23beaf16812ae3d8fbfffec98c7bd0de872");
|
|
76
76
|
hashMap.set("nix", "9cbd96a29fe96e3df7418e422256380202f07970cf7f00b08388c181224a2b85");
|
|
77
77
|
hashMap.set("nodenv", "ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprint.generated.js","names":[],"sources":["../../../lib/modules/manager/fingerprint.generated.ts"],"sourcesContent":["export const hashMap = new Map<string, string>();\n\nhashMap.set('ansible','a52394a36ac5517f7330473c31d93aa05b2ce607c5e951b48f25a4693cd20a81');\nhashMap.set('ansible-galaxy','0a264d6be73953d801510fdeff271e4071c274339569c6dab4e2a128eaf4869f');\nhashMap.set('ant','2df5943cf0ed19a21b94df13729dbb925655548130caf37e3e22bebaed518e17');\nhashMap.set('apm','bdb6931cc03f4ac02ebfdb56c4b3483bb6c5250fa952545f1a25584d502bbffd');\nhashMap.set('argocd','cff9cd22257bc460ae4b9936570bf0ed5585f280a55d26629deaeeb0bfee8eb5');\nhashMap.set('asdf','430eb99b58171700c8a59c78b9e648575e9b176b781d90dd10a710f7b69015bb');\nhashMap.set('azure-pipelines','04a13dec4e08ba21004961c718072fde976226d65809fa3c838bf66ba93e5d5a');\nhashMap.set('batect','375d39b432013bedb1330cf40a2199dd822751b28578214f219e7bab98594b8d');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','c31bc0a0e23d32726bcc09aa67533ebc5058124bf89c88e09c837419f550801a');\nhashMap.set('bazel-module','9fbba0339f9f7785d52ab85c5f0f6385003093c063483c13feccba13ae438bef');\nhashMap.set('bazelisk','770f75a746dc6ba90c518788d5987d7df4243ef9eee122d1bb0556a93d6e1b11');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','59c0503494ab1442b127914503c01b97ac17b6742b19c632292d5aa24de115cd');\nhashMap.set('bitrise','478dfd316221fad7c29e177c70d1018d832fb2626b53308a5d0f1f0380e69f42');\nhashMap.set('buildkite','b8b404f53cd5d61c39153fddf93945e621471c4ac6aa9960c881cd868922bb4c');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','5820cfb6ebe018b8c336d481ea9ae319daaee6a2e368c45196fc8bc67cb3e755');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','6e4784dd98c1f86ef64cc8cbf3128df48aebf920032d7792b54fdedd3dd9d4d5');\nhashMap.set('cake','9ebd8b481220b30a8860121d26184540a1a2fcc05ef780df9295dea39b386fad');\nhashMap.set('cargo','027f60d13311b340391633eceb3685b5105eb6de88d876270d40f4666e5ef7a5');\nhashMap.set('cdnurl','9a81c8e3c6ad6c788498c99fc1067ffdfcd92a427c3afaf8c0130975d83131f2');\nhashMap.set('circleci','91cbeb33ea20f9838e2c81a1195eb806f0b38fa282bc3679f62552f20575ca85');\nhashMap.set('cloudbuild','f4e40388944652c8a19f8518771ac8d3f3c4ccf81ddef0e68b463aca833cb73c');\nhashMap.set('cocoapods','f832e2beef885bb3fd697ed9bb3e8cd742926bfec37ff41212edd2dbb4edb3ba');\nhashMap.set('composer','3976117beb9adeade088187965929d42f21f5da12c4614fd22aa92cad1083b19');\nhashMap.set('conan','8d46e9a30ae628e26118aea10a98d1b846f7c5d96d51ce24693437d555f6d125');\nhashMap.set('copier','197219e93857ad7e6701755ede245824329da08913ebdb23d1e5e854a169aafe');\nhashMap.set('cpanfile','07813fec3f3c2197056500e9266a0553b9774c02f2c74d5ca2e213188c7c12d3');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deno','9585e4e0626cc3613c3903249972acf97942ad7e16d85fa0da6677373e445db1');\nhashMap.set('deps-edn','06783dbc8b9c7bb84e162d1f75b7db56dfa021cc6f809dfd2314cee8b64af08d');\nhashMap.set('devbox','a40050cc61bd9b5d500ec111abb17bb15d5f82ab5b7699f66f628307ba8382c9');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','fba87b82cb0f2bfd66526631fbe928b8153e7ca701a5790d02b944df17417bb9');\nhashMap.set('dockerfile','b5faeb8f31d238e0d05a4aeebf9a837273687908ab8078b34e738bb0e369c80c');\nhashMap.set('droneci','661d2a2d7295af8dd7a1234c7090c42a89306bd574c3adf1fc67782efaad3998');\nhashMap.set('fleet','ffa222820f72c4eb4cdc4c229ae8c50433bee96f3b974f0633d5a7d1f6427c97');\nhashMap.set('flux','842597c9083d82af99ef3d526101a3a53c4448414d2f53f7e969074757124811');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','f4e2c6ddf2fa93241665c5176faafb358eecfcb701e7478790c4d58853ed827a');\nhashMap.set('github-actions','7bd984806fa6e33e0650d2f65d88758a9f4b972f366c6cd7c7698e22e6fb3ca3');\nhashMap.set('gitlabci','a5e1e66ef461e1c1e71062f85f35a212417e23627f4b002810f9a98295d6e672');\nhashMap.set('gitlabci-include','8860a15ab516fde00694f9bd9bf56fce4addafe5a55b5ddb9a4ec477d301d351');\nhashMap.set('glasskube','93e7b9000a17efa15a1abaaf320b5af9169b1ecd828fc0c881d98570ef9d9e30');\nhashMap.set('gleam','5e9b9f5f914afe5ed7b526c06c65111e3716d2dea9b0cbe7907bbc96db1064a3');\nhashMap.set('gomod','c4aaa76f1a679e5ae8a547db33452e4adec6473e24432ee5ba56662b42a2fb2e');\nhashMap.set('gradle','9e3ff52ce4ad2555929acdd4d32c417c4ef8714c23a92f2893ecc580fa4d6064');\nhashMap.set('gradle-wrapper','73ba30c34955fab7737454b5cff9aca6d1b5607d53c17c9e13d8ad96f6eaae87');\nhashMap.set('haskell-cabal','f158b7725e3143dfd2950e3de0bbccc2a61cd7eba87f7a54c5057e01252348e2');\nhashMap.set('helm-requirements','22f61344565f87ca3512c0ba8fac32627fde8ee919b7badae07b2116e285f049');\nhashMap.set('helm-values','0aa79bb0257d0d72e54dfd2653e59bfef63b97e46c035b7443593bdf6e6382aa');\nhashMap.set('helmfile','4e12edd848dcf258c94e9b7d4bd9fdd5674ffe12c5786bbcb51089b72bfe0ca3');\nhashMap.set('helmsman','951deeb3355da751ef39c9e932b26ea749450e32e75759e4b5fc29359e100b37');\nhashMap.set('helmv3','71e9e621ba0974271f1a7effcbd364efd66767d4336e844539788f5d6bb22720');\nhashMap.set('hermit','0fb25b7766c3a264fbb765ff75b1542b24136c4c9f933696d4a5aecfed637071');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','dffe954a4e18c2dc4bfdaa12222fe8ddc3395869afd5afa603fc2b6264747984');\nhashMap.set('html','81fa6c2bf2b868596584a48b949645207a2aa3081951ed99183ee50b70b77d5f');\nhashMap.set('jenkins','7fda0e7e0f3d5e18088ccb3594f727f4cfc48b064706bdaaf1a0a075b6a2cff5');\nhashMap.set('jsonnet-bundler','4cedeb0394e5c38361d1868ff45b4f34747ab8c492378b6e63dcaf1f4f3c024d');\nhashMap.set('kotlin-script','95ebc844c040ca047321b207d525220e29774a2a1fe06f9639e8353c66908564');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','706cc4776ad6ec4df5bed0ac84e8324ad7328457b6743b082e444d4770756604');\nhashMap.set('leiningen','c8397e376f1717c2f771ae9ea3ba6b720d2422b133cf937e762c44e42be146a2');\nhashMap.set('maven','c110b99291c2a5bc82cf7a69330275e9bbd7dc8ba3e9e987611dfcffbe002d8d');\nhashMap.set('maven-wrapper','6e53b6e4abf1d20b75094c7a70d66b4a5ac39954f009aa401f5e55dada8be4d0');\nhashMap.set('meteor','4636a47ba4dcfff19fe662572ef7a40d17146be3c966e00ef437e1fc8de92776');\nhashMap.set('mint','248fe4f1ea5c985921c286785792c97e06fc41f402b2d45df82f6aecd17f710e');\nhashMap.set('mise','8f1376692b46c9f91d60147cd899d857d871c81d1b125ae713583df93b0fc027');\nhashMap.set('mix','0f79163dc2a1c896599d152be635c23beaf16812ae3d8fbfffec98c7bd0de872');\nhashMap.set('nix','9cbd96a29fe96e3df7418e422256380202f07970cf7f00b08388c181224a2b85');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','95017de512f3679634bfe839812b84712f59738062040039bc528e40743a4101');\nhashMap.set('nuget','fb02247c67a198ffe414a44d23c7894bd114dcc53803334f82e39479e7b27f6f');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','d6567a733ef3983112b46fdccd7ceebfcd48411104e0c6b6e714d4310db48024');\nhashMap.set('pep621','52450676f8b0e05134b3e8947b832195ef40bcaec1ce43d71351a2f797b80d75');\nhashMap.set('pep723','77022a0eae6a3cbb74a1e6d596db1276e379768e40448192b3fa81edd14ca73f');\nhashMap.set('pip-compile','a98dc76a002e1dc21662237f009ff8fea36236bb4e24cb82ee30c6a78f57271f');\nhashMap.set('pip_requirements','bf3a407f72abf711230247bef94ba5dc84c08a35107b0f017912fad66afa716a');\nhashMap.set('pip_setup','df18fba2bdcf48f3ca12a8f7e5cd28df31e2368d5528127277038ef4206eca79');\nhashMap.set('pipenv','baf237cd77173c1a7a9c7fa2a8bfb214f3c488ba0cc27f0e8f334df192e3a398');\nhashMap.set('pixi','e31c397982ffa34222b061f23f3b3683f42523dd5dca45ecce2448b0ebc55ea2');\nhashMap.set('poetry','e9dea5d591c87956b9f018414cb3dab8f2e13580a13be00550fdce198fdf08e6');\nhashMap.set('pre-commit','760f2c291ae084db889f722390798a0e2d431ccdc3bc676e73b14901ebea19ac');\nhashMap.set('proto','412053d4550026b4ace490b46e970915b87ec1abf0b0a0c6c8c58ccf1fc16843');\nhashMap.set('pub','8e7c65dfd1999de4f7c44392e949a4d8f4701eb86df59d550e4657feb06b1872');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','40927b98dd2bac45dba60e66b5fd0e6b84b61d02db8be536fda7b14546a4feb7');\nhashMap.set('renovate-config','dfaf3f03ddaf70c332f7916106648f36dbfa6a36dd76d15dd27fa116ab3c174c');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('rust-toolchain','6ace53db02874d73620d2d872291839820a512a9529c42d174358c692e5db720');\nhashMap.set('sbt','e1eb5c7f0171a9bb1b6bd4a36a91039a31b6c84e0983d91d930be31a69506d9e');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','4a3a7c812d34739c07685691e7e64c7d3127f9d7d4aff99dc45a25df97ed9745');\nhashMap.set('smithy','9641b91d065ffb63be0dd888139a0402dba41e550f8b44c592db9daf52109100');\nhashMap.set('sveltos','60dd75bb53ace31217211100d622fdb65068c6162758b6ae7103a6ce8bdc9f90');\nhashMap.set('swift','cdf063debdbf36888523ff8cec6d2d1b0ec6f49b37b2fbcd80b0d4f6a31114e1');\nhashMap.set('tekton','33948f5bdf7553909fa63744adb26da97ddf366e9499bccab1250879570267c9');\nhashMap.set('terraform','6788a8569ba9c50c763ffa2bed952a4314ae8e696c29f93d3eb7c4a12d99ce20');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','300f8fb3c09667654412d2f5dd8ab4882e0f5d1d7a8bc39794993d2e7e58d1b7');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','f423bfa2b42a2bfc0e38a33ebd4f9d452473e7ed4e7ad6384a99eb9a35d97479');\nhashMap.set('travis','f3e2f38e699c390b00ff481be5e91dceaa81609e93caf9a4214933de759c84fc');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','48e2bff8d3a96e8011ee12776fe9c6e8aac4718ff47e891c294a8f12660cb1bb');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('xcodegen','dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683');\nhashMap.set('jsonata','416bcf61144b276b3112814c6e6d261aa29608f46fbb0516c471d35c16f8f0d7');\nhashMap.set('regex','20be5247fdc164173871a051acb0527da017d0c155c653d7563601f55e7b3ff5');"],"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','a52394a36ac5517f7330473c31d93aa05b2ce607c5e951b48f25a4693cd20a81');\nhashMap.set('ansible-galaxy','0a264d6be73953d801510fdeff271e4071c274339569c6dab4e2a128eaf4869f');\nhashMap.set('ant','2df5943cf0ed19a21b94df13729dbb925655548130caf37e3e22bebaed518e17');\nhashMap.set('apm','bdb6931cc03f4ac02ebfdb56c4b3483bb6c5250fa952545f1a25584d502bbffd');\nhashMap.set('argocd','cff9cd22257bc460ae4b9936570bf0ed5585f280a55d26629deaeeb0bfee8eb5');\nhashMap.set('asdf','430eb99b58171700c8a59c78b9e648575e9b176b781d90dd10a710f7b69015bb');\nhashMap.set('azure-pipelines','04a13dec4e08ba21004961c718072fde976226d65809fa3c838bf66ba93e5d5a');\nhashMap.set('batect','375d39b432013bedb1330cf40a2199dd822751b28578214f219e7bab98594b8d');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','c31bc0a0e23d32726bcc09aa67533ebc5058124bf89c88e09c837419f550801a');\nhashMap.set('bazel-module','9fbba0339f9f7785d52ab85c5f0f6385003093c063483c13feccba13ae438bef');\nhashMap.set('bazelisk','770f75a746dc6ba90c518788d5987d7df4243ef9eee122d1bb0556a93d6e1b11');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','59c0503494ab1442b127914503c01b97ac17b6742b19c632292d5aa24de115cd');\nhashMap.set('bitrise','478dfd316221fad7c29e177c70d1018d832fb2626b53308a5d0f1f0380e69f42');\nhashMap.set('buildkite','b8b404f53cd5d61c39153fddf93945e621471c4ac6aa9960c881cd868922bb4c');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','5820cfb6ebe018b8c336d481ea9ae319daaee6a2e368c45196fc8bc67cb3e755');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','6e4784dd98c1f86ef64cc8cbf3128df48aebf920032d7792b54fdedd3dd9d4d5');\nhashMap.set('cake','9ebd8b481220b30a8860121d26184540a1a2fcc05ef780df9295dea39b386fad');\nhashMap.set('cargo','027f60d13311b340391633eceb3685b5105eb6de88d876270d40f4666e5ef7a5');\nhashMap.set('cdnurl','9a81c8e3c6ad6c788498c99fc1067ffdfcd92a427c3afaf8c0130975d83131f2');\nhashMap.set('circleci','91cbeb33ea20f9838e2c81a1195eb806f0b38fa282bc3679f62552f20575ca85');\nhashMap.set('cloudbuild','f4e40388944652c8a19f8518771ac8d3f3c4ccf81ddef0e68b463aca833cb73c');\nhashMap.set('cocoapods','f832e2beef885bb3fd697ed9bb3e8cd742926bfec37ff41212edd2dbb4edb3ba');\nhashMap.set('composer','3976117beb9adeade088187965929d42f21f5da12c4614fd22aa92cad1083b19');\nhashMap.set('conan','8d46e9a30ae628e26118aea10a98d1b846f7c5d96d51ce24693437d555f6d125');\nhashMap.set('copier','197219e93857ad7e6701755ede245824329da08913ebdb23d1e5e854a169aafe');\nhashMap.set('cpanfile','07813fec3f3c2197056500e9266a0553b9774c02f2c74d5ca2e213188c7c12d3');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deno','9585e4e0626cc3613c3903249972acf97942ad7e16d85fa0da6677373e445db1');\nhashMap.set('deps-edn','06783dbc8b9c7bb84e162d1f75b7db56dfa021cc6f809dfd2314cee8b64af08d');\nhashMap.set('devbox','a40050cc61bd9b5d500ec111abb17bb15d5f82ab5b7699f66f628307ba8382c9');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','fba87b82cb0f2bfd66526631fbe928b8153e7ca701a5790d02b944df17417bb9');\nhashMap.set('dockerfile','b5faeb8f31d238e0d05a4aeebf9a837273687908ab8078b34e738bb0e369c80c');\nhashMap.set('droneci','661d2a2d7295af8dd7a1234c7090c42a89306bd574c3adf1fc67782efaad3998');\nhashMap.set('fleet','ffa222820f72c4eb4cdc4c229ae8c50433bee96f3b974f0633d5a7d1f6427c97');\nhashMap.set('flux','842597c9083d82af99ef3d526101a3a53c4448414d2f53f7e969074757124811');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','f4e2c6ddf2fa93241665c5176faafb358eecfcb701e7478790c4d58853ed827a');\nhashMap.set('github-actions','7bd984806fa6e33e0650d2f65d88758a9f4b972f366c6cd7c7698e22e6fb3ca3');\nhashMap.set('gitlabci','a5e1e66ef461e1c1e71062f85f35a212417e23627f4b002810f9a98295d6e672');\nhashMap.set('gitlabci-include','8860a15ab516fde00694f9bd9bf56fce4addafe5a55b5ddb9a4ec477d301d351');\nhashMap.set('glasskube','93e7b9000a17efa15a1abaaf320b5af9169b1ecd828fc0c881d98570ef9d9e30');\nhashMap.set('gleam','5e9b9f5f914afe5ed7b526c06c65111e3716d2dea9b0cbe7907bbc96db1064a3');\nhashMap.set('gomod','c4aaa76f1a679e5ae8a547db33452e4adec6473e24432ee5ba56662b42a2fb2e');\nhashMap.set('gradle','9e3ff52ce4ad2555929acdd4d32c417c4ef8714c23a92f2893ecc580fa4d6064');\nhashMap.set('gradle-wrapper','73ba30c34955fab7737454b5cff9aca6d1b5607d53c17c9e13d8ad96f6eaae87');\nhashMap.set('haskell-cabal','f158b7725e3143dfd2950e3de0bbccc2a61cd7eba87f7a54c5057e01252348e2');\nhashMap.set('helm-requirements','22f61344565f87ca3512c0ba8fac32627fde8ee919b7badae07b2116e285f049');\nhashMap.set('helm-values','0aa79bb0257d0d72e54dfd2653e59bfef63b97e46c035b7443593bdf6e6382aa');\nhashMap.set('helmfile','4e12edd848dcf258c94e9b7d4bd9fdd5674ffe12c5786bbcb51089b72bfe0ca3');\nhashMap.set('helmsman','951deeb3355da751ef39c9e932b26ea749450e32e75759e4b5fc29359e100b37');\nhashMap.set('helmv3','71e9e621ba0974271f1a7effcbd364efd66767d4336e844539788f5d6bb22720');\nhashMap.set('hermit','0fb25b7766c3a264fbb765ff75b1542b24136c4c9f933696d4a5aecfed637071');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','dffe954a4e18c2dc4bfdaa12222fe8ddc3395869afd5afa603fc2b6264747984');\nhashMap.set('html','81fa6c2bf2b868596584a48b949645207a2aa3081951ed99183ee50b70b77d5f');\nhashMap.set('jenkins','7fda0e7e0f3d5e18088ccb3594f727f4cfc48b064706bdaaf1a0a075b6a2cff5');\nhashMap.set('jsonnet-bundler','4cedeb0394e5c38361d1868ff45b4f34747ab8c492378b6e63dcaf1f4f3c024d');\nhashMap.set('kotlin-script','95ebc844c040ca047321b207d525220e29774a2a1fe06f9639e8353c66908564');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','706cc4776ad6ec4df5bed0ac84e8324ad7328457b6743b082e444d4770756604');\nhashMap.set('leiningen','c8397e376f1717c2f771ae9ea3ba6b720d2422b133cf937e762c44e42be146a2');\nhashMap.set('maven','c110b99291c2a5bc82cf7a69330275e9bbd7dc8ba3e9e987611dfcffbe002d8d');\nhashMap.set('maven-wrapper','6e53b6e4abf1d20b75094c7a70d66b4a5ac39954f009aa401f5e55dada8be4d0');\nhashMap.set('meteor','4636a47ba4dcfff19fe662572ef7a40d17146be3c966e00ef437e1fc8de92776');\nhashMap.set('mint','248fe4f1ea5c985921c286785792c97e06fc41f402b2d45df82f6aecd17f710e');\nhashMap.set('mise','59c691024c34cb4be4d9b4f811019ae9b22410df0da54977cdcecea261fbbbf5');\nhashMap.set('mix','0f79163dc2a1c896599d152be635c23beaf16812ae3d8fbfffec98c7bd0de872');\nhashMap.set('nix','9cbd96a29fe96e3df7418e422256380202f07970cf7f00b08388c181224a2b85');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','95017de512f3679634bfe839812b84712f59738062040039bc528e40743a4101');\nhashMap.set('nuget','fb02247c67a198ffe414a44d23c7894bd114dcc53803334f82e39479e7b27f6f');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','d6567a733ef3983112b46fdccd7ceebfcd48411104e0c6b6e714d4310db48024');\nhashMap.set('pep621','52450676f8b0e05134b3e8947b832195ef40bcaec1ce43d71351a2f797b80d75');\nhashMap.set('pep723','77022a0eae6a3cbb74a1e6d596db1276e379768e40448192b3fa81edd14ca73f');\nhashMap.set('pip-compile','a98dc76a002e1dc21662237f009ff8fea36236bb4e24cb82ee30c6a78f57271f');\nhashMap.set('pip_requirements','bf3a407f72abf711230247bef94ba5dc84c08a35107b0f017912fad66afa716a');\nhashMap.set('pip_setup','df18fba2bdcf48f3ca12a8f7e5cd28df31e2368d5528127277038ef4206eca79');\nhashMap.set('pipenv','baf237cd77173c1a7a9c7fa2a8bfb214f3c488ba0cc27f0e8f334df192e3a398');\nhashMap.set('pixi','e31c397982ffa34222b061f23f3b3683f42523dd5dca45ecce2448b0ebc55ea2');\nhashMap.set('poetry','e9dea5d591c87956b9f018414cb3dab8f2e13580a13be00550fdce198fdf08e6');\nhashMap.set('pre-commit','760f2c291ae084db889f722390798a0e2d431ccdc3bc676e73b14901ebea19ac');\nhashMap.set('proto','412053d4550026b4ace490b46e970915b87ec1abf0b0a0c6c8c58ccf1fc16843');\nhashMap.set('pub','8e7c65dfd1999de4f7c44392e949a4d8f4701eb86df59d550e4657feb06b1872');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','40927b98dd2bac45dba60e66b5fd0e6b84b61d02db8be536fda7b14546a4feb7');\nhashMap.set('renovate-config','dfaf3f03ddaf70c332f7916106648f36dbfa6a36dd76d15dd27fa116ab3c174c');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('rust-toolchain','6ace53db02874d73620d2d872291839820a512a9529c42d174358c692e5db720');\nhashMap.set('sbt','e1eb5c7f0171a9bb1b6bd4a36a91039a31b6c84e0983d91d930be31a69506d9e');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','4a3a7c812d34739c07685691e7e64c7d3127f9d7d4aff99dc45a25df97ed9745');\nhashMap.set('smithy','9641b91d065ffb63be0dd888139a0402dba41e550f8b44c592db9daf52109100');\nhashMap.set('sveltos','60dd75bb53ace31217211100d622fdb65068c6162758b6ae7103a6ce8bdc9f90');\nhashMap.set('swift','cdf063debdbf36888523ff8cec6d2d1b0ec6f49b37b2fbcd80b0d4f6a31114e1');\nhashMap.set('tekton','33948f5bdf7553909fa63744adb26da97ddf366e9499bccab1250879570267c9');\nhashMap.set('terraform','6788a8569ba9c50c763ffa2bed952a4314ae8e696c29f93d3eb7c4a12d99ce20');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','300f8fb3c09667654412d2f5dd8ab4882e0f5d1d7a8bc39794993d2e7e58d1b7');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','f423bfa2b42a2bfc0e38a33ebd4f9d452473e7ed4e7ad6384a99eb9a35d97479');\nhashMap.set('travis','f3e2f38e699c390b00ff481be5e91dceaa81609e93caf9a4214933de759c84fc');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','48e2bff8d3a96e8011ee12776fe9c6e8aac4718ff47e891c294a8f12660cb1bb');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('xcodegen','dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683');\nhashMap.set('jsonata','416bcf61144b276b3112814c6e6d261aa29608f46fbb0516c471d35c16f8f0d7');\nhashMap.set('regex','20be5247fdc164173871a051acb0527da017d0c155c653d7563601f55e7b3ff5');"],"mappings":"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"}
|
|
@@ -2,8 +2,11 @@
|
|
|
2
2
|
const knownDepTypes = [{
|
|
3
3
|
depType: "tools",
|
|
4
4
|
description: "A tool defined under the top-level `[tools]` table"
|
|
5
|
+
}, {
|
|
6
|
+
depType: "include",
|
|
7
|
+
description: "A remote configuration file (`git::` or `oci::`) referenced in the top-level `include` array"
|
|
5
8
|
}];
|
|
6
|
-
const supportsDynamicDepTypesNote = "Tools defined under `tasks.<name>.tools` produce dynamic `depType` values in the form `task-<name>-tools`, where `<name>` is the task name (e.g. `task-lint-tools`).";
|
|
9
|
+
const supportsDynamicDepTypesNote = "Tools defined under `tasks.<name>.tools` produce dynamic `depType` values in the form `task-<name>-tools`, and remote `git::` task files defined in `tasks.<name>.file` produce `task-<name>-file`, where `<name>` is the task name (e.g. `task-lint-tools`, `task-build-file`).";
|
|
7
10
|
//#endregion
|
|
8
11
|
export { knownDepTypes, supportsDynamicDepTypesNote };
|
|
9
12
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dep-types.js","names":[],"sources":["../../../../lib/modules/manager/mise/dep-types.ts"],"sourcesContent":["import type { DepTypeMetadata } from '../types.ts';\n\nexport const knownDepTypes = [\n {\n depType: 'tools',\n description: 'A tool defined under the top-level `[tools]` table',\n },\n] as const satisfies readonly DepTypeMetadata[];\n\nexport const supportsDynamicDepTypesNote =\n 'Tools defined under `tasks.<name>.tools` produce dynamic `depType` values in the form `task-<name>-tools`, where `<name>` is the task name (e.g. `task-lint-tools`).';\n"],"mappings":";AAEA,MAAa,gBAAgB,CAC3B;CACE,SAAS;CACT,aAAa;AACf,CACF;AAEA,MAAa,8BACX"}
|
|
1
|
+
{"version":3,"file":"dep-types.js","names":[],"sources":["../../../../lib/modules/manager/mise/dep-types.ts"],"sourcesContent":["import type { DepTypeMetadata } from '../types.ts';\n\nexport const knownDepTypes = [\n {\n depType: 'tools',\n description: 'A tool defined under the top-level `[tools]` table',\n },\n {\n depType: 'include',\n description:\n 'A remote configuration file (`git::` or `oci::`) referenced in the top-level `include` array',\n },\n] as const satisfies readonly DepTypeMetadata[];\n\nexport const supportsDynamicDepTypesNote =\n 'Tools defined under `tasks.<name>.tools` produce dynamic `depType` values in the form `task-<name>-tools`, and remote `git::` task files defined in `tasks.<name>.file` produce `task-<name>-file`, where `<name>` is the task name (e.g. `task-lint-tools`, `task-build-file`).';\n"],"mappings":";AAEA,MAAa,gBAAgB,CAC3B;CACE,SAAS;CACT,aAAa;AACf,GACA;CACE,SAAS;CACT,aACE;AACJ,CACF;AAEA,MAAa,8BACX"}
|
|
@@ -8,6 +8,8 @@ import { NodeVersionDatasource } from "../../datasource/node-version/index.js";
|
|
|
8
8
|
import { getLockFileName, getLockedVersion } from "./lockfile.js";
|
|
9
9
|
import java_version_lts_default from "../../../data/java-version-lts.js";
|
|
10
10
|
import { createAquaToolConfig, createCargoToolConfig, createCondaToolConfig, createDotnetToolConfig, createGemToolConfig, createGithubToolConfig, createGitlabToolConfig, createGoToolConfig, createNpmToolConfig, createPipxToolConfig, createPypiToolConfig, createSpmToolConfig, createUbiToolConfig } from "./backends.js";
|
|
11
|
+
import { extractGitReference } from "./git-reference.js";
|
|
12
|
+
import { extractInclude } from "./include.js";
|
|
11
13
|
import { MiseLockFile } from "./schema.js";
|
|
12
14
|
import { asdfTooling, getOrderedMiseRegistryBackends, miseTooling } from "./upgradeable-tooling.js";
|
|
13
15
|
import { parseTomlFile } from "./utils.js";
|
|
@@ -37,7 +39,13 @@ async function extractPackageFile(content, packageFile) {
|
|
|
37
39
|
toolData,
|
|
38
40
|
`task-${taskName}-tools`
|
|
39
41
|
]);
|
|
40
|
-
|
|
42
|
+
const taskFileDeps = [];
|
|
43
|
+
for (const [taskName, taskData] of Object.entries(misefile.tasks)) if (taskData.file) {
|
|
44
|
+
const dep = extractGitReference(taskData.file.trim(), content, `task-${taskName}-file`);
|
|
45
|
+
if (dep) taskFileDeps.push(dep);
|
|
46
|
+
}
|
|
47
|
+
const includeDeps = misefile.include.map((include) => extractInclude(include, content));
|
|
48
|
+
if (!toolEntries.length && !taskFileDeps.length && !includeDeps.length) return null;
|
|
41
49
|
const lockFileName = getLockFileName(packageFile);
|
|
42
50
|
const lockFileContent = await readLocalFile(lockFileName, "utf8");
|
|
43
51
|
let lockFileData;
|
|
@@ -49,7 +57,11 @@ async function extractPackageFile(content, packageFile) {
|
|
|
49
57
|
err: lockFileParsed.error
|
|
50
58
|
}, "Failed to parse mise lock file");
|
|
51
59
|
}
|
|
52
|
-
const result = { deps:
|
|
60
|
+
const result = { deps: [
|
|
61
|
+
...toolEntries.map(([name, toolData, depType]) => extractToolEntry(name, toolData, depType, lockFileData)),
|
|
62
|
+
...taskFileDeps,
|
|
63
|
+
...includeDeps
|
|
64
|
+
] };
|
|
53
65
|
if (lockFileData) result.lockFiles = [lockFileName];
|
|
54
66
|
return result;
|
|
55
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/mise/extract.ts"],"sourcesContent":["import {\n isArray,\n isFunction,\n isNonEmptyString,\n isObject,\n} from '@sindresorhus/is';\nimport javaLtsVersions from '../../../data/java-version-lts.json' with { type: 'json' };\nimport { logger } from '../../../logger/index.ts';\nimport { readLocalFile } from '../../../util/fs/index.ts';\nimport { coerceObject } from '../../../util/object.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { GithubReleasesDatasource } from '../../datasource/github-releases/index.ts';\nimport { JavaVersionDatasource } from '../../datasource/java-version/index.ts';\nimport { NodeVersionDatasource } from '../../datasource/node-version/index.ts';\nimport type { StaticTooling } from '../asdf/types.ts';\nimport type { PackageDependency, PackageFileContent } from '../types.ts';\nimport {\n createAquaToolConfig,\n createCargoToolConfig,\n createCondaToolConfig,\n createDotnetToolConfig,\n createGemToolConfig,\n createGithubToolConfig,\n createGitlabToolConfig,\n createGoToolConfig,\n createNpmToolConfig,\n createPipxToolConfig,\n createPypiToolConfig,\n createSpmToolConfig,\n createUbiToolConfig,\n} from './backends.ts';\nimport { getLockFileName, getLockedVersion } from './lockfile.ts';\nimport type { MiseTool, MiseToolOptions, MiseToolValue } from './schema.ts';\nimport { MiseLockFile } from './schema.ts';\nimport type { BackendToolingConfig, ToolingDefinition } from './types.ts';\nimport {\n asdfTooling,\n getOrderedMiseRegistryBackends,\n miseTooling,\n} from './upgradeable-tooling.ts';\nimport { parseTomlFile } from './utils.ts';\n\n// Tool names can have options in the tool name\n// e.g. ubi:tamasfe/taplo[matching=full,exe=taplo]\nconst optionInToolNameRegex = regEx(/^(?<name>.+?)(?:\\[(?<options>.+)\\])?$/);\nconst nonVersionSelectorRegex = regEx(/^(?:ref:|path:|sub-\\d+(?::|$))/);\nconst partialSelectorRegex = regEx(\n /^(?<prefix>[^\\d]*)(?<major>\\d+)(?:\\.(?<minor>\\d+))?$/,\n);\nconst versionPrefixRegex = regEx(/^(?<prefix>[^\\d]*)\\d/);\n\ntype MiseDependency = PackageDependency & { depName: string };\n\ninterface MiseSelectorConfig {\n allowedVersions?: string;\n ignoreUnstable?: boolean;\n}\n\n/**\n * Extracts mise tool dependencies from a mise configuration file.\n * Supports various backends (core, asdf, aqua, cargo, etc.) and\n * extracts locked versions when a corresponding lock file exists.\n */\nexport async function extractPackageFile(\n content: string,\n packageFile: string,\n): Promise<PackageFileContent | null> {\n logger.trace(`mise.extractPackageFile(${packageFile})`);\n\n const misefile = parseTomlFile(content, packageFile);\n if (!misefile) {\n return null;\n }\n\n const toolEntries: [string, MiseTool, string][] = [];\n\n for (const [name, toolData] of Object.entries(misefile.tools)) {\n toolEntries.push([name, toolData, 'tools']);\n }\n\n for (const [taskName, taskData] of Object.entries(misefile.tasks)) {\n for (const [name, toolData] of Object.entries(\n coerceObject(taskData.tools),\n )) {\n toolEntries.push([name, toolData, `task-${taskName}-tools`]);\n }\n }\n\n if (!toolEntries.length) {\n return null;\n }\n\n const lockFileName = getLockFileName(packageFile);\n const lockFileContent = await readLocalFile(lockFileName, 'utf8');\n let lockFileData: MiseLockFile | undefined;\n if (lockFileContent) {\n const lockFileParsed = MiseLockFile.safeParse(lockFileContent);\n if (lockFileParsed.success) {\n lockFileData = lockFileParsed.data;\n } else {\n logger.debug(\n { lockFileName, err: lockFileParsed.error },\n 'Failed to parse mise lock file',\n );\n }\n }\n\n const deps = toolEntries.map(([name, toolData, depType]) =>\n extractToolEntry(name, toolData, depType, lockFileData),\n );\n const result: PackageFileContent = { deps };\n\n if (lockFileData) {\n result.lockFiles = [lockFileName];\n }\n\n return result;\n}\n\n/**\n * Returns the primary tool entry. For arrays only the first entry is managed,\n * e.g. 'erlang = [\"23.3\", \"24.0\"]' or\n * 'rust = [{ version = \"1.98.1\", profile = \"minimal\" }, { version = \"nightly\" }]'.\n */\nfunction getPrimaryToolValue(toolData: MiseTool): MiseToolValue | null {\n if (isArray(toolData)) {\n return toolData.length ? toolData[0] : null;\n }\n return toolData;\n}\n\nfunction parseVersion(toolValue: MiseToolValue | null): string | null {\n if (isNonEmptyString(toolValue)) {\n // Handle the string case\n // e.g. 'erlang = \"23.3\"'\n return toolValue;\n }\n if (isObject(toolValue) && isNonEmptyString(toolValue.version)) {\n // Handle the object case with a string version\n // e.g. 'python = { version = \"3.11.2\" }'\n return toolValue.version;\n }\n return null; // Return null if no version is found\n}\n\nfunction parseOptions(\n optionsInName: string,\n toolOptions: MiseToolOptions,\n): MiseToolOptions {\n const options = isNonEmptyString(optionsInName)\n ? Object.fromEntries(\n optionsInName.split(',').map((option) => option.split('=', 2)),\n )\n : {};\n // Options in toolOptions will override options in the tool name\n return {\n ...options,\n ...toolOptions,\n };\n}\n\nfunction getToolConfig(\n backend: string,\n toolName: string,\n version: string,\n toolOptions: MiseToolOptions,\n): StaticTooling | BackendToolingConfig | null {\n switch (backend) {\n case '': {\n // If the tool name does not specify a backend, it should be a short name or an alias defined by users\n const staticResult = getRegistryToolConfig(toolName, version);\n if (staticResult) {\n return staticResult;\n }\n\n // Otherwise, see if we have any known short tool names that are in the `mise-registry.json` data file\n const backends = getOrderedMiseRegistryBackends(toolName);\n\n // prioritise the github backend as the best source for data\n if (backends.github) {\n const result = getToolConfig(\n 'github',\n backends.github,\n version,\n toolOptions,\n );\n // v8 ignore else -- TODO: add test #40625\n if (result !== null) {\n return result;\n }\n }\n\n for (const [backendType, backendName] of Object.entries(backends)) {\n const result = getToolConfig(\n backendType,\n backendName,\n version,\n toolOptions,\n );\n // v8 ignore else -- TODO: add test #40625\n if (result !== null) {\n return result;\n }\n }\n return null;\n }\n // We can specify core, asdf, vfox, aqua backends for tools in the default registry\n // e.g. 'core:rust', 'asdf:rust', 'vfox:clang', 'aqua:act'\n case 'core':\n return getConfigFromTooling(miseTooling, toolName, version);\n case 'asdf':\n return getConfigFromTooling(asdfTooling, toolName, version);\n case 'vfox':\n return getRegistryToolConfig(toolName, version);\n case 'aqua':\n return (\n getRegistryToolConfig(toolName, version) ??\n createAquaToolConfig(toolName, version)\n );\n case 'cargo':\n return createCargoToolConfig(toolName, version);\n case 'conda':\n return createCondaToolConfig(toolName);\n case 'dotnet':\n return createDotnetToolConfig(toolName);\n case 'gem':\n return createGemToolConfig(toolName);\n case 'github':\n return createGithubToolConfig(toolName, version, toolOptions);\n case 'gitlab':\n return createGitlabToolConfig(toolName, version, toolOptions);\n case 'go':\n return createGoToolConfig(toolName);\n case 'npm':\n return createNpmToolConfig(toolName);\n case 'pipx':\n return createPipxToolConfig(toolName);\n case 'pypi':\n return createPypiToolConfig(toolName);\n case 'spm':\n return createSpmToolConfig(toolName);\n case 'ubi':\n return createUbiToolConfig(toolName, version, toolOptions);\n default:\n // Unsupported backend\n return null;\n }\n}\n\n/**\n * Get the tooling config for a short name defined in the default registry\n * @link https://mise.jdx.dev/registry.html\n */\nfunction getRegistryToolConfig(\n short: string,\n version: string,\n): StaticTooling | null {\n // Try to get the config from miseTooling first, then asdfTooling\n return (\n getConfigFromTooling(miseTooling, short, version) ??\n getConfigFromTooling(asdfTooling, short, version)\n );\n}\n\nfunction getConfigFromTooling(\n toolingSource: Record<string, ToolingDefinition>,\n name: string,\n version: string,\n): StaticTooling | null {\n const toolDefinition = toolingSource[name];\n if (!toolDefinition) {\n return null;\n } // Return null if no toolDefinition is found\n\n return (\n (isFunction(toolDefinition.config)\n ? toolDefinition.config(version)\n : toolDefinition.config) ?? null\n ); // Ensure null is returned instead of undefined\n}\n\nfunction getLtsDatasource(\n backend: string,\n toolName: string,\n datasource: string | undefined,\n): string | undefined {\n if (datasource) {\n return datasource;\n }\n if ((backend === '' || backend === 'core') && toolName === 'java') {\n return JavaVersionDatasource.id;\n }\n return undefined;\n}\n\nfunction getSelectorConfig(\n version: string,\n backend: string,\n toolName: string,\n datasource: string | undefined,\n lockedVersion: string,\n): MiseSelectorConfig | null {\n if (version === 'latest') {\n return {};\n }\n\n if (version === 'lts') {\n const ltsDatasource = getLtsDatasource(backend, toolName, datasource);\n if (ltsDatasource === NodeVersionDatasource.id) {\n return { ignoreUnstable: true };\n }\n if (ltsDatasource === JavaVersionDatasource.id) {\n return {\n allowedVersions: `/^(?:${javaLtsVersions.join('|')})(?:\\\\.|-|\\\\+|$)/`,\n ignoreUnstable: true,\n };\n }\n return null;\n }\n\n if (nonVersionSelectorRegex.test(version)) {\n return null;\n }\n\n const match = partialSelectorRegex.exec(version);\n if (!match?.groups || lockedVersion === version) {\n return null;\n }\n\n const { prefix, major, minor } = match.groups;\n const lockedPrefix = versionPrefixRegex.exec(lockedVersion)?.groups?.prefix;\n const effectivePrefix = prefix || lockedPrefix;\n let prefixPattern = '';\n if (effectivePrefix) {\n prefixPattern = `(?:${RegExp.escape(effectivePrefix)})?`;\n } else if (\n datasource === GithubReleasesDatasource.id ||\n datasource === NodeVersionDatasource.id\n ) {\n prefixPattern = `(?:${RegExp.escape('v')})?`;\n }\n const precisionPattern = minor\n ? `\\\\.${minor}(?:\\\\.|-|\\\\+|$)`\n : `(?:\\\\.|-|\\\\+|$)`;\n return {\n allowedVersions: `/^${prefixPattern}${major}${precisionPattern}/`,\n };\n}\n\nfunction extractSelectorLockedDependency(\n depName: string,\n version: string,\n backend: string,\n toolName: string,\n options: MiseToolOptions,\n toolConfig: StaticTooling | BackendToolingConfig | null,\n lockedVersion: string,\n depType: string,\n): PackageDependency | null {\n const selectorConfig = getSelectorConfig(\n version,\n backend,\n toolName,\n toolConfig?.datasource,\n lockedVersion,\n );\n if (!selectorConfig) {\n return null;\n }\n\n const resolvedToolConfig = getToolConfig(\n backend,\n toolName,\n lockedVersion,\n options,\n );\n if (!resolvedToolConfig) {\n return null;\n }\n\n const comparableLockedVersion =\n resolvedToolConfig.currentValue ?? lockedVersion;\n return {\n ...createDependency(depName, version, resolvedToolConfig, depType),\n currentValue: version,\n lockedVersion: comparableLockedVersion,\n rangeStrategy: 'update-lockfile',\n isLockfileOnly: true,\n ...selectorConfig,\n };\n}\n\nfunction extractToolEntry(\n name: string,\n toolData: MiseTool,\n depType: string,\n lockFileData?: MiseLockFile,\n): PackageDependency {\n const toolValue = getPrimaryToolValue(toolData);\n const version = parseVersion(toolValue);\n const { name: depName, options: optionsInName } = optionInToolNameRegex.exec(\n name.trim(),\n )!.groups!;\n const delimiterIndex = depName.indexOf(':');\n const backend = depName.substring(0, delimiterIndex);\n const toolName = depName.substring(delimiterIndex + 1);\n const options = parseOptions(\n optionsInName,\n isObject(toolValue) ? toolValue : {},\n );\n const toolConfig =\n version === null\n ? null\n : getToolConfig(backend, toolName, version, options);\n const dependency = createDependency(depName, version, toolConfig, depType);\n const lockedVersion = lockFileData\n ? getLockedVersion(lockFileData, dependency.depName)\n : undefined;\n\n if (version !== null && lockedVersion) {\n const selectorDependency = extractSelectorLockedDependency(\n depName,\n version,\n backend,\n toolName,\n options,\n toolConfig,\n lockedVersion,\n depType,\n );\n if (selectorDependency) {\n return selectorDependency;\n }\n }\n\n if (lockedVersion) {\n return { ...dependency, lockedVersion };\n }\n return dependency;\n}\n\nfunction getConfiguredDepName(\n config: StaticTooling | BackendToolingConfig,\n): string | undefined {\n if ('depName' in config) {\n return config.depName;\n }\n return undefined;\n}\n\nfunction createDependency(\n name: string,\n version: string | null,\n config: StaticTooling | BackendToolingConfig | null,\n depType: string,\n): MiseDependency {\n if (version === null) {\n return {\n depName: name,\n depType,\n skipReason: 'unspecified-version',\n };\n }\n if (config === null) {\n return {\n depName: name,\n depType,\n skipReason: 'unsupported-datasource',\n };\n }\n\n return {\n depType,\n currentValue: version,\n ...config,\n // Allow tooling definitions to override the parsed mise tool name.\n depName: getConfiguredDepName(config) ?? name,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/mise/extract.ts"],"sourcesContent":["import {\n isArray,\n isFunction,\n isNonEmptyString,\n isObject,\n} from '@sindresorhus/is';\nimport javaLtsVersions from '../../../data/java-version-lts.json' with { type: 'json' };\nimport { logger } from '../../../logger/index.ts';\nimport { readLocalFile } from '../../../util/fs/index.ts';\nimport { coerceObject } from '../../../util/object.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { GithubReleasesDatasource } from '../../datasource/github-releases/index.ts';\nimport { JavaVersionDatasource } from '../../datasource/java-version/index.ts';\nimport { NodeVersionDatasource } from '../../datasource/node-version/index.ts';\nimport type { StaticTooling } from '../asdf/types.ts';\nimport type { PackageDependency, PackageFileContent } from '../types.ts';\nimport {\n createAquaToolConfig,\n createCargoToolConfig,\n createCondaToolConfig,\n createDotnetToolConfig,\n createGemToolConfig,\n createGithubToolConfig,\n createGitlabToolConfig,\n createGoToolConfig,\n createNpmToolConfig,\n createPipxToolConfig,\n createPypiToolConfig,\n createSpmToolConfig,\n createUbiToolConfig,\n} from './backends.ts';\nimport { extractGitReference } from './git-reference.ts';\nimport { extractInclude } from './include.ts';\nimport { getLockFileName, getLockedVersion } from './lockfile.ts';\nimport type { MiseTool, MiseToolOptions, MiseToolValue } from './schema.ts';\nimport { MiseLockFile } from './schema.ts';\nimport type { BackendToolingConfig, ToolingDefinition } from './types.ts';\nimport {\n asdfTooling,\n getOrderedMiseRegistryBackends,\n miseTooling,\n} from './upgradeable-tooling.ts';\nimport { parseTomlFile } from './utils.ts';\n\n// Tool names can have options in the tool name\n// e.g. ubi:tamasfe/taplo[matching=full,exe=taplo]\nconst optionInToolNameRegex = regEx(/^(?<name>.+?)(?:\\[(?<options>.+)\\])?$/);\nconst nonVersionSelectorRegex = regEx(/^(?:ref:|path:|sub-\\d+(?::|$))/);\nconst partialSelectorRegex = regEx(\n /^(?<prefix>[^\\d]*)(?<major>\\d+)(?:\\.(?<minor>\\d+))?$/,\n);\nconst versionPrefixRegex = regEx(/^(?<prefix>[^\\d]*)\\d/);\n\ntype MiseDependency = PackageDependency & { depName: string };\n\ninterface MiseSelectorConfig {\n allowedVersions?: string;\n ignoreUnstable?: boolean;\n}\n\n/**\n * Extracts mise tool dependencies from a mise configuration file.\n * Supports various backends (core, asdf, aqua, cargo, etc.) and\n * extracts locked versions when a corresponding lock file exists.\n */\nexport async function extractPackageFile(\n content: string,\n packageFile: string,\n): Promise<PackageFileContent | null> {\n logger.trace(`mise.extractPackageFile(${packageFile})`);\n\n const misefile = parseTomlFile(content, packageFile);\n if (!misefile) {\n return null;\n }\n\n const toolEntries: [string, MiseTool, string][] = [];\n\n for (const [name, toolData] of Object.entries(misefile.tools)) {\n toolEntries.push([name, toolData, 'tools']);\n }\n\n for (const [taskName, taskData] of Object.entries(misefile.tasks)) {\n for (const [name, toolData] of Object.entries(\n coerceObject(taskData.tools),\n )) {\n toolEntries.push([name, toolData, `task-${taskName}-tools`]);\n }\n }\n\n const taskFileDeps: PackageDependency[] = [];\n for (const [taskName, taskData] of Object.entries(misefile.tasks)) {\n if (taskData.file) {\n // local paths and plain http(s) urls have no version\n const dep = extractGitReference(\n taskData.file.trim(),\n content,\n `task-${taskName}-file`,\n );\n if (dep) {\n taskFileDeps.push(dep);\n }\n }\n }\n\n const includeDeps = misefile.include.map((include) =>\n extractInclude(include, content),\n );\n\n if (!toolEntries.length && !taskFileDeps.length && !includeDeps.length) {\n return null;\n }\n\n const lockFileName = getLockFileName(packageFile);\n const lockFileContent = await readLocalFile(lockFileName, 'utf8');\n let lockFileData: MiseLockFile | undefined;\n if (lockFileContent) {\n const lockFileParsed = MiseLockFile.safeParse(lockFileContent);\n if (lockFileParsed.success) {\n lockFileData = lockFileParsed.data;\n } else {\n logger.debug(\n { lockFileName, err: lockFileParsed.error },\n 'Failed to parse mise lock file',\n );\n }\n }\n\n const deps = [\n ...toolEntries.map(([name, toolData, depType]) =>\n extractToolEntry(name, toolData, depType, lockFileData),\n ),\n ...taskFileDeps,\n ...includeDeps,\n ];\n const result: PackageFileContent = { deps };\n\n if (lockFileData) {\n result.lockFiles = [lockFileName];\n }\n\n return result;\n}\n\n/**\n * Returns the primary tool entry. For arrays only the first entry is managed,\n * e.g. 'erlang = [\"23.3\", \"24.0\"]' or\n * 'rust = [{ version = \"1.98.1\", profile = \"minimal\" }, { version = \"nightly\" }]'.\n */\nfunction getPrimaryToolValue(toolData: MiseTool): MiseToolValue | null {\n if (isArray(toolData)) {\n return toolData.length ? toolData[0] : null;\n }\n return toolData;\n}\n\nfunction parseVersion(toolValue: MiseToolValue | null): string | null {\n if (isNonEmptyString(toolValue)) {\n // Handle the string case\n // e.g. 'erlang = \"23.3\"'\n return toolValue;\n }\n if (isObject(toolValue) && isNonEmptyString(toolValue.version)) {\n // Handle the object case with a string version\n // e.g. 'python = { version = \"3.11.2\" }'\n return toolValue.version;\n }\n return null; // Return null if no version is found\n}\n\nfunction parseOptions(\n optionsInName: string,\n toolOptions: MiseToolOptions,\n): MiseToolOptions {\n const options = isNonEmptyString(optionsInName)\n ? Object.fromEntries(\n optionsInName.split(',').map((option) => option.split('=', 2)),\n )\n : {};\n // Options in toolOptions will override options in the tool name\n return {\n ...options,\n ...toolOptions,\n };\n}\n\nfunction getToolConfig(\n backend: string,\n toolName: string,\n version: string,\n toolOptions: MiseToolOptions,\n): StaticTooling | BackendToolingConfig | null {\n switch (backend) {\n case '': {\n // If the tool name does not specify a backend, it should be a short name or an alias defined by users\n const staticResult = getRegistryToolConfig(toolName, version);\n if (staticResult) {\n return staticResult;\n }\n\n // Otherwise, see if we have any known short tool names that are in the `mise-registry.json` data file\n const backends = getOrderedMiseRegistryBackends(toolName);\n\n // prioritise the github backend as the best source for data\n if (backends.github) {\n const result = getToolConfig(\n 'github',\n backends.github,\n version,\n toolOptions,\n );\n // v8 ignore else -- TODO: add test #40625\n if (result !== null) {\n return result;\n }\n }\n\n for (const [backendType, backendName] of Object.entries(backends)) {\n const result = getToolConfig(\n backendType,\n backendName,\n version,\n toolOptions,\n );\n // v8 ignore else -- TODO: add test #40625\n if (result !== null) {\n return result;\n }\n }\n return null;\n }\n // We can specify core, asdf, vfox, aqua backends for tools in the default registry\n // e.g. 'core:rust', 'asdf:rust', 'vfox:clang', 'aqua:act'\n case 'core':\n return getConfigFromTooling(miseTooling, toolName, version);\n case 'asdf':\n return getConfigFromTooling(asdfTooling, toolName, version);\n case 'vfox':\n return getRegistryToolConfig(toolName, version);\n case 'aqua':\n return (\n getRegistryToolConfig(toolName, version) ??\n createAquaToolConfig(toolName, version)\n );\n case 'cargo':\n return createCargoToolConfig(toolName, version);\n case 'conda':\n return createCondaToolConfig(toolName);\n case 'dotnet':\n return createDotnetToolConfig(toolName);\n case 'gem':\n return createGemToolConfig(toolName);\n case 'github':\n return createGithubToolConfig(toolName, version, toolOptions);\n case 'gitlab':\n return createGitlabToolConfig(toolName, version, toolOptions);\n case 'go':\n return createGoToolConfig(toolName);\n case 'npm':\n return createNpmToolConfig(toolName);\n case 'pipx':\n return createPipxToolConfig(toolName);\n case 'pypi':\n return createPypiToolConfig(toolName);\n case 'spm':\n return createSpmToolConfig(toolName);\n case 'ubi':\n return createUbiToolConfig(toolName, version, toolOptions);\n default:\n // Unsupported backend\n return null;\n }\n}\n\n/**\n * Get the tooling config for a short name defined in the default registry\n * @link https://mise.jdx.dev/registry.html\n */\nfunction getRegistryToolConfig(\n short: string,\n version: string,\n): StaticTooling | null {\n // Try to get the config from miseTooling first, then asdfTooling\n return (\n getConfigFromTooling(miseTooling, short, version) ??\n getConfigFromTooling(asdfTooling, short, version)\n );\n}\n\nfunction getConfigFromTooling(\n toolingSource: Record<string, ToolingDefinition>,\n name: string,\n version: string,\n): StaticTooling | null {\n const toolDefinition = toolingSource[name];\n if (!toolDefinition) {\n return null;\n } // Return null if no toolDefinition is found\n\n return (\n (isFunction(toolDefinition.config)\n ? toolDefinition.config(version)\n : toolDefinition.config) ?? null\n ); // Ensure null is returned instead of undefined\n}\n\nfunction getLtsDatasource(\n backend: string,\n toolName: string,\n datasource: string | undefined,\n): string | undefined {\n if (datasource) {\n return datasource;\n }\n if ((backend === '' || backend === 'core') && toolName === 'java') {\n return JavaVersionDatasource.id;\n }\n return undefined;\n}\n\nfunction getSelectorConfig(\n version: string,\n backend: string,\n toolName: string,\n datasource: string | undefined,\n lockedVersion: string,\n): MiseSelectorConfig | null {\n if (version === 'latest') {\n return {};\n }\n\n if (version === 'lts') {\n const ltsDatasource = getLtsDatasource(backend, toolName, datasource);\n if (ltsDatasource === NodeVersionDatasource.id) {\n return { ignoreUnstable: true };\n }\n if (ltsDatasource === JavaVersionDatasource.id) {\n return {\n allowedVersions: `/^(?:${javaLtsVersions.join('|')})(?:\\\\.|-|\\\\+|$)/`,\n ignoreUnstable: true,\n };\n }\n return null;\n }\n\n if (nonVersionSelectorRegex.test(version)) {\n return null;\n }\n\n const match = partialSelectorRegex.exec(version);\n if (!match?.groups || lockedVersion === version) {\n return null;\n }\n\n const { prefix, major, minor } = match.groups;\n const lockedPrefix = versionPrefixRegex.exec(lockedVersion)?.groups?.prefix;\n const effectivePrefix = prefix || lockedPrefix;\n let prefixPattern = '';\n if (effectivePrefix) {\n prefixPattern = `(?:${RegExp.escape(effectivePrefix)})?`;\n } else if (\n datasource === GithubReleasesDatasource.id ||\n datasource === NodeVersionDatasource.id\n ) {\n prefixPattern = `(?:${RegExp.escape('v')})?`;\n }\n const precisionPattern = minor\n ? `\\\\.${minor}(?:\\\\.|-|\\\\+|$)`\n : `(?:\\\\.|-|\\\\+|$)`;\n return {\n allowedVersions: `/^${prefixPattern}${major}${precisionPattern}/`,\n };\n}\n\nfunction extractSelectorLockedDependency(\n depName: string,\n version: string,\n backend: string,\n toolName: string,\n options: MiseToolOptions,\n toolConfig: StaticTooling | BackendToolingConfig | null,\n lockedVersion: string,\n depType: string,\n): PackageDependency | null {\n const selectorConfig = getSelectorConfig(\n version,\n backend,\n toolName,\n toolConfig?.datasource,\n lockedVersion,\n );\n if (!selectorConfig) {\n return null;\n }\n\n const resolvedToolConfig = getToolConfig(\n backend,\n toolName,\n lockedVersion,\n options,\n );\n if (!resolvedToolConfig) {\n return null;\n }\n\n const comparableLockedVersion =\n resolvedToolConfig.currentValue ?? lockedVersion;\n return {\n ...createDependency(depName, version, resolvedToolConfig, depType),\n currentValue: version,\n lockedVersion: comparableLockedVersion,\n rangeStrategy: 'update-lockfile',\n isLockfileOnly: true,\n ...selectorConfig,\n };\n}\n\nfunction extractToolEntry(\n name: string,\n toolData: MiseTool,\n depType: string,\n lockFileData?: MiseLockFile,\n): PackageDependency {\n const toolValue = getPrimaryToolValue(toolData);\n const version = parseVersion(toolValue);\n const { name: depName, options: optionsInName } = optionInToolNameRegex.exec(\n name.trim(),\n )!.groups!;\n const delimiterIndex = depName.indexOf(':');\n const backend = depName.substring(0, delimiterIndex);\n const toolName = depName.substring(delimiterIndex + 1);\n const options = parseOptions(\n optionsInName,\n isObject(toolValue) ? toolValue : {},\n );\n const toolConfig =\n version === null\n ? null\n : getToolConfig(backend, toolName, version, options);\n const dependency = createDependency(depName, version, toolConfig, depType);\n const lockedVersion = lockFileData\n ? getLockedVersion(lockFileData, dependency.depName)\n : undefined;\n\n if (version !== null && lockedVersion) {\n const selectorDependency = extractSelectorLockedDependency(\n depName,\n version,\n backend,\n toolName,\n options,\n toolConfig,\n lockedVersion,\n depType,\n );\n if (selectorDependency) {\n return selectorDependency;\n }\n }\n\n if (lockedVersion) {\n return { ...dependency, lockedVersion };\n }\n return dependency;\n}\n\nfunction getConfiguredDepName(\n config: StaticTooling | BackendToolingConfig,\n): string | undefined {\n if ('depName' in config) {\n return config.depName;\n }\n return undefined;\n}\n\nfunction createDependency(\n name: string,\n version: string | null,\n config: StaticTooling | BackendToolingConfig | null,\n depType: string,\n): MiseDependency {\n if (version === null) {\n return {\n depName: name,\n depType,\n skipReason: 'unspecified-version',\n };\n }\n if (config === null) {\n return {\n depName: name,\n depType,\n skipReason: 'unsupported-datasource',\n };\n }\n\n return {\n depType,\n currentValue: version,\n ...config,\n // Allow tooling definitions to override the parsed mise tool name.\n depName: getConfiguredDepName(config) ?? name,\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { regEx } from "../../../util/regex.js";
|
|
2
|
+
import { trimSlashes } from "../../../util/url.js";
|
|
3
|
+
import { id } from "../../versioning/exact/index.js";
|
|
4
|
+
import { BitbucketTagsDatasource } from "../../datasource/bitbucket-tags/index.js";
|
|
5
|
+
import { parseGitUrl } from "../../../util/git/url.js";
|
|
6
|
+
import { GitRefsDatasource } from "../../datasource/git-refs/index.js";
|
|
7
|
+
import { GitTagsDatasource } from "../../datasource/git-tags/index.js";
|
|
8
|
+
import { GithubDigestDatasource } from "../../datasource/github-digest/index.js";
|
|
9
|
+
import { GithubTagsDatasource } from "../../datasource/github-tags/index.js";
|
|
10
|
+
import { GitlabTagsDatasource } from "../../datasource/gitlab-tags/index.js";
|
|
11
|
+
import { isSha, isShortSha, versionLikeRe } from "../github-actions/parse.js";
|
|
12
|
+
//#region lib/modules/manager/mise/git-reference.ts
|
|
13
|
+
const gitPrefix = "git::";
|
|
14
|
+
const protocolRegex = regEx(/^(?:https?|ssh):\/\/[^/]+/);
|
|
15
|
+
const azureDevOpsSshRegex = regEx(/^(?<url>git@(?<host>ssh\.dev\.azure\.com):v3\/(?<repoName>[^/]+\/[^/]+\/[^/]+))\/\/[^?]+(?:\?(?<query>.*))?$/);
|
|
16
|
+
const refValueRegex = regEx(/(?<prefix>[?&]ref=)[^&]+/);
|
|
17
|
+
const trailingCommentRegex = regEx(/^(?<separator>["']\s*,?[ \t]*)#[ \t]*(?<value>[^\s#=]+)$/);
|
|
18
|
+
/**
|
|
19
|
+
* Finds the trailing `# <version>` or `# <branch>` comment of an entry in the raw file.
|
|
20
|
+
* Only entries of multi-line arrays can carry a comment.
|
|
21
|
+
*/
|
|
22
|
+
function findComment(reference, content) {
|
|
23
|
+
let index = content.indexOf(reference);
|
|
24
|
+
while (index !== -1) {
|
|
25
|
+
const end = index + reference.length;
|
|
26
|
+
const lineEnd = content.indexOf("\n", end);
|
|
27
|
+
const suffix = content.slice(end, lineEnd === -1 ? void 0 : lineEnd).trimEnd();
|
|
28
|
+
const groups = trailingCommentRegex.exec(suffix)?.groups;
|
|
29
|
+
if (groups) return {
|
|
30
|
+
separator: groups.separator,
|
|
31
|
+
replaceSuffix: suffix,
|
|
32
|
+
value: groups.value
|
|
33
|
+
};
|
|
34
|
+
index = content.indexOf(reference, end);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Handles `ref=<sha>`: the version or branch comes from the trailing comment.
|
|
39
|
+
*/
|
|
40
|
+
function applyPinnedRef(dep, reference, url, ref, content) {
|
|
41
|
+
if (isSha(ref)) dep.currentDigest = ref;
|
|
42
|
+
else dep.currentDigestShort = ref;
|
|
43
|
+
const comment = findComment(reference, content);
|
|
44
|
+
if (!comment) {
|
|
45
|
+
dep.skipReason = "unversioned-reference";
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
dep.currentValue = comment.value;
|
|
49
|
+
dep.replaceString = `${reference}${comment.replaceSuffix}`;
|
|
50
|
+
dep.autoReplaceStringTemplate = `${reference.replace(refValueRegex, "$<prefix>{{#if newDigest}}{{newDigest}}{{else}}{{newValue}}{{/if}}")}${comment.separator}# {{newValue}}`;
|
|
51
|
+
if (!versionLikeRe.test(comment.value)) {
|
|
52
|
+
dep.versioning = id;
|
|
53
|
+
if (dep.datasource === GithubTagsDatasource.id) dep.datasource = GithubDigestDatasource.id;
|
|
54
|
+
else {
|
|
55
|
+
dep.datasource = GitRefsDatasource.id;
|
|
56
|
+
dep.packageName = url;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Parses e.g. `https://github.com/org/cfg.git//base/mise.toml?ref=v1.2.0`
|
|
62
|
+
* or `ssh://git@github.com/org/cfg.git//mise.toml`.
|
|
63
|
+
*/
|
|
64
|
+
function parseGitReference(reference) {
|
|
65
|
+
const azure = azureDevOpsSshRegex.exec(reference)?.groups;
|
|
66
|
+
if (azure) return {
|
|
67
|
+
url: azure.url,
|
|
68
|
+
host: azure.host,
|
|
69
|
+
repoName: azure.repoName,
|
|
70
|
+
ref: new URLSearchParams(azure.query).get("ref") ?? void 0
|
|
71
|
+
};
|
|
72
|
+
const origin = protocolRegex.exec(reference)?.[0];
|
|
73
|
+
if (!origin) return null;
|
|
74
|
+
const parsed = parseGitUrl(reference);
|
|
75
|
+
const [repoPath] = parsed.pathname.split("//");
|
|
76
|
+
const repoName = trimSlashes(repoPath).replace(regEx(/\.git$/), "");
|
|
77
|
+
if (!repoName) return null;
|
|
78
|
+
return {
|
|
79
|
+
url: `${origin}${repoPath}`,
|
|
80
|
+
host: parsed.resource,
|
|
81
|
+
repoName,
|
|
82
|
+
ref: parsed.query.ref
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Extracts a `git::<protocol>://<host>/<repo>.git//<path>?ref=<ref>` reference.
|
|
87
|
+
* Returns `null` if `reference` is not a git reference.
|
|
88
|
+
* `content` is the raw file, used to read trailing comment hints.
|
|
89
|
+
* @link https://mise.jdx.dev/tasks/toml-tasks.html#git
|
|
90
|
+
*/
|
|
91
|
+
function extractGitReference(reference, content, depType) {
|
|
92
|
+
if (!reference.startsWith(gitPrefix)) return null;
|
|
93
|
+
const parsed = parseGitReference(reference.slice(5));
|
|
94
|
+
if (!parsed) return null;
|
|
95
|
+
const { url, host, repoName, ref } = parsed;
|
|
96
|
+
const dep = {
|
|
97
|
+
depName: `${host}/${repoName}`,
|
|
98
|
+
depType,
|
|
99
|
+
packageName: url
|
|
100
|
+
};
|
|
101
|
+
if (host === "github.com") {
|
|
102
|
+
dep.datasource = GithubTagsDatasource.id;
|
|
103
|
+
dep.packageName = repoName;
|
|
104
|
+
} else if (host === "bitbucket.org") {
|
|
105
|
+
dep.datasource = BitbucketTagsDatasource.id;
|
|
106
|
+
dep.packageName = repoName;
|
|
107
|
+
} else if (host === "gitlab.com") {
|
|
108
|
+
dep.datasource = GitlabTagsDatasource.id;
|
|
109
|
+
dep.packageName = repoName;
|
|
110
|
+
} else dep.datasource = GitTagsDatasource.id;
|
|
111
|
+
if (!ref) {
|
|
112
|
+
dep.skipReason = "unspecified-version";
|
|
113
|
+
return dep;
|
|
114
|
+
}
|
|
115
|
+
if (isSha(ref) || isShortSha(ref)) {
|
|
116
|
+
applyPinnedRef(dep, reference, url, ref, content);
|
|
117
|
+
return dep;
|
|
118
|
+
}
|
|
119
|
+
dep.currentValue = ref;
|
|
120
|
+
dep.replaceString = reference;
|
|
121
|
+
dep.autoReplaceStringTemplate = reference.replace(refValueRegex, "$<prefix>{{newValue}}");
|
|
122
|
+
return dep;
|
|
123
|
+
}
|
|
124
|
+
//#endregion
|
|
125
|
+
export { extractGitReference };
|
|
126
|
+
|
|
127
|
+
//# sourceMappingURL=git-reference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-reference.js","names":["exactVersioning.id"],"sources":["../../../../lib/modules/manager/mise/git-reference.ts"],"sourcesContent":["import { parseGitUrl } from '../../../util/git/url.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { trimSlashes } from '../../../util/url.ts';\nimport { BitbucketTagsDatasource } from '../../datasource/bitbucket-tags/index.ts';\nimport { GitRefsDatasource } from '../../datasource/git-refs/index.ts';\nimport { GitTagsDatasource } from '../../datasource/git-tags/index.ts';\nimport { GithubDigestDatasource } from '../../datasource/github-digest/index.ts';\nimport { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';\nimport { GitlabTagsDatasource } from '../../datasource/gitlab-tags/index.ts';\nimport * as exactVersioning from '../../versioning/exact/index.ts';\nimport { isSha, isShortSha, versionLikeRe } from '../github-actions/parse.ts';\nimport type { PackageDependency } from '../types.ts';\n\nconst gitPrefix = 'git::';\nconst protocolRegex = regEx(/^(?:https?|ssh):\\/\\/[^/]+/);\n// scp-like urls are only supported by mise for Azure DevOps, which git-url-parse can not parse\nconst azureDevOpsSshRegex = regEx(\n /^(?<url>git@(?<host>ssh\\.dev\\.azure\\.com):v3\\/(?<repoName>[^/]+\\/[^/]+\\/[^/]+))\\/\\/[^?]+(?:\\?(?<query>.*))?$/,\n);\nconst refValueRegex = regEx(/(?<prefix>[?&]ref=)[^&]+/);\n// the rest of the line after a reference string, e.g. `\", # v1.0.0`\n// `=` is excluded so that `# tag=v1.0.0` style comments are not read as a branch\nconst trailingCommentRegex = regEx(\n /^(?<separator>[\"']\\s*,?[ \\t]*)#[ \\t]*(?<value>[^\\s#=]+)$/,\n);\n\ninterface ReferenceComment {\n /** text between the reference string and the comment, e.g. `\", ` */\n separator: string;\n /** everything after the reference string, including the comment */\n replaceSuffix: string;\n /** the hint: a version (`v1.2.3`) or a branch (`main`) */\n value: string;\n}\n\n/**\n * Finds the trailing `# <version>` or `# <branch>` comment of an entry in the raw file.\n * Only entries of multi-line arrays can carry a comment.\n */\nfunction findComment(\n reference: string,\n content: string,\n): ReferenceComment | undefined {\n let index = content.indexOf(reference);\n while (index !== -1) {\n const end = index + reference.length;\n const lineEnd = content.indexOf('\\n', end);\n const rest = content.slice(end, lineEnd === -1 ? undefined : lineEnd);\n const suffix = rest.trimEnd();\n const groups = trailingCommentRegex.exec(suffix)?.groups;\n if (groups) {\n return {\n separator: groups.separator,\n replaceSuffix: suffix,\n value: groups.value,\n };\n }\n index = content.indexOf(reference, end);\n }\n return undefined;\n}\n\n/**\n * Handles `ref=<sha>`: the version or branch comes from the trailing comment.\n */\nfunction applyPinnedRef(\n dep: PackageDependency,\n reference: string,\n url: string,\n ref: string,\n content: string,\n): void {\n if (isSha(ref)) {\n dep.currentDigest = ref;\n } else {\n dep.currentDigestShort = ref;\n }\n const comment = findComment(reference, content);\n if (!comment) {\n dep.skipReason = 'unversioned-reference';\n return;\n }\n dep.currentValue = comment.value;\n // Also match the comment, so that it is updated together with the sha.\n dep.replaceString = `${reference}${comment.replaceSuffix}`;\n dep.autoReplaceStringTemplate = `${reference.replace(\n refValueRegex,\n '$<prefix>{{#if newDigest}}{{newDigest}}{{else}}{{newValue}}{{/if}}',\n )}${comment.separator}# {{newValue}}`;\n if (!versionLikeRe.test(comment.value)) {\n // branch hint: only the digest changes\n dep.versioning = exactVersioning.id;\n if (dep.datasource === GithubTagsDatasource.id) {\n dep.datasource = GithubDigestDatasource.id;\n } else {\n dep.datasource = GitRefsDatasource.id;\n dep.packageName = url;\n }\n }\n}\n\ninterface GitReference {\n /** repository url without the file path and query, e.g. `https://github.com/org/cfg.git` */\n url: string;\n host: string;\n /** e.g. `org/cfg` */\n repoName: string;\n ref: string | undefined;\n}\n\n/**\n * Parses e.g. `https://github.com/org/cfg.git//base/mise.toml?ref=v1.2.0`\n * or `ssh://git@github.com/org/cfg.git//mise.toml`.\n */\nfunction parseGitReference(reference: string): GitReference | null {\n const azure = azureDevOpsSshRegex.exec(reference)?.groups;\n if (azure) {\n return {\n url: azure.url,\n host: azure.host,\n repoName: azure.repoName,\n ref: new URLSearchParams(azure.query).get('ref') ?? undefined,\n };\n }\n const origin = protocolRegex.exec(reference)?.[0];\n if (!origin) {\n return null;\n }\n const parsed = parseGitUrl(reference);\n // `//` separates the repository from the file path, which git-url-parse does not handle\n const [repoPath] = parsed.pathname.split('//');\n const repoName = trimSlashes(repoPath).replace(regEx(/\\.git$/), '');\n if (!repoName) {\n return null;\n }\n return {\n url: `${origin}${repoPath}`,\n host: parsed.resource,\n repoName,\n ref: parsed.query.ref,\n };\n}\n\n/**\n * Extracts a `git::<protocol>://<host>/<repo>.git//<path>?ref=<ref>` reference.\n * Returns `null` if `reference` is not a git reference.\n * `content` is the raw file, used to read trailing comment hints.\n * @link https://mise.jdx.dev/tasks/toml-tasks.html#git\n */\nexport function extractGitReference(\n reference: string,\n content: string,\n depType: string,\n): PackageDependency | null {\n if (!reference.startsWith(gitPrefix)) {\n return null;\n }\n const parsed = parseGitReference(reference.slice(gitPrefix.length));\n if (!parsed) {\n return null;\n }\n const { url, host, repoName, ref } = parsed;\n const dep: PackageDependency = {\n depName: `${host}/${repoName}`,\n depType,\n packageName: url,\n };\n\n if (host === 'github.com') {\n dep.datasource = GithubTagsDatasource.id;\n dep.packageName = repoName;\n } else if (host === 'bitbucket.org') {\n dep.datasource = BitbucketTagsDatasource.id;\n dep.packageName = repoName;\n } else if (host === 'gitlab.com') {\n dep.datasource = GitlabTagsDatasource.id;\n dep.packageName = repoName;\n } else {\n dep.datasource = GitTagsDatasource.id;\n }\n\n if (!ref) {\n dep.skipReason = 'unspecified-version';\n return dep;\n }\n if (isSha(ref) || isShortSha(ref)) {\n applyPinnedRef(dep, reference, url, ref, content);\n return dep;\n }\n dep.currentValue = ref;\n // Match the whole entry, but only replace the `ref` value.\n dep.replaceString = reference;\n dep.autoReplaceStringTemplate = reference.replace(\n refValueRegex,\n '$<prefix>{{newValue}}',\n );\n return dep;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { getDep } from "../dockerfile/extract.js";
|
|
2
|
+
import { extractGitReference } from "./git-reference.js";
|
|
3
|
+
//#region lib/modules/manager/mise/include.ts
|
|
4
|
+
const ociPrefix = "oci::";
|
|
5
|
+
function extractOciInclude(include) {
|
|
6
|
+
return {
|
|
7
|
+
...getDep(include.slice(5)),
|
|
8
|
+
depType: "include"
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Extracts a remote `include` entry of a mise configuration file.
|
|
13
|
+
* `content` is the raw file, used to read trailing comment hints.
|
|
14
|
+
* @link https://mise.jdx.dev/configuration.html#include
|
|
15
|
+
*/
|
|
16
|
+
function extractInclude(include, content) {
|
|
17
|
+
const trimmed = include.trim();
|
|
18
|
+
if (trimmed.startsWith(ociPrefix)) return extractOciInclude(trimmed);
|
|
19
|
+
const gitDep = extractGitReference(trimmed, content, "include");
|
|
20
|
+
if (gitDep) return gitDep;
|
|
21
|
+
return {
|
|
22
|
+
depName: trimmed,
|
|
23
|
+
depType: "include",
|
|
24
|
+
skipReason: "unsupported-url"
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
export { extractInclude };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=include.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"include.js","names":[],"sources":["../../../../lib/modules/manager/mise/include.ts"],"sourcesContent":["import { getDep } from '../dockerfile/extract.ts';\nimport type { PackageDependency } from '../types.ts';\nimport { extractGitReference } from './git-reference.ts';\n\nconst ociPrefix = 'oci::';\n\nfunction extractOciInclude(include: string): PackageDependency {\n // `replaceString` and the template cover the image reference only,\n // so the `oci::` prefix stays in place.\n const dep = getDep(include.slice(ociPrefix.length));\n return { ...dep, depType: 'include' };\n}\n\n/**\n * Extracts a remote `include` entry of a mise configuration file.\n * `content` is the raw file, used to read trailing comment hints.\n * @link https://mise.jdx.dev/configuration.html#include\n */\nexport function extractInclude(\n include: string,\n content: string,\n): PackageDependency {\n const trimmed = include.trim();\n if (trimmed.startsWith(ociPrefix)) {\n return extractOciInclude(trimmed);\n }\n const gitDep = extractGitReference(trimmed, content, 'include');\n if (gitDep) {\n return gitDep;\n }\n return {\n depName: trimmed,\n depType: 'include',\n skipReason: 'unsupported-url',\n };\n}\n"],"mappings":";;;AAIA,MAAM,YAAY;AAElB,SAAS,kBAAkB,SAAoC;CAI7D,OAAO;EAAE,GADG,OAAO,QAAQ,MAAM,CAAgB,CACnC;EAAG,SAAS;CAAU;AACtC;;;;;;AAOA,SAAgB,eACd,SACA,SACmB;CACnB,MAAM,UAAU,QAAQ,KAAK;CAC7B,IAAI,QAAQ,WAAW,SAAS,GAC9B,OAAO,kBAAkB,OAAO;CAElC,MAAM,SAAS,oBAAoB,SAAS,SAAS,SAAS;CAC9D,IAAI,QACF,OAAO;CAET,OAAO;EACL,SAAS;EACT,SAAS;EACT,YAAY;CACd;AACF"}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { __exportAll } from "../../../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { deduplicateArray } from "../../../util/array.js";
|
|
3
|
+
import { BitbucketTagsDatasource } from "../../datasource/bitbucket-tags/index.js";
|
|
3
4
|
import { CondaDatasource } from "../../datasource/conda/index.js";
|
|
4
5
|
import { CrateDatasource } from "../../datasource/crate/index.js";
|
|
6
|
+
import { DockerDatasource } from "../../datasource/docker/index.js";
|
|
5
7
|
import { GitRefsDatasource } from "../../datasource/git-refs/index.js";
|
|
6
8
|
import { GitTagsDatasource } from "../../datasource/git-tags/index.js";
|
|
9
|
+
import { GithubDigestDatasource } from "../../datasource/github-digest/index.js";
|
|
7
10
|
import { GithubReleasesDatasource } from "../../datasource/github-releases/index.js";
|
|
8
11
|
import { GithubTagsDatasource } from "../../datasource/github-tags/index.js";
|
|
9
12
|
import { GitlabReleasesDatasource } from "../../datasource/gitlab-releases/index.js";
|
|
13
|
+
import { GitlabTagsDatasource } from "../../datasource/gitlab-tags/index.js";
|
|
10
14
|
import { GoDatasource } from "../../datasource/go/index.js";
|
|
11
15
|
import { JavaVersionDatasource } from "../../datasource/java-version/index.js";
|
|
12
16
|
import { NodeVersionDatasource } from "../../datasource/node-version/index.js";
|
|
@@ -89,6 +93,15 @@ const backendDatasources = {
|
|
|
89
93
|
ubi: [GithubReleasesDatasource.id],
|
|
90
94
|
vfox: []
|
|
91
95
|
};
|
|
96
|
+
const remoteReferenceDatasources = [
|
|
97
|
+
BitbucketTagsDatasource.id,
|
|
98
|
+
DockerDatasource.id,
|
|
99
|
+
GitRefsDatasource.id,
|
|
100
|
+
GitTagsDatasource.id,
|
|
101
|
+
GithubDigestDatasource.id,
|
|
102
|
+
GithubTagsDatasource.id,
|
|
103
|
+
GitlabTagsDatasource.id
|
|
104
|
+
];
|
|
92
105
|
/**
|
|
93
106
|
* Backends that are definitely supported out-of-the-box with Renovate.
|
|
94
107
|
*/
|
|
@@ -97,7 +110,7 @@ const supportedBackendDatasources = new Set(Object.keys(backendDatasources).filt
|
|
|
97
110
|
* Backends that may require some additional work for users to configure Renovate to update them.
|
|
98
111
|
*/
|
|
99
112
|
const maybeSupportedBackendDatasources = new Set(Object.keys(backendDatasources).filter((key) => key === "vfox" || key === "aqua"));
|
|
100
|
-
const supportedDatasources = deduplicateArray(Object.values(backendDatasources).flat()).sort();
|
|
113
|
+
const supportedDatasources = deduplicateArray([...Object.values(backendDatasources).flat(), ...remoteReferenceDatasources]).sort();
|
|
101
114
|
//#endregion
|
|
102
115
|
export { defaultConfig, displayName, extractPackageFile, knownDepTypes, lockFileNames, maybeSupportedBackendDatasources, mise_exports, supportedBackendDatasources, supportedDatasources, supportsDynamicDepTypesNote, updateArtifacts, updateLockedDependency, url };
|
|
103
116
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["asdfSupportedDatasources"],"sources":["../../../../lib/modules/manager/mise/index.ts"],"sourcesContent":["import { deduplicateArray } from '../../../util/array.ts';\nimport { CondaDatasource } from '../../datasource/conda/index.ts';\nimport { CrateDatasource } from '../../datasource/crate/index.ts';\nimport { GitRefsDatasource } from '../../datasource/git-refs/index.ts';\nimport { GitTagsDatasource } from '../../datasource/git-tags/index.ts';\nimport { GithubReleasesDatasource } from '../../datasource/github-releases/index.ts';\nimport { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';\nimport { GitlabReleasesDatasource } from '../../datasource/gitlab-releases/index.ts';\nimport { GoDatasource } from '../../datasource/go/index.ts';\nimport { JavaVersionDatasource } from '../../datasource/java-version/index.ts';\nimport { NodeVersionDatasource } from '../../datasource/node-version/index.ts';\nimport { NpmDatasource } from '../../datasource/npm/index.ts';\nimport { NugetDatasource } from '../../datasource/nuget/index.ts';\nimport { PypiDatasource } from '../../datasource/pypi/index.ts';\nimport { RubyVersionDatasource } from '../../datasource/ruby-version/index.ts';\nimport { RubygemsDatasource } from '../../datasource/rubygems/index.ts';\nimport { RustVersionDatasource } from '../../datasource/rust-version/index.ts';\nimport { supportedDatasources as asdfSupportedDatasources } from '../asdf/index.ts';\n\nexport { updateArtifacts } from './artifacts.ts';\nexport { knownDepTypes, supportsDynamicDepTypesNote } from './dep-types.ts';\nexport { extractPackageFile } from './extract.ts';\nexport { updateLockedDependency } from './update-locked.ts';\n\nexport const displayName = 'mise-en-place';\nexport const supportsLockFileMaintenance = true;\nexport const lockFileNames = ['mise.lock'];\nexport const lockFileMaintenanceIsDelegatedToPackageManager = true;\nexport const url = 'https://mise.jdx.dev';\n\nexport const defaultConfig = {\n managerFilePatterns: [\n '**/{,.}mise{,.*}.toml',\n '**/{,.}mise/config{,.*}.toml',\n '**/.config/mise{,.*}.toml',\n '**/.config/mise/{mise,config}{,.*}.toml',\n '**/.config/mise/conf.d/*.toml',\n '**/.rtx{,.*}.toml',\n ],\n pinDigests: false,\n};\n\nconst backendDatasources = {\n core: [\n GithubReleasesDatasource.id,\n GithubTagsDatasource.id,\n JavaVersionDatasource.id,\n NodeVersionDatasource.id,\n RubyVersionDatasource.id,\n RustVersionDatasource.id,\n ],\n // Re-use the asdf datasources, as mise and asdf support the same plugins.\n asdf: asdfSupportedDatasources,\n aqua: [GithubTagsDatasource.id],\n cargo: [CrateDatasource.id, GitTagsDatasource.id, GitRefsDatasource.id],\n conda: [CondaDatasource.id],\n dotnet: [NugetDatasource.id],\n gem: [RubygemsDatasource.id],\n github: [GithubReleasesDatasource.id],\n gitlab: [GitlabReleasesDatasource.id],\n go: [GoDatasource.id],\n npm: [NpmDatasource.id],\n pipx: [PypiDatasource.id, GithubTagsDatasource.id, GitRefsDatasource.id],\n pypi: [PypiDatasource.id, GithubTagsDatasource.id, GitRefsDatasource.id],\n spm: [GithubReleasesDatasource.id],\n ubi: [GithubReleasesDatasource.id],\n // not supported\n vfox: [],\n};\n\n/**\n * Backends that are definitely supported out-of-the-box with Renovate.\n */\nexport const supportedBackendDatasources = new Set(\n Object.keys(backendDatasources).filter((key) => key !== 'vfox'),\n);\n\n/**\n * Backends that may require some additional work for users to configure Renovate to update them.\n */\nexport const maybeSupportedBackendDatasources = new Set<string>(\n Object.keys(backendDatasources).filter(\n (key) => key === 'vfox' || key === 'aqua',\n ),\n);\n\nexport const supportedDatasources = deduplicateArray(\n Object.values(backendDatasources).flat(),\n).sort();\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":["asdfSupportedDatasources"],"sources":["../../../../lib/modules/manager/mise/index.ts"],"sourcesContent":["import { deduplicateArray } from '../../../util/array.ts';\nimport { BitbucketTagsDatasource } from '../../datasource/bitbucket-tags/index.ts';\nimport { CondaDatasource } from '../../datasource/conda/index.ts';\nimport { CrateDatasource } from '../../datasource/crate/index.ts';\nimport { DockerDatasource } from '../../datasource/docker/index.ts';\nimport { GitRefsDatasource } from '../../datasource/git-refs/index.ts';\nimport { GitTagsDatasource } from '../../datasource/git-tags/index.ts';\nimport { GithubDigestDatasource } from '../../datasource/github-digest/index.ts';\nimport { GithubReleasesDatasource } from '../../datasource/github-releases/index.ts';\nimport { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';\nimport { GitlabReleasesDatasource } from '../../datasource/gitlab-releases/index.ts';\nimport { GitlabTagsDatasource } from '../../datasource/gitlab-tags/index.ts';\nimport { GoDatasource } from '../../datasource/go/index.ts';\nimport { JavaVersionDatasource } from '../../datasource/java-version/index.ts';\nimport { NodeVersionDatasource } from '../../datasource/node-version/index.ts';\nimport { NpmDatasource } from '../../datasource/npm/index.ts';\nimport { NugetDatasource } from '../../datasource/nuget/index.ts';\nimport { PypiDatasource } from '../../datasource/pypi/index.ts';\nimport { RubyVersionDatasource } from '../../datasource/ruby-version/index.ts';\nimport { RubygemsDatasource } from '../../datasource/rubygems/index.ts';\nimport { RustVersionDatasource } from '../../datasource/rust-version/index.ts';\nimport { supportedDatasources as asdfSupportedDatasources } from '../asdf/index.ts';\n\nexport { updateArtifacts } from './artifacts.ts';\nexport { knownDepTypes, supportsDynamicDepTypesNote } from './dep-types.ts';\nexport { extractPackageFile } from './extract.ts';\nexport { updateLockedDependency } from './update-locked.ts';\n\nexport const displayName = 'mise-en-place';\nexport const supportsLockFileMaintenance = true;\nexport const lockFileNames = ['mise.lock'];\nexport const lockFileMaintenanceIsDelegatedToPackageManager = true;\nexport const url = 'https://mise.jdx.dev';\n\nexport const defaultConfig = {\n managerFilePatterns: [\n '**/{,.}mise{,.*}.toml',\n '**/{,.}mise/config{,.*}.toml',\n '**/.config/mise{,.*}.toml',\n '**/.config/mise/{mise,config}{,.*}.toml',\n '**/.config/mise/conf.d/*.toml',\n '**/.rtx{,.*}.toml',\n ],\n pinDigests: false,\n};\n\nconst backendDatasources = {\n core: [\n GithubReleasesDatasource.id,\n GithubTagsDatasource.id,\n JavaVersionDatasource.id,\n NodeVersionDatasource.id,\n RubyVersionDatasource.id,\n RustVersionDatasource.id,\n ],\n // Re-use the asdf datasources, as mise and asdf support the same plugins.\n asdf: asdfSupportedDatasources,\n aqua: [GithubTagsDatasource.id],\n cargo: [CrateDatasource.id, GitTagsDatasource.id, GitRefsDatasource.id],\n conda: [CondaDatasource.id],\n dotnet: [NugetDatasource.id],\n gem: [RubygemsDatasource.id],\n github: [GithubReleasesDatasource.id],\n gitlab: [GitlabReleasesDatasource.id],\n go: [GoDatasource.id],\n npm: [NpmDatasource.id],\n pipx: [PypiDatasource.id, GithubTagsDatasource.id, GitRefsDatasource.id],\n pypi: [PypiDatasource.id, GithubTagsDatasource.id, GitRefsDatasource.id],\n spm: [GithubReleasesDatasource.id],\n ubi: [GithubReleasesDatasource.id],\n // not supported\n vfox: [],\n};\n\n// datasources of remote `include` entries and git task files\nconst remoteReferenceDatasources = [\n BitbucketTagsDatasource.id,\n DockerDatasource.id,\n GitRefsDatasource.id,\n GitTagsDatasource.id,\n GithubDigestDatasource.id,\n GithubTagsDatasource.id,\n GitlabTagsDatasource.id,\n];\n\n/**\n * Backends that are definitely supported out-of-the-box with Renovate.\n */\nexport const supportedBackendDatasources = new Set(\n Object.keys(backendDatasources).filter((key) => key !== 'vfox'),\n);\n\n/**\n * Backends that may require some additional work for users to configure Renovate to update them.\n */\nexport const maybeSupportedBackendDatasources = new Set<string>(\n Object.keys(backendDatasources).filter(\n (key) => key === 'vfox' || key === 'aqua',\n ),\n);\n\nexport const supportedDatasources = deduplicateArray([\n ...Object.values(backendDatasources).flat(),\n ...remoteReferenceDatasources,\n]).sort();\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,MAAa,cAAc;AAE3B,MAAa,gBAAgB,CAAC,WAAW;AAEzC,MAAa,MAAM;AAEnB,MAAa,gBAAgB;CAC3B,qBAAqB;EACnB;EACA;EACA;EACA;EACA;EACA;CACF;CACA,YAAY;AACd;AAEA,MAAM,qBAAqB;CACzB,MAAM;EACJ,yBAAyB;EACzB,qBAAqB;EACrB,sBAAsB;EACtB,sBAAsB;EACtB,sBAAsB;EACtB,sBAAsB;CACxB;CAEA,MAAMA;CACN,MAAM,CAAC,qBAAqB,EAAE;CAC9B,OAAO;EAAC,gBAAgB;EAAI,kBAAkB;EAAI,kBAAkB;CAAE;CACtE,OAAO,CAAC,gBAAgB,EAAE;CAC1B,QAAQ,CAAC,gBAAgB,EAAE;CAC3B,KAAK,CAAC,mBAAmB,EAAE;CAC3B,QAAQ,CAAC,yBAAyB,EAAE;CACpC,QAAQ,CAAC,yBAAyB,EAAE;CACpC,IAAI,CAAC,aAAa,EAAE;CACpB,KAAK,CAAC,cAAc,EAAE;CACtB,MAAM;EAAC,eAAe;EAAI,qBAAqB;EAAI,kBAAkB;CAAE;CACvE,MAAM;EAAC,eAAe;EAAI,qBAAqB;EAAI,kBAAkB;CAAE;CACvE,KAAK,CAAC,yBAAyB,EAAE;CACjC,KAAK,CAAC,yBAAyB,EAAE;CAEjC,MAAM,CAAC;AACT;AAGA,MAAM,6BAA6B;CACjC,wBAAwB;CACxB,iBAAiB;CACjB,kBAAkB;CAClB,kBAAkB;CAClB,uBAAuB;CACvB,qBAAqB;CACrB,qBAAqB;AACvB;;;;AAKA,MAAa,8BAA8B,IAAI,IAC7C,OAAO,KAAK,kBAAkB,CAAC,CAAC,QAAQ,QAAQ,QAAQ,MAAM,CAChE;;;;AAKA,MAAa,mCAAmC,IAAI,IAClD,OAAO,KAAK,kBAAkB,CAAC,CAAC,QAC7B,QAAQ,QAAQ,UAAU,QAAQ,MACrC,CACF;AAEA,MAAa,uBAAuB,iBAAiB,CACnD,GAAG,OAAO,OAAO,kBAAkB,CAAC,CAAC,KAAK,GAC1C,GAAG,0BACL,CAAC,CAAC,CAAC,KAAK"}
|
|
@@ -19,10 +19,14 @@ const MiseToolValue = z.union([z.string(), MiseToolObject]);
|
|
|
19
19
|
* the first (primary) one is managed. Array items may mix both forms.
|
|
20
20
|
*/
|
|
21
21
|
const MiseTool = z.union([MiseToolValue, z.array(MiseToolValue)]);
|
|
22
|
-
const MiseTask = z.object({
|
|
22
|
+
const MiseTask = z.object({
|
|
23
|
+
tools: z.record(z.string(), MiseTool).optional(),
|
|
24
|
+
file: z.string().optional()
|
|
25
|
+
}).passthrough().catch({});
|
|
23
26
|
const MiseFile = Toml.pipe(z.object({
|
|
24
27
|
tools: z.record(z.string(), MiseTool).default({}),
|
|
25
|
-
tasks: z.record(z.string(), MiseTask).default({})
|
|
28
|
+
tasks: z.record(z.string(), MiseTask).default({}),
|
|
29
|
+
include: z.array(z.string()).catch([])
|
|
26
30
|
}));
|
|
27
31
|
const MiseLockTool = z.object({
|
|
28
32
|
version: z.string(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","names":[],"sources":["../../../../lib/modules/manager/mise/schema.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport { Toml } from '../../../util/schema-utils/index.ts';\n\nexport const MiseRegistryJson = z.object({\n meta: z.object({\n version: z.string(),\n }),\n tools: z.record(z.string(), z.record(z.string(), z.string())),\n});\n\nconst MiseToolOptions = z.object({\n // ubi backend only\n tag_regex: z.string().optional(),\n // github and gitlab backends\n version_prefix: z.string().optional(),\n});\nexport type MiseToolOptions = z.infer<typeof MiseToolOptions>;\n\nconst MiseToolObject = MiseToolOptions.extend({\n version: z.string().optional(),\n});\n\n/**\n * A single tool entry: either a plain version string or an inline table,\n * e.g. `\"3.11.2\"` or `{ version = \"3.11.2\", virtualenv = \".venv\" }`.\n */\nconst MiseToolValue = z.union([z.string(), MiseToolObject]);\nexport type MiseToolValue = z.infer<typeof MiseToolValue>;\n\n/**\n * A tool may also be declared as an array of entries, in which case only\n * the first (primary) one is managed. Array items may mix both forms.\n */\nconst MiseTool = z.union([MiseToolValue, z.array(MiseToolValue)]);\nexport type MiseTool = z.infer<typeof MiseTool>;\n\nconst MiseTask = z\n .object({\n tools: z.record(z.string(), MiseTool).optional(),\n })\n .passthrough()\n .catch({});\n\nexport const MiseFile = Toml.pipe(\n z.object({\n tools: z.record(z.string(), MiseTool).default({}),\n tasks: z.record(z.string(), MiseTask).default({}),\n }),\n);\nexport type MiseFile = z.infer<typeof MiseFile>;\n\nconst MiseLockTool = z.object({\n version: z.string(),\n backend: z.string().optional(),\n options: z.record(z.string(), z.string()).optional(),\n platforms: z\n .record(\n z.string(),\n z.object({\n checksum: z.string().optional(),\n size: z.number().optional(),\n url: z.string().optional(),\n }),\n )\n .optional(),\n});\nexport type MiseLockTool = z.infer<typeof MiseLockTool>;\n\nexport const MiseLockFile = Toml.pipe(\n z.object({\n tools: z.record(z.string(), z.array(MiseLockTool)),\n }),\n);\nexport type MiseLockFile = z.infer<typeof MiseLockFile>;\n"],"mappings":";;;AAGA,MAAa,mBAAmB,EAAE,OAAO;CACvC,MAAM,EAAE,OAAO,EACb,SAAS,EAAE,OAAO,EACpB,CAAC;CACD,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AAUD,MAAM,iBARkB,EAAE,OAAO;CAE/B,WAAW,EAAE,OAAO,CAAC,CAAC,SAAS;CAE/B,gBAAgB,EAAE,OAAO,CAAC,CAAC,SAAS;AACtC,CAGqC,CAAC,CAAC,OAAO,EAC5C,SAAS,EAAE,OAAO,CAAC,CAAC,SAAS,EAC/B,CAAC;;;;;AAMD,MAAM,gBAAgB,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;;;;;AAO1D,MAAM,WAAW,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,aAAa,CAAC,CAAC;AAGhE,MAAM,WAAW,EACd,OAAO,
|
|
1
|
+
{"version":3,"file":"schema.js","names":[],"sources":["../../../../lib/modules/manager/mise/schema.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport { Toml } from '../../../util/schema-utils/index.ts';\n\nexport const MiseRegistryJson = z.object({\n meta: z.object({\n version: z.string(),\n }),\n tools: z.record(z.string(), z.record(z.string(), z.string())),\n});\n\nconst MiseToolOptions = z.object({\n // ubi backend only\n tag_regex: z.string().optional(),\n // github and gitlab backends\n version_prefix: z.string().optional(),\n});\nexport type MiseToolOptions = z.infer<typeof MiseToolOptions>;\n\nconst MiseToolObject = MiseToolOptions.extend({\n version: z.string().optional(),\n});\n\n/**\n * A single tool entry: either a plain version string or an inline table,\n * e.g. `\"3.11.2\"` or `{ version = \"3.11.2\", virtualenv = \".venv\" }`.\n */\nconst MiseToolValue = z.union([z.string(), MiseToolObject]);\nexport type MiseToolValue = z.infer<typeof MiseToolValue>;\n\n/**\n * A tool may also be declared as an array of entries, in which case only\n * the first (primary) one is managed. Array items may mix both forms.\n */\nconst MiseTool = z.union([MiseToolValue, z.array(MiseToolValue)]);\nexport type MiseTool = z.infer<typeof MiseTool>;\n\nconst MiseTask = z\n .object({\n tools: z.record(z.string(), MiseTool).optional(),\n file: z.string().optional(),\n })\n .passthrough()\n .catch({});\n\nexport const MiseFile = Toml.pipe(\n z.object({\n tools: z.record(z.string(), MiseTool).default({}),\n tasks: z.record(z.string(), MiseTask).default({}),\n include: z.array(z.string()).catch([]),\n }),\n);\nexport type MiseFile = z.infer<typeof MiseFile>;\n\nconst MiseLockTool = z.object({\n version: z.string(),\n backend: z.string().optional(),\n options: z.record(z.string(), z.string()).optional(),\n platforms: z\n .record(\n z.string(),\n z.object({\n checksum: z.string().optional(),\n size: z.number().optional(),\n url: z.string().optional(),\n }),\n )\n .optional(),\n});\nexport type MiseLockTool = z.infer<typeof MiseLockTool>;\n\nexport const MiseLockFile = Toml.pipe(\n z.object({\n tools: z.record(z.string(), z.array(MiseLockTool)),\n }),\n);\nexport type MiseLockFile = z.infer<typeof MiseLockFile>;\n"],"mappings":";;;AAGA,MAAa,mBAAmB,EAAE,OAAO;CACvC,MAAM,EAAE,OAAO,EACb,SAAS,EAAE,OAAO,EACpB,CAAC;CACD,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AAUD,MAAM,iBARkB,EAAE,OAAO;CAE/B,WAAW,EAAE,OAAO,CAAC,CAAC,SAAS;CAE/B,gBAAgB,EAAE,OAAO,CAAC,CAAC,SAAS;AACtC,CAGqC,CAAC,CAAC,OAAO,EAC5C,SAAS,EAAE,OAAO,CAAC,CAAC,SAAS,EAC/B,CAAC;;;;;AAMD,MAAM,gBAAgB,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;;;;;AAO1D,MAAM,WAAW,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,aAAa,CAAC,CAAC;AAGhE,MAAM,WAAW,EACd,OAAO;CACN,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,CAAC,SAAS;CAC/C,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS;AAC5B,CAAC,CAAC,CACD,YAAY,CAAC,CACb,MAAM,CAAC,CAAC;AAEX,MAAa,WAAW,KAAK,KAC3B,EAAE,OAAO;CACP,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC;CAChD,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC;CAChD,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC,CACH;AAGA,MAAM,eAAe,EAAE,OAAO;CAC5B,SAAS,EAAE,OAAO;CAClB,SAAS,EAAE,OAAO,CAAC,CAAC,SAAS;CAC7B,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS;CACnD,WAAW,EACR,OACC,EAAE,OAAO,GACT,EAAE,OAAO;EACP,UAAU,EAAE,OAAO,CAAC,CAAC,SAAS;EAC9B,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS;EAC1B,KAAK,EAAE,OAAO,CAAC,CAAC,SAAS;CAC3B,CAAC,CACH,CAAC,CACA,SAAS;AACd,CAAC;AAGD,MAAa,eAAe,KAAK,KAC/B,EAAE,OAAO,EACP,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,MAAM,YAAY,CAAC,EACnD,CAAC,CACH"}
|
package/dist/util/http/http.js
CHANGED
|
@@ -112,24 +112,28 @@ var HttpBase = class {
|
|
|
112
112
|
if (!resPromise) {
|
|
113
113
|
if (cacheProvider) await cacheProvider.setCacheHeaders(method, url, options);
|
|
114
114
|
const startTime = Date.now();
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
try {
|
|
119
|
-
const cachedResponse = await cacheProvider?.bypassServer(options.method, url);
|
|
120
|
-
if (cachedResponse) return cachedResponse;
|
|
121
|
-
const queueMs = Date.now() - startTime;
|
|
122
|
-
return fetch(url, this._normalizeOptions(options), { queueMs });
|
|
123
|
-
} finally {
|
|
124
|
-
releaseLock?.();
|
|
125
|
-
}
|
|
115
|
+
const fetchTask = () => {
|
|
116
|
+
const queueMs = Date.now() - startTime;
|
|
117
|
+
return fetch(url, this._normalizeOptions(options), { queueMs });
|
|
126
118
|
};
|
|
127
119
|
const throttle = getThrottle(url);
|
|
128
|
-
const throttledTask = throttle ? () => throttle.add(
|
|
120
|
+
const throttledTask = throttle ? () => throttle.add(fetchTask) : fetchTask;
|
|
129
121
|
const queue = getQueue(url);
|
|
130
122
|
const queuedTask = queue ? () => queue.add(throttledTask) : throttledTask;
|
|
123
|
+
async function httpTask() {
|
|
124
|
+
if (cacheProvider) {
|
|
125
|
+
const releaseLock = await acquireLock(`${options.method} ${url}`, "http-mutex", timeout * 2);
|
|
126
|
+
try {
|
|
127
|
+
const cachedResponse = await cacheProvider.bypassServer(options.method, url);
|
|
128
|
+
if (cachedResponse) return cachedResponse;
|
|
129
|
+
} finally {
|
|
130
|
+
releaseLock();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return queuedTask();
|
|
134
|
+
}
|
|
131
135
|
const { maxRetryAfter = 60 } = hostRule;
|
|
132
|
-
resPromise = wrapWithRetry(
|
|
136
|
+
resPromise = wrapWithRetry(httpTask, url, getRetryAfter, maxRetryAfter);
|
|
133
137
|
if (memCacheKey) set(memCacheKey, resPromise);
|
|
134
138
|
}
|
|
135
139
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","names":["memCache.get"],"sources":["../../../lib/util/http/http.ts"],"sourcesContent":["import { isPlainObject, isUndefined } from '@sindresorhus/is';\nimport merge from 'deepmerge';\nimport type { Options, OptionsInit, RetryObject } from 'got';\nimport type { SetRequired } from 'type-fest';\nimport type { z } from 'zod/v4';\nimport { ZodType } from 'zod/v4';\nimport { GlobalConfig } from '../../config/global.ts';\nimport { HOST_DISABLED } from '../../constants/error-messages.ts';\nimport { logger } from '../../logger/index.ts';\nimport { ExternalHostError } from '../../types/errors/external-host-error.ts';\nimport type { CombinedHostRule } from '../../types/index.ts';\nimport { coerceArray } from '../array.ts';\nimport * as memCache from '../cache/memory/index.ts';\nimport { getEnv } from '../env.ts';\nimport { hash } from '../hash.ts';\nimport { acquireLock } from '../mutex.ts';\nimport { coerceObject } from '../object.ts';\nimport { type AsyncResult, Result } from '../result.ts';\nimport { Toml } from '../schema-utils/index.ts';\nimport { ObsoleteCacheHitLogger } from '../stats.ts';\nimport { compile } from '../template/index.ts';\nimport { isHttpUrl, parseUrl, resolveBaseUrl } from '../url.ts';\nimport { parseSingleYaml } from '../yaml.ts';\nimport { applyAuthorization } from './auth.ts';\nimport type { HttpCacheProvider } from './cache/types.ts';\nimport { fetch, normalize, stream } from './got.ts';\nimport { applyHostGuard } from './host-guard.ts';\nimport { applyHostRule, findMatchingRule } from './host-rules.ts';\nimport { getQueue } from './queue.ts';\nimport { getRetryAfter, wrapWithRetry } from './retry-after.ts';\nimport { getThrottle } from './throttle.ts';\nimport type {\n GotOptions,\n GotTask,\n HttpMethod,\n HttpOptions,\n HttpResponse,\n SafeJsonError,\n} from './types.ts';\nimport { copyResponse } from './util.ts';\n\nexport interface InternalJsonUnsafeOptions<\n Opts extends HttpOptions = HttpOptions,\n> {\n url: string | URL;\n httpOptions?: Opts;\n}\n\nexport interface InternalJsonOptions<\n Opts extends HttpOptions,\n ResT = unknown,\n Schema extends ZodType<ResT, any> = ZodType<ResT, any>,\n> extends InternalJsonUnsafeOptions<Opts> {\n schema?: Schema;\n}\n\nexport type InternalGotOptions = SetRequired<GotOptions, 'method' | 'context'>;\n\nexport interface InternalHttpOptions extends HttpOptions {\n json?: HttpOptions['body'];\n\n method?: HttpMethod;\n\n parseJson?: Options['parseJson'];\n}\n\nexport function applyDefaultHeaders(options: OptionsInit): void {\n const userAgentTemplate = GlobalConfig.get('userAgent');\n options.headers = {\n ...options.headers,\n 'user-agent': compile(userAgentTemplate, {}),\n };\n}\n\nexport abstract class HttpBase<\n JSONOpts extends HttpOptions = HttpOptions,\n Opts extends HttpOptions = HttpOptions,\n> {\n private readonly options: InternalGotOptions;\n\n protected get baseUrl(): string | undefined {\n return undefined;\n }\n\n protected hostType: string;\n\n constructor(hostType: string, options: HttpOptions = {}) {\n this.hostType = hostType;\n const retryLimit = getEnv().NODE_ENV === 'test' ? 0 : 2;\n this.options = merge<InternalGotOptions>(\n options,\n {\n method: 'get',\n context: { hostType },\n retry: {\n calculateDelay: (retryObject) =>\n this.calculateRetryDelay(retryObject),\n limit: retryLimit,\n maxRetryAfter: 0, // Don't rely on `got` retry-after handling, just let it fail and then we'll handle it\n enforceRetryRules: false,\n },\n },\n { isMergeableObject: isPlainObject },\n );\n }\n\n /**\n * Builds the final got options for a request to a given `url`\n *\n * This merges instance options, applies default headers, host rules and authorization, and rejects requests to disabled hosts.\n *\n * Both the `request()` and `stream()` paths must use this single entry point so that policy applied here covers every outbound request.\n */\n private prepareOptions(\n resolvedUrl: URL,\n httpOptions: InternalHttpOptions,\n ): {\n options: InternalGotOptions & InternalHttpOptions;\n hostRule: CombinedHostRule;\n } {\n const url = resolvedUrl.toString();\n\n let options = merge<InternalGotOptions, InternalHttpOptions>(\n {\n ...this.options,\n hostType: this.hostType,\n },\n httpOptions,\n { isMergeableObject: isPlainObject },\n );\n\n applyDefaultHeaders(options);\n\n if (\n isUndefined(options.readOnly) &&\n ['head', 'get'].includes(options.method.toLowerCase())\n ) {\n options.readOnly = true;\n }\n\n const hostRule = findMatchingRule(url, options);\n options = applyHostRule(url, options, hostRule);\n if (options.enabled === false) {\n logger.debug(`Host is disabled - rejecting request. HostUrl: ${url}`);\n throw new Error(HOST_DISABLED);\n }\n options = applyAuthorization(options);\n\n // enforced here so it runs before anything else - including cache lookups - can act on the URL, and for the stream path too\n const guard = applyHostGuard(\n resolvedUrl,\n options.hostType,\n hostRule.internalHostGrant,\n options.responseBecomesConfig,\n );\n options.dnsLookup = guard.dnsLookup;\n options.hooks = {\n ...options.hooks,\n beforeRedirect: [\n ...coerceArray(options.hooks?.beforeRedirect),\n guard.beforeRedirect,\n ],\n };\n if (guard.beforeRequest) {\n options.hooks.beforeRequest = [\n ...coerceArray(options.hooks.beforeRequest),\n guard.beforeRequest,\n ];\n }\n\n return { options, hostRule };\n }\n\n private async request(\n requestUrl: string | URL,\n httpOptions: InternalHttpOptions,\n ): Promise<HttpResponse>;\n private async request(\n requestUrl: string | URL,\n httpOptions: InternalHttpOptions & { responseType: 'text' },\n ): Promise<HttpResponse>;\n private async request(\n requestUrl: string | URL,\n httpOptions: InternalHttpOptions & { responseType: 'buffer' },\n ): Promise<HttpResponse<Uint8Array>>;\n private async request<T = unknown>(\n requestUrl: string | URL,\n httpOptions: InternalHttpOptions & { responseType: 'json' },\n ): Promise<HttpResponse<T>>;\n\n private async request(\n requestUrl: string | URL,\n httpOptions: InternalHttpOptions,\n ): Promise<HttpResponse<unknown>> {\n const resolvedUrl = this.resolveUrl(requestUrl, httpOptions);\n const url = resolvedUrl.toString();\n\n this.processOptions(resolvedUrl, httpOptions);\n\n const { options, hostRule } = this.prepareOptions(resolvedUrl, httpOptions);\n\n const method = options.method.toLowerCase();\n const isReadMethod = ['head', 'get'].includes(method);\n\n logger.trace(`HTTP request: ${method.toUpperCase()} ${url}`);\n\n const timeout = options.timeout ?? 60000;\n options.timeout = timeout;\n\n let cacheProvider: HttpCacheProvider | undefined;\n if (isReadMethod && options.cacheProvider) {\n cacheProvider = options.cacheProvider;\n }\n\n const memCacheKey =\n !process.env.RENOVATE_X_DISABLE_HTTP_MEMCACHE &&\n !cacheProvider &&\n options.memCache !== false &&\n isReadMethod\n ? hash(\n `got-${JSON.stringify({\n url,\n headers: options.headers,\n method,\n })}`,\n )\n : null;\n\n let resPromise: Promise<HttpResponse<unknown>> | null = null;\n\n // Cache GET requests unless memCache=false\n if (memCacheKey) {\n resPromise = memCache.get(memCacheKey);\n\n /* v8 ignore next: temporary code */\n if (resPromise && !cacheProvider) {\n ObsoleteCacheHitLogger.write(url);\n }\n }\n\n // v8 ignore else -- TODO: add test #40625\n if (!resPromise) {\n if (cacheProvider) {\n await cacheProvider.setCacheHeaders(method, url, options);\n }\n\n const startTime = Date.now();\n const httpTask: GotTask = async () => {\n let releaseLock: undefined | (() => void);\n if (isReadMethod) {\n releaseLock = await acquireLock(\n `${options.method} ${url}`,\n 'http-mutex',\n timeout * 2,\n );\n }\n try {\n const cachedResponse = await cacheProvider?.bypassServer<unknown>(\n options.method,\n url,\n );\n if (cachedResponse) {\n return cachedResponse;\n }\n\n const queueMs = Date.now() - startTime;\n return fetch(url, this._normalizeOptions(options), {\n queueMs,\n });\n } finally {\n releaseLock?.();\n }\n };\n\n const throttle = getThrottle(url);\n const throttledTask = throttle ? () => throttle.add(httpTask) : httpTask;\n\n const queue = getQueue(url);\n const queuedTask = queue ? () => queue.add(throttledTask) : throttledTask;\n\n const { maxRetryAfter = 60 } = hostRule;\n resPromise = wrapWithRetry(queuedTask, url, getRetryAfter, maxRetryAfter);\n\n if (memCacheKey) {\n memCache.set(memCacheKey, resPromise);\n }\n }\n\n try {\n const res = await resPromise;\n const deepCopyNeeded = !!memCacheKey && res.statusCode !== 304;\n const resCopy = copyResponse(res, deepCopyNeeded);\n resCopy.authorization = !!options?.headers?.authorization;\n\n this.handleResponse(resolvedUrl, resCopy);\n\n if (cacheProvider) {\n return await cacheProvider.wrapServerResponse(method, url, resCopy);\n }\n\n return resCopy;\n } catch (err) {\n const { abortOnError, abortIgnoreStatusCodes } = options;\n if (abortOnError && !abortIgnoreStatusCodes?.includes(err.statusCode)) {\n throw new ExternalHostError(err);\n }\n\n const staleResponse = await cacheProvider?.bypassServer<\n string | Uint8Array\n >(method, url, true);\n if (staleResponse) {\n logger.debug(\n { err },\n `Request error: returning stale cache instead for ${url}`,\n );\n return staleResponse;\n }\n\n this.handleError(requestUrl, httpOptions, err);\n }\n }\n\n private _normalizeOptions<T extends OptionsInit>(options: T): T {\n return normalize(options, this.extraOptions());\n }\n\n /**\n * Returns Renovate extra options which needs to be removed before passing to got.\n * @returns extra Renovate options.\n */\n protected extraOptions(): readonly string[] {\n return [\n 'baseUrl',\n 'cacheProvider',\n 'readOnly',\n 'responseBecomesConfig',\n ] as (keyof HttpOptions)[];\n }\n\n protected processOptions(_url: URL, _options: InternalHttpOptions): void {\n // noop\n }\n\n protected handleError(\n _url: string | URL,\n _httpOptions: HttpOptions,\n err: Error,\n ): never {\n throw err;\n }\n\n protected handleResponse(_url: URL, _res: HttpResponse<unknown>): void {\n // noop\n }\n\n resolveUrl(requestUrl: string | URL, options?: HttpOptions): URL {\n let url = requestUrl;\n\n if (url instanceof URL) {\n // already a aboslute URL\n return url;\n }\n\n const baseUrl = options?.baseUrl ?? this.baseUrl;\n if (baseUrl) {\n url = resolveBaseUrl(baseUrl, url);\n }\n\n const parsedUrl = parseUrl(url);\n if (!parsedUrl || !isHttpUrl(parsedUrl)) {\n logger.error(\n { url: requestUrl, baseUrl, resolvedUrl: url },\n 'Request Error: cannot parse url',\n );\n throw new Error('Invalid URL');\n }\n return parsedUrl;\n }\n\n protected calculateRetryDelay({ computedValue }: RetryObject): number {\n return computedValue;\n }\n\n get(\n url: string,\n options: HttpOptions = {},\n ): Promise<HttpResponse<string | Uint8Array>> {\n return this.request(url, options);\n }\n\n head(url: string, options: HttpOptions = {}): Promise<HttpResponse<never>> {\n // to complex to validate\n return this.request(url, {\n ...options,\n responseType: 'text',\n method: 'head',\n }) as Promise<HttpResponse<never>>;\n }\n\n getText(url: string | URL, options: HttpOptions = {}): Promise<HttpResponse> {\n return this.request(url, { ...options, responseType: 'text' });\n }\n\n getBuffer(\n url: string | URL,\n options: HttpOptions = {},\n ): Promise<HttpResponse<Uint8Array>> {\n return this.request(url, { ...options, responseType: 'buffer' });\n }\n\n protected requestJsonUnsafe<ResT>(\n method: HttpMethod,\n { url, httpOptions: requestOptions }: InternalJsonUnsafeOptions<JSONOpts>,\n ): Promise<HttpResponse<ResT>> {\n const { body: json, ...httpOptions } = { ...requestOptions };\n const opts: InternalHttpOptions = {\n ...httpOptions,\n method,\n };\n // signal that we expect a json response\n opts.headers = {\n accept: 'application/json',\n ...opts.headers,\n };\n if (json) {\n opts.json = json;\n }\n return this.request<ResT>(url, { ...opts, responseType: 'json' });\n }\n\n private async requestJson<\n ResT,\n Schema extends ZodType<ResT, any> = ZodType<ResT, any>,\n >(\n method: HttpMethod,\n options: InternalJsonOptions<JSONOpts, ResT, Schema>,\n ): Promise<HttpResponse<ResT>> {\n const res = await this.requestJsonUnsafe<ResT>(method, options);\n\n if (options.schema) {\n res.body = await options.schema.parseAsync(res.body);\n }\n\n return res;\n }\n\n private resolveArgs<ResT = unknown>(\n arg1: string,\n arg2: JSONOpts | ZodType<ResT> | undefined,\n arg3: ZodType<ResT> | undefined,\n ): InternalJsonOptions<JSONOpts, ResT> {\n const res: InternalJsonOptions<JSONOpts, ResT> = { url: arg1 };\n\n if (arg2 instanceof ZodType) {\n res.schema = arg2;\n } else if (arg2) {\n res.httpOptions = arg2;\n }\n\n if (arg3) {\n res.schema = arg3;\n }\n\n return res;\n }\n\n async getPlain(url: string, options?: Opts): Promise<HttpResponse> {\n const opt = coerceObject(options);\n return await this.getText(url, {\n headers: {\n Accept: 'text/plain',\n },\n ...opt,\n });\n }\n\n /**\n * @deprecated use `getYaml` instead\n */\n async getYamlUnchecked<ResT>(\n url: string,\n options?: Opts,\n ): Promise<HttpResponse<ResT>> {\n const res = await this.getText(url, options);\n const body = parseSingleYaml<ResT>(res.body);\n return { ...res, body };\n }\n\n async getYaml<Schema extends ZodType<any, any, any>>(\n url: string,\n schema: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n async getYaml<Schema extends ZodType<any, any, any>>(\n url: string,\n options: Opts,\n schema: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n async getYaml<Schema extends ZodType<any, any, any>>(\n arg1: string,\n arg2?: Opts | Schema,\n arg3?: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>> {\n const url = arg1;\n let schema: Schema;\n let httpOptions: Opts | undefined;\n if (arg3) {\n schema = arg3;\n httpOptions = arg2 as Opts;\n } else {\n schema = arg2 as Schema;\n }\n\n const opts: InternalHttpOptions = {\n ...httpOptions,\n method: 'get',\n };\n\n const res = await this.getText(url, opts);\n const body = await schema.parseAsync(parseSingleYaml(res.body));\n return { ...res, body };\n }\n\n getYamlSafe<\n ResT extends NonNullable<unknown>,\n Schema extends ZodType<ResT> = ZodType<ResT>,\n >(url: string, schema: Schema): AsyncResult<z.infer<Schema>, SafeJsonError>;\n getYamlSafe<\n ResT extends NonNullable<unknown>,\n Schema extends ZodType<ResT> = ZodType<ResT>,\n >(\n url: string,\n options: Opts,\n schema: Schema,\n ): AsyncResult<z.infer<Schema>, SafeJsonError>;\n getYamlSafe<\n ResT extends NonNullable<unknown>,\n Schema extends ZodType<ResT> = ZodType<ResT>,\n >(\n arg1: string,\n arg2: Opts | Schema,\n arg3?: Schema,\n ): AsyncResult<ResT, SafeJsonError> {\n const url = arg1;\n let schema: Schema;\n let httpOptions: Opts | undefined;\n if (arg3) {\n schema = arg3;\n httpOptions = arg2 as Opts;\n } else {\n schema = arg2 as Schema;\n }\n\n let res: AsyncResult<HttpResponse<ResT>, SafeJsonError>;\n if (httpOptions) {\n res = Result.wrap(this.getYaml(url, httpOptions, schema));\n } else {\n res = Result.wrap(this.getYaml(url, schema));\n }\n\n return res.transform((response) => Result.ok(response.body));\n }\n\n /**\n * Request JSON and return the response without any validation.\n *\n * The usage of this method is discouraged, please use `getJson` instead.\n *\n * If you're new to Zod schema validation library:\n * - consult the [documentation of Zod library](https://github.com/colinhacks/zod?tab=readme-ov-file#basic-usage)\n * - search the Renovate codebase for 'zod' module usage\n * - take a look at the `schema-utils.ts` file for Renovate-specific schemas and utilities\n */\n getJsonUnchecked<ResT = unknown>(\n url: string,\n options?: JSONOpts,\n ): Promise<HttpResponse<ResT>> {\n return this.requestJson<ResT>('get', { url, httpOptions: options });\n }\n\n /**\n * Request JSON with a Zod schema for the response,\n * throwing an error if the response is not valid.\n *\n * @param url\n * @param schema Zod schema for the response\n */\n getJson<Schema extends ZodType<any, any, any>>(\n url: string,\n schema: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n getJson<Schema extends ZodType<any, any, any>>(\n url: string,\n options: JSONOpts,\n schema: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n getJson<Schema extends ZodType<any, any, any>>(\n arg1: string,\n arg2?: JSONOpts | Schema,\n arg3?: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>> {\n const args = this.resolveArgs<z.infer<Schema>>(arg1, arg2, arg3);\n return this.requestJson<z.infer<Schema>>('get', args);\n }\n\n /**\n * Request JSON with a Zod schema for the response,\n * wrapping response data in a `Result` class.\n *\n * @param url\n * @param schema Zod schema for the response\n */\n getJsonSafe<ResT extends NonNullable<unknown>, Schema extends ZodType<ResT>>(\n url: string,\n schema: Schema,\n ): AsyncResult<z.infer<Schema>, SafeJsonError>;\n getJsonSafe<ResT extends NonNullable<unknown>, Schema extends ZodType<ResT>>(\n url: string,\n options: JSONOpts,\n schema: Schema,\n ): AsyncResult<z.infer<Schema>, SafeJsonError>;\n getJsonSafe<ResT extends NonNullable<unknown>, Schema extends ZodType<ResT>>(\n arg1: string,\n arg2?: JSONOpts | Schema,\n arg3?: Schema,\n ): AsyncResult<ResT, SafeJsonError> {\n const args = this.resolveArgs<ResT>(arg1, arg2, arg3);\n return Result.wrap(this.requestJson<ResT>('get', args)).transform(\n (response) => Result.ok(response.body),\n );\n }\n\n /**\n * @deprecated use `head` instead\n */\n headJson(url: string, httpOptions?: JSONOpts): Promise<HttpResponse<never>> {\n return this.requestJson<never>('head', { url, httpOptions });\n }\n\n postJson<T>(url: string, options?: JSONOpts): Promise<HttpResponse<T>>;\n postJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n schema: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n postJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n options: JSONOpts,\n schema: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n postJson<T = unknown, Schema extends ZodType<T> = ZodType<T>>(\n arg1: string,\n arg2?: JSONOpts | Schema,\n arg3?: Schema,\n ): Promise<HttpResponse<T>> {\n const args = this.resolveArgs(arg1, arg2, arg3);\n return this.requestJson<T>('post', args);\n }\n\n putJson<T>(url: string, options?: JSONOpts): Promise<HttpResponse<T>>;\n putJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n schema: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n putJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n options: JSONOpts,\n schema: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n putJson<T = unknown, Schema extends ZodType<T> = ZodType<T>>(\n arg1: string,\n arg2?: JSONOpts | Schema,\n arg3?: Schema,\n ): Promise<HttpResponse<T>> {\n const args = this.resolveArgs<T>(arg1, arg2, arg3);\n return this.requestJson<T>('put', args);\n }\n\n patchJson<T>(url: string, options?: JSONOpts): Promise<HttpResponse<T>>;\n patchJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n schema: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n patchJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n options: JSONOpts,\n schema: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n patchJson<T = unknown, Schema extends ZodType<T> = ZodType<T>>(\n arg1: string,\n arg2?: JSONOpts | Schema,\n arg3?: Schema,\n ): Promise<HttpResponse<T>> {\n const args = this.resolveArgs(arg1, arg2, arg3);\n return this.requestJson<T>('patch', args);\n }\n\n deleteJson<T>(url: string, options?: JSONOpts): Promise<HttpResponse<T>>;\n deleteJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n schema: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n deleteJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n options: JSONOpts,\n schema: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n deleteJson<T = unknown, Schema extends ZodType<T> = ZodType<T>>(\n arg1: string,\n arg2?: JSONOpts | Schema,\n arg3?: Schema,\n ): Promise<HttpResponse<T>> {\n const args = this.resolveArgs(arg1, arg2, arg3);\n return this.requestJson<T>('delete', args);\n }\n\n stream(url: string, options?: HttpOptions): NodeJS.ReadableStream {\n const resolvedUrl = this.resolveUrl(url, options);\n\n const { options: combinedOptions } = this.prepareOptions(resolvedUrl, {\n ...options,\n method: 'get',\n });\n\n return stream(\n resolvedUrl.toString(),\n this._normalizeOptions(combinedOptions),\n );\n }\n\n async getToml<Schema extends ZodType<any, any, any>>(\n url: string,\n schema?: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n async getToml<Schema extends ZodType<any, any, any>>(\n url: string,\n options: JSONOpts,\n schema: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n async getToml<Schema extends ZodType<any, any, any>>(\n arg1: string,\n arg2?: JSONOpts | Schema,\n arg3?: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>> {\n const { url, schema, httpOptions } = this.resolveArgs<z.infer<Schema>>(\n arg1,\n arg2,\n arg3,\n );\n\n const opts: InternalHttpOptions = {\n ...httpOptions,\n method: 'get',\n headers: {\n 'Content-Type': 'application/toml',\n ...httpOptions?.headers,\n },\n };\n\n const res = await this.getText(url, opts);\n if (schema) {\n res.body = await Toml.pipe(schema).parseAsync(res.body);\n } else {\n res.body = (await Toml.parseAsync(res.body)) as z.infer<Schema>;\n }\n\n return res as HttpResponse<z.infer<Schema>>;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"http.js","names":["memCache.get"],"sources":["../../../lib/util/http/http.ts"],"sourcesContent":["import { isPlainObject, isUndefined } from '@sindresorhus/is';\nimport merge from 'deepmerge';\nimport type { Options, OptionsInit, RetryObject } from 'got';\nimport type { SetRequired } from 'type-fest';\nimport type { z } from 'zod/v4';\nimport { ZodType } from 'zod/v4';\nimport { GlobalConfig } from '../../config/global.ts';\nimport { HOST_DISABLED } from '../../constants/error-messages.ts';\nimport { logger } from '../../logger/index.ts';\nimport { ExternalHostError } from '../../types/errors/external-host-error.ts';\nimport type { CombinedHostRule } from '../../types/index.ts';\nimport { coerceArray } from '../array.ts';\nimport * as memCache from '../cache/memory/index.ts';\nimport { getEnv } from '../env.ts';\nimport { hash } from '../hash.ts';\nimport { acquireLock } from '../mutex.ts';\nimport { coerceObject } from '../object.ts';\nimport { type AsyncResult, Result } from '../result.ts';\nimport { Toml } from '../schema-utils/index.ts';\nimport { ObsoleteCacheHitLogger } from '../stats.ts';\nimport { compile } from '../template/index.ts';\nimport { isHttpUrl, parseUrl, resolveBaseUrl } from '../url.ts';\nimport { parseSingleYaml } from '../yaml.ts';\nimport { applyAuthorization } from './auth.ts';\nimport type { HttpCacheProvider } from './cache/types.ts';\nimport { fetch, normalize, stream } from './got.ts';\nimport { applyHostGuard } from './host-guard.ts';\nimport { applyHostRule, findMatchingRule } from './host-rules.ts';\nimport { getQueue } from './queue.ts';\nimport { getRetryAfter, wrapWithRetry } from './retry-after.ts';\nimport { getThrottle } from './throttle.ts';\nimport type {\n GotOptions,\n GotTask,\n HttpMethod,\n HttpOptions,\n HttpResponse,\n SafeJsonError,\n} from './types.ts';\nimport { copyResponse } from './util.ts';\n\nexport interface InternalJsonUnsafeOptions<\n Opts extends HttpOptions = HttpOptions,\n> {\n url: string | URL;\n httpOptions?: Opts;\n}\n\nexport interface InternalJsonOptions<\n Opts extends HttpOptions,\n ResT = unknown,\n Schema extends ZodType<ResT, any> = ZodType<ResT, any>,\n> extends InternalJsonUnsafeOptions<Opts> {\n schema?: Schema;\n}\n\nexport type InternalGotOptions = SetRequired<GotOptions, 'method' | 'context'>;\n\nexport interface InternalHttpOptions extends HttpOptions {\n json?: HttpOptions['body'];\n\n method?: HttpMethod;\n\n parseJson?: Options['parseJson'];\n}\n\nexport function applyDefaultHeaders(options: OptionsInit): void {\n const userAgentTemplate = GlobalConfig.get('userAgent');\n options.headers = {\n ...options.headers,\n 'user-agent': compile(userAgentTemplate, {}),\n };\n}\n\nexport abstract class HttpBase<\n JSONOpts extends HttpOptions = HttpOptions,\n Opts extends HttpOptions = HttpOptions,\n> {\n private readonly options: InternalGotOptions;\n\n protected get baseUrl(): string | undefined {\n return undefined;\n }\n\n protected hostType: string;\n\n constructor(hostType: string, options: HttpOptions = {}) {\n this.hostType = hostType;\n const retryLimit = getEnv().NODE_ENV === 'test' ? 0 : 2;\n this.options = merge<InternalGotOptions>(\n options,\n {\n method: 'get',\n context: { hostType },\n retry: {\n calculateDelay: (retryObject) =>\n this.calculateRetryDelay(retryObject),\n limit: retryLimit,\n maxRetryAfter: 0, // Don't rely on `got` retry-after handling, just let it fail and then we'll handle it\n enforceRetryRules: false,\n },\n },\n { isMergeableObject: isPlainObject },\n );\n }\n\n /**\n * Builds the final got options for a request to a given `url`\n *\n * This merges instance options, applies default headers, host rules and authorization, and rejects requests to disabled hosts.\n *\n * Both the `request()` and `stream()` paths must use this single entry point so that policy applied here covers every outbound request.\n */\n private prepareOptions(\n resolvedUrl: URL,\n httpOptions: InternalHttpOptions,\n ): {\n options: InternalGotOptions & InternalHttpOptions;\n hostRule: CombinedHostRule;\n } {\n const url = resolvedUrl.toString();\n\n let options = merge<InternalGotOptions, InternalHttpOptions>(\n {\n ...this.options,\n hostType: this.hostType,\n },\n httpOptions,\n { isMergeableObject: isPlainObject },\n );\n\n applyDefaultHeaders(options);\n\n if (\n isUndefined(options.readOnly) &&\n ['head', 'get'].includes(options.method.toLowerCase())\n ) {\n options.readOnly = true;\n }\n\n const hostRule = findMatchingRule(url, options);\n options = applyHostRule(url, options, hostRule);\n if (options.enabled === false) {\n logger.debug(`Host is disabled - rejecting request. HostUrl: ${url}`);\n throw new Error(HOST_DISABLED);\n }\n options = applyAuthorization(options);\n\n // enforced here so it runs before anything else - including cache lookups - can act on the URL, and for the stream path too\n const guard = applyHostGuard(\n resolvedUrl,\n options.hostType,\n hostRule.internalHostGrant,\n options.responseBecomesConfig,\n );\n options.dnsLookup = guard.dnsLookup;\n options.hooks = {\n ...options.hooks,\n beforeRedirect: [\n ...coerceArray(options.hooks?.beforeRedirect),\n guard.beforeRedirect,\n ],\n };\n if (guard.beforeRequest) {\n options.hooks.beforeRequest = [\n ...coerceArray(options.hooks.beforeRequest),\n guard.beforeRequest,\n ];\n }\n\n return { options, hostRule };\n }\n\n private async request(\n requestUrl: string | URL,\n httpOptions: InternalHttpOptions,\n ): Promise<HttpResponse>;\n private async request(\n requestUrl: string | URL,\n httpOptions: InternalHttpOptions & { responseType: 'text' },\n ): Promise<HttpResponse>;\n private async request(\n requestUrl: string | URL,\n httpOptions: InternalHttpOptions & { responseType: 'buffer' },\n ): Promise<HttpResponse<Uint8Array>>;\n private async request<T = unknown>(\n requestUrl: string | URL,\n httpOptions: InternalHttpOptions & { responseType: 'json' },\n ): Promise<HttpResponse<T>>;\n\n private async request(\n requestUrl: string | URL,\n httpOptions: InternalHttpOptions,\n ): Promise<HttpResponse<unknown>> {\n const resolvedUrl = this.resolveUrl(requestUrl, httpOptions);\n const url = resolvedUrl.toString();\n\n this.processOptions(resolvedUrl, httpOptions);\n\n const { options, hostRule } = this.prepareOptions(resolvedUrl, httpOptions);\n\n const method = options.method.toLowerCase();\n const isReadMethod = ['head', 'get'].includes(method);\n\n logger.trace(`HTTP request: ${method.toUpperCase()} ${url}`);\n\n const timeout = options.timeout ?? 60000;\n options.timeout = timeout;\n\n let cacheProvider: HttpCacheProvider | undefined;\n if (isReadMethod && options.cacheProvider) {\n cacheProvider = options.cacheProvider;\n }\n\n const memCacheKey =\n !process.env.RENOVATE_X_DISABLE_HTTP_MEMCACHE &&\n !cacheProvider &&\n options.memCache !== false &&\n isReadMethod\n ? hash(\n `got-${JSON.stringify({\n url,\n headers: options.headers,\n method,\n })}`,\n )\n : null;\n\n let resPromise: Promise<HttpResponse<unknown>> | null = null;\n\n // Cache GET requests unless memCache=false\n if (memCacheKey) {\n resPromise = memCache.get(memCacheKey);\n\n /* v8 ignore next: temporary code */\n if (resPromise && !cacheProvider) {\n ObsoleteCacheHitLogger.write(url);\n }\n }\n\n // v8 ignore else -- TODO: add test #40625\n if (!resPromise) {\n if (cacheProvider) {\n await cacheProvider.setCacheHeaders(method, url, options);\n }\n\n const startTime = Date.now();\n const fetchTask: GotTask = () => {\n const queueMs = Date.now() - startTime;\n return fetch(url, this._normalizeOptions(options), { queueMs });\n };\n\n const throttle = getThrottle(url);\n const throttledTask = throttle\n ? () => throttle.add(fetchTask)\n : fetchTask;\n\n const queue = getQueue(url);\n const queuedTask = queue ? () => queue.add(throttledTask) : throttledTask;\n\n // cached responses don't hit the server, so they skip the throttle and queue\n async function httpTask(): Promise<HttpResponse<unknown>> {\n if (cacheProvider) {\n const releaseLock = await acquireLock(\n `${options.method} ${url}`,\n 'http-mutex',\n timeout * 2,\n );\n try {\n const cachedResponse = await cacheProvider.bypassServer<unknown>(\n options.method,\n url,\n );\n if (cachedResponse) {\n return cachedResponse;\n }\n } finally {\n releaseLock();\n }\n }\n return queuedTask();\n }\n\n const { maxRetryAfter = 60 } = hostRule;\n resPromise = wrapWithRetry(httpTask, url, getRetryAfter, maxRetryAfter);\n\n if (memCacheKey) {\n memCache.set(memCacheKey, resPromise);\n }\n }\n\n try {\n const res = await resPromise;\n const deepCopyNeeded = !!memCacheKey && res.statusCode !== 304;\n const resCopy = copyResponse(res, deepCopyNeeded);\n resCopy.authorization = !!options?.headers?.authorization;\n\n this.handleResponse(resolvedUrl, resCopy);\n\n if (cacheProvider) {\n return await cacheProvider.wrapServerResponse(method, url, resCopy);\n }\n\n return resCopy;\n } catch (err) {\n const { abortOnError, abortIgnoreStatusCodes } = options;\n if (abortOnError && !abortIgnoreStatusCodes?.includes(err.statusCode)) {\n throw new ExternalHostError(err);\n }\n\n const staleResponse = await cacheProvider?.bypassServer<\n string | Uint8Array\n >(method, url, true);\n if (staleResponse) {\n logger.debug(\n { err },\n `Request error: returning stale cache instead for ${url}`,\n );\n return staleResponse;\n }\n\n this.handleError(requestUrl, httpOptions, err);\n }\n }\n\n private _normalizeOptions<T extends OptionsInit>(options: T): T {\n return normalize(options, this.extraOptions());\n }\n\n /**\n * Returns Renovate extra options which needs to be removed before passing to got.\n * @returns extra Renovate options.\n */\n protected extraOptions(): readonly string[] {\n return [\n 'baseUrl',\n 'cacheProvider',\n 'readOnly',\n 'responseBecomesConfig',\n ] as (keyof HttpOptions)[];\n }\n\n protected processOptions(_url: URL, _options: InternalHttpOptions): void {\n // noop\n }\n\n protected handleError(\n _url: string | URL,\n _httpOptions: HttpOptions,\n err: Error,\n ): never {\n throw err;\n }\n\n protected handleResponse(_url: URL, _res: HttpResponse<unknown>): void {\n // noop\n }\n\n resolveUrl(requestUrl: string | URL, options?: HttpOptions): URL {\n let url = requestUrl;\n\n if (url instanceof URL) {\n // already a aboslute URL\n return url;\n }\n\n const baseUrl = options?.baseUrl ?? this.baseUrl;\n if (baseUrl) {\n url = resolveBaseUrl(baseUrl, url);\n }\n\n const parsedUrl = parseUrl(url);\n if (!parsedUrl || !isHttpUrl(parsedUrl)) {\n logger.error(\n { url: requestUrl, baseUrl, resolvedUrl: url },\n 'Request Error: cannot parse url',\n );\n throw new Error('Invalid URL');\n }\n return parsedUrl;\n }\n\n protected calculateRetryDelay({ computedValue }: RetryObject): number {\n return computedValue;\n }\n\n get(\n url: string,\n options: HttpOptions = {},\n ): Promise<HttpResponse<string | Uint8Array>> {\n return this.request(url, options);\n }\n\n head(url: string, options: HttpOptions = {}): Promise<HttpResponse<never>> {\n // to complex to validate\n return this.request(url, {\n ...options,\n responseType: 'text',\n method: 'head',\n }) as Promise<HttpResponse<never>>;\n }\n\n getText(url: string | URL, options: HttpOptions = {}): Promise<HttpResponse> {\n return this.request(url, { ...options, responseType: 'text' });\n }\n\n getBuffer(\n url: string | URL,\n options: HttpOptions = {},\n ): Promise<HttpResponse<Uint8Array>> {\n return this.request(url, { ...options, responseType: 'buffer' });\n }\n\n protected requestJsonUnsafe<ResT>(\n method: HttpMethod,\n { url, httpOptions: requestOptions }: InternalJsonUnsafeOptions<JSONOpts>,\n ): Promise<HttpResponse<ResT>> {\n const { body: json, ...httpOptions } = { ...requestOptions };\n const opts: InternalHttpOptions = {\n ...httpOptions,\n method,\n };\n // signal that we expect a json response\n opts.headers = {\n accept: 'application/json',\n ...opts.headers,\n };\n if (json) {\n opts.json = json;\n }\n return this.request<ResT>(url, { ...opts, responseType: 'json' });\n }\n\n private async requestJson<\n ResT,\n Schema extends ZodType<ResT, any> = ZodType<ResT, any>,\n >(\n method: HttpMethod,\n options: InternalJsonOptions<JSONOpts, ResT, Schema>,\n ): Promise<HttpResponse<ResT>> {\n const res = await this.requestJsonUnsafe<ResT>(method, options);\n\n if (options.schema) {\n res.body = await options.schema.parseAsync(res.body);\n }\n\n return res;\n }\n\n private resolveArgs<ResT = unknown>(\n arg1: string,\n arg2: JSONOpts | ZodType<ResT> | undefined,\n arg3: ZodType<ResT> | undefined,\n ): InternalJsonOptions<JSONOpts, ResT> {\n const res: InternalJsonOptions<JSONOpts, ResT> = { url: arg1 };\n\n if (arg2 instanceof ZodType) {\n res.schema = arg2;\n } else if (arg2) {\n res.httpOptions = arg2;\n }\n\n if (arg3) {\n res.schema = arg3;\n }\n\n return res;\n }\n\n async getPlain(url: string, options?: Opts): Promise<HttpResponse> {\n const opt = coerceObject(options);\n return await this.getText(url, {\n headers: {\n Accept: 'text/plain',\n },\n ...opt,\n });\n }\n\n /**\n * @deprecated use `getYaml` instead\n */\n async getYamlUnchecked<ResT>(\n url: string,\n options?: Opts,\n ): Promise<HttpResponse<ResT>> {\n const res = await this.getText(url, options);\n const body = parseSingleYaml<ResT>(res.body);\n return { ...res, body };\n }\n\n async getYaml<Schema extends ZodType<any, any, any>>(\n url: string,\n schema: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n async getYaml<Schema extends ZodType<any, any, any>>(\n url: string,\n options: Opts,\n schema: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n async getYaml<Schema extends ZodType<any, any, any>>(\n arg1: string,\n arg2?: Opts | Schema,\n arg3?: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>> {\n const url = arg1;\n let schema: Schema;\n let httpOptions: Opts | undefined;\n if (arg3) {\n schema = arg3;\n httpOptions = arg2 as Opts;\n } else {\n schema = arg2 as Schema;\n }\n\n const opts: InternalHttpOptions = {\n ...httpOptions,\n method: 'get',\n };\n\n const res = await this.getText(url, opts);\n const body = await schema.parseAsync(parseSingleYaml(res.body));\n return { ...res, body };\n }\n\n getYamlSafe<\n ResT extends NonNullable<unknown>,\n Schema extends ZodType<ResT> = ZodType<ResT>,\n >(url: string, schema: Schema): AsyncResult<z.infer<Schema>, SafeJsonError>;\n getYamlSafe<\n ResT extends NonNullable<unknown>,\n Schema extends ZodType<ResT> = ZodType<ResT>,\n >(\n url: string,\n options: Opts,\n schema: Schema,\n ): AsyncResult<z.infer<Schema>, SafeJsonError>;\n getYamlSafe<\n ResT extends NonNullable<unknown>,\n Schema extends ZodType<ResT> = ZodType<ResT>,\n >(\n arg1: string,\n arg2: Opts | Schema,\n arg3?: Schema,\n ): AsyncResult<ResT, SafeJsonError> {\n const url = arg1;\n let schema: Schema;\n let httpOptions: Opts | undefined;\n if (arg3) {\n schema = arg3;\n httpOptions = arg2 as Opts;\n } else {\n schema = arg2 as Schema;\n }\n\n let res: AsyncResult<HttpResponse<ResT>, SafeJsonError>;\n if (httpOptions) {\n res = Result.wrap(this.getYaml(url, httpOptions, schema));\n } else {\n res = Result.wrap(this.getYaml(url, schema));\n }\n\n return res.transform((response) => Result.ok(response.body));\n }\n\n /**\n * Request JSON and return the response without any validation.\n *\n * The usage of this method is discouraged, please use `getJson` instead.\n *\n * If you're new to Zod schema validation library:\n * - consult the [documentation of Zod library](https://github.com/colinhacks/zod?tab=readme-ov-file#basic-usage)\n * - search the Renovate codebase for 'zod' module usage\n * - take a look at the `schema-utils.ts` file for Renovate-specific schemas and utilities\n */\n getJsonUnchecked<ResT = unknown>(\n url: string,\n options?: JSONOpts,\n ): Promise<HttpResponse<ResT>> {\n return this.requestJson<ResT>('get', { url, httpOptions: options });\n }\n\n /**\n * Request JSON with a Zod schema for the response,\n * throwing an error if the response is not valid.\n *\n * @param url\n * @param schema Zod schema for the response\n */\n getJson<Schema extends ZodType<any, any, any>>(\n url: string,\n schema: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n getJson<Schema extends ZodType<any, any, any>>(\n url: string,\n options: JSONOpts,\n schema: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n getJson<Schema extends ZodType<any, any, any>>(\n arg1: string,\n arg2?: JSONOpts | Schema,\n arg3?: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>> {\n const args = this.resolveArgs<z.infer<Schema>>(arg1, arg2, arg3);\n return this.requestJson<z.infer<Schema>>('get', args);\n }\n\n /**\n * Request JSON with a Zod schema for the response,\n * wrapping response data in a `Result` class.\n *\n * @param url\n * @param schema Zod schema for the response\n */\n getJsonSafe<ResT extends NonNullable<unknown>, Schema extends ZodType<ResT>>(\n url: string,\n schema: Schema,\n ): AsyncResult<z.infer<Schema>, SafeJsonError>;\n getJsonSafe<ResT extends NonNullable<unknown>, Schema extends ZodType<ResT>>(\n url: string,\n options: JSONOpts,\n schema: Schema,\n ): AsyncResult<z.infer<Schema>, SafeJsonError>;\n getJsonSafe<ResT extends NonNullable<unknown>, Schema extends ZodType<ResT>>(\n arg1: string,\n arg2?: JSONOpts | Schema,\n arg3?: Schema,\n ): AsyncResult<ResT, SafeJsonError> {\n const args = this.resolveArgs<ResT>(arg1, arg2, arg3);\n return Result.wrap(this.requestJson<ResT>('get', args)).transform(\n (response) => Result.ok(response.body),\n );\n }\n\n /**\n * @deprecated use `head` instead\n */\n headJson(url: string, httpOptions?: JSONOpts): Promise<HttpResponse<never>> {\n return this.requestJson<never>('head', { url, httpOptions });\n }\n\n postJson<T>(url: string, options?: JSONOpts): Promise<HttpResponse<T>>;\n postJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n schema: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n postJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n options: JSONOpts,\n schema: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n postJson<T = unknown, Schema extends ZodType<T> = ZodType<T>>(\n arg1: string,\n arg2?: JSONOpts | Schema,\n arg3?: Schema,\n ): Promise<HttpResponse<T>> {\n const args = this.resolveArgs(arg1, arg2, arg3);\n return this.requestJson<T>('post', args);\n }\n\n putJson<T>(url: string, options?: JSONOpts): Promise<HttpResponse<T>>;\n putJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n schema: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n putJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n options: JSONOpts,\n schema: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n putJson<T = unknown, Schema extends ZodType<T> = ZodType<T>>(\n arg1: string,\n arg2?: JSONOpts | Schema,\n arg3?: Schema,\n ): Promise<HttpResponse<T>> {\n const args = this.resolveArgs<T>(arg1, arg2, arg3);\n return this.requestJson<T>('put', args);\n }\n\n patchJson<T>(url: string, options?: JSONOpts): Promise<HttpResponse<T>>;\n patchJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n schema: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n patchJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n options: JSONOpts,\n schema: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n patchJson<T = unknown, Schema extends ZodType<T> = ZodType<T>>(\n arg1: string,\n arg2?: JSONOpts | Schema,\n arg3?: Schema,\n ): Promise<HttpResponse<T>> {\n const args = this.resolveArgs(arg1, arg2, arg3);\n return this.requestJson<T>('patch', args);\n }\n\n deleteJson<T>(url: string, options?: JSONOpts): Promise<HttpResponse<T>>;\n deleteJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n schema: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n deleteJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n options: JSONOpts,\n schema: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n deleteJson<T = unknown, Schema extends ZodType<T> = ZodType<T>>(\n arg1: string,\n arg2?: JSONOpts | Schema,\n arg3?: Schema,\n ): Promise<HttpResponse<T>> {\n const args = this.resolveArgs(arg1, arg2, arg3);\n return this.requestJson<T>('delete', args);\n }\n\n stream(url: string, options?: HttpOptions): NodeJS.ReadableStream {\n const resolvedUrl = this.resolveUrl(url, options);\n\n const { options: combinedOptions } = this.prepareOptions(resolvedUrl, {\n ...options,\n method: 'get',\n });\n\n return stream(\n resolvedUrl.toString(),\n this._normalizeOptions(combinedOptions),\n );\n }\n\n async getToml<Schema extends ZodType<any, any, any>>(\n url: string,\n schema?: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n async getToml<Schema extends ZodType<any, any, any>>(\n url: string,\n options: JSONOpts,\n schema: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>>;\n async getToml<Schema extends ZodType<any, any, any>>(\n arg1: string,\n arg2?: JSONOpts | Schema,\n arg3?: Schema,\n ): Promise<HttpResponse<z.infer<Schema>>> {\n const { url, schema, httpOptions } = this.resolveArgs<z.infer<Schema>>(\n arg1,\n arg2,\n arg3,\n );\n\n const opts: InternalHttpOptions = {\n ...httpOptions,\n method: 'get',\n headers: {\n 'Content-Type': 'application/toml',\n ...httpOptions?.headers,\n },\n };\n\n const res = await this.getText(url, opts);\n if (schema) {\n res.body = await Toml.pipe(schema).parseAsync(res.body);\n } else {\n res.body = (await Toml.parseAsync(res.body)) as z.infer<Schema>;\n }\n\n return res as HttpResponse<z.infer<Schema>>;\n }\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
package/renovate-schema.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$id": "https://docs.renovatebot.com/renovate-schema.json",
|
|
3
|
-
"title": "JSON schema for Renovate 44.
|
|
3
|
+
"title": "JSON schema for Renovate 44.127.1 config files (https://renovatebot.com/)",
|
|
4
4
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
5
|
-
"x-renovate-version": "44.
|
|
5
|
+
"x-renovate-version": "44.127.1",
|
|
6
6
|
"allowComments": true,
|
|
7
7
|
"type": "object",
|
|
8
8
|
"definitions": {
|