renovate 43.83.2 → 43.84.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -40,7 +40,7 @@ hashMap.set("fleet", "fe2b132bd17f9c0a46ea5877bdaa6671c6452391219c9441e367d44dea
40
40
  hashMap.set("flux", "427e0c1a5b1d8337503a9a568a76532fbde0bab8b355fa8f47312de50eadf2f6");
41
41
  hashMap.set("fvm", "9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90");
42
42
  hashMap.set("git-submodules", "a286e097a5fcc6c946e792b812871147b39ad93f9ad041b5b3216b100f972e95");
43
- hashMap.set("github-actions", "076baaa5a3e96012a800899d9d4c0876341f7e87c2fb981af5ce28ce0bdd0c2a");
43
+ hashMap.set("github-actions", "d3b1deb4dfcdba586cd97b4d2d2f9f1b89531bcc31b6ead0d960b990586d6058");
44
44
  hashMap.set("gitlabci", "0dec44dd398bfc5b3c19d0929bea2fef7f386c94acfd1b1d7bc2a31d81d96fd6");
45
45
  hashMap.set("gitlabci-include", "354cfc4ea327c6d5cd5bee1f17763832efc7f5402e9fd22c579239fccb9c6dab");
46
46
  hashMap.set("glasskube", "253d6db30bdec75ed5ab5d26f31d69bc07813ba10089a28da12c6a29eff4ec70");
@@ -1 +1 @@
1
- {"version":3,"file":"fingerprint.generated.js","names":[],"sources":["../../../lib/modules/manager/fingerprint.generated.ts"],"sourcesContent":["export const hashMap = new Map<string, string>();\n\nhashMap.set('ansible','1fbc76f78daa14a8c9ab1142e9d1e05c746c0419a9f1455e4279f476590d0c04');\nhashMap.set('ansible-galaxy','8226d47128f2018825d4d6f84794e3183eb79c706045fa7e88491edd5e64106f');\nhashMap.set('argocd','5d35b1992e53130bf83b0e59a0f90ccd3a78919974c69044f306dc5d162f48ce');\nhashMap.set('asdf','1f6fcf620e9c6cd35991380cb6eafb94ec60cd77cbd13335ebe3a1d9727416c9');\nhashMap.set('azure-pipelines','4f635b0ecd388ee266d992e8281fd40e3db2f5867d86fc1cbce72dc33a66e796');\nhashMap.set('batect','fad98996bea8626525ab925f83a6ae0ce9262c53770e7aa7cb448a1e0f1ddf21');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','c6e0ad88ea468664c3a33263baf7452d83d2d37ff09ba920e18f64ee81fd0acb');\nhashMap.set('bazel-module','ecafa538746c1d307b44e2478a0ad187c2b00d4900b6f739c8d2b88cd539b97b');\nhashMap.set('bazelisk','b6ec532dfa7c8f82ad4084df864ac6276e87c27285369323902afc146d3537ac');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','09eb044219d74331fea135f50121b7d4d146333eb97e4ccbfa9ddf0eb4012963');\nhashMap.set('bitrise','afdb46fe37fc0307943089e18b6724065394805e628b4b6c4430a6068c494030');\nhashMap.set('buildkite','a93effb1f1c5d65b3277c3b4709924eacde282e8efd028a8e3d8c1ce3ef69407');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','1322232bf1d0c4fa796e31a00488453bdcd00d4958431d9e424c1635e60a99bd');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','6d7e9d2018ac03e15f19e8b40ef70dd87d509d5affca24bc464d085899880a25');\nhashMap.set('cake','288c3c36a50371b26957fa71992cc335228d53563c75597b36919ac7286e96eb');\nhashMap.set('cargo','308d7ab4c6d24027b050bf659dfab0e510d9a22f8134695a7c68214908ee4634');\nhashMap.set('cdnurl','d3edf6cdc38e92eb43ff5a2b4e8df6a6a13154cf83244725c39e28d7e6ea9177');\nhashMap.set('circleci','135937d4720718304adb0ba998516f8ce38c3220ccd18b00b8c70c62b45df4da');\nhashMap.set('cloudbuild','8c0c739f7e4082bbfe8e3fdffebaf43e26f70a1314d95b306e9b93e4f4297886');\nhashMap.set('cocoapods','b6ac3b4a6b8a5b32daed37bf695fe177cdb1b4a94ae7f7fb2f4c4c096c0a004c');\nhashMap.set('composer','cdb6895574020cec402e0b878e4078b62f1acfd0392a861cbb523036634f6383');\nhashMap.set('conan','aecc3917d77146db4e57dd12944be1beff860e90b7ebdd2d8fbc449fc1a06574');\nhashMap.set('copier','09f1aeccd473843a231bae41e7c39c6b8c45dd46102cb4f1fb4fc3852d849493');\nhashMap.set('cpanfile','6a1d67d9c8751123deaf0c7f3ac38a07024e960c140f8228fcbcb93954fdca01');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deps-edn','c87dd5e88587147ad1a78f047b814f3c4aa60d6de30d0c49d849391eeaf1b64c');\nhashMap.set('devbox','bcf5334e8a21190baaa25436acf2f17fbf095504262a4e9ee7c62ffb644eb716');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','5441af5b5abf8d347e46002d47f02f85743401bda28232f49fb7b3bbb772a4fb');\nhashMap.set('dockerfile','322b95f7e55dd78d7fe71306a6f649479eca61c60d75bb10b23604a230dbdd08');\nhashMap.set('droneci','237c8de87b9bf653fb943b56e84e99c45f6d86ae27d86e599b3f3f99c35ba8ee');\nhashMap.set('fleet','fe2b132bd17f9c0a46ea5877bdaa6671c6452391219c9441e367d44deabd7a9a');\nhashMap.set('flux','427e0c1a5b1d8337503a9a568a76532fbde0bab8b355fa8f47312de50eadf2f6');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','a286e097a5fcc6c946e792b812871147b39ad93f9ad041b5b3216b100f972e95');\nhashMap.set('github-actions','076baaa5a3e96012a800899d9d4c0876341f7e87c2fb981af5ce28ce0bdd0c2a');\nhashMap.set('gitlabci','0dec44dd398bfc5b3c19d0929bea2fef7f386c94acfd1b1d7bc2a31d81d96fd6');\nhashMap.set('gitlabci-include','354cfc4ea327c6d5cd5bee1f17763832efc7f5402e9fd22c579239fccb9c6dab');\nhashMap.set('glasskube','253d6db30bdec75ed5ab5d26f31d69bc07813ba10089a28da12c6a29eff4ec70');\nhashMap.set('gleam','b717a48c525ad6b1d434c6a9db828ddebbb85e94519e89ddc4040878e3600e84');\nhashMap.set('gomod','93c6d963bd46456b438d693f4a385a490e5c729ad544564f2a9d58a1b975fe7b');\nhashMap.set('gradle','39435c4a5525a2c99a303934c23526d972ee9a40672afed801feb144a97c4eb8');\nhashMap.set('gradle-wrapper','8d5f573816e63739d264768b7f2565905036153385a0216b82ea6fed34b1a233');\nhashMap.set('haskell-cabal','d796ec6859e63ab4f1b7030c4016071202c3a44c7c11d4a9131d7e2ba19b396d');\nhashMap.set('helm-requirements','4d90e5e18a380876ad48e21e1ad88ea62e25d973a1ddaa3763447fc0a9f9915b');\nhashMap.set('helm-values','b5c52c6a27d805557418c585c5d3030c95ee641d53057021f3fe060f81b6e1af');\nhashMap.set('helmfile','e5783484b81247279563da3c835afe4002edfc412e13fb91877818ca44ae65f2');\nhashMap.set('helmsman','ef9680c612f702c7f07aea9b6e5d811e91214dcfa5755c9f3803e9528090935e');\nhashMap.set('helmv3','7724bf6cc3ff4afec1809899f619a332f4350049b9578b5c4634514b4448cf2b');\nhashMap.set('hermit','0ed751a4a1db928d5ca3e925408ed8aa453681ca3ab1cb6ea2334759663df6eb');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','3cd972c03dc6333a12fd26413150ffe18c0305aa61a16b490e3306fcec9f0000');\nhashMap.set('html','67c5f3c5c58e96f5dd257ba5987d900cf7fef81d667c3640e96c847b37de35a8');\nhashMap.set('jenkins','268ebfc8a1caf3edeb2192c2b1b2fa4bf18a78a3e731ba20a6c104940a5539f3');\nhashMap.set('jsonnet-bundler','4b73c32ddc3fe45d9777106d45b116777a2960e6e631256a6553060e602f893c');\nhashMap.set('kotlin-script','99ef296792a0ca575ed31d3defb514b05a58083dc01c52ea0890c69d867ba1dd');\nhashMap.set('kubernetes','87d87b2c410facdd0400691e87080a3e1ffe83158f51f52cd784442713122f30');\nhashMap.set('kustomize','1e44d6ef8622252dac6d9649fb04badd12d4827eb2a55f74792aa9de2b915775');\nhashMap.set('leiningen','133fca2c3423f53f2ccc22518153ddbcafbf0f4812376c77e952eb3d24d81f85');\nhashMap.set('maven','6faa1a3a70542bc7e84683c31b2fb86468fdf82a25c264cf2f7fc45dbc98b1d8');\nhashMap.set('maven-wrapper','53e03d29fd3552d504c519ea213ff0aaa6403aa363bf13495568ee185913f028');\nhashMap.set('meteor','4a93a326b27bedfe52118e27e06f39fecd7c55bd4cd7fccec4cb120cac14cec4');\nhashMap.set('mint','b816a49c8525716454d0a2bc9127916d5b27e5cca7b2aa2030312f218942af3e');\nhashMap.set('mise','ee9f970d779f2493617cdf708425919f9f5961cddbc87b4f0c4e762ebc67a7d6');\nhashMap.set('mix','1116e1adf1c18c866f0a9e6fa065c4fb9da055d8d150e625344899bb94095481');\nhashMap.set('nix','f3ffec2f14e7261de8068895b91392e992dcef208fbaf52110d6862e4712c031');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','f100896f5ac7854ba443e149226b399f76f356015131ebe8f298d6dc08589472');\nhashMap.set('nuget','a8162c2819fb23fe6de82c8eb4196133701bb3c538202fe8dc9cab4a326d47e4');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','32233a1a8a2725699d7448ba438e3d0b78141f7799cd2b588de278d41e26ed10');\nhashMap.set('pep621','f503497a4adef31b29572176e9a69d52fa9b0bfe3477b6e228c906aeb4861de5');\nhashMap.set('pep723','105cdc1674da67d48174457bea670c95d8a023e4263d1efc002f02c7f232b5eb');\nhashMap.set('pip-compile','89152ad6c89f278395f32d289dc3890823c233366547d228e97dd1319aa144b5');\nhashMap.set('pip_requirements','d5c474c524bc7adc1aae065da0531bd22d9f7f52523b018f2461f6c29e12fdf3');\nhashMap.set('pip_setup','0175fe550c19d9bd31c978bd83fdc088cb40fcacd5d6751f640164274ae64e61');\nhashMap.set('pipenv','50f5a54ed714fd3d738c1aa9a353cf3aab767899acdcb763088d4bd04f3a737b');\nhashMap.set('pixi','b17af6eaa33e7babcc52cfc9a617c7801c0efb1125bbd6d0d4e9f6fe33afd353');\nhashMap.set('poetry','7f227b8b912b405df7735e9dc7c178f03021844f0c027d4b321c023c330c390a');\nhashMap.set('pre-commit','a6a6e847fdb0f56650e66ef7d69e68de752b390913f79ac31d1a7ec5955d03da');\nhashMap.set('pub','0fbad9f77579fcec3a623c6feab56e71934c67a79bb8f4f0f847452051d2a0ba');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','e355e13e104351a8b3516a8e272fc5f7e625c9f39b0c492ba27283a36227c2d4');\nhashMap.set('renovate-config-presets','a394fe55f8b6ba356f29f76efd9f0d34b56baceb111e6d92f95b29b5ca50ac67');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('sbt','61f9323c91c45227da71d43120fa1eddc41685502be017118975f77b44fb1b8e');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','7dea08c5708625e753bd56918bc214df7fb4d8543a26e936926a21ab43b5f785');\nhashMap.set('sveltos','167a5cc79098803be3b815a28cc40ef3361c455751e1d6a7a99ba91bfce26709');\nhashMap.set('swift','99e8666dd3b6c9e86c29e2451650e3d86d345df19cab6aba1995b02dcbaaa756');\nhashMap.set('tekton','4e35c75bba4abc9c3cf49c55da6c19db4f4e9181d1fd9583288ab55ef7c944fd');\nhashMap.set('terraform','5bd62ce12c23896b8ecb2385a60a3cb9eb72badf10f9984bfed38f50f9262266');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','b8474c65383a702602eee432cc1434f9a49a1ef886d1213de92d7a84fb98b9cd');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','4a975f0cc1aa22cd258aa835de3dc98d7a5c0d1cee0a1092324338968e08a827');\nhashMap.set('travis','bb482a0195cd009ec3896a6227bb95617f5c84bedb518c7d971e50c62235d9ca');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','4627230d3b7698c41aac192d57b65b091c860c8f858c89d6af4b06ed6a32fae6');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('jsonata','3b5f465b586993f92c8490e70885e7eecce9b6556bcc376dd9c11db8ee9e6960');\nhashMap.set('regex','7b643b49e498465cf91b25b8b840bb1fec8c8a3a59bfa8f97a39c976675325a0');"],"mappings":"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"}
1
+ {"version":3,"file":"fingerprint.generated.js","names":[],"sources":["../../../lib/modules/manager/fingerprint.generated.ts"],"sourcesContent":["export const hashMap = new Map<string, string>();\n\nhashMap.set('ansible','1fbc76f78daa14a8c9ab1142e9d1e05c746c0419a9f1455e4279f476590d0c04');\nhashMap.set('ansible-galaxy','8226d47128f2018825d4d6f84794e3183eb79c706045fa7e88491edd5e64106f');\nhashMap.set('argocd','5d35b1992e53130bf83b0e59a0f90ccd3a78919974c69044f306dc5d162f48ce');\nhashMap.set('asdf','1f6fcf620e9c6cd35991380cb6eafb94ec60cd77cbd13335ebe3a1d9727416c9');\nhashMap.set('azure-pipelines','4f635b0ecd388ee266d992e8281fd40e3db2f5867d86fc1cbce72dc33a66e796');\nhashMap.set('batect','fad98996bea8626525ab925f83a6ae0ce9262c53770e7aa7cb448a1e0f1ddf21');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','c6e0ad88ea468664c3a33263baf7452d83d2d37ff09ba920e18f64ee81fd0acb');\nhashMap.set('bazel-module','ecafa538746c1d307b44e2478a0ad187c2b00d4900b6f739c8d2b88cd539b97b');\nhashMap.set('bazelisk','b6ec532dfa7c8f82ad4084df864ac6276e87c27285369323902afc146d3537ac');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','09eb044219d74331fea135f50121b7d4d146333eb97e4ccbfa9ddf0eb4012963');\nhashMap.set('bitrise','afdb46fe37fc0307943089e18b6724065394805e628b4b6c4430a6068c494030');\nhashMap.set('buildkite','a93effb1f1c5d65b3277c3b4709924eacde282e8efd028a8e3d8c1ce3ef69407');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','1322232bf1d0c4fa796e31a00488453bdcd00d4958431d9e424c1635e60a99bd');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','6d7e9d2018ac03e15f19e8b40ef70dd87d509d5affca24bc464d085899880a25');\nhashMap.set('cake','288c3c36a50371b26957fa71992cc335228d53563c75597b36919ac7286e96eb');\nhashMap.set('cargo','308d7ab4c6d24027b050bf659dfab0e510d9a22f8134695a7c68214908ee4634');\nhashMap.set('cdnurl','d3edf6cdc38e92eb43ff5a2b4e8df6a6a13154cf83244725c39e28d7e6ea9177');\nhashMap.set('circleci','135937d4720718304adb0ba998516f8ce38c3220ccd18b00b8c70c62b45df4da');\nhashMap.set('cloudbuild','8c0c739f7e4082bbfe8e3fdffebaf43e26f70a1314d95b306e9b93e4f4297886');\nhashMap.set('cocoapods','b6ac3b4a6b8a5b32daed37bf695fe177cdb1b4a94ae7f7fb2f4c4c096c0a004c');\nhashMap.set('composer','cdb6895574020cec402e0b878e4078b62f1acfd0392a861cbb523036634f6383');\nhashMap.set('conan','aecc3917d77146db4e57dd12944be1beff860e90b7ebdd2d8fbc449fc1a06574');\nhashMap.set('copier','09f1aeccd473843a231bae41e7c39c6b8c45dd46102cb4f1fb4fc3852d849493');\nhashMap.set('cpanfile','6a1d67d9c8751123deaf0c7f3ac38a07024e960c140f8228fcbcb93954fdca01');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deps-edn','c87dd5e88587147ad1a78f047b814f3c4aa60d6de30d0c49d849391eeaf1b64c');\nhashMap.set('devbox','bcf5334e8a21190baaa25436acf2f17fbf095504262a4e9ee7c62ffb644eb716');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','5441af5b5abf8d347e46002d47f02f85743401bda28232f49fb7b3bbb772a4fb');\nhashMap.set('dockerfile','322b95f7e55dd78d7fe71306a6f649479eca61c60d75bb10b23604a230dbdd08');\nhashMap.set('droneci','237c8de87b9bf653fb943b56e84e99c45f6d86ae27d86e599b3f3f99c35ba8ee');\nhashMap.set('fleet','fe2b132bd17f9c0a46ea5877bdaa6671c6452391219c9441e367d44deabd7a9a');\nhashMap.set('flux','427e0c1a5b1d8337503a9a568a76532fbde0bab8b355fa8f47312de50eadf2f6');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','a286e097a5fcc6c946e792b812871147b39ad93f9ad041b5b3216b100f972e95');\nhashMap.set('github-actions','d3b1deb4dfcdba586cd97b4d2d2f9f1b89531bcc31b6ead0d960b990586d6058');\nhashMap.set('gitlabci','0dec44dd398bfc5b3c19d0929bea2fef7f386c94acfd1b1d7bc2a31d81d96fd6');\nhashMap.set('gitlabci-include','354cfc4ea327c6d5cd5bee1f17763832efc7f5402e9fd22c579239fccb9c6dab');\nhashMap.set('glasskube','253d6db30bdec75ed5ab5d26f31d69bc07813ba10089a28da12c6a29eff4ec70');\nhashMap.set('gleam','b717a48c525ad6b1d434c6a9db828ddebbb85e94519e89ddc4040878e3600e84');\nhashMap.set('gomod','93c6d963bd46456b438d693f4a385a490e5c729ad544564f2a9d58a1b975fe7b');\nhashMap.set('gradle','39435c4a5525a2c99a303934c23526d972ee9a40672afed801feb144a97c4eb8');\nhashMap.set('gradle-wrapper','8d5f573816e63739d264768b7f2565905036153385a0216b82ea6fed34b1a233');\nhashMap.set('haskell-cabal','d796ec6859e63ab4f1b7030c4016071202c3a44c7c11d4a9131d7e2ba19b396d');\nhashMap.set('helm-requirements','4d90e5e18a380876ad48e21e1ad88ea62e25d973a1ddaa3763447fc0a9f9915b');\nhashMap.set('helm-values','b5c52c6a27d805557418c585c5d3030c95ee641d53057021f3fe060f81b6e1af');\nhashMap.set('helmfile','e5783484b81247279563da3c835afe4002edfc412e13fb91877818ca44ae65f2');\nhashMap.set('helmsman','ef9680c612f702c7f07aea9b6e5d811e91214dcfa5755c9f3803e9528090935e');\nhashMap.set('helmv3','7724bf6cc3ff4afec1809899f619a332f4350049b9578b5c4634514b4448cf2b');\nhashMap.set('hermit','0ed751a4a1db928d5ca3e925408ed8aa453681ca3ab1cb6ea2334759663df6eb');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','3cd972c03dc6333a12fd26413150ffe18c0305aa61a16b490e3306fcec9f0000');\nhashMap.set('html','67c5f3c5c58e96f5dd257ba5987d900cf7fef81d667c3640e96c847b37de35a8');\nhashMap.set('jenkins','268ebfc8a1caf3edeb2192c2b1b2fa4bf18a78a3e731ba20a6c104940a5539f3');\nhashMap.set('jsonnet-bundler','4b73c32ddc3fe45d9777106d45b116777a2960e6e631256a6553060e602f893c');\nhashMap.set('kotlin-script','99ef296792a0ca575ed31d3defb514b05a58083dc01c52ea0890c69d867ba1dd');\nhashMap.set('kubernetes','87d87b2c410facdd0400691e87080a3e1ffe83158f51f52cd784442713122f30');\nhashMap.set('kustomize','1e44d6ef8622252dac6d9649fb04badd12d4827eb2a55f74792aa9de2b915775');\nhashMap.set('leiningen','133fca2c3423f53f2ccc22518153ddbcafbf0f4812376c77e952eb3d24d81f85');\nhashMap.set('maven','6faa1a3a70542bc7e84683c31b2fb86468fdf82a25c264cf2f7fc45dbc98b1d8');\nhashMap.set('maven-wrapper','53e03d29fd3552d504c519ea213ff0aaa6403aa363bf13495568ee185913f028');\nhashMap.set('meteor','4a93a326b27bedfe52118e27e06f39fecd7c55bd4cd7fccec4cb120cac14cec4');\nhashMap.set('mint','b816a49c8525716454d0a2bc9127916d5b27e5cca7b2aa2030312f218942af3e');\nhashMap.set('mise','ee9f970d779f2493617cdf708425919f9f5961cddbc87b4f0c4e762ebc67a7d6');\nhashMap.set('mix','1116e1adf1c18c866f0a9e6fa065c4fb9da055d8d150e625344899bb94095481');\nhashMap.set('nix','f3ffec2f14e7261de8068895b91392e992dcef208fbaf52110d6862e4712c031');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','f100896f5ac7854ba443e149226b399f76f356015131ebe8f298d6dc08589472');\nhashMap.set('nuget','a8162c2819fb23fe6de82c8eb4196133701bb3c538202fe8dc9cab4a326d47e4');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','32233a1a8a2725699d7448ba438e3d0b78141f7799cd2b588de278d41e26ed10');\nhashMap.set('pep621','f503497a4adef31b29572176e9a69d52fa9b0bfe3477b6e228c906aeb4861de5');\nhashMap.set('pep723','105cdc1674da67d48174457bea670c95d8a023e4263d1efc002f02c7f232b5eb');\nhashMap.set('pip-compile','89152ad6c89f278395f32d289dc3890823c233366547d228e97dd1319aa144b5');\nhashMap.set('pip_requirements','d5c474c524bc7adc1aae065da0531bd22d9f7f52523b018f2461f6c29e12fdf3');\nhashMap.set('pip_setup','0175fe550c19d9bd31c978bd83fdc088cb40fcacd5d6751f640164274ae64e61');\nhashMap.set('pipenv','50f5a54ed714fd3d738c1aa9a353cf3aab767899acdcb763088d4bd04f3a737b');\nhashMap.set('pixi','b17af6eaa33e7babcc52cfc9a617c7801c0efb1125bbd6d0d4e9f6fe33afd353');\nhashMap.set('poetry','7f227b8b912b405df7735e9dc7c178f03021844f0c027d4b321c023c330c390a');\nhashMap.set('pre-commit','a6a6e847fdb0f56650e66ef7d69e68de752b390913f79ac31d1a7ec5955d03da');\nhashMap.set('pub','0fbad9f77579fcec3a623c6feab56e71934c67a79bb8f4f0f847452051d2a0ba');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','e355e13e104351a8b3516a8e272fc5f7e625c9f39b0c492ba27283a36227c2d4');\nhashMap.set('renovate-config-presets','a394fe55f8b6ba356f29f76efd9f0d34b56baceb111e6d92f95b29b5ca50ac67');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('sbt','61f9323c91c45227da71d43120fa1eddc41685502be017118975f77b44fb1b8e');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','7dea08c5708625e753bd56918bc214df7fb4d8543a26e936926a21ab43b5f785');\nhashMap.set('sveltos','167a5cc79098803be3b815a28cc40ef3361c455751e1d6a7a99ba91bfce26709');\nhashMap.set('swift','99e8666dd3b6c9e86c29e2451650e3d86d345df19cab6aba1995b02dcbaaa756');\nhashMap.set('tekton','4e35c75bba4abc9c3cf49c55da6c19db4f4e9181d1fd9583288ab55ef7c944fd');\nhashMap.set('terraform','5bd62ce12c23896b8ecb2385a60a3cb9eb72badf10f9984bfed38f50f9262266');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','b8474c65383a702602eee432cc1434f9a49a1ef886d1213de92d7a84fb98b9cd');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','4a975f0cc1aa22cd258aa835de3dc98d7a5c0d1cee0a1092324338968e08a827');\nhashMap.set('travis','bb482a0195cd009ec3896a6227bb95617f5c84bedb518c7d971e50c62235d9ca');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','4627230d3b7698c41aac192d57b65b091c860c8f858c89d6af4b06ed6a32fae6');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('jsonata','3b5f465b586993f92c8490e70885e7eecce9b6556bcc376dd9c11db8ee9e6960');\nhashMap.set('regex','7b643b49e498465cf91b25b8b840bb1fec8c8a3a59bfa8f97a39c976675325a0');"],"mappings":"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"}
@@ -10,9 +10,11 @@ import { GithubReleasesDatasource } from "../../datasource/github-releases/index
10
10
  import { id as id$1 } from "../../versioning/node/index.js";
11
11
  import { ForgejoTagsDatasource } from "../../datasource/forgejo-tags/index.js";
12
12
  import { GiteaTagsDatasource } from "../../datasource/gitea-tags/index.js";
13
+ import { id as id$2 } from "../../versioning/exact/index.js";
14
+ import { GithubDigestDatasource } from "../../datasource/github-digest/index.js";
13
15
  import { GithubRunnersDatasource } from "../../datasource/github-runners/index.js";
14
16
  import { CommunityActions } from "./community.js";
15
- import { isSha, isShortSha, parseUsesLine } from "./parse.js";
17
+ import { isSha, isShortSha, parseUsesLine, versionLikeRe } from "./parse.js";
16
18
  import { Workflow } from "./schema.js";
17
19
  import is from "@sindresorhus/is";
18
20
  //#region lib/modules/manager/github-actions/extract.ts
@@ -40,32 +42,35 @@ function extractRepositoryAction(actionRef, parsed, customRegistryUrlsPackageDep
40
42
  const registryUrl = isExplicitHostname ? `https://${hostname}/` : "";
41
43
  const packageName = `${owner}/${repo}`;
42
44
  const depName = `${registryUrl}${packageName}`;
43
- const pathSuffix = subPath ? `/${subPath}` : "";
44
- const commentWs = commentPrecedingWhitespace || " ";
45
45
  const dep = {
46
46
  depName,
47
47
  commitMessageTopic: "{{{depName}}} action",
48
- datasource: GithubTagsDatasource.id,
49
48
  versioning: id,
50
49
  depType: "action",
51
50
  replaceString: valueString,
52
- autoReplaceStringTemplate: `${quote}{{depName}}${pathSuffix}@{{#if newDigest}}{{newDigest}}${quote}{{#if newValue}}${commentWs}# {{newValue}}{{/if}}{{/if}}{{#unless newDigest}}{{newValue}}${quote}{{/unless}}`,
51
+ autoReplaceStringTemplate: `${quote}{{depName}}${subPath ? `/${subPath}` : ""}@{{#if newDigest}}{{newDigest}}${quote}{{#if newValue}}${commentPrecedingWhitespace || " "}# {{newValue}}{{/if}}{{/if}}{{#unless newDigest}}{{newValue}}${quote}{{/unless}}`,
53
52
  ...isExplicitHostname ? detectDatasource(registryUrl) : customRegistryUrlsPackageDependency
54
53
  };
55
54
  if (packageName !== depName) dep.packageName = packageName;
56
- if (commentData.pinnedVersion && !is.undefined(commentData.index) && !is.undefined(commentData.matchedString)) {
55
+ if ((commentData.pinnedVersion ?? (isSha(ref) || isShortSha(ref) ? commentData.ref : void 0)) && !is.undefined(commentData.index) && !is.undefined(commentData.matchedString)) {
57
56
  const cleanComment = parsed.commentString.slice(1);
58
57
  const matchEndIndex = commentData.index + commentData.matchedString.length;
59
58
  const commentSuffix = cleanComment.slice(0, matchEndIndex);
60
59
  dep.replaceString = valueString + commentPrecedingWhitespace + "#" + commentSuffix;
61
60
  } else if (commentData.ratchetExclude) dep.replaceString = valueString + commentPrecedingWhitespace + parsed.commentString;
62
61
  if (isSha(ref)) {
63
- dep.currentValue = commentData.pinnedVersion;
62
+ dep.currentValue = commentData.pinnedVersion ?? commentData.ref;
64
63
  dep.currentDigest = ref;
65
64
  } else if (isShortSha(ref)) {
66
- dep.currentValue = commentData.pinnedVersion;
65
+ dep.currentValue = commentData.pinnedVersion ?? commentData.ref;
67
66
  dep.currentDigestShort = ref;
68
67
  } else dep.currentValue = ref;
68
+ const isVersionLike = dep.currentValue && versionLikeRe.test(dep.currentValue);
69
+ if (!dep.datasource && dep.currentValue && !isVersionLike) {
70
+ dep.datasource = GithubDigestDatasource.id;
71
+ dep.versioning = id$2;
72
+ }
73
+ dep.datasource ??= GithubTagsDatasource.id;
69
74
  return dep;
70
75
  }
71
76
  function extractWithRegex(content, config) {
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","names":["dockerVersioning.id","nodeVersioning.id"],"sources":["../../../../lib/modules/manager/github-actions/extract.ts"],"sourcesContent":["import is from '@sindresorhus/is';\nimport { GlobalConfig } from '../../../config/global.ts';\nimport { logger, withMeta } from '../../../logger/index.ts';\nimport { detectPlatform } from '../../../util/common.ts';\nimport { newlineRegex, regEx } from '../../../util/regex.ts';\nimport { ForgejoTagsDatasource } from '../../datasource/forgejo-tags/index.ts';\nimport { GiteaTagsDatasource } from '../../datasource/gitea-tags/index.ts';\nimport { GithubReleasesDatasource } from '../../datasource/github-releases/index.ts';\nimport { GithubRunnersDatasource } from '../../datasource/github-runners/index.ts';\nimport { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';\nimport * as dockerVersioning from '../../versioning/docker/index.ts';\nimport * as nodeVersioning from '../../versioning/node/index.ts';\nimport * as npmVersioning from '../../versioning/npm/index.ts';\nimport { getDep } from '../dockerfile/extract.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFileContent,\n} from '../types.ts';\nimport { CommunityActions } from './community.ts';\nimport type { DockerReference, RepositoryReference } from './parse.ts';\nimport { isSha, isShortSha, parseUsesLine } from './parse.ts';\nimport type { Steps } from './schema.ts';\nimport { Workflow } from './schema.ts';\n\n// detects if we run against a Github Enterprise Server and adds the URL to the beginning of the registryURLs for looking up Actions\n// This reflects the behavior of how GitHub looks up Actions\n// First on the Enterprise Server, then on GitHub.com\nfunction detectCustomGitHubRegistryUrlsForActions(): PackageDependency {\n const endpoint = GlobalConfig.get('endpoint');\n const registryUrls = ['https://github.com'];\n if (endpoint && GlobalConfig.get('platform') === 'github') {\n const parsedEndpoint = new URL(endpoint);\n\n if (\n parsedEndpoint.host !== 'github.com' &&\n parsedEndpoint.host !== 'api.github.com'\n ) {\n registryUrls.unshift(\n `${parsedEndpoint.protocol}//${parsedEndpoint.host}`,\n );\n return { registryUrls };\n }\n }\n return {};\n}\n\nfunction extractDockerAction(\n actionRef: DockerReference,\n config: ExtractConfig,\n): PackageDependency {\n const dep = getDep(actionRef.originalRef, true, config.registryAliases);\n dep.depType = 'docker';\n dep.replaceString = actionRef.originalRef;\n return dep;\n}\n\nfunction extractRepositoryAction(\n actionRef: RepositoryReference,\n parsed: ReturnType<typeof parseUsesLine> & object,\n customRegistryUrlsPackageDependency: PackageDependency,\n): PackageDependency {\n const {\n replaceString: valueString,\n quote,\n commentData,\n commentPrecedingWhitespace,\n } = parsed;\n const {\n owner,\n repo,\n path: subPath,\n ref,\n hostname,\n isExplicitHostname,\n } = actionRef;\n\n const registryUrl = isExplicitHostname ? `https://${hostname}/` : '';\n const packageName = `${owner}/${repo}`;\n const depName = `${registryUrl}${packageName}`;\n const pathSuffix = subPath ? `/${subPath}` : '';\n const commentWs = commentPrecedingWhitespace || ' ';\n\n const dep: PackageDependency = {\n depName,\n commitMessageTopic: '{{{depName}}} action',\n datasource: GithubTagsDatasource.id,\n versioning: dockerVersioning.id,\n depType: 'action',\n replaceString: valueString,\n autoReplaceStringTemplate: `${quote}{{depName}}${pathSuffix}@{{#if newDigest}}{{newDigest}}${quote}{{#if newValue}}${commentWs}# {{newValue}}{{/if}}{{/if}}{{#unless newDigest}}{{newValue}}${quote}{{/unless}}`,\n ...(isExplicitHostname\n ? detectDatasource(registryUrl)\n : customRegistryUrlsPackageDependency),\n };\n\n if (packageName !== depName) {\n dep.packageName = packageName;\n }\n\n // Extend replaceString to include relevant comment portions:\n // - Pinned version: include only up to the version (truncate trailing text)\n // - Ratchet exclude: include the full comment to preserve the marker\n if (\n commentData.pinnedVersion &&\n !is.undefined(commentData.index) &&\n !is.undefined(commentData.matchedString)\n ) {\n const cleanComment = parsed.commentString.slice(1);\n const matchEndIndex = commentData.index + commentData.matchedString.length;\n const commentSuffix = cleanComment.slice(0, matchEndIndex);\n dep.replaceString =\n valueString + commentPrecedingWhitespace + '#' + commentSuffix;\n } else if (commentData.ratchetExclude) {\n dep.replaceString =\n valueString + commentPrecedingWhitespace + parsed.commentString;\n }\n\n if (isSha(ref)) {\n dep.currentValue = commentData.pinnedVersion;\n dep.currentDigest = ref;\n } else if (isShortSha(ref)) {\n dep.currentValue = commentData.pinnedVersion;\n dep.currentDigestShort = ref;\n } else {\n dep.currentValue = ref;\n }\n\n return dep;\n}\n\nfunction extractWithRegex(\n content: string,\n config: ExtractConfig,\n): PackageDependency[] {\n const customRegistryUrlsPackageDependency =\n detectCustomGitHubRegistryUrlsForActions();\n logger.trace('github-actions.extractWithRegex()');\n const deps: PackageDependency[] = [];\n\n for (const line of content.split(newlineRegex)) {\n if (line.trim().startsWith('#')) {\n continue;\n }\n\n const parsed = parseUsesLine(line);\n if (!parsed?.actionRef) {\n continue;\n }\n\n const { actionRef } = parsed;\n\n if (actionRef.kind === 'docker') {\n deps.push(extractDockerAction(actionRef, config));\n continue;\n }\n\n if (actionRef.kind === 'repository') {\n deps.push(\n extractRepositoryAction(\n actionRef,\n parsed,\n customRegistryUrlsPackageDependency,\n ),\n );\n }\n }\n\n return deps;\n}\n\nfunction detectDatasource(registryUrl: string): PackageDependency {\n const platform = detectPlatform(registryUrl);\n\n switch (platform) {\n case 'forgejo':\n return {\n registryUrls: [registryUrl],\n datasource: ForgejoTagsDatasource.id,\n };\n case 'gitea':\n return {\n registryUrls: [registryUrl],\n datasource: GiteaTagsDatasource.id,\n };\n case 'github':\n return { registryUrls: [registryUrl] };\n }\n\n return {\n skipReason: 'unsupported-url',\n };\n}\n\nconst runnerVersionRegex = regEx(\n /^\\s*(?<depName>[a-zA-Z]+)-(?<currentValue>[^\\s]+)/,\n);\n\nfunction extractRunner(runner: string): PackageDependency | null {\n const runnerVersionGroups = runnerVersionRegex.exec(runner)?.groups;\n if (!runnerVersionGroups) {\n return null;\n }\n\n const { depName, currentValue } = runnerVersionGroups;\n\n if (!GithubRunnersDatasource.isValidRunner(depName, currentValue)) {\n return null;\n }\n\n const dependency: PackageDependency = {\n depName,\n currentValue,\n replaceString: `${depName}-${currentValue}`,\n depType: 'github-runner',\n datasource: GithubRunnersDatasource.id,\n autoReplaceStringTemplate: '{{depName}}-{{newValue}}',\n };\n\n if (!dockerVersioning.api.isValid(currentValue)) {\n dependency.skipReason = 'invalid-version';\n }\n\n return dependency;\n}\n\n// For official https://github.com/actions\nconst versionedActions: Record<string, string> = {\n go: npmVersioning.id,\n node: nodeVersioning.id,\n python: npmVersioning.id,\n\n // Not covered yet because they use different datasources/packageNames:\n // - dotnet\n // - java\n};\n\nfunction extractVersionedAction(step: Steps): PackageDependency | null {\n for (const [action, versioning] of Object.entries(versionedActions)) {\n const actionName = `actions/setup-${action}`;\n if (step.uses !== actionName && !step.uses?.startsWith(`${actionName}@`)) {\n continue;\n }\n\n const fieldName = `${action}-version`;\n const currentValue = step.with?.[fieldName];\n if (!currentValue) {\n return null;\n }\n\n return {\n datasource: GithubReleasesDatasource.id,\n depName: action,\n packageName: `actions/${action}-versions`,\n versioning,\n extractVersion: '^(?<version>\\\\d+\\\\.\\\\d+\\\\.\\\\d+)(-\\\\d+)?$',\n currentValue,\n depType: 'uses-with',\n };\n }\n return null;\n}\n\nfunction extractSteps(steps: Steps[]): PackageDependency[] {\n const deps: PackageDependency[] = [];\n\n for (const step of steps) {\n const res = CommunityActions.safeParse(step);\n if (res.success) {\n deps.push(res.data);\n continue;\n }\n\n const versionedDep = extractVersionedAction(step);\n if (versionedDep) {\n deps.push(versionedDep);\n }\n }\n\n return deps;\n}\n\nfunction extractWithYAMLParser(\n content: string,\n packageFile: string,\n config: ExtractConfig,\n): PackageDependency[] {\n logger.trace('github-actions.extractWithYAMLParser()');\n\n const obj = withMeta({ packageFile }, () => Workflow.parse(content));\n if (!obj) {\n return [];\n }\n\n if ('runs' in obj && obj.runs.steps) {\n return extractSteps(obj.runs.steps);\n }\n\n if (!('jobs' in obj)) {\n return [];\n }\n\n const deps: PackageDependency[] = [];\n\n for (const job of Object.values(obj.jobs)) {\n if (job.container) {\n const dep = getDep(job.container, true, config.registryAliases);\n if (dep) {\n dep.depType = 'container';\n deps.push(dep);\n }\n }\n\n for (const service of job.services) {\n const dep = getDep(service, true, config.registryAliases);\n if (dep) {\n dep.depType = 'service';\n deps.push(dep);\n }\n }\n\n for (const runner of job['runs-on']) {\n const dep = extractRunner(runner);\n if (dep) {\n deps.push(dep);\n }\n }\n\n deps.push(...extractSteps(job.steps));\n }\n\n return deps;\n}\n\nexport function extractPackageFile(\n content: string,\n packageFile: string,\n config: ExtractConfig = {}, // TODO: enforce ExtractConfig\n): PackageFileContent | null {\n logger.trace(`github-actions.extractPackageFile(${packageFile})`);\n\n const deps = [\n ...extractWithRegex(content, config),\n ...extractWithYAMLParser(content, packageFile, config),\n ];\n\n if (!deps.length) {\n return null;\n }\n\n return { deps };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"extract.js","names":["dockerVersioning.id","exactVersioning.id","nodeVersioning.id"],"sources":["../../../../lib/modules/manager/github-actions/extract.ts"],"sourcesContent":["import is from '@sindresorhus/is';\nimport { GlobalConfig } from '../../../config/global.ts';\nimport { logger, withMeta } from '../../../logger/index.ts';\nimport { detectPlatform } from '../../../util/common.ts';\nimport { newlineRegex, regEx } from '../../../util/regex.ts';\nimport { ForgejoTagsDatasource } from '../../datasource/forgejo-tags/index.ts';\nimport { GiteaTagsDatasource } from '../../datasource/gitea-tags/index.ts';\nimport { GithubDigestDatasource } from '../../datasource/github-digest/index.ts';\nimport { GithubReleasesDatasource } from '../../datasource/github-releases/index.ts';\nimport { GithubRunnersDatasource } from '../../datasource/github-runners/index.ts';\nimport { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';\nimport * as dockerVersioning from '../../versioning/docker/index.ts';\nimport * as exactVersioning from '../../versioning/exact/index.ts';\nimport * as nodeVersioning from '../../versioning/node/index.ts';\nimport * as npmVersioning from '../../versioning/npm/index.ts';\nimport { getDep } from '../dockerfile/extract.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFileContent,\n} from '../types.ts';\nimport { CommunityActions } from './community.ts';\nimport type { DockerReference, RepositoryReference } from './parse.ts';\nimport { isSha, isShortSha, parseUsesLine, versionLikeRe } from './parse.ts';\nimport type { Steps } from './schema.ts';\nimport { Workflow } from './schema.ts';\n\n// detects if we run against a Github Enterprise Server and adds the URL to the beginning of the registryURLs for looking up Actions\n// This reflects the behavior of how GitHub looks up Actions\n// First on the Enterprise Server, then on GitHub.com\nfunction detectCustomGitHubRegistryUrlsForActions(): PackageDependency {\n const endpoint = GlobalConfig.get('endpoint');\n const registryUrls = ['https://github.com'];\n if (endpoint && GlobalConfig.get('platform') === 'github') {\n const parsedEndpoint = new URL(endpoint);\n\n if (\n parsedEndpoint.host !== 'github.com' &&\n parsedEndpoint.host !== 'api.github.com'\n ) {\n registryUrls.unshift(\n `${parsedEndpoint.protocol}//${parsedEndpoint.host}`,\n );\n return { registryUrls };\n }\n }\n return {};\n}\n\nfunction extractDockerAction(\n actionRef: DockerReference,\n config: ExtractConfig,\n): PackageDependency {\n const dep = getDep(actionRef.originalRef, true, config.registryAliases);\n dep.depType = 'docker';\n dep.replaceString = actionRef.originalRef;\n return dep;\n}\n\nfunction extractRepositoryAction(\n actionRef: RepositoryReference,\n parsed: ReturnType<typeof parseUsesLine> & object,\n customRegistryUrlsPackageDependency: PackageDependency,\n): PackageDependency {\n const {\n replaceString: valueString,\n quote,\n commentData,\n commentPrecedingWhitespace,\n } = parsed;\n const {\n owner,\n repo,\n path: subPath,\n ref,\n hostname,\n isExplicitHostname,\n } = actionRef;\n\n const registryUrl = isExplicitHostname ? `https://${hostname}/` : '';\n const packageName = `${owner}/${repo}`;\n const depName = `${registryUrl}${packageName}`;\n const pathSuffix = subPath ? `/${subPath}` : '';\n const commentWs = commentPrecedingWhitespace || ' ';\n\n const dep: PackageDependency = {\n depName,\n commitMessageTopic: '{{{depName}}} action',\n versioning: dockerVersioning.id,\n depType: 'action',\n replaceString: valueString,\n autoReplaceStringTemplate: `${quote}{{depName}}${pathSuffix}@{{#if newDigest}}{{newDigest}}${quote}{{#if newValue}}${commentWs}# {{newValue}}{{/if}}{{/if}}{{#unless newDigest}}{{newValue}}${quote}{{/unless}}`,\n ...(isExplicitHostname\n ? detectDatasource(registryUrl)\n : customRegistryUrlsPackageDependency),\n };\n\n if (packageName !== depName) {\n dep.packageName = packageName;\n }\n\n // Extend replaceString to include relevant comment portions:\n // - Pinned version or ref: include only up to the matched token (truncate trailing text)\n // - Ratchet exclude: include the full comment to preserve the marker\n const pinComment =\n commentData.pinnedVersion ??\n (isSha(ref) || isShortSha(ref) ? commentData.ref : undefined);\n if (\n pinComment &&\n !is.undefined(commentData.index) &&\n !is.undefined(commentData.matchedString)\n ) {\n const cleanComment = parsed.commentString.slice(1);\n const matchEndIndex = commentData.index + commentData.matchedString.length;\n const commentSuffix = cleanComment.slice(0, matchEndIndex);\n dep.replaceString =\n valueString + commentPrecedingWhitespace + '#' + commentSuffix;\n } else if (commentData.ratchetExclude) {\n dep.replaceString =\n valueString + commentPrecedingWhitespace + parsed.commentString;\n }\n\n if (isSha(ref)) {\n dep.currentValue = commentData.pinnedVersion ?? commentData.ref;\n dep.currentDigest = ref;\n } else if (isShortSha(ref)) {\n dep.currentValue = commentData.pinnedVersion ?? commentData.ref;\n dep.currentDigestShort = ref;\n } else {\n dep.currentValue = ref;\n }\n\n const isVersionLike =\n dep.currentValue && versionLikeRe.test(dep.currentValue);\n if (!dep.datasource && dep.currentValue && !isVersionLike) {\n dep.datasource = GithubDigestDatasource.id;\n dep.versioning = exactVersioning.id;\n }\n\n dep.datasource ??= GithubTagsDatasource.id;\n\n return dep;\n}\n\nfunction extractWithRegex(\n content: string,\n config: ExtractConfig,\n): PackageDependency[] {\n const customRegistryUrlsPackageDependency =\n detectCustomGitHubRegistryUrlsForActions();\n logger.trace('github-actions.extractWithRegex()');\n const deps: PackageDependency[] = [];\n\n for (const line of content.split(newlineRegex)) {\n if (line.trim().startsWith('#')) {\n continue;\n }\n\n const parsed = parseUsesLine(line);\n if (!parsed?.actionRef) {\n continue;\n }\n\n const { actionRef } = parsed;\n\n if (actionRef.kind === 'docker') {\n deps.push(extractDockerAction(actionRef, config));\n continue;\n }\n\n if (actionRef.kind === 'repository') {\n deps.push(\n extractRepositoryAction(\n actionRef,\n parsed,\n customRegistryUrlsPackageDependency,\n ),\n );\n }\n }\n\n return deps;\n}\n\nfunction detectDatasource(registryUrl: string): PackageDependency {\n const platform = detectPlatform(registryUrl);\n\n switch (platform) {\n case 'forgejo':\n return {\n registryUrls: [registryUrl],\n datasource: ForgejoTagsDatasource.id,\n };\n case 'gitea':\n return {\n registryUrls: [registryUrl],\n datasource: GiteaTagsDatasource.id,\n };\n case 'github':\n return { registryUrls: [registryUrl] };\n }\n\n return {\n skipReason: 'unsupported-url',\n };\n}\n\nconst runnerVersionRegex = regEx(\n /^\\s*(?<depName>[a-zA-Z]+)-(?<currentValue>[^\\s]+)/,\n);\n\nfunction extractRunner(runner: string): PackageDependency | null {\n const runnerVersionGroups = runnerVersionRegex.exec(runner)?.groups;\n if (!runnerVersionGroups) {\n return null;\n }\n\n const { depName, currentValue } = runnerVersionGroups;\n\n if (!GithubRunnersDatasource.isValidRunner(depName, currentValue)) {\n return null;\n }\n\n const dependency: PackageDependency = {\n depName,\n currentValue,\n replaceString: `${depName}-${currentValue}`,\n depType: 'github-runner',\n datasource: GithubRunnersDatasource.id,\n autoReplaceStringTemplate: '{{depName}}-{{newValue}}',\n };\n\n if (!dockerVersioning.api.isValid(currentValue)) {\n dependency.skipReason = 'invalid-version';\n }\n\n return dependency;\n}\n\n// For official https://github.com/actions\nconst versionedActions: Record<string, string> = {\n go: npmVersioning.id,\n node: nodeVersioning.id,\n python: npmVersioning.id,\n\n // Not covered yet because they use different datasources/packageNames:\n // - dotnet\n // - java\n};\n\nfunction extractVersionedAction(step: Steps): PackageDependency | null {\n for (const [action, versioning] of Object.entries(versionedActions)) {\n const actionName = `actions/setup-${action}`;\n if (step.uses !== actionName && !step.uses?.startsWith(`${actionName}@`)) {\n continue;\n }\n\n const fieldName = `${action}-version`;\n const currentValue = step.with?.[fieldName];\n if (!currentValue) {\n return null;\n }\n\n return {\n datasource: GithubReleasesDatasource.id,\n depName: action,\n packageName: `actions/${action}-versions`,\n versioning,\n extractVersion: '^(?<version>\\\\d+\\\\.\\\\d+\\\\.\\\\d+)(-\\\\d+)?$',\n currentValue,\n depType: 'uses-with',\n };\n }\n return null;\n}\n\nfunction extractSteps(steps: Steps[]): PackageDependency[] {\n const deps: PackageDependency[] = [];\n\n for (const step of steps) {\n const res = CommunityActions.safeParse(step);\n if (res.success) {\n deps.push(res.data);\n continue;\n }\n\n const versionedDep = extractVersionedAction(step);\n if (versionedDep) {\n deps.push(versionedDep);\n }\n }\n\n return deps;\n}\n\nfunction extractWithYAMLParser(\n content: string,\n packageFile: string,\n config: ExtractConfig,\n): PackageDependency[] {\n logger.trace('github-actions.extractWithYAMLParser()');\n\n const obj = withMeta({ packageFile }, () => Workflow.parse(content));\n if (!obj) {\n return [];\n }\n\n if ('runs' in obj && obj.runs.steps) {\n return extractSteps(obj.runs.steps);\n }\n\n if (!('jobs' in obj)) {\n return [];\n }\n\n const deps: PackageDependency[] = [];\n\n for (const job of Object.values(obj.jobs)) {\n if (job.container) {\n const dep = getDep(job.container, true, config.registryAliases);\n if (dep) {\n dep.depType = 'container';\n deps.push(dep);\n }\n }\n\n for (const service of job.services) {\n const dep = getDep(service, true, config.registryAliases);\n if (dep) {\n dep.depType = 'service';\n deps.push(dep);\n }\n }\n\n for (const runner of job['runs-on']) {\n const dep = extractRunner(runner);\n if (dep) {\n deps.push(dep);\n }\n }\n\n deps.push(...extractSteps(job.steps));\n }\n\n return deps;\n}\n\nexport function extractPackageFile(\n content: string,\n packageFile: string,\n config: ExtractConfig = {}, // TODO: enforce ExtractConfig\n): PackageFileContent | null {\n logger.trace(`github-actions.extractPackageFile(${packageFile})`);\n\n const deps = [\n ...extractWithRegex(content, config),\n ...extractWithYAMLParser(content, packageFile, config),\n ];\n\n if (!deps.length) {\n return null;\n }\n\n return { deps };\n}\n"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { __exportAll } from "../../../_virtual/_rolldown/runtime.js";
2
2
  import { GithubTagsDatasource } from "../../datasource/github-tags/index.js";
3
3
  import { GiteaTagsDatasource } from "../../datasource/gitea-tags/index.js";
4
+ import { GithubDigestDatasource } from "../../datasource/github-digest/index.js";
4
5
  import { GithubRunnersDatasource } from "../../datasource/github-runners/index.js";
5
6
  import { extractPackageFile } from "./extract.js";
6
7
  //#region lib/modules/manager/github-actions/index.ts
@@ -18,8 +19,9 @@ const categories = ["ci"];
18
19
  const defaultConfig = { managerFilePatterns: ["/(^|/)(workflow-templates|\\.(?:github|gitea|forgejo)/(?:workflows|actions))/.+\\.ya?ml$/", "/(^|/)action\\.ya?ml$/"] };
19
20
  const supportedDatasources = [
20
21
  GiteaTagsDatasource.id,
21
- GithubTagsDatasource.id,
22
- GithubRunnersDatasource.id
22
+ GithubDigestDatasource.id,
23
+ GithubRunnersDatasource.id,
24
+ GithubTagsDatasource.id
23
25
  ];
24
26
  //#endregion
25
27
  export { github_actions_exports };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../lib/modules/manager/github-actions/index.ts"],"sourcesContent":["import type { Category } from '../../../constants/index.ts';\nimport { GiteaTagsDatasource } from '../../datasource/gitea-tags/index.ts';\nimport { GithubRunnersDatasource } from '../../datasource/github-runners/index.ts';\nimport { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';\n\nexport { extractPackageFile } from './extract.ts';\n\nexport const displayName = 'GitHub Actions';\nexport const url = 'https://docs.github.com/en/actions';\nexport const categories: Category[] = ['ci'];\n\nexport const defaultConfig = {\n managerFilePatterns: [\n '/(^|/)(workflow-templates|\\\\.(?:github|gitea|forgejo)/(?:workflows|actions))/.+\\\\.ya?ml$/',\n '/(^|/)action\\\\.ya?ml$/',\n ],\n};\n\nexport const supportedDatasources = [\n GiteaTagsDatasource.id,\n GithubTagsDatasource.id,\n GithubRunnersDatasource.id,\n];\n"],"mappings":";;;;;;;;;;;;;;AAOA,MAAa,cAAc;AAC3B,MAAa,MAAM;AACnB,MAAa,aAAyB,CAAC,KAAK;AAE5C,MAAa,gBAAgB,EAC3B,qBAAqB,CACnB,6FACA,yBACD,EACF;AAED,MAAa,uBAAuB;CAClC,oBAAoB;CACpB,qBAAqB;CACrB,wBAAwB;CACzB"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../lib/modules/manager/github-actions/index.ts"],"sourcesContent":["import type { Category } from '../../../constants/index.ts';\nimport { GiteaTagsDatasource } from '../../datasource/gitea-tags/index.ts';\nimport { GithubDigestDatasource } from '../../datasource/github-digest/index.ts';\nimport { GithubRunnersDatasource } from '../../datasource/github-runners/index.ts';\nimport { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';\n\nexport { extractPackageFile } from './extract.ts';\n\nexport const displayName = 'GitHub Actions';\nexport const url = 'https://docs.github.com/en/actions';\nexport const categories: Category[] = ['ci'];\n\nexport const defaultConfig = {\n managerFilePatterns: [\n '/(^|/)(workflow-templates|\\\\.(?:github|gitea|forgejo)/(?:workflows|actions))/.+\\\\.ya?ml$/',\n '/(^|/)action\\\\.ya?ml$/',\n ],\n};\n\nexport const supportedDatasources = [\n GiteaTagsDatasource.id,\n GithubDigestDatasource.id,\n GithubRunnersDatasource.id,\n GithubTagsDatasource.id,\n];\n"],"mappings":";;;;;;;;;;;;;;;AAQA,MAAa,cAAc;AAC3B,MAAa,MAAM;AACnB,MAAa,aAAyB,CAAC,KAAK;AAE5C,MAAa,gBAAgB,EAC3B,qBAAqB,CACnB,6FACA,yBACD,EACF;AAED,MAAa,uBAAuB;CAClC,oBAAoB;CACpB,uBAAuB;CACvB,wBAAwB;CACxB,qBAAqB;CACtB"}
@@ -91,15 +91,23 @@ function parseActionReference(uses) {
91
91
  };
92
92
  return parseRepositoryReference(uses);
93
93
  }
94
- const pinnedVersionRe = regEx(/^\s*(?:(?:renovate\s*:\s*)?(?:pin\s+|tag\s*=\s*)?|(?:ratchet:[\w-]+\/[.\w-]+))?@?(?<version>([\w-]*[-/])?v?\d+(?:\.\d+(?:\.\d+)?)?)/);
94
+ const pinTokenRe = regEx(/^\s*(?:(?:renovate\s*:\s*)?(?:pin\s+|tag\s*=\s*)?|(?:ratchet:[\w-]+\/[.\w-]+))?@?(?<version>([\w-]*[-/])?v?\d+(?:\.\d+(?:\.\d+)?)?)/);
95
+ const versionLikeRe = regEx(/^v?\d+/);
96
+ const bareTokenRe = regEx(/^\s*(?<token>\S+)\s*$/);
95
97
  function parseComment(commentBody) {
96
98
  if (commentBody.trim() === "ratchet:exclude") return { ratchetExclude: true };
97
- const match = pinnedVersionRe.exec(commentBody);
99
+ const match = pinTokenRe.exec(commentBody);
98
100
  if (match?.groups?.version) return {
99
101
  pinnedVersion: match.groups.version,
100
102
  matchedString: match[0],
101
103
  index: match.index
102
104
  };
105
+ const bareMatch = bareTokenRe.exec(commentBody);
106
+ if (bareMatch?.groups?.token) return {
107
+ ref: bareMatch.groups.token,
108
+ matchedString: bareMatch[0],
109
+ index: bareMatch.index
110
+ };
103
111
  return {};
104
112
  }
105
113
  const usesLineRegex = regEx(/^(?<prefix>\s+(?:-\s+)?uses\s*:\s*)(?<remainder>.+)$/);
@@ -156,6 +164,6 @@ function parseUsesLine(line) {
156
164
  };
157
165
  }
158
166
  //#endregion
159
- export { isSha, isShortSha, parseUsesLine };
167
+ export { isSha, isShortSha, parseUsesLine, versionLikeRe };
160
168
 
161
169
  //# sourceMappingURL=parse.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse.js","names":[],"sources":["../../../../lib/modules/manager/github-actions/parse.ts"],"sourcesContent":["import is from '@sindresorhus/is';\nimport { regEx } from '../../../util/regex.ts';\n\nfunction splitFirstFrom(\n str: string,\n sep: string,\n start: number,\n): [string, string] | null {\n const idx = str.indexOf(sep, start);\n if (idx === -1) {\n return null;\n }\n return [str.slice(0, idx), str.slice(idx + sep.length)];\n}\n\nfunction splitFirst(str: string, sep: string): [string, string] | null {\n return splitFirstFrom(str, sep, 0);\n}\n\ninterface QuotedValue {\n value: string;\n quote: string;\n}\n\nexport function parseQuote(input: string): QuotedValue {\n const trimmed = input.trim();\n const first = trimmed[0];\n const last = trimmed[trimmed.length - 1];\n\n if (\n trimmed.length >= 2 &&\n first === last &&\n (first === '\"' || first === \"'\")\n ) {\n return { value: trimmed.slice(1, -1), quote: first };\n }\n\n return { value: trimmed, quote: '' };\n}\n\n/**\n * Docker container:\n * - `docker://image:tag`\n * - `docker://image@digest`\n * - `docker://image:tag@digest`\n */\nexport interface DockerReference {\n kind: 'docker';\n image: string;\n tag?: string;\n digest?: string;\n originalRef: string;\n}\n\n/**\n * Local file or directory:\n * - `./path/to/action`\n * - `./.github/workflows/main.yml`\n */\nexport interface LocalReference {\n kind: 'local';\n path: string;\n}\n\n/**\n * Repository:\n * - `owner/repo[/path]@ref`\n * - `https://host/owner/repo[/path]@ref`\n */\nexport interface RepositoryReference {\n kind: 'repository';\n\n hostname: string;\n isExplicitHostname: boolean;\n\n owner: string;\n repo: string;\n path?: string;\n\n ref: string;\n}\n\nexport type ActionReference =\n | DockerReference\n | LocalReference\n | RepositoryReference;\n\nexport interface ParsedUsesLine {\n /** The whitespace before \"uses:\" */\n indentation: string;\n\n /** The `uses:` (and optional `-`) part */\n usesPrefix: string;\n\n /** The raw value part, potentially quoted (e.g. `actions/checkout@v2`) */\n replaceString: string;\n\n /** Whitespace between value and `#` */\n commentPrecedingWhitespace: string;\n\n /** The full comment including `#` */\n commentString: string;\n\n actionRef: ActionReference | null;\n commentData: CommentData;\n\n /** The quote char used (' or \" or empty) */\n quote: string;\n}\n\nconst shaRe = regEx(/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/);\nconst shaShortRe = regEx(/^[a-f0-9]{6,7}$/);\n\nexport function isSha(str: string): boolean {\n return shaRe.test(str);\n}\n\nexport function isShortSha(str: string): boolean {\n return shaShortRe.test(str);\n}\n\nconst DOCKER_PREFIX = 'docker://';\n\nfunction parseDockerReference(input: string): DockerReference | null {\n const originalRef = input.slice(DOCKER_PREFIX.length);\n if (!originalRef) {\n return null;\n }\n\n const digestParts = splitFirst(originalRef, '@');\n if (digestParts) {\n const [image, digest] = digestParts;\n return { kind: 'docker', image, digest, originalRef };\n }\n\n // Find tag: look for first colon after last slash (to avoid matching port in registry)\n const lastSlashIndex = originalRef.lastIndexOf('/');\n const searchStart = lastSlashIndex === -1 ? 0 : lastSlashIndex + 1;\n const tagParts = splitFirstFrom(originalRef, ':', searchStart);\n\n if (tagParts) {\n const [image, tag] = tagParts;\n return { kind: 'docker', image, tag, originalRef };\n }\n\n return { kind: 'docker', image: originalRef, originalRef };\n}\n\nconst repositoryActionRegex = regEx(\n /^(?:https:\\/\\/(?<hostname>[^/]+)\\/)?(?<owner>[^/]+)\\/(?<repo>[^/]+)(?:\\/(?<path>.+?))?@(?<ref>.+)$/,\n);\n\nfunction parseRepositoryReference(input: string): RepositoryReference | null {\n const match = repositoryActionRegex.exec(input);\n if (!match?.groups) {\n return null;\n }\n\n const { owner, repo, path, ref } = match.groups;\n\n let { hostname } = match.groups;\n let isExplicitHostname = true;\n if (is.undefined(hostname)) {\n hostname = 'github.com';\n isExplicitHostname = false;\n }\n\n return {\n kind: 'repository',\n hostname,\n isExplicitHostname,\n owner,\n repo,\n path,\n ref,\n };\n}\n\nexport function parseActionReference(uses: string): ActionReference | null {\n if (!uses) {\n return null;\n }\n\n if (uses.startsWith(DOCKER_PREFIX)) {\n return parseDockerReference(uses);\n }\n\n if (uses.startsWith('./') || uses.startsWith('../')) {\n return { kind: 'local', path: uses };\n }\n\n return parseRepositoryReference(uses);\n}\n\nexport interface CommentData {\n pinnedVersion?: string;\n ratchetExclude?: boolean;\n matchedString?: string;\n index?: number;\n}\n\n// Matches version strings with optional prefixes, e.g.:\n// - \"@v1.2.3\", \"v1.2.3\", \"1.2.3\"\n// - \"renovate: pin @v1.2.3\", \"tag=v1.2.3\"\n// - \"ratchet:owner/repo@v1.2.3\"\n// - \"stable/v1.2.3\", \"stable-v1.2.3\"\nconst pinnedVersionRe = regEx(\n /^\\s*(?:(?:renovate\\s*:\\s*)?(?:pin\\s+|tag\\s*=\\s*)?|(?:ratchet:[\\w-]+\\/[.\\w-]+))?@?(?<version>([\\w-]*[-/])?v?\\d+(?:\\.\\d+(?:\\.\\d+)?)?)/,\n);\n\nexport function parseComment(commentBody: string): CommentData {\n const trimmed = commentBody.trim();\n if (trimmed === 'ratchet:exclude') {\n return { ratchetExclude: true };\n }\n\n // We use commentBody (with leading spaces) to get the correct index relative to the comment start\n const match = pinnedVersionRe.exec(commentBody);\n if (match?.groups?.version) {\n return {\n pinnedVersion: match.groups.version,\n matchedString: match[0],\n index: match.index,\n };\n }\n\n return {};\n}\n\nconst usesLineRegex = regEx(\n /^(?<prefix>\\s+(?:-\\s+)?uses\\s*:\\s*)(?<remainder>.+)$/,\n);\n\n/**\n * Parses a GitHub Actions `uses:` line into its components.\n *\n * Expected line format:\n * ```\n * <indentation>[- ]uses: [quote]<action-reference>[quote][ # <comment>]\n * ```\n *\n * Examples:\n * - ` uses: actions/checkout@v4`\n * - ` - uses: \"owner/repo@abc123\" # v1.0.0`\n * - ` uses: docker://alpine:3.18`\n *\n * @returns Parsed components or `null` if the line doesn't match `uses:` pattern\n */\nexport function parseUsesLine(line: string): ParsedUsesLine | null {\n const match = usesLineRegex.exec(line);\n if (!match?.groups) {\n return null;\n }\n\n const { prefix, remainder } = match.groups;\n\n if (remainder.startsWith('#')) {\n return null;\n }\n\n const indentation = prefix.slice(0, prefix.indexOf('uses'));\n\n // We look for ' #' to determine where the comment starts.\n // This is a safe heuristic for valid \"uses\" values which cannot contain spaces.\n const commentIndex = remainder.indexOf(' #');\n\n // No comment case\n if (commentIndex === -1) {\n const { value, quote } = parseQuote(remainder);\n return {\n indentation,\n usesPrefix: prefix,\n replaceString: remainder.trim(),\n commentPrecedingWhitespace: '',\n commentString: '',\n actionRef: parseActionReference(value),\n commentData: {},\n quote,\n };\n }\n\n // Has comment: split value and comment\n const rawValuePart = remainder.slice(0, commentIndex);\n const commentPart = remainder.slice(commentIndex + 1); // starts at #\n\n // Calculate whitespace between value and #\n const partBeforeHash = remainder.slice(0, commentIndex + 1);\n const commentPrecedingWhitespace = partBeforeHash.slice(\n partBeforeHash.trimEnd().length,\n );\n\n const { value, quote } = parseQuote(rawValuePart);\n // commentPart always starts with '#' since we found ' #' and sliced after the space\n const cleanCommentBody = commentPart.slice(1);\n\n return {\n indentation,\n usesPrefix: prefix,\n replaceString: rawValuePart.trim(),\n commentPrecedingWhitespace,\n commentString: commentPart,\n actionRef: parseActionReference(value),\n commentData: parseComment(cleanCommentBody),\n quote,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"parse.js","names":[],"sources":["../../../../lib/modules/manager/github-actions/parse.ts"],"sourcesContent":["import is from '@sindresorhus/is';\nimport { regEx } from '../../../util/regex.ts';\n\nfunction splitFirstFrom(\n str: string,\n sep: string,\n start: number,\n): [string, string] | null {\n const idx = str.indexOf(sep, start);\n if (idx === -1) {\n return null;\n }\n return [str.slice(0, idx), str.slice(idx + sep.length)];\n}\n\nfunction splitFirst(str: string, sep: string): [string, string] | null {\n return splitFirstFrom(str, sep, 0);\n}\n\ninterface QuotedValue {\n value: string;\n quote: string;\n}\n\nexport function parseQuote(input: string): QuotedValue {\n const trimmed = input.trim();\n const first = trimmed[0];\n const last = trimmed[trimmed.length - 1];\n\n if (\n trimmed.length >= 2 &&\n first === last &&\n (first === '\"' || first === \"'\")\n ) {\n return { value: trimmed.slice(1, -1), quote: first };\n }\n\n return { value: trimmed, quote: '' };\n}\n\n/**\n * Docker container:\n * - `docker://image:tag`\n * - `docker://image@digest`\n * - `docker://image:tag@digest`\n */\nexport interface DockerReference {\n kind: 'docker';\n image: string;\n tag?: string;\n digest?: string;\n originalRef: string;\n}\n\n/**\n * Local file or directory:\n * - `./path/to/action`\n * - `./.github/workflows/main.yml`\n */\nexport interface LocalReference {\n kind: 'local';\n path: string;\n}\n\n/**\n * Repository:\n * - `owner/repo[/path]@ref`\n * - `https://host/owner/repo[/path]@ref`\n */\nexport interface RepositoryReference {\n kind: 'repository';\n\n hostname: string;\n isExplicitHostname: boolean;\n\n owner: string;\n repo: string;\n path?: string;\n\n ref: string;\n}\n\nexport type ActionReference =\n | DockerReference\n | LocalReference\n | RepositoryReference;\n\nexport interface ParsedUsesLine {\n /** The whitespace before \"uses:\" */\n indentation: string;\n\n /** The `uses:` (and optional `-`) part */\n usesPrefix: string;\n\n /** The raw value part, potentially quoted (e.g. `actions/checkout@v2`) */\n replaceString: string;\n\n /** Whitespace between value and `#` */\n commentPrecedingWhitespace: string;\n\n /** The full comment including `#` */\n commentString: string;\n\n actionRef: ActionReference | null;\n commentData: CommentData;\n\n /** The quote char used (' or \" or empty) */\n quote: string;\n}\n\nconst shaRe = regEx(/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/);\nconst shaShortRe = regEx(/^[a-f0-9]{6,7}$/);\n\nexport function isSha(str: string): boolean {\n return shaRe.test(str);\n}\n\nexport function isShortSha(str: string): boolean {\n return shaShortRe.test(str);\n}\n\nconst DOCKER_PREFIX = 'docker://';\n\nfunction parseDockerReference(input: string): DockerReference | null {\n const originalRef = input.slice(DOCKER_PREFIX.length);\n if (!originalRef) {\n return null;\n }\n\n const digestParts = splitFirst(originalRef, '@');\n if (digestParts) {\n const [image, digest] = digestParts;\n return { kind: 'docker', image, digest, originalRef };\n }\n\n // Find tag: look for first colon after last slash (to avoid matching port in registry)\n const lastSlashIndex = originalRef.lastIndexOf('/');\n const searchStart = lastSlashIndex === -1 ? 0 : lastSlashIndex + 1;\n const tagParts = splitFirstFrom(originalRef, ':', searchStart);\n\n if (tagParts) {\n const [image, tag] = tagParts;\n return { kind: 'docker', image, tag, originalRef };\n }\n\n return { kind: 'docker', image: originalRef, originalRef };\n}\n\nconst repositoryActionRegex = regEx(\n /^(?:https:\\/\\/(?<hostname>[^/]+)\\/)?(?<owner>[^/]+)\\/(?<repo>[^/]+)(?:\\/(?<path>.+?))?@(?<ref>.+)$/,\n);\n\nfunction parseRepositoryReference(input: string): RepositoryReference | null {\n const match = repositoryActionRegex.exec(input);\n if (!match?.groups) {\n return null;\n }\n\n const { owner, repo, path, ref } = match.groups;\n\n let { hostname } = match.groups;\n let isExplicitHostname = true;\n if (is.undefined(hostname)) {\n hostname = 'github.com';\n isExplicitHostname = false;\n }\n\n return {\n kind: 'repository',\n hostname,\n isExplicitHostname,\n owner,\n repo,\n path,\n ref,\n };\n}\n\nexport function parseActionReference(uses: string): ActionReference | null {\n if (!uses) {\n return null;\n }\n\n if (uses.startsWith(DOCKER_PREFIX)) {\n return parseDockerReference(uses);\n }\n\n if (uses.startsWith('./') || uses.startsWith('../')) {\n return { kind: 'local', path: uses };\n }\n\n return parseRepositoryReference(uses);\n}\n\nexport interface CommentData {\n pinnedVersion?: string;\n ref?: string;\n ratchetExclude?: boolean;\n matchedString?: string;\n index?: number;\n}\n\nconst pinTokenRe = regEx(\n /^\\s*(?:(?:renovate\\s*:\\s*)?(?:pin\\s+|tag\\s*=\\s*)?|(?:ratchet:[\\w-]+\\/[.\\w-]+))?@?(?<version>([\\w-]*[-/])?v?\\d+(?:\\.\\d+(?:\\.\\d+)?)?)/,\n);\n\nexport const versionLikeRe = regEx(/^v?\\d+/);\n\nconst bareTokenRe = regEx(/^\\s*(?<token>\\S+)\\s*$/);\n\nexport function parseComment(commentBody: string): CommentData {\n const trimmed = commentBody.trim();\n if (trimmed === 'ratchet:exclude') {\n return { ratchetExclude: true };\n }\n\n // We use commentBody (with leading spaces) to get the correct index relative to the comment start\n const match = pinTokenRe.exec(commentBody);\n if (match?.groups?.version) {\n return {\n pinnedVersion: match.groups.version,\n matchedString: match[0],\n index: match.index,\n };\n }\n\n const bareMatch = bareTokenRe.exec(commentBody);\n if (bareMatch?.groups?.token) {\n return {\n ref: bareMatch.groups.token,\n matchedString: bareMatch[0],\n index: bareMatch.index,\n };\n }\n\n return {};\n}\n\nconst usesLineRegex = regEx(\n /^(?<prefix>\\s+(?:-\\s+)?uses\\s*:\\s*)(?<remainder>.+)$/,\n);\n\n/**\n * Parses a GitHub Actions `uses:` line into its components.\n *\n * Expected line format:\n * ```\n * <indentation>[- ]uses: [quote]<action-reference>[quote][ # <comment>]\n * ```\n *\n * Examples:\n * - ` uses: actions/checkout@v4`\n * - ` - uses: \"owner/repo@abc123\" # v1.0.0`\n * - ` uses: docker://alpine:3.18`\n *\n * @returns Parsed components or `null` if the line doesn't match `uses:` pattern\n */\nexport function parseUsesLine(line: string): ParsedUsesLine | null {\n const match = usesLineRegex.exec(line);\n if (!match?.groups) {\n return null;\n }\n\n const { prefix, remainder } = match.groups;\n\n if (remainder.startsWith('#')) {\n return null;\n }\n\n const indentation = prefix.slice(0, prefix.indexOf('uses'));\n\n // We look for ' #' to determine where the comment starts.\n // This is a safe heuristic for valid \"uses\" values which cannot contain spaces.\n const commentIndex = remainder.indexOf(' #');\n\n // No comment case\n if (commentIndex === -1) {\n const { value, quote } = parseQuote(remainder);\n return {\n indentation,\n usesPrefix: prefix,\n replaceString: remainder.trim(),\n commentPrecedingWhitespace: '',\n commentString: '',\n actionRef: parseActionReference(value),\n commentData: {},\n quote,\n };\n }\n\n // Has comment: split value and comment\n const rawValuePart = remainder.slice(0, commentIndex);\n const commentPart = remainder.slice(commentIndex + 1); // starts at #\n\n // Calculate whitespace between value and #\n const partBeforeHash = remainder.slice(0, commentIndex + 1);\n const commentPrecedingWhitespace = partBeforeHash.slice(\n partBeforeHash.trimEnd().length,\n );\n\n const { value, quote } = parseQuote(rawValuePart);\n // commentPart always starts with '#' (see commentIndex search above)\n const cleanCommentBody = commentPart.slice(1);\n\n return {\n indentation,\n usesPrefix: prefix,\n replaceString: rawValuePart.trim(),\n commentPrecedingWhitespace,\n commentString: commentPart,\n actionRef: parseActionReference(value),\n commentData: parseComment(cleanCommentBody),\n quote,\n };\n}\n"],"mappings":"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"}
@@ -10,10 +10,10 @@ import { ensureTrailingSlash } from "../../../util/url.js";
10
10
  import { find } from "../../../util/host-rules.js";
11
11
  import { parseJson } from "../../../util/common.js";
12
12
  import { ExternalHostError } from "../../../types/errors/external-host-error.js";
13
+ import { instrument } from "../../../instrumentation/index.js";
13
14
  import { memCacheProvider } from "../../../util/http/cache/memory-http-cache-provider.js";
14
15
  import { coerceObject } from "../../../util/object.js";
15
16
  import { setBaseUrl } from "../../../util/http/github.js";
16
- import { instrument } from "../../../instrumentation/index.js";
17
17
  import { incLimitedValue } from "../../../workers/global/limits.js";
18
18
  import { fetchBranch, forcePushToRemote, getBranchCommit, initRepo as initRepo$1, listCommitTree, prepareCommit, pushCommitToRenovateRef, resetToCommit } from "../../../util/git/index.js";
19
19
  import { GithubBranchProtection, GithubBranchRulesets, GithubVulnerabilityAlert } from "./schema.js";
@@ -2,8 +2,8 @@ import { GlobalConfig } from "../../../config/global.js";
2
2
  import { logger } from "../../../logger/index.js";
3
3
  import { parseLinkHeader } from "../../../util/url.js";
4
4
  import { ExternalHostError } from "../../../types/errors/external-host-error.js";
5
- import { getCache } from "../../../util/cache/repository/index.js";
6
5
  import { instrument } from "../../../instrumentation/index.js";
6
+ import { getCache } from "../../../util/cache/repository/index.js";
7
7
  import { repoCacheProvider } from "../../../util/http/cache/repository-http-cache-provider.js";
8
8
  import { coerceRestPr } from "./common.js";
9
9
  import { ApiCache } from "./api-cache.js";
@@ -1,4 +1,5 @@
1
1
  import { getEnv } from "../../env.js";
2
+ import { instrument } from "../../../instrumentation/index.js";
2
3
  import { PackageCacheFile } from "./impl/file.js";
3
4
  import { PackageCacheRedis } from "./impl/redis.js";
4
5
  import { PackageCacheSqlite } from "./impl/sqlite.js";
@@ -10,21 +11,23 @@ function getCacheType() {
10
11
  }
11
12
  async function init(config) {
12
13
  await destroy();
13
- if (config.redisUrl) {
14
- cacheProxy = await PackageCacheRedis.create(config.redisUrl, config.redisPrefix);
15
- cacheType = "redis";
16
- return;
17
- }
18
- if (getEnv().RENOVATE_X_SQLITE_PACKAGE_CACHE && config.cacheDir) {
19
- cacheProxy = await PackageCacheSqlite.create(config.cacheDir);
20
- cacheType = "sqlite";
21
- return;
22
- }
23
- if (config.cacheDir) {
24
- cacheProxy = PackageCacheFile.create(config.cacheDir);
25
- cacheType = "file";
26
- return;
27
- }
14
+ await instrument("init PackageCache", async () => {
15
+ if (config.redisUrl) {
16
+ cacheProxy = await PackageCacheRedis.create(config.redisUrl, config.redisPrefix);
17
+ cacheType = "redis";
18
+ return;
19
+ }
20
+ if (getEnv().RENOVATE_X_SQLITE_PACKAGE_CACHE && config.cacheDir) {
21
+ cacheProxy = await PackageCacheSqlite.create(config.cacheDir);
22
+ cacheType = "sqlite";
23
+ return;
24
+ }
25
+ if (config.cacheDir) {
26
+ cacheProxy = PackageCacheFile.create(config.cacheDir);
27
+ cacheType = "file";
28
+ return;
29
+ }
30
+ });
28
31
  }
29
32
  async function get(namespace, key) {
30
33
  return await cacheProxy?.get(namespace, key);
@@ -33,12 +36,14 @@ async function set(namespace, key, value, hardTtlMinutes) {
33
36
  await cacheProxy?.set(namespace, key, value, hardTtlMinutes);
34
37
  }
35
38
  async function destroy() {
36
- cacheType = void 0;
37
- try {
38
- await cacheProxy?.destroy();
39
- } finally {
40
- cacheProxy = void 0;
41
- }
39
+ await instrument("destroy PackageCache", async () => {
40
+ cacheType = void 0;
41
+ try {
42
+ await cacheProxy?.destroy();
43
+ } finally {
44
+ cacheProxy = void 0;
45
+ }
46
+ });
42
47
  }
43
48
  //#endregion
44
49
  export { destroy, get, getCacheType, init, set };
@@ -1 +1 @@
1
- {"version":3,"file":"backend.js","names":[],"sources":["../../../../lib/util/cache/package/backend.ts"],"sourcesContent":["import type { AllConfig } from '../../../config/types.ts';\nimport { getEnv } from '../../env.ts';\nimport type { PackageCacheBase } from './impl/base.ts';\nimport { PackageCacheFile } from './impl/file.ts';\nimport { PackageCacheRedis } from './impl/redis.ts';\nimport { PackageCacheSqlite } from './impl/sqlite.ts';\nimport type { PackageCacheNamespace } from './types.ts';\n\nlet cacheProxy: PackageCacheBase | undefined;\nlet cacheType: 'redis' | 'sqlite' | 'file' | undefined;\n\nexport function getCacheType(): typeof cacheType {\n return cacheType;\n}\n\nexport async function init(config: AllConfig): Promise<void> {\n await destroy();\n\n if (config.redisUrl) {\n cacheProxy = await PackageCacheRedis.create(\n config.redisUrl,\n config.redisPrefix,\n );\n cacheType = 'redis';\n return;\n }\n\n if (getEnv().RENOVATE_X_SQLITE_PACKAGE_CACHE && config.cacheDir) {\n cacheProxy = await PackageCacheSqlite.create(config.cacheDir);\n cacheType = 'sqlite';\n return;\n }\n\n if (config.cacheDir) {\n cacheProxy = PackageCacheFile.create(config.cacheDir);\n cacheType = 'file';\n return;\n }\n}\n\nexport async function get<T = unknown>(\n namespace: PackageCacheNamespace,\n key: string,\n): Promise<T | undefined> {\n return await cacheProxy?.get<T>(namespace, key);\n}\n\nexport async function set(\n namespace: PackageCacheNamespace,\n key: string,\n value: unknown,\n hardTtlMinutes: number,\n): Promise<void> {\n await cacheProxy?.set(namespace, key, value, hardTtlMinutes);\n}\n\nexport async function destroy(): Promise<void> {\n cacheType = undefined;\n try {\n await cacheProxy?.destroy();\n } finally {\n cacheProxy = undefined;\n }\n}\n"],"mappings":";;;;;AAQA,IAAI;AACJ,IAAI;AAEJ,SAAgB,eAAiC;AAC/C,QAAO;;AAGT,eAAsB,KAAK,QAAkC;AAC3D,OAAM,SAAS;AAEf,KAAI,OAAO,UAAU;AACnB,eAAa,MAAM,kBAAkB,OACnC,OAAO,UACP,OAAO,YACR;AACD,cAAY;AACZ;;AAGF,KAAI,QAAQ,CAAC,mCAAmC,OAAO,UAAU;AAC/D,eAAa,MAAM,mBAAmB,OAAO,OAAO,SAAS;AAC7D,cAAY;AACZ;;AAGF,KAAI,OAAO,UAAU;AACnB,eAAa,iBAAiB,OAAO,OAAO,SAAS;AACrD,cAAY;AACZ;;;AAIJ,eAAsB,IACpB,WACA,KACwB;AACxB,QAAO,MAAM,YAAY,IAAO,WAAW,IAAI;;AAGjD,eAAsB,IACpB,WACA,KACA,OACA,gBACe;AACf,OAAM,YAAY,IAAI,WAAW,KAAK,OAAO,eAAe;;AAG9D,eAAsB,UAAyB;AAC7C,aAAY,KAAA;AACZ,KAAI;AACF,QAAM,YAAY,SAAS;WACnB;AACR,eAAa,KAAA"}
1
+ {"version":3,"file":"backend.js","names":[],"sources":["../../../../lib/util/cache/package/backend.ts"],"sourcesContent":["import type { AllConfig } from '../../../config/types.ts';\nimport { instrument } from '../../../instrumentation/index.ts';\nimport { getEnv } from '../../env.ts';\nimport type { PackageCacheBase } from './impl/base.ts';\nimport { PackageCacheFile } from './impl/file.ts';\nimport { PackageCacheRedis } from './impl/redis.ts';\nimport { PackageCacheSqlite } from './impl/sqlite.ts';\nimport type { PackageCacheNamespace } from './types.ts';\n\nlet cacheProxy: PackageCacheBase | undefined;\nlet cacheType: 'redis' | 'sqlite' | 'file' | undefined;\n\nexport function getCacheType(): typeof cacheType {\n return cacheType;\n}\n\nexport async function init(config: AllConfig): Promise<void> {\n await destroy();\n await instrument('init PackageCache', async () => {\n if (config.redisUrl) {\n cacheProxy = await PackageCacheRedis.create(\n config.redisUrl,\n config.redisPrefix,\n );\n cacheType = 'redis';\n return;\n }\n\n if (getEnv().RENOVATE_X_SQLITE_PACKAGE_CACHE && config.cacheDir) {\n cacheProxy = await PackageCacheSqlite.create(config.cacheDir);\n cacheType = 'sqlite';\n return;\n }\n\n if (config.cacheDir) {\n cacheProxy = PackageCacheFile.create(config.cacheDir);\n cacheType = 'file';\n return;\n }\n });\n}\n\nexport async function get<T = unknown>(\n namespace: PackageCacheNamespace,\n key: string,\n): Promise<T | undefined> {\n return await cacheProxy?.get<T>(namespace, key);\n}\n\nexport async function set(\n namespace: PackageCacheNamespace,\n key: string,\n value: unknown,\n hardTtlMinutes: number,\n): Promise<void> {\n await cacheProxy?.set(namespace, key, value, hardTtlMinutes);\n}\n\nexport async function destroy(): Promise<void> {\n await instrument('destroy PackageCache', async () => {\n cacheType = undefined;\n try {\n await cacheProxy?.destroy();\n } finally {\n cacheProxy = undefined;\n }\n });\n}\n"],"mappings":";;;;;;AASA,IAAI;AACJ,IAAI;AAEJ,SAAgB,eAAiC;AAC/C,QAAO;;AAGT,eAAsB,KAAK,QAAkC;AAC3D,OAAM,SAAS;AACf,OAAM,WAAW,qBAAqB,YAAY;AAChD,MAAI,OAAO,UAAU;AACnB,gBAAa,MAAM,kBAAkB,OACnC,OAAO,UACP,OAAO,YACR;AACD,eAAY;AACZ;;AAGF,MAAI,QAAQ,CAAC,mCAAmC,OAAO,UAAU;AAC/D,gBAAa,MAAM,mBAAmB,OAAO,OAAO,SAAS;AAC7D,eAAY;AACZ;;AAGF,MAAI,OAAO,UAAU;AACnB,gBAAa,iBAAiB,OAAO,OAAO,SAAS;AACrD,eAAY;AACZ;;GAEF;;AAGJ,eAAsB,IACpB,WACA,KACwB;AACxB,QAAO,MAAM,YAAY,IAAO,WAAW,IAAI;;AAGjD,eAAsB,IACpB,WACA,KACA,OACA,gBACe;AACf,OAAM,YAAY,IAAI,WAAW,KAAK,OAAO,eAAe;;AAG9D,eAAsB,UAAyB;AAC7C,OAAM,WAAW,wBAAwB,YAAY;AACnD,cAAY,KAAA;AACZ,MAAI;AACF,SAAM,YAAY,SAAS;YACnB;AACR,gBAAa,KAAA;;GAEf"}
@@ -1,5 +1,6 @@
1
1
  import { GlobalConfig } from "../../../config/global.js";
2
2
  import { logger } from "../../../logger/index.js";
3
+ import { instrument } from "../../../instrumentation/index.js";
3
4
  import { RepoCacheNull } from "./impl/null.js";
4
5
  //#region lib/util/cache/repository/index.ts
5
6
  let repoCache = new RepoCacheNull();
@@ -14,7 +15,7 @@ function getCache() {
14
15
  }
15
16
  async function saveCache() {
16
17
  if (GlobalConfig.get("dryRun")) logger.info(`DRY-RUN: Would save repository cache.`);
17
- else await repoCache.save();
18
+ else await instrument("save RepoCache", () => repoCache.save());
18
19
  }
19
20
  function isCacheModified() {
20
21
  return repoCache.isModified();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../lib/util/cache/repository/index.ts"],"sourcesContent":["import { GlobalConfig } from '../../../config/global.ts';\nimport { logger } from '../../../logger/index.ts';\nimport { RepoCacheNull } from './impl/null.ts';\nimport type { RepoCache, RepoCacheData } from './types.ts';\n\n// This will be overwritten with initRepoCache()\n// Used primarily as a placeholder and for testing\nlet repoCache: RepoCache = new RepoCacheNull();\n\nexport function resetCache(): void {\n setCache(new RepoCacheNull());\n}\n\nexport function setCache(cache: RepoCache): void {\n repoCache = cache;\n}\n\nexport function getCache(): RepoCacheData {\n return repoCache.getData();\n}\n\nexport async function saveCache(): Promise<void> {\n if (GlobalConfig.get('dryRun')) {\n logger.info(`DRY-RUN: Would save repository cache.`);\n } else {\n await repoCache.save();\n }\n}\n\nexport function isCacheModified(): boolean | undefined {\n return repoCache.isModified();\n}\n"],"mappings":";;;;AAOA,IAAI,YAAuB,IAAI,eAAe;AAE9C,SAAgB,aAAmB;AACjC,UAAS,IAAI,eAAe,CAAC;;AAG/B,SAAgB,SAAS,OAAwB;AAC/C,aAAY;;AAGd,SAAgB,WAA0B;AACxC,QAAO,UAAU,SAAS;;AAG5B,eAAsB,YAA2B;AAC/C,KAAI,aAAa,IAAI,SAAS,CAC5B,QAAO,KAAK,wCAAwC;KAEpD,OAAM,UAAU,MAAM;;AAI1B,SAAgB,kBAAuC;AACrD,QAAO,UAAU,YAAY"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../lib/util/cache/repository/index.ts"],"sourcesContent":["import { GlobalConfig } from '../../../config/global.ts';\nimport { instrument } from '../../../instrumentation/index.ts';\nimport { logger } from '../../../logger/index.ts';\nimport { RepoCacheNull } from './impl/null.ts';\nimport type { RepoCache, RepoCacheData } from './types.ts';\n\n// This will be overwritten with initRepoCache()\n// Used primarily as a placeholder and for testing\nlet repoCache: RepoCache = new RepoCacheNull();\n\nexport function resetCache(): void {\n setCache(new RepoCacheNull());\n}\n\nexport function setCache(cache: RepoCache): void {\n repoCache = cache;\n}\n\nexport function getCache(): RepoCacheData {\n return repoCache.getData();\n}\n\nexport async function saveCache(): Promise<void> {\n if (GlobalConfig.get('dryRun')) {\n logger.info(`DRY-RUN: Would save repository cache.`);\n } else {\n await instrument('save RepoCache', () => repoCache.save());\n }\n}\n\nexport function isCacheModified(): boolean | undefined {\n return repoCache.isModified();\n}\n"],"mappings":";;;;;AAQA,IAAI,YAAuB,IAAI,eAAe;AAE9C,SAAgB,aAAmB;AACjC,UAAS,IAAI,eAAe,CAAC;;AAG/B,SAAgB,SAAS,OAAwB;AAC/C,aAAY;;AAGd,SAAgB,WAA0B;AACxC,QAAO,UAAU,SAAS;;AAG5B,eAAsB,YAA2B;AAC/C,KAAI,aAAa,IAAI,SAAS,CAC5B,QAAO,KAAK,wCAAwC;KAEpD,OAAM,WAAW,wBAAwB,UAAU,MAAM,CAAC;;AAI9D,SAAgB,kBAAuC;AACrD,QAAO,UAAU,YAAY"}
@@ -1,3 +1,4 @@
1
+ import { instrument } from "../../../instrumentation/index.js";
1
2
  import { RepoCacheNull } from "./impl/null.js";
2
3
  import { resetCache, setCache } from "./index.js";
3
4
  import { CacheFactory } from "./impl/cache-factory.js";
@@ -14,13 +15,13 @@ async function initRepoCache(config) {
14
15
  }
15
16
  if (repositoryCache === "enabled") {
16
17
  const cache = CacheFactory.get(repository, repoFingerprint, type);
17
- await cache.load();
18
+ await instrument("load RepoCache", () => cache.load());
18
19
  setCache(cache);
19
20
  return;
20
21
  }
21
22
  if (repositoryCache === "reset") {
22
23
  const cache = CacheFactory.get(repository, repoFingerprint, type);
23
- await cache.save();
24
+ await instrument("save RepoCache", () => cache.save());
24
25
  setCache(cache);
25
26
  return;
26
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","names":[],"sources":["../../../../lib/util/cache/repository/init.ts"],"sourcesContent":["import { CacheFactory } from './impl/cache-factory.ts';\nimport { RepoCacheNull } from './impl/null.ts';\nimport { resetCache, setCache } from './index.ts';\nimport type { RepoCacheConfig } from './types.ts';\n\n/**\n * Extracted to separate file in order to avoid circular module dependencies.\n */\nexport async function initRepoCache(config: RepoCacheConfig): Promise<void> {\n resetCache();\n\n const {\n repository,\n repositoryCache,\n repositoryCacheType: type = 'local',\n repoFingerprint,\n } = config;\n\n if (repositoryCache === 'disabled') {\n setCache(new RepoCacheNull());\n return;\n }\n\n if (repositoryCache === 'enabled') {\n const cache = CacheFactory.get(repository!, repoFingerprint, type);\n await cache.load();\n setCache(cache);\n return;\n }\n\n if (repositoryCache === 'reset') {\n const cache = CacheFactory.get(repository!, repoFingerprint, type);\n await cache.save();\n setCache(cache);\n return;\n }\n}\n"],"mappings":";;;;;;;AAQA,eAAsB,cAAc,QAAwC;AAC1E,aAAY;CAEZ,MAAM,EACJ,YACA,iBACA,qBAAqB,OAAO,SAC5B,oBACE;AAEJ,KAAI,oBAAoB,YAAY;AAClC,WAAS,IAAI,eAAe,CAAC;AAC7B;;AAGF,KAAI,oBAAoB,WAAW;EACjC,MAAM,QAAQ,aAAa,IAAI,YAAa,iBAAiB,KAAK;AAClE,QAAM,MAAM,MAAM;AAClB,WAAS,MAAM;AACf;;AAGF,KAAI,oBAAoB,SAAS;EAC/B,MAAM,QAAQ,aAAa,IAAI,YAAa,iBAAiB,KAAK;AAClE,QAAM,MAAM,MAAM;AAClB,WAAS,MAAM;AACf"}
1
+ {"version":3,"file":"init.js","names":[],"sources":["../../../../lib/util/cache/repository/init.ts"],"sourcesContent":["import { instrument } from '../../../instrumentation/index.ts';\nimport { CacheFactory } from './impl/cache-factory.ts';\nimport { RepoCacheNull } from './impl/null.ts';\nimport { resetCache, setCache } from './index.ts';\nimport type { RepoCacheConfig } from './types.ts';\n\n/**\n * Extracted to separate file in order to avoid circular module dependencies.\n */\nexport async function initRepoCache(config: RepoCacheConfig): Promise<void> {\n resetCache();\n\n const {\n repository,\n repositoryCache,\n repositoryCacheType: type = 'local',\n repoFingerprint,\n } = config;\n\n if (repositoryCache === 'disabled') {\n setCache(new RepoCacheNull());\n return;\n }\n\n if (repositoryCache === 'enabled') {\n const cache = CacheFactory.get(repository!, repoFingerprint, type);\n await instrument('load RepoCache', () => cache.load());\n setCache(cache);\n return;\n }\n\n if (repositoryCache === 'reset') {\n const cache = CacheFactory.get(repository!, repoFingerprint, type);\n await instrument('save RepoCache', () => cache.save());\n setCache(cache);\n return;\n }\n}\n"],"mappings":";;;;;;;;AASA,eAAsB,cAAc,QAAwC;AAC1E,aAAY;CAEZ,MAAM,EACJ,YACA,iBACA,qBAAqB,OAAO,SAC5B,oBACE;AAEJ,KAAI,oBAAoB,YAAY;AAClC,WAAS,IAAI,eAAe,CAAC;AAC7B;;AAGF,KAAI,oBAAoB,WAAW;EACjC,MAAM,QAAQ,aAAa,IAAI,YAAa,iBAAiB,KAAK;AAClE,QAAM,WAAW,wBAAwB,MAAM,MAAM,CAAC;AACtD,WAAS,MAAM;AACf;;AAGF,KAAI,oBAAoB,SAAS;EAC/B,MAAM,QAAQ,aAAa,IAAI,YAAa,iBAAiB,KAAK;AAClE,QAAM,WAAW,wBAAwB,MAAM,MAAM,CAAC;AACtD,WAAS,MAAM;AACf"}
@@ -7,11 +7,11 @@ import { matchRegexOrGlobList } from "../string-match.js";
7
7
  import { logger } from "../../logger/index.js";
8
8
  import { getChildEnv } from "../exec/utils.js";
9
9
  import { ExternalHostError } from "../../types/errors/external-host-error.js";
10
+ import { instrument } from "../../instrumentation/index.js";
10
11
  import { logWarningIfUnicodeHiddenCharactersInPackageFile } from "../unicode.js";
11
12
  import { getGitEnvironmentVariables } from "./auth.js";
12
13
  import { getNoVerify, setNoVerify, simpleGitConfig } from "./config.js";
13
14
  import { getCache } from "../cache/repository/index.js";
14
- import { instrument } from "../../instrumentation/index.js";
15
15
  import { withInstrumenting } from "../../instrumentation/with-instrumenting.js";
16
16
  import { incCountValue, incLimitedValue } from "../../workers/global/limits.js";
17
17
  import { parseGitAuthor } from "./author.js";
@@ -7,9 +7,9 @@ import { setGlobalLogLevelRemaps } from "../../logger/remap.js";
7
7
  import { addSecretForSanitizing } from "../../util/sanitize.js";
8
8
  import { getProblems, logLevel, logger, setMeta } from "../../logger/index.js";
9
9
  import { add, clear } from "../../util/host-rules.js";
10
+ import { instrument } from "../../instrumentation/index.js";
10
11
  import { clear as clear$1 } from "../../util/http/queue.js";
11
12
  import { clear as clear$2 } from "../../util/http/throttle.js";
12
- import { instrument } from "../../instrumentation/index.js";
13
13
  import { isLimitReached } from "./limits.js";
14
14
  import { mergeChildConfig } from "../../config/utils.js";
15
15
  import { resolveConfigPresets } from "../../config/presets/index.js";
@@ -5,11 +5,11 @@ import { resetRepositoryLogLevelRemaps } from "../../logger/remap.js";
5
5
  import { logger, setMeta } from "../../logger/index.js";
6
6
  import { getInheritedOrGlobal } from "../../util/common.js";
7
7
  import { AbandonedPackageStats, DatasourceCacheStats, GitOperationStats, HttpCacheStats, HttpStats, LookupStats, ObsoleteCacheHitLogger, PackageCacheStats } from "../../util/stats.js";
8
+ import { ATTR_RENOVATE_SPLIT } from "../../instrumentation/types.js";
9
+ import { instrument } from "../../instrumentation/index.js";
8
10
  import { deleteLocalFile, privateCacheDir } from "../../util/fs/index.js";
9
11
  import { clear } from "../../util/http/queue.js";
10
12
  import { clear as clear$1 } from "../../util/http/throttle.js";
11
- import { ATTR_RENOVATE_SPLIT } from "../../instrumentation/types.js";
12
- import { instrument } from "../../instrumentation/index.js";
13
13
  import { removeDanglingContainers } from "../../util/exec/docker/index.js";
14
14
  import { isCloned } from "../../util/git/index.js";
15
15
  import { applySecretsAndVariablesToConfig } from "../../config/secrets.js";
@@ -1,7 +1,7 @@
1
1
  import { cleanDatasourceKeys } from "../../../util/cache/memory/index.js";
2
2
  import { logger } from "../../../logger/index.js";
3
- import { getCache } from "../../../util/cache/repository/index.js";
4
3
  import { instrument } from "../../../instrumentation/index.js";
4
+ import { getCache } from "../../../util/cache/repository/index.js";
5
5
  import { checkGithubToken } from "../../../util/check-token.js";
6
6
  import { scm } from "../../../modules/platform/scm.js";
7
7
  import { hashMap } from "../../../modules/manager/fingerprint.generated.js";
@@ -2,9 +2,9 @@ import { logger } from "../../../logger/index.js";
2
2
  import { clone } from "../../../util/clone.js";
3
3
  import { ExternalHostError } from "../../../types/errors/external-host-error.js";
4
4
  import { LookupStats } from "../../../util/stats.js";
5
+ import { instrument } from "../../../instrumentation/index.js";
5
6
  import { Result } from "../../../util/result.js";
6
7
  import { all } from "../../../util/promises.js";
7
- import { instrument } from "../../../instrumentation/index.js";
8
8
  import { getDefaultVersioning } from "../../../modules/datasource/common.js";
9
9
  import { getDefaultConfig } from "../../../modules/datasource/index.js";
10
10
  import { mergeChildConfig } from "../../../config/utils.js";
@@ -3,9 +3,9 @@ import { GlobalConfig } from "../../../config/global.js";
3
3
  import { getRegexPredicate } from "../../../util/string-match.js";
4
4
  import { addMeta, logger, removeMeta } from "../../../logger/index.js";
5
5
  import { clone } from "../../../util/clone.js";
6
- import { getCache } from "../../../util/cache/repository/index.js";
7
6
  import { ATTR_RENOVATE_SPLIT } from "../../../instrumentation/types.js";
8
7
  import { instrument } from "../../../instrumentation/index.js";
8
+ import { getCache } from "../../../util/cache/repository/index.js";
9
9
  import { getBranchList } from "../../../util/git/index.js";
10
10
  import { scm } from "../../../modules/platform/scm.js";
11
11
  import { platform } from "../../../modules/platform/index.js";
@@ -1,8 +1,8 @@
1
1
  import { regEx } from "../../../util/regex.js";
2
2
  import { titleCase } from "../../../util/string.js";
3
3
  import { logger } from "../../../logger/index.js";
4
- import { all } from "../../../util/promises.js";
5
4
  import { instrument } from "../../../instrumentation/index.js";
5
+ import { all } from "../../../util/promises.js";
6
6
  import { get } from "../../../modules/versioning/index.js";
7
7
  import { getDefaultVersioning } from "../../../modules/datasource/common.js";
8
8
  import { mergeChildConfig } from "../../../config/utils.js";
@@ -1,6 +1,6 @@
1
1
  import { addMeta, logger, removeMeta } from "../../../logger/index.js";
2
- import { getCache } from "../../../util/cache/repository/index.js";
3
2
  import { instrument } from "../../../instrumentation/index.js";
3
+ import { getCache } from "../../../util/cache/repository/index.js";
4
4
  import { incCountValue, setCount } from "../../global/limits.js";
5
5
  import { scm } from "../../../modules/platform/scm.js";
6
6
  import { hashMap } from "../../../modules/manager/fingerprint.generated.js";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "renovate",
3
3
  "description": "Automated dependency updates. Flexible so you don't need to be.",
4
- "version": "43.83.2",
4
+ "version": "43.84.0",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "renovate": "dist/renovate.js",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$id": "https://docs.renovatebot.com/renovate-schema.json",
3
- "title": "JSON schema for Renovate 43.83.2 config files (https://renovatebot.com/)",
3
+ "title": "JSON schema for Renovate 43.84.0 config files (https://renovatebot.com/)",
4
4
  "$schema": "http://json-schema.org/draft-07/schema#",
5
- "x-renovate-version": "43.83.2",
5
+ "x-renovate-version": "43.84.0",
6
6
  "allowComments": true,
7
7
  "type": "object",
8
8
  "properties": {