renovate 44.28.0 → 44.29.2
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/config/options/index.js +1 -2
- package/dist/config/options/index.js.map +1 -1
- package/dist/config/presets/index.js +39 -12
- package/dist/config/presets/index.js.map +1 -1
- package/dist/config/presets/parse.js +64 -7
- package/dist/config/presets/parse.js.map +1 -1
- package/dist/config/presets/relative.js +66 -0
- package/dist/config/presets/relative.js.map +1 -0
- package/dist/config/presets/util.js +3 -1
- package/dist/config/presets/util.js.map +1 -1
- package/dist/config/validation.js +48 -4
- package/dist/config/validation.js.map +1 -1
- package/dist/global-config-option-defaults.generated.js +1 -1
- package/dist/global-config-option-defaults.generated.js.map +1 -1
- package/dist/logger/bunyan.js +2 -2
- package/dist/logger/bunyan.js.map +1 -1
- package/dist/logger/cmd-serializer.js +2 -1
- package/dist/logger/cmd-serializer.js.map +1 -1
- package/dist/modules/datasource/go/goproxy-parser.js +2 -2
- package/dist/modules/datasource/go/goproxy-parser.js.map +1 -1
- package/dist/modules/datasource/index.js +3 -3
- package/dist/modules/datasource/index.js.map +1 -1
- package/dist/modules/datasource/nuget/common.js +2 -1
- package/dist/modules/datasource/nuget/common.js.map +1 -1
- package/dist/modules/datasource/packagist/schema.js +2 -2
- package/dist/modules/datasource/packagist/schema.js.map +1 -1
- package/dist/modules/datasource/rpm/providers/common.js +3 -2
- package/dist/modules/datasource/rpm/providers/common.js.map +1 -1
- package/dist/modules/manager/ant/update.js +2 -1
- package/dist/modules/manager/ant/update.js.map +1 -1
- package/dist/modules/manager/bazel-module/parser/fragments.js +4 -3
- package/dist/modules/manager/bazel-module/parser/fragments.js.map +1 -1
- package/dist/modules/manager/bun/extract.js +2 -2
- package/dist/modules/manager/bun/extract.js.map +1 -1
- package/dist/modules/manager/circleci/extract.js +2 -1
- package/dist/modules/manager/circleci/extract.js.map +1 -1
- package/dist/modules/manager/deno/post.js +2 -2
- package/dist/modules/manager/deno/post.js.map +1 -1
- package/dist/modules/manager/fingerprint.generated.js +1 -1
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/helm-values/extract.js +2 -1
- package/dist/modules/manager/helm-values/extract.js.map +1 -1
- package/dist/modules/manager/helm-values/util.js +3 -2
- package/dist/modules/manager/helm-values/util.js.map +1 -1
- package/dist/modules/manager/npm/extract/common/dependency.js +1 -1
- package/dist/modules/manager/npm/extract/common/dependency.js.map +1 -1
- package/dist/modules/manager/npm/extract/post/monorepo.js +3 -3
- package/dist/modules/manager/npm/extract/post/monorepo.js.map +1 -1
- package/dist/modules/manager/npm/post-update/rules.js +2 -2
- package/dist/modules/manager/npm/post-update/rules.js.map +1 -1
- package/dist/modules/manager/osgi/extract.js +2 -2
- package/dist/modules/manager/osgi/extract.js.map +1 -1
- package/dist/modules/manager/pipenv/extract.js +2 -2
- package/dist/modules/manager/pipenv/extract.js.map +1 -1
- package/dist/modules/manager/pre-commit/parsing.js +3 -2
- package/dist/modules/manager/pre-commit/parsing.js.map +1 -1
- package/dist/modules/manager/proto/schema.js +2 -1
- package/dist/modules/manager/proto/schema.js.map +1 -1
- package/dist/modules/manager/renovate-config/extract.js +16 -2
- package/dist/modules/manager/renovate-config/extract.js.map +1 -1
- package/dist/modules/manager/woodpecker/extract.js +2 -2
- package/dist/modules/manager/woodpecker/extract.js.map +1 -1
- package/dist/modules/versioning/apk/index.js +2 -1
- package/dist/modules/versioning/apk/index.js.map +1 -1
- package/dist/modules/versioning/bazel-module/bzlmod-version.js +2 -1
- package/dist/modules/versioning/bazel-module/bzlmod-version.js.map +1 -1
- package/dist/modules/versioning/bazel-module/index.js +2 -1
- package/dist/modules/versioning/bazel-module/index.js.map +1 -1
- package/dist/modules/versioning/conan/common.js +2 -1
- package/dist/modules/versioning/conan/common.js.map +1 -1
- package/dist/modules/versioning/conan/range.js +5 -3
- package/dist/modules/versioning/conan/range.js.map +1 -1
- package/dist/modules/versioning/gradle/compare.js +1 -1
- package/dist/modules/versioning/gradle/compare.js.map +1 -1
- package/dist/modules/versioning/lambda-node/index.js +2 -1
- package/dist/modules/versioning/lambda-node/index.js.map +1 -1
- package/dist/modules/versioning/maven/compare.js +4 -3
- package/dist/modules/versioning/maven/compare.js.map +1 -1
- package/dist/modules/versioning/pep440/range.js +2 -1
- package/dist/modules/versioning/pep440/range.js.map +1 -1
- package/dist/modules/versioning/pvp/index.js +2 -1
- package/dist/modules/versioning/pvp/index.js.map +1 -1
- package/dist/modules/versioning/ruby/index.js +2 -1
- package/dist/modules/versioning/ruby/index.js.map +1 -1
- package/dist/util/cache/package/impl/file.js +2 -1
- package/dist/util/cache/package/impl/file.js.map +1 -1
- package/dist/util/cache/package/legacy.js +2 -1
- package/dist/util/cache/package/legacy.js.map +1 -1
- package/dist/util/date.js +2 -1
- package/dist/util/date.js.map +1 -1
- package/dist/util/exec/docker/index.js +2 -2
- package/dist/util/exec/docker/index.js.map +1 -1
- package/dist/util/exec/index.js +2 -2
- package/dist/util/exec/index.js.map +1 -1
- package/dist/util/exec/utils.js +2 -2
- package/dist/util/exec/utils.js.map +1 -1
- package/dist/util/fingerprint.js.map +1 -1
- package/dist/util/git/index.js +3 -3
- package/dist/util/git/index.js.map +1 -1
- package/dist/util/git/instrument.js +3 -2
- package/dist/util/git/instrument.js.map +1 -1
- package/dist/util/host-rules.js +1 -1
- package/dist/util/host-rules.js.map +1 -1
- package/dist/util/http/github.js +2 -2
- package/dist/util/http/github.js.map +1 -1
- package/dist/util/object.js.map +1 -1
- package/dist/util/result.js.map +1 -1
- package/dist/util/s3.js +2 -2
- package/dist/util/s3.js.map +1 -1
- package/dist/util/schema-utils/index.js.map +1 -1
- package/dist/util/timestamp.js +2 -1
- package/dist/util/timestamp.js.map +1 -1
- package/dist/workers/global/config/parse/index.js +2 -2
- package/dist/workers/global/config/parse/index.js.map +1 -1
- package/dist/workers/global/index.js +2 -2
- package/dist/workers/global/index.js.map +1 -1
- package/dist/workers/repository/update/branch/execute-post-upgrade-commands.js +2 -2
- package/dist/workers/repository/update/branch/execute-post-upgrade-commands.js.map +1 -1
- package/dist/workers/repository/update/pr/changelog/release-notes.js +2 -2
- package/dist/workers/repository/update/pr/changelog/release-notes.js.map +1 -1
- package/package.json +2 -2
- package/renovate-schema.json +2 -2
|
@@ -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','1d3568f42393d697f8f96d461b72077ee7a1044b654e87667a12f861b3083111');\nhashMap.set('ansible-galaxy','8226d47128f2018825d4d6f84794e3183eb79c706045fa7e88491edd5e64106f');\nhashMap.set('ant','2df5943cf0ed19a21b94df13729dbb925655548130caf37e3e22bebaed518e17');\nhashMap.set('argocd','5d35b1992e53130bf83b0e59a0f90ccd3a78919974c69044f306dc5d162f48ce');\nhashMap.set('asdf','b2acfc0a6164e9a279daa724777c423f84572dafb0df09b1b0cf6f205f9eb6d0');\nhashMap.set('azure-pipelines','4f635b0ecd388ee266d992e8281fd40e3db2f5867d86fc1cbce72dc33a66e796');\nhashMap.set('batect','bd9208444eff1a4958061484db66a47b616c31f15a8d49d23b75c4560fcee83e');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','4994a8bd86d5bfb169d67c08efd8509b58c368c2bf3dd9bbe42553c0fabc3f1a');\nhashMap.set('bazel-module','40f6a862b4e72fcc7262ee41f8b570ea3fd5600d6d552b94ed3301bb201f5db5');\nhashMap.set('bazelisk','d71489650feefb0dbbe7461f924cb50e41c8eef8fe2e11acdec2d42d0212c8ef');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','59c0503494ab1442b127914503c01b97ac17b6742b19c632292d5aa24de115cd');\nhashMap.set('bitrise','478dfd316221fad7c29e177c70d1018d832fb2626b53308a5d0f1f0380e69f42');\nhashMap.set('buildkite','a93effb1f1c5d65b3277c3b4709924eacde282e8efd028a8e3d8c1ce3ef69407');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','691aa0bd20c20f7e05be5d231ed14dccdf81b9399d062448794176403aa53d94');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','4f70ac0377893683eb30013bf4d23a8bd7213a883847c9eaadf1217f5f190ee1');\nhashMap.set('cake','ed6d14c96161f1d3d927adc7e333b96585164e1f25151a87990914d57ae17fe1');\nhashMap.set('cargo','13377c53df158cdfc58330f73682fadc3e88e57f0d22c9245c0ffd62a495edf1');\nhashMap.set('cdnurl','d3edf6cdc38e92eb43ff5a2b4e8df6a6a13154cf83244725c39e28d7e6ea9177');\nhashMap.set('circleci','91cbeb33ea20f9838e2c81a1195eb806f0b38fa282bc3679f62552f20575ca85');\nhashMap.set('cloudbuild','8c0c739f7e4082bbfe8e3fdffebaf43e26f70a1314d95b306e9b93e4f4297886');\nhashMap.set('cocoapods','cf48ab5a573a28bf14d5e6c84eed9ca08b7f0cb5b7fc51d795c21c7254bb9dd1');\nhashMap.set('composer','869aab556d9b2ca2b743a790a7c0d7d104d62bbcbcc2185c44c64543d70413ba');\nhashMap.set('conan','74ca922a0ffdf1a9dd44b83eb2b3a36c56c7d792031e3a4a484f293046be3ecd');\nhashMap.set('copier','06a52206ba5542f99f056c832245196afd4b78bffeca088f710a5df958a9693d');\nhashMap.set('cpanfile','07813fec3f3c2197056500e9266a0553b9774c02f2c74d5ca2e213188c7c12d3');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deno','a43016a9a469e0472f00855c8db64bb65ef5ffa773e7bbfade02a21400f67690');\nhashMap.set('deps-edn','c87dd5e88587147ad1a78f047b814f3c4aa60d6de30d0c49d849391eeaf1b64c');\nhashMap.set('devbox','a608d1e6db93a8f997d41f8dee7b67533452a956057865978342e2819272e0a9');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','5441af5b5abf8d347e46002d47f02f85743401bda28232f49fb7b3bbb772a4fb');\nhashMap.set('dockerfile','54122792bf8ea0be98e0a0716e627e3115b40a5f0155ccd7ae0cfc52424a3478');\nhashMap.set('droneci','237c8de87b9bf653fb943b56e84e99c45f6d86ae27d86e599b3f3f99c35ba8ee');\nhashMap.set('fleet','d73d5d35f10df0599a561d9c8d25f3935350407d0e3bd3a1d1545295f278912e');\nhashMap.set('flux','70833dd068ea0a746a9392469e7904021562c7629428d0cd554603bad4eb6ce5');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','e95bbc9b69a36dee82e255e8983640b7179cb5f17d24b035c6cf01d9635b35bd');\nhashMap.set('github-actions','0a77751d4307d7e923bf2d05bf49084e77a23d7f1e498a1373202dd1ebdcc48a');\nhashMap.set('gitlabci','33c264edf7837fb8fbc4cf0078c8bd2d5a75431039b1db65bf47356df7753125');\nhashMap.set('gitlabci-include','ef696c478c2ac1723b3aca070ba9779be0e702fff0844054251ba0029523d0eb');\nhashMap.set('glasskube','93e7b9000a17efa15a1abaaf320b5af9169b1ecd828fc0c881d98570ef9d9e30');\nhashMap.set('gleam','02389785183c39d2896d7893414c5e1060023f95c1fe7b595bd06cc5c1186d39');\nhashMap.set('gomod','7e9befd57c32420da2061445defde5a02bebf4898bef0106614bab95a8713a2f');\nhashMap.set('gradle','550f1107f0ac27d18fa76a7d5c0c0b317b5df4156fc12cfd378573ccfe26fca0');\nhashMap.set('gradle-wrapper','799d9bb8d9dead673fb513ba4936395f14da30897d33a9df46b3266e1b835d5d');\nhashMap.set('haskell-cabal','f232d0e883235f74ed71fd9de4a7468e5fcbda9a1af5beb56c24657f7bf2e891');\nhashMap.set('helm-requirements','4d90e5e18a380876ad48e21e1ad88ea62e25d973a1ddaa3763447fc0a9f9915b');\nhashMap.set('helm-values','b5c52c6a27d805557418c585c5d3030c95ee641d53057021f3fe060f81b6e1af');\nhashMap.set('helmfile','ab828a1877cfe029ed5f8dd2a026409cd5e6431705af3aac3f56a3bc4f827508');\nhashMap.set('helmsman','ef9680c612f702c7f07aea9b6e5d811e91214dcfa5755c9f3803e9528090935e');\nhashMap.set('helmv3','4088a90bd8be4ae1bcb85dc4d34d3fbbb75e72bd33d144284e7e1f0e726c8d3b');\nhashMap.set('hermit','61e132cfccbe4e3884801a3728f3391455c214811a33c1f733b0dea7122bbbb6');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','9c64a4f1475b1c2052372e566c9190f32ae8acd1c54313031d55ae8772388367');\nhashMap.set('html','67c5f3c5c58e96f5dd257ba5987d900cf7fef81d667c3640e96c847b37de35a8');\nhashMap.set('jenkins','268ebfc8a1caf3edeb2192c2b1b2fa4bf18a78a3e731ba20a6c104940a5539f3');\nhashMap.set('jsonnet-bundler','4023ef4cac55fe58f8d9744ae86b13532298926e35e22d250334cde55c3386ff');\nhashMap.set('kotlin-script','99ef296792a0ca575ed31d3defb514b05a58083dc01c52ea0890c69d867ba1dd');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','fb5f6fbf45b318ca277d6d9f7fee22680f4b99c7ff9170a50315122918d2e007');\nhashMap.set('leiningen','133fca2c3423f53f2ccc22518153ddbcafbf0f4812376c77e952eb3d24d81f85');\nhashMap.set('maven','f084cdc88320ca1e82af957d0008e7c9ce991d3282cb428f3108a5722239cead');\nhashMap.set('maven-wrapper','779344a4e259e0c28bfadfeb435dd72feb7224d7346d038a1c35f02deb1357bc');\nhashMap.set('meteor','4a93a326b27bedfe52118e27e06f39fecd7c55bd4cd7fccec4cb120cac14cec4');\nhashMap.set('mint','248fe4f1ea5c985921c286785792c97e06fc41f402b2d45df82f6aecd17f710e');\nhashMap.set('mise','8463d355091f5f167e3f4a8adbebfe49310ad9ac45c89d60455ef8e110df4a49');\nhashMap.set('mix','5eb001e2af7cd664d811ad2d9928bf785527ed292de1e567de57f7e2cecc1ecc');\nhashMap.set('nix','d3283c2b948695a16c1089da4e2689faacd50eaa7d734d6fa5d6661aef6db7e7');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','95ddcec26d4db9ee54028f00fdcac118c458cd1513623737dd1b3f79d05a11a4');\nhashMap.set('nuget','d4f3c5cbc0f6e6e8baf80b8ad8e184d186ff6686486b1c97995a0c87151abbe3');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','32233a1a8a2725699d7448ba438e3d0b78141f7799cd2b588de278d41e26ed10');\nhashMap.set('pep621','f5dc3c8434845dd814bc649c619323dcb69e3ec5da2d361d353bdf6ae3cc5d88');\nhashMap.set('pep723','b96683163de63ed93207ec0538066705b1e58a1cd5b8bd11c63fc28b26bddba1');\nhashMap.set('pip-compile','9711b1c00da18ff785e624c50e4b042519e7ad615c5f018f08459fac8394fec5');\nhashMap.set('pip_requirements','537ef9d7b43b5adcfbfbb86392e0c7a8a0ee91c804118af83cf92e1868949e1a');\nhashMap.set('pip_setup','0175fe550c19d9bd31c978bd83fdc088cb40fcacd5d6751f640164274ae64e61');\nhashMap.set('pipenv','a7d45859427263c17f1109a08c8b48a1f24812290f9853013ec1774f2484a769');\nhashMap.set('pixi','3732f052617efd5007ddbe31091a2ba026909288bac4cbbe6d2bd6ac64d85393');\nhashMap.set('poetry','6cf6bc5116458761b2d6779caf465d6e26768fbe6e2ffba54b5da981aa8c385f');\nhashMap.set('pre-commit','17a5f183985ebffe98785a541d3609bf25efedc387deb3d50e9f00f02b25f615');\nhashMap.set('proto','412053d4550026b4ace490b46e970915b87ec1abf0b0a0c6c8c58ccf1fc16843');\nhashMap.set('pub','a2ded51959d48e053b811b3b9330b2460fc61d0fc2e74a400a546e4f82d25767');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','e1fc88a4e14cd595e89bb3d79b4adf2add3ce5eb80f75276e712c32598cca53d');\nhashMap.set('renovate-config','2a4e4fb671aed5d0c900b8d54c31bfef46ca36d0f4e16b00ff73377b9c09fb69');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('rust-toolchain','6ace53db02874d73620d2d872291839820a512a9529c42d174358c692e5db720');\nhashMap.set('sbt','e508c2e2fb8d44e6cbec20f449c8eed096728566e6058187269c637930d388fb');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','7dea08c5708625e753bd56918bc214df7fb4d8543a26e936926a21ab43b5f785');\nhashMap.set('smithy','9641b91d065ffb63be0dd888139a0402dba41e550f8b44c592db9daf52109100');\nhashMap.set('sveltos','05b3158e88771ed4629e171592cf4f1bf0ff342f8aeae89be0b340c630cc6d8e');\nhashMap.set('swift','eb5f7c3c4dabf28eed36916269ca9be16ab9ddb83993db03ea66b9195ad7bdc6');\nhashMap.set('tekton','fdc5b9b5edec2a90cda2f858f3ebc532aa8efb1187d1e0b7c89b07796e9cb6cd');\nhashMap.set('terraform','b6723d78863803e688d2b85cc72bc43657d79ff0cca3bc719e7d96cfd34ceb69');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','ffcbaa67dd65f064d43f8c121c1006115eab1879c4bd38de263b9b90a009c118');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','31247d37bc80aae17039bfa21bd989c5717730c5ef10cf2a6f09841576d012ec');\nhashMap.set('travis','bb482a0195cd009ec3896a6227bb95617f5c84bedb518c7d971e50c62235d9ca');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','ee9cc316c73ab0944da494bf36cfeafba8e79a36ec77753b9f341c8e80f1d602');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('xcodegen','dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683');\nhashMap.set('jsonata','416bcf61144b276b3112814c6e6d261aa29608f46fbb0516c471d35c16f8f0d7');\nhashMap.set('regex','dbe6889ea021a05127fed06226d73366fdada2ae577147a5c027996fd325416e');"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fingerprint.generated.js","names":[],"sources":["../../../lib/modules/manager/fingerprint.generated.ts"],"sourcesContent":["export const hashMap = new Map<string, string>();\n\nhashMap.set('ansible','1d3568f42393d697f8f96d461b72077ee7a1044b654e87667a12f861b3083111');\nhashMap.set('ansible-galaxy','8226d47128f2018825d4d6f84794e3183eb79c706045fa7e88491edd5e64106f');\nhashMap.set('ant','2df5943cf0ed19a21b94df13729dbb925655548130caf37e3e22bebaed518e17');\nhashMap.set('argocd','5d35b1992e53130bf83b0e59a0f90ccd3a78919974c69044f306dc5d162f48ce');\nhashMap.set('asdf','b2acfc0a6164e9a279daa724777c423f84572dafb0df09b1b0cf6f205f9eb6d0');\nhashMap.set('azure-pipelines','4f635b0ecd388ee266d992e8281fd40e3db2f5867d86fc1cbce72dc33a66e796');\nhashMap.set('batect','bd9208444eff1a4958061484db66a47b616c31f15a8d49d23b75c4560fcee83e');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','4994a8bd86d5bfb169d67c08efd8509b58c368c2bf3dd9bbe42553c0fabc3f1a');\nhashMap.set('bazel-module','40f6a862b4e72fcc7262ee41f8b570ea3fd5600d6d552b94ed3301bb201f5db5');\nhashMap.set('bazelisk','d71489650feefb0dbbe7461f924cb50e41c8eef8fe2e11acdec2d42d0212c8ef');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','59c0503494ab1442b127914503c01b97ac17b6742b19c632292d5aa24de115cd');\nhashMap.set('bitrise','478dfd316221fad7c29e177c70d1018d832fb2626b53308a5d0f1f0380e69f42');\nhashMap.set('buildkite','a93effb1f1c5d65b3277c3b4709924eacde282e8efd028a8e3d8c1ce3ef69407');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','691aa0bd20c20f7e05be5d231ed14dccdf81b9399d062448794176403aa53d94');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','4f70ac0377893683eb30013bf4d23a8bd7213a883847c9eaadf1217f5f190ee1');\nhashMap.set('cake','ed6d14c96161f1d3d927adc7e333b96585164e1f25151a87990914d57ae17fe1');\nhashMap.set('cargo','13377c53df158cdfc58330f73682fadc3e88e57f0d22c9245c0ffd62a495edf1');\nhashMap.set('cdnurl','d3edf6cdc38e92eb43ff5a2b4e8df6a6a13154cf83244725c39e28d7e6ea9177');\nhashMap.set('circleci','91cbeb33ea20f9838e2c81a1195eb806f0b38fa282bc3679f62552f20575ca85');\nhashMap.set('cloudbuild','8c0c739f7e4082bbfe8e3fdffebaf43e26f70a1314d95b306e9b93e4f4297886');\nhashMap.set('cocoapods','cf48ab5a573a28bf14d5e6c84eed9ca08b7f0cb5b7fc51d795c21c7254bb9dd1');\nhashMap.set('composer','869aab556d9b2ca2b743a790a7c0d7d104d62bbcbcc2185c44c64543d70413ba');\nhashMap.set('conan','74ca922a0ffdf1a9dd44b83eb2b3a36c56c7d792031e3a4a484f293046be3ecd');\nhashMap.set('copier','06a52206ba5542f99f056c832245196afd4b78bffeca088f710a5df958a9693d');\nhashMap.set('cpanfile','07813fec3f3c2197056500e9266a0553b9774c02f2c74d5ca2e213188c7c12d3');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deno','a43016a9a469e0472f00855c8db64bb65ef5ffa773e7bbfade02a21400f67690');\nhashMap.set('deps-edn','c87dd5e88587147ad1a78f047b814f3c4aa60d6de30d0c49d849391eeaf1b64c');\nhashMap.set('devbox','a608d1e6db93a8f997d41f8dee7b67533452a956057865978342e2819272e0a9');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','5441af5b5abf8d347e46002d47f02f85743401bda28232f49fb7b3bbb772a4fb');\nhashMap.set('dockerfile','54122792bf8ea0be98e0a0716e627e3115b40a5f0155ccd7ae0cfc52424a3478');\nhashMap.set('droneci','237c8de87b9bf653fb943b56e84e99c45f6d86ae27d86e599b3f3f99c35ba8ee');\nhashMap.set('fleet','d73d5d35f10df0599a561d9c8d25f3935350407d0e3bd3a1d1545295f278912e');\nhashMap.set('flux','70833dd068ea0a746a9392469e7904021562c7629428d0cd554603bad4eb6ce5');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','e95bbc9b69a36dee82e255e8983640b7179cb5f17d24b035c6cf01d9635b35bd');\nhashMap.set('github-actions','0a77751d4307d7e923bf2d05bf49084e77a23d7f1e498a1373202dd1ebdcc48a');\nhashMap.set('gitlabci','33c264edf7837fb8fbc4cf0078c8bd2d5a75431039b1db65bf47356df7753125');\nhashMap.set('gitlabci-include','ef696c478c2ac1723b3aca070ba9779be0e702fff0844054251ba0029523d0eb');\nhashMap.set('glasskube','93e7b9000a17efa15a1abaaf320b5af9169b1ecd828fc0c881d98570ef9d9e30');\nhashMap.set('gleam','02389785183c39d2896d7893414c5e1060023f95c1fe7b595bd06cc5c1186d39');\nhashMap.set('gomod','7e9befd57c32420da2061445defde5a02bebf4898bef0106614bab95a8713a2f');\nhashMap.set('gradle','550f1107f0ac27d18fa76a7d5c0c0b317b5df4156fc12cfd378573ccfe26fca0');\nhashMap.set('gradle-wrapper','799d9bb8d9dead673fb513ba4936395f14da30897d33a9df46b3266e1b835d5d');\nhashMap.set('haskell-cabal','f232d0e883235f74ed71fd9de4a7468e5fcbda9a1af5beb56c24657f7bf2e891');\nhashMap.set('helm-requirements','4d90e5e18a380876ad48e21e1ad88ea62e25d973a1ddaa3763447fc0a9f9915b');\nhashMap.set('helm-values','b5c52c6a27d805557418c585c5d3030c95ee641d53057021f3fe060f81b6e1af');\nhashMap.set('helmfile','ab828a1877cfe029ed5f8dd2a026409cd5e6431705af3aac3f56a3bc4f827508');\nhashMap.set('helmsman','ef9680c612f702c7f07aea9b6e5d811e91214dcfa5755c9f3803e9528090935e');\nhashMap.set('helmv3','4088a90bd8be4ae1bcb85dc4d34d3fbbb75e72bd33d144284e7e1f0e726c8d3b');\nhashMap.set('hermit','61e132cfccbe4e3884801a3728f3391455c214811a33c1f733b0dea7122bbbb6');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','9c64a4f1475b1c2052372e566c9190f32ae8acd1c54313031d55ae8772388367');\nhashMap.set('html','67c5f3c5c58e96f5dd257ba5987d900cf7fef81d667c3640e96c847b37de35a8');\nhashMap.set('jenkins','268ebfc8a1caf3edeb2192c2b1b2fa4bf18a78a3e731ba20a6c104940a5539f3');\nhashMap.set('jsonnet-bundler','4023ef4cac55fe58f8d9744ae86b13532298926e35e22d250334cde55c3386ff');\nhashMap.set('kotlin-script','99ef296792a0ca575ed31d3defb514b05a58083dc01c52ea0890c69d867ba1dd');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','fb5f6fbf45b318ca277d6d9f7fee22680f4b99c7ff9170a50315122918d2e007');\nhashMap.set('leiningen','133fca2c3423f53f2ccc22518153ddbcafbf0f4812376c77e952eb3d24d81f85');\nhashMap.set('maven','f084cdc88320ca1e82af957d0008e7c9ce991d3282cb428f3108a5722239cead');\nhashMap.set('maven-wrapper','779344a4e259e0c28bfadfeb435dd72feb7224d7346d038a1c35f02deb1357bc');\nhashMap.set('meteor','4a93a326b27bedfe52118e27e06f39fecd7c55bd4cd7fccec4cb120cac14cec4');\nhashMap.set('mint','248fe4f1ea5c985921c286785792c97e06fc41f402b2d45df82f6aecd17f710e');\nhashMap.set('mise','8463d355091f5f167e3f4a8adbebfe49310ad9ac45c89d60455ef8e110df4a49');\nhashMap.set('mix','5eb001e2af7cd664d811ad2d9928bf785527ed292de1e567de57f7e2cecc1ecc');\nhashMap.set('nix','d3283c2b948695a16c1089da4e2689faacd50eaa7d734d6fa5d6661aef6db7e7');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','95ddcec26d4db9ee54028f00fdcac118c458cd1513623737dd1b3f79d05a11a4');\nhashMap.set('nuget','d4f3c5cbc0f6e6e8baf80b8ad8e184d186ff6686486b1c97995a0c87151abbe3');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','32233a1a8a2725699d7448ba438e3d0b78141f7799cd2b588de278d41e26ed10');\nhashMap.set('pep621','f5dc3c8434845dd814bc649c619323dcb69e3ec5da2d361d353bdf6ae3cc5d88');\nhashMap.set('pep723','b96683163de63ed93207ec0538066705b1e58a1cd5b8bd11c63fc28b26bddba1');\nhashMap.set('pip-compile','9711b1c00da18ff785e624c50e4b042519e7ad615c5f018f08459fac8394fec5');\nhashMap.set('pip_requirements','537ef9d7b43b5adcfbfbb86392e0c7a8a0ee91c804118af83cf92e1868949e1a');\nhashMap.set('pip_setup','0175fe550c19d9bd31c978bd83fdc088cb40fcacd5d6751f640164274ae64e61');\nhashMap.set('pipenv','a7d45859427263c17f1109a08c8b48a1f24812290f9853013ec1774f2484a769');\nhashMap.set('pixi','3732f052617efd5007ddbe31091a2ba026909288bac4cbbe6d2bd6ac64d85393');\nhashMap.set('poetry','6cf6bc5116458761b2d6779caf465d6e26768fbe6e2ffba54b5da981aa8c385f');\nhashMap.set('pre-commit','17a5f183985ebffe98785a541d3609bf25efedc387deb3d50e9f00f02b25f615');\nhashMap.set('proto','412053d4550026b4ace490b46e970915b87ec1abf0b0a0c6c8c58ccf1fc16843');\nhashMap.set('pub','a2ded51959d48e053b811b3b9330b2460fc61d0fc2e74a400a546e4f82d25767');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','e1fc88a4e14cd595e89bb3d79b4adf2add3ce5eb80f75276e712c32598cca53d');\nhashMap.set('renovate-config','ca60beee2e3b871ea1216fa9df9a501f7ed355fe7da29e12509e56a124a78e69');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('rust-toolchain','6ace53db02874d73620d2d872291839820a512a9529c42d174358c692e5db720');\nhashMap.set('sbt','e508c2e2fb8d44e6cbec20f449c8eed096728566e6058187269c637930d388fb');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','7dea08c5708625e753bd56918bc214df7fb4d8543a26e936926a21ab43b5f785');\nhashMap.set('smithy','9641b91d065ffb63be0dd888139a0402dba41e550f8b44c592db9daf52109100');\nhashMap.set('sveltos','05b3158e88771ed4629e171592cf4f1bf0ff342f8aeae89be0b340c630cc6d8e');\nhashMap.set('swift','eb5f7c3c4dabf28eed36916269ca9be16ab9ddb83993db03ea66b9195ad7bdc6');\nhashMap.set('tekton','fdc5b9b5edec2a90cda2f858f3ebc532aa8efb1187d1e0b7c89b07796e9cb6cd');\nhashMap.set('terraform','b6723d78863803e688d2b85cc72bc43657d79ff0cca3bc719e7d96cfd34ceb69');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','ffcbaa67dd65f064d43f8c121c1006115eab1879c4bd38de263b9b90a009c118');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','31247d37bc80aae17039bfa21bd989c5717730c5ef10cf2a6f09841576d012ec');\nhashMap.set('travis','bb482a0195cd009ec3896a6227bb95617f5c84bedb518c7d971e50c62235d9ca');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','ee9cc316c73ab0944da494bf36cfeafba8e79a36ec77753b9f341c8e80f1d602');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('xcodegen','dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683');\nhashMap.set('jsonata','416bcf61144b276b3112814c6e6d261aa29608f46fbb0516c471d35c16f8f0d7');\nhashMap.set('regex','dbe6889ea021a05127fed06226d73366fdada2ae577147a5c027996fd325416e');"],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { parseYaml } from "../../../util/yaml.js";
|
|
|
3
3
|
import { id } from "../../versioning/docker/index.js";
|
|
4
4
|
import { getDep } from "../dockerfile/extract.js";
|
|
5
5
|
import { matchesHelmValuesDockerHeuristic, matchesHelmValuesInlineImage } from "./util.js";
|
|
6
|
+
import { isObject } from "@sindresorhus/is";
|
|
6
7
|
//#region lib/modules/manager/helm-values/extract.ts
|
|
7
8
|
function getHelmDep(registry, repository, tag, registryAliases) {
|
|
8
9
|
const dep = getDep(`${registry}${repository}:${tag}`, false, registryAliases);
|
|
@@ -20,7 +21,7 @@ function findDependencies(parsedContent, registryAliases) {
|
|
|
20
21
|
return findDependenciesInternal(parsedContent, [], registryAliases);
|
|
21
22
|
}
|
|
22
23
|
function findDependenciesInternal(parsedContent, packageDependencies, registryAliases) {
|
|
23
|
-
if (!parsedContent
|
|
24
|
+
if (!isObject(parsedContent)) return packageDependencies;
|
|
24
25
|
Object.entries(parsedContent).forEach(([key, value]) => {
|
|
25
26
|
if (matchesHelmValuesDockerHeuristic(key, value)) {
|
|
26
27
|
const currentItem = value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","names":["dockerVersioning"],"sources":["../../../../lib/modules/manager/helm-values/extract.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport { parseYaml } from '../../../util/yaml.ts';\nimport { id as dockerVersioning } from '../../versioning/docker/index.ts';\nimport { getDep } from '../dockerfile/extract.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFileContent,\n} from '../types.ts';\nimport type { HelmDockerImageDependency } from './types.ts';\nimport {\n matchesHelmValuesDockerHeuristic,\n matchesHelmValuesInlineImage,\n} from './util.ts';\n\nfunction getHelmDep(\n registry: string,\n repository: string,\n tag: string,\n registryAliases: Record<string, string> | undefined,\n): PackageDependency {\n const dep = getDep(`${registry}${repository}:${tag}`, false, registryAliases);\n dep.replaceString = tag;\n dep.versioning = dockerVersioning;\n dep.autoReplaceStringTemplate =\n '{{newValue}}{{#if newDigest}}@{{newDigest}}{{/if}}';\n return dep;\n}\n\n/**\n * Recursively find all supported dependencies in the yaml object.\n *\n * @param parsedContent\n */\nexport function findDependencies(\n parsedContent: Record<string, unknown> | HelmDockerImageDependency,\n registryAliases: Record<string, string> | undefined,\n): PackageDependency[] {\n return findDependenciesInternal(parsedContent, [], registryAliases);\n}\nexport function findDependenciesInternal(\n parsedContent: Record<string, unknown> | HelmDockerImageDependency,\n packageDependencies: PackageDependency[],\n registryAliases: Record<string, string> | undefined,\n): PackageDependency[] {\n if (!parsedContent
|
|
1
|
+
{"version":3,"file":"extract.js","names":["dockerVersioning"],"sources":["../../../../lib/modules/manager/helm-values/extract.ts"],"sourcesContent":["import { isObject } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { parseYaml } from '../../../util/yaml.ts';\nimport { id as dockerVersioning } from '../../versioning/docker/index.ts';\nimport { getDep } from '../dockerfile/extract.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFileContent,\n} from '../types.ts';\nimport type { HelmDockerImageDependency } from './types.ts';\nimport {\n matchesHelmValuesDockerHeuristic,\n matchesHelmValuesInlineImage,\n} from './util.ts';\n\nfunction getHelmDep(\n registry: string,\n repository: string,\n tag: string,\n registryAliases: Record<string, string> | undefined,\n): PackageDependency {\n const dep = getDep(`${registry}${repository}:${tag}`, false, registryAliases);\n dep.replaceString = tag;\n dep.versioning = dockerVersioning;\n dep.autoReplaceStringTemplate =\n '{{newValue}}{{#if newDigest}}@{{newDigest}}{{/if}}';\n return dep;\n}\n\n/**\n * Recursively find all supported dependencies in the yaml object.\n *\n * @param parsedContent\n */\nexport function findDependencies(\n parsedContent: Record<string, unknown> | HelmDockerImageDependency,\n registryAliases: Record<string, string> | undefined,\n): PackageDependency[] {\n return findDependenciesInternal(parsedContent, [], registryAliases);\n}\nexport function findDependenciesInternal(\n parsedContent: Record<string, unknown> | HelmDockerImageDependency,\n packageDependencies: PackageDependency[],\n registryAliases: Record<string, string> | undefined,\n): PackageDependency[] {\n if (!isObject(parsedContent)) {\n return packageDependencies;\n }\n\n Object.entries(parsedContent).forEach(([key, value]) => {\n if (matchesHelmValuesDockerHeuristic(key, value)) {\n const currentItem = value;\n\n let registry = currentItem.registry;\n registry = registry ? `${registry}/` : '';\n const repository = String(currentItem.repository);\n const tag = `${currentItem.tag ?? currentItem.version}`;\n packageDependencies.push(\n getHelmDep(registry, repository, tag, registryAliases),\n );\n } else if (matchesHelmValuesInlineImage(key, value)) {\n packageDependencies.push(getDep(value, true, registryAliases));\n } else {\n findDependenciesInternal(\n value as Record<string, unknown>,\n packageDependencies,\n registryAliases,\n );\n }\n });\n return packageDependencies;\n}\n\nexport function extractPackageFile(\n content: string,\n packageFile: string,\n config: ExtractConfig,\n): PackageFileContent | null {\n let parsedContent: Record<string, unknown>[] | HelmDockerImageDependency[];\n try {\n // a parser that allows extracting line numbers would be preferable, with\n // the current approach we need to match anything we find again during the update\n // TODO: fix me (#9610)\n parsedContent = parseYaml(content) as any;\n } catch (err) {\n logger.debug({ err, packageFile }, 'Failed to parse helm-values YAML');\n return null;\n }\n try {\n const deps: PackageDependency[] = [];\n\n for (const con of parsedContent) {\n deps.push(...findDependencies(con, config.registryAliases));\n }\n\n if (deps.length) {\n return { deps };\n }\n } catch (err) /* istanbul ignore next */ {\n logger.debug(\n { err, packageFile },\n 'Error parsing helm-values parsed content',\n );\n }\n return null;\n}\n"],"mappings":";;;;;;;AAgBA,SAAS,WACP,UACA,YACA,KACA,iBACmB;CACnB,MAAM,MAAM,OAAO,GAAG,WAAW,WAAW,GAAG,OAAO,OAAO,eAAe;CAC5E,IAAI,gBAAgB;CACpB,IAAI,aAAaA;CACjB,IAAI,4BACF;CACF,OAAO;AACT;;;;;;AAOA,SAAgB,iBACd,eACA,iBACqB;CACrB,OAAO,yBAAyB,eAAe,CAAC,GAAG,eAAe;AACpE;AACA,SAAgB,yBACd,eACA,qBACA,iBACqB;CACrB,IAAI,CAAC,SAAS,aAAa,GACzB,OAAO;CAGT,OAAO,QAAQ,aAAa,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW;EACtD,IAAI,iCAAiC,KAAK,KAAK,GAAG;GAChD,MAAM,cAAc;GAEpB,IAAI,WAAW,YAAY;GAC3B,WAAW,WAAW,GAAG,SAAS,KAAK;GACvC,MAAM,aAAa,OAAO,YAAY,UAAU;GAChD,MAAM,MAAM,GAAG,YAAY,OAAO,YAAY;GAC9C,oBAAoB,KAClB,WAAW,UAAU,YAAY,KAAK,eAAe,CACvD;EACF,OAAO,IAAI,6BAA6B,KAAK,KAAK,GAChD,oBAAoB,KAAK,OAAO,OAAO,MAAM,eAAe,CAAC;OAE7D,yBACE,OACA,qBACA,eACF;CAEJ,CAAC;CACD,OAAO;AACT;AAEA,SAAgB,mBACd,SACA,aACA,QAC2B;CAC3B,IAAI;CACJ,IAAI;EAIF,gBAAgB,UAAU,OAAO;CACnC,SAAS,KAAK;EACZ,OAAO,MAAM;GAAE;GAAK;EAAY,GAAG,kCAAkC;EACrE,OAAO;CACT;CACA,IAAI;EACF,MAAM,OAA4B,CAAC;EAEnC,KAAK,MAAM,OAAO,eAChB,KAAK,KAAK,GAAG,iBAAiB,KAAK,OAAO,eAAe,CAAC;EAG5D,IAAI,KAAK,QACP,OAAO,EAAE,KAAK;CAElB,SAAS,gCAAgC;EACvC,OAAO,MACL;GAAE;GAAK;EAAY,GACnB,0CACF;CACF;CACA,OAAO;AACT"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { regEx } from "../../../util/regex.js";
|
|
2
2
|
import { hasKey } from "../../../util/object.js";
|
|
3
|
+
import { isObject, isString } from "@sindresorhus/is";
|
|
3
4
|
//#region lib/modules/manager/helm-values/util.ts
|
|
4
5
|
const parentKeyRe = regEx(/image$/i);
|
|
5
6
|
/**
|
|
@@ -21,10 +22,10 @@ const parentKeyRe = regEx(/image$/i);
|
|
|
21
22
|
* tag: v1.0.0
|
|
22
23
|
*/
|
|
23
24
|
function matchesHelmValuesDockerHeuristic(parentKey, data) {
|
|
24
|
-
return !!(parentKeyRe.test(parentKey) && data &&
|
|
25
|
+
return !!(parentKeyRe.test(parentKey) && isObject(data) && hasKey("repository", data) && (hasKey("tag", data) || hasKey("version", data)));
|
|
25
26
|
}
|
|
26
27
|
function matchesHelmValuesInlineImage(parentKey, data) {
|
|
27
|
-
return !!(parentKeyRe.test(parentKey) && data &&
|
|
28
|
+
return !!(parentKeyRe.test(parentKey) && data && isString(data));
|
|
28
29
|
}
|
|
29
30
|
//#endregion
|
|
30
31
|
export { matchesHelmValuesDockerHeuristic, matchesHelmValuesInlineImage };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","names":[],"sources":["../../../../lib/modules/manager/helm-values/util.ts"],"sourcesContent":["import { hasKey } from '../../../util/object.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport type { HelmDockerImageDependency } from './types.ts';\n\nconst parentKeyRe = regEx(/image$/i);\n\n/**\n * Type guard to determine whether a given partial Helm values.yaml object potentially\n * defines a Helm Docker dependency.\n *\n * There is no exact standard of how Docker dependencies are defined in Helm\n * values.yaml files (as of February 26th 2021), this function defines a\n * heuristic based on the most commonly used format in the Helm charts:\n *\n * image:\n * repository: 'something'\n * tag: v1.0.0\n * image:\n * repository: 'something'\n * version: v1.0.0\n * renovateImage:\n * repository: 'something'\n * tag: v1.0.0\n */\nexport function matchesHelmValuesDockerHeuristic(\n parentKey: string,\n data: unknown,\n): data is HelmDockerImageDependency {\n return !!(\n parentKeyRe.test(parentKey) &&\n data &&\n
|
|
1
|
+
{"version":3,"file":"util.js","names":[],"sources":["../../../../lib/modules/manager/helm-values/util.ts"],"sourcesContent":["import { isObject, isString } from '@sindresorhus/is';\nimport { hasKey } from '../../../util/object.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport type { HelmDockerImageDependency } from './types.ts';\n\nconst parentKeyRe = regEx(/image$/i);\n\n/**\n * Type guard to determine whether a given partial Helm values.yaml object potentially\n * defines a Helm Docker dependency.\n *\n * There is no exact standard of how Docker dependencies are defined in Helm\n * values.yaml files (as of February 26th 2021), this function defines a\n * heuristic based on the most commonly used format in the Helm charts:\n *\n * image:\n * repository: 'something'\n * tag: v1.0.0\n * image:\n * repository: 'something'\n * version: v1.0.0\n * renovateImage:\n * repository: 'something'\n * tag: v1.0.0\n */\nexport function matchesHelmValuesDockerHeuristic(\n parentKey: string,\n data: unknown,\n): data is HelmDockerImageDependency {\n return !!(\n parentKeyRe.test(parentKey) &&\n isObject(data) &&\n hasKey('repository', data) &&\n (hasKey('tag', data) || hasKey('version', data))\n );\n}\n\nexport function matchesHelmValuesInlineImage(\n parentKey: string,\n data: unknown,\n): data is string {\n return !!(parentKeyRe.test(parentKey) && data && isString(data));\n}\n"],"mappings":";;;;AAKA,MAAM,cAAc,MAAM,SAAS;;;;;;;;;;;;;;;;;;;AAoBnC,SAAgB,iCACd,WACA,MACmC;CACnC,OAAO,CAAC,EACN,YAAY,KAAK,SAAS,KAC1B,SAAS,IAAI,KACb,OAAO,cAAc,IAAI,MACxB,OAAO,OAAO,IAAI,KAAK,OAAO,WAAW,IAAI;AAElD;AAEA,SAAgB,6BACd,WACA,MACgB;CAChB,OAAO,CAAC,EAAE,YAAY,KAAK,SAAS,KAAK,QAAQ,SAAS,IAAI;AAChE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency.js","names":[],"sources":["../../../../../../lib/modules/manager/npm/extract/common/dependency.ts"],"sourcesContent":["import { isString } from '@sindresorhus/is';\nimport validateNpmPackageName from 'validate-npm-package-name';\nimport { logger } from '../../../../../logger/index.ts';\nimport type { ConstraintName } from '../../../../../util/exec/types.ts';\nimport { isConstraintName } from '../../../../../util/exec/types.ts';\nimport { regEx } from '../../../../../util/regex.ts';\nimport { GithubTagsDatasource } from '../../../../datasource/github-tags/index.ts';\nimport { NodeVersionDatasource } from '../../../../datasource/node-version/index.ts';\nimport { NpmDatasource } from '../../../../datasource/npm/index.ts';\nimport {\n api,\n isValid,\n isVersion,\n id as npmVersioningId,\n} from '../../../../versioning/npm/index.ts';\nimport type { PackageDependency } from '../../../types.ts';\n\nconst RE_REPOSITORY_GITHUB_SSH_FORMAT = regEx(\n /(?:git@)github.com:([^/]+)\\/([^/]+?)(?:\\.git)?$/,\n);\n\nexport function parseDepName(depType: string, key: string): string {\n if (depType !== 'resolutions') {\n return key;\n }\n\n // Yarn selective dependency resolutions may nest a path of parent\n // packages before the target package, e.g. `parent/child` or\n // `@scope/parent/child`, and any segment (including the last) may carry\n // a `@range` suffix used to disambiguate which version of that package\n // to match, e.g. `@cypress/request/qs@~6.14.1`.\n const parts = key.split('/');\n const segments: string[] = [];\n for (let i = 0; i < parts.length; i += 1) {\n const part = parts[i];\n if (part.startsWith('@') && i + 1 < parts.length) {\n i += 1;\n segments.push(`${part}/${parts[i]}`);\n } else {\n segments.push(part);\n }\n }\n\n const lastSegment = segments.at(-1);\n const [, depName] =\n regEx(/^((?:@[^/]+\\/)?[^@]+)/).exec(lastSegment ?? '') ?? [];\n return depName;\n}\n\nexport function extractDependency(\n depType: string,\n depName: string,\n input: string,\n): PackageDependency {\n const dep: PackageDependency = {};\n if (!validateNpmPackageName(depName).validForOldPackages) {\n dep.skipReason = 'invalid-name';\n return dep;\n }\n if (typeof input !== 'string') {\n dep.skipReason = 'invalid-value';\n return dep;\n }\n dep.currentValue = input.trim();\n if (depType === 'engines' || depType === 'packageManager') {\n if (depName === 'node') {\n dep.datasource = NodeVersionDatasource.id;\n } else if (depName === 'yarn') {\n dep.datasource = NpmDatasource.id;\n dep.commitMessageTopic = 'Yarn';\n const major =\n isVersion(dep.currentValue) && api.getMajor(dep.currentValue);\n if (major && major > 1) {\n dep.packageName = '@yarnpkg/cli';\n }\n } else if (depName === 'npm') {\n dep.datasource = NpmDatasource.id;\n dep.commitMessageTopic = 'npm';\n } else if (depName === 'pnpm') {\n dep.datasource = NpmDatasource.id;\n dep.commitMessageTopic = 'pnpm';\n } else if (depName === 'vscode') {\n dep.datasource = GithubTagsDatasource.id;\n dep.packageName = 'microsoft/vscode';\n dep.versioning = npmVersioningId;\n } else {\n dep.skipReason = 'unknown-engines';\n }\n if (!isValid(dep.currentValue)) {\n dep.skipReason = 'unspecified-version';\n }\n return dep;\n }\n\n // support for volta\n if (depType === 'volta') {\n if (depName === 'node') {\n dep.datasource = NodeVersionDatasource.id;\n } else if (depName === 'yarn') {\n dep.datasource = NpmDatasource.id;\n dep.commitMessageTopic = 'Yarn';\n const major =\n isVersion(dep.currentValue) && api.getMajor(dep.currentValue);\n if (major && major > 1) {\n dep.packageName = '@yarnpkg/cli';\n }\n } else if (depName === 'npm') {\n dep.datasource = NpmDatasource.id;\n } else if (depName === 'pnpm') {\n dep.datasource = NpmDatasource.id;\n dep.commitMessageTopic = 'pnpm';\n } else {\n dep.skipReason = 'unknown-volta';\n }\n if (!isValid(dep.currentValue)) {\n dep.skipReason = 'unspecified-version';\n }\n return dep;\n }\n\n if (dep.currentValue.startsWith('npm:')) {\n dep.npmPackageAlias = true;\n const valSplit = dep.currentValue.replace('npm:', '').split('@');\n if (valSplit.length === 1) {\n dep.packageName = depName;\n dep.currentValue = valSplit[0];\n } else if (valSplit.length === 2) {\n dep.packageName = valSplit[0];\n dep.currentValue = valSplit[1];\n } else if (valSplit.length === 3) {\n dep.packageName = `${valSplit[0]}@${valSplit[1]}`;\n dep.currentValue = valSplit[2];\n } else {\n logger.debug(\n `Invalid npm package alias for dependency: \"${depName}\":\"${dep.currentValue}\"`,\n );\n }\n }\n if (dep.currentValue.startsWith('file:')) {\n dep.skipReason = 'file';\n return dep;\n }\n\n if (isValid(dep.currentValue)) {\n dep.datasource = NpmDatasource.id;\n if (dep.currentValue === '') {\n dep.skipReason = 'empty';\n }\n return dep;\n }\n const hashSplit = dep.currentValue.split('#');\n if (hashSplit.length !== 2) {\n dep.skipReason = 'unspecified-version';\n return dep;\n }\n const [depNamePart, depRefPart] = hashSplit;\n\n let githubOwnerRepo: string;\n let githubOwner: string;\n let githubRepo: string;\n const matchUrlSshFormat = RE_REPOSITORY_GITHUB_SSH_FORMAT.exec(depNamePart);\n if (matchUrlSshFormat === null) {\n githubOwnerRepo = depNamePart\n .replace(regEx(/^github:/), '')\n .replace(regEx(/^git\\+/), '')\n .replace(regEx(/^https:\\/\\/github\\.com\\//), '')\n .replace(regEx(/\\.git$/), '');\n const githubRepoSplit = githubOwnerRepo.split('/');\n if (githubRepoSplit.length !== 2) {\n dep.skipReason = 'unspecified-version';\n return dep;\n }\n [githubOwner, githubRepo] = githubRepoSplit;\n } else {\n githubOwner = matchUrlSshFormat[1];\n githubRepo = matchUrlSshFormat[2];\n githubOwnerRepo = `${githubOwner}/${githubRepo}`;\n }\n const githubOwnerRegex = /^[a-z\\d](?:[a-z\\d]|-(?=[a-z\\d])){0,38}$/i; // TODO #12872 lookahead\n const githubRepoRegex = regEx(/^[a-zA-Z0-9._-]{1,100}$/);\n if (\n !githubOwnerRegex.test(githubOwner) ||\n !githubRepoRegex.test(githubRepo)\n ) {\n dep.skipReason = 'unspecified-version';\n return dep;\n }\n if (isVersion(depRefPart)) {\n dep.currentRawValue = dep.currentValue;\n dep.currentValue = depRefPart;\n dep.datasource = GithubTagsDatasource.id;\n dep.versioning = npmVersioningId;\n dep.packageName = githubOwnerRepo;\n dep.pinDigests = false;\n } else if (\n regEx(/^[0-9a-f]{7}$/).test(depRefPart) ||\n regEx(/^[0-9a-f]{40}$/).test(depRefPart)\n ) {\n dep.currentRawValue = dep.currentValue;\n dep.currentValue = null;\n dep.currentDigest = depRefPart;\n dep.datasource = GithubTagsDatasource.id;\n dep.versioning = npmVersioningId;\n dep.packageName = githubOwnerRepo;\n } else {\n // <protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish> | #semver:<semver>]\n // https://docs.npmjs.com/cli/v10/configuring-npm/package-json#git-urls-as-dependencies\n const len = 7; // length of 'semver:'\n const maybeVersion = depRefPart.substring(len);\n\n if (depRefPart.startsWith('semver:') && isValid(maybeVersion)) {\n dep.currentRawValue = dep.currentValue;\n dep.currentValue = maybeVersion;\n dep.datasource = GithubTagsDatasource.id;\n dep.versioning = npmVersioningId;\n dep.packageName = githubOwnerRepo;\n dep.pinDigests = false;\n } else {\n dep.skipReason = 'unversioned-reference';\n return dep;\n }\n }\n dep.sourceUrl = `https://github.com/${githubOwnerRepo}`;\n dep.gitRef = true;\n return dep;\n}\n\nexport function getExtractedConstraints(\n deps: PackageDependency[],\n): Partial<Record<ConstraintName, string>> {\n const extractedConstraints: Partial<Record<ConstraintName, string>> = {};\n const constraints: ConstraintName[] = [\n 'node',\n 'yarn',\n 'npm',\n 'pnpm',\n 'vscode',\n ];\n for (const dep of deps) {\n if (\n !dep.skipReason &&\n (dep.depType === 'engines' || dep.depType === 'packageManager') &&\n dep.depName &&\n isConstraintName(dep.depName) &&\n constraints.includes(dep.depName) &&\n isString(dep.currentValue)\n ) {\n extractedConstraints[dep.depName] = dep.currentValue;\n }\n }\n return extractedConstraints;\n}\n"],"mappings":";;;;;;;;;;AAiBA,MAAM,kCAAkC,MACtC,iDACF;AAEA,SAAgB,aAAa,SAAiB,KAAqB;CACjE,IAAI,YAAY,eACd,OAAO;CAQT,MAAM,QAAQ,IAAI,MAAM,GAAG;CAC3B,MAAM,WAAqB,CAAC;CAC5B,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;EACxC,MAAM,OAAO,MAAM;EACnB,IAAI,KAAK,WAAW,GAAG,KAAK,IAAI,IAAI,MAAM,QAAQ;GAChD,KAAK;GACL,SAAS,KAAK,GAAG,KAAK,GAAG,MAAM,IAAI;EACrC,OACE,SAAS,KAAK,IAAI;CAEtB;CAEA,MAAM,cAAc,SAAS,GAAG,EAAE;CAClC,MAAM,GAAG,WACP,MAAM,uBAAuB,CAAC,CAAC,KAAK,eAAe,EAAE,KAAK,CAAC;CAC7D,OAAO;AACT;AAEA,SAAgB,kBACd,SACA,SACA,OACmB;CACnB,MAAM,MAAyB,CAAC;CAChC,IAAI,CAAC,uBAAuB,OAAO,CAAC,CAAC,qBAAqB;EACxD,IAAI,aAAa;EACjB,OAAO;CACT;CACA,IAAI,OAAO,UAAU,UAAU;EAC7B,IAAI,aAAa;EACjB,OAAO;CACT;CACA,IAAI,eAAe,MAAM,KAAK;CAC9B,IAAI,YAAY,aAAa,YAAY,kBAAkB;EACzD,IAAI,YAAY,QACd,IAAI,aAAa,sBAAsB;OAClC,IAAI,YAAY,QAAQ;GAC7B,IAAI,aAAa,cAAc;GAC/B,IAAI,qBAAqB;GACzB,MAAM,QACJ,UAAU,IAAI,YAAY,KAAK,IAAI,SAAS,IAAI,YAAY;GAC9D,IAAI,SAAS,QAAQ,GACnB,IAAI,cAAc;EAEtB,OAAO,IAAI,YAAY,OAAO;GAC5B,IAAI,aAAa,cAAc;GAC/B,IAAI,qBAAqB;EAC3B,OAAO,IAAI,YAAY,QAAQ;GAC7B,IAAI,aAAa,cAAc;GAC/B,IAAI,qBAAqB;EAC3B,OAAO,IAAI,YAAY,UAAU;GAC/B,IAAI,aAAa,qBAAqB;GACtC,IAAI,cAAc;GAClB,IAAI,aAAA;EACN,OACE,IAAI,aAAa;EAEnB,IAAI,CAAC,QAAQ,IAAI,YAAY,GAC3B,IAAI,aAAa;EAEnB,OAAO;CACT;CAGA,IAAI,YAAY,SAAS;EACvB,IAAI,YAAY,QACd,IAAI,aAAa,sBAAsB;OAClC,IAAI,YAAY,QAAQ;GAC7B,IAAI,aAAa,cAAc;GAC/B,IAAI,qBAAqB;GACzB,MAAM,QACJ,UAAU,IAAI,YAAY,KAAK,IAAI,SAAS,IAAI,YAAY;GAC9D,IAAI,SAAS,QAAQ,GACnB,IAAI,cAAc;EAEtB,OAAO,IAAI,YAAY,OACrB,IAAI,aAAa,cAAc;OAC1B,IAAI,YAAY,QAAQ;GAC7B,IAAI,aAAa,cAAc;GAC/B,IAAI,qBAAqB;EAC3B,OACE,IAAI,aAAa;EAEnB,IAAI,CAAC,QAAQ,IAAI,YAAY,GAC3B,IAAI,aAAa;EAEnB,OAAO;CACT;CAEA,IAAI,IAAI,aAAa,WAAW,MAAM,GAAG;EACvC,IAAI,kBAAkB;EACtB,MAAM,WAAW,IAAI,aAAa,QAAQ,QAAQ,EAAE,CAAC,CAAC,MAAM,GAAG;EAC/D,IAAI,SAAS,WAAW,GAAG;GACzB,IAAI,cAAc;GAClB,IAAI,eAAe,SAAS;EAC9B,OAAO,IAAI,SAAS,WAAW,GAAG;GAChC,IAAI,cAAc,SAAS;GAC3B,IAAI,eAAe,SAAS;EAC9B,OAAO,IAAI,SAAS,WAAW,GAAG;GAChC,IAAI,cAAc,GAAG,SAAS,GAAG,GAAG,SAAS;GAC7C,IAAI,eAAe,SAAS;EAC9B,OACE,OAAO,MACL,8CAA8C,QAAQ,KAAK,IAAI,aAAa,EAC9E;CAEJ;CACA,IAAI,IAAI,aAAa,WAAW,OAAO,GAAG;EACxC,IAAI,aAAa;EACjB,OAAO;CACT;CAEA,IAAI,QAAQ,IAAI,YAAY,GAAG;EAC7B,IAAI,aAAa,cAAc;EAC/B,IAAI,IAAI,iBAAiB,IACvB,IAAI,aAAa;EAEnB,OAAO;CACT;CACA,MAAM,YAAY,IAAI,aAAa,MAAM,GAAG;CAC5C,IAAI,UAAU,WAAW,GAAG;EAC1B,IAAI,aAAa;EACjB,OAAO;CACT;CACA,MAAM,CAAC,aAAa,cAAc;CAElC,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,MAAM,oBAAoB,gCAAgC,KAAK,WAAW;CAC1E,IAAI,sBAAsB,MAAM;EAC9B,kBAAkB,YACf,QAAQ,MAAM,UAAU,GAAG,EAAE,CAAC,CAC9B,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC,CAC5B,QAAQ,MAAM,0BAA0B,GAAG,EAAE,CAAC,CAC9C,QAAQ,MAAM,QAAQ,GAAG,EAAE;EAC9B,MAAM,kBAAkB,gBAAgB,MAAM,GAAG;EACjD,IAAI,gBAAgB,WAAW,GAAG;GAChC,IAAI,aAAa;GACjB,OAAO;EACT;EACA,CAAC,aAAa,cAAc;CAC9B,OAAO;EACL,cAAc,kBAAkB;EAChC,aAAa,kBAAkB;EAC/B,kBAAkB,GAAG,YAAY,GAAG;CACtC;CACA,MAAM,mBAAmB;CACzB,MAAM,kBAAkB,MAAM,yBAAyB;CACvD,IACE,CAAC,iBAAiB,KAAK,WAAW,KAClC,CAAC,gBAAgB,KAAK,UAAU,GAChC;EACA,IAAI,aAAa;EACjB,OAAO;CACT;CACA,IAAI,UAAU,UAAU,GAAG;EACzB,IAAI,kBAAkB,IAAI;EAC1B,IAAI,eAAe;EACnB,IAAI,aAAa,qBAAqB;EACtC,IAAI,aAAA;EACJ,IAAI,cAAc;EAClB,IAAI,aAAa;CACnB,OAAO,IACL,MAAM,eAAe,CAAC,CAAC,KAAK,UAAU,KACtC,MAAM,gBAAgB,CAAC,CAAC,KAAK,UAAU,GACvC;EACA,IAAI,kBAAkB,IAAI;EAC1B,IAAI,eAAe;EACnB,IAAI,gBAAgB;EACpB,IAAI,aAAa,qBAAqB;EACtC,IAAI,aAAA;EACJ,IAAI,cAAc;CACpB,OAAO;EAIL,MAAM,eAAe,WAAW,UAAU,CAAG;EAE7C,IAAI,WAAW,WAAW,SAAS,KAAK,QAAQ,YAAY,GAAG;GAC7D,IAAI,kBAAkB,IAAI;GAC1B,IAAI,eAAe;GACnB,IAAI,aAAa,qBAAqB;GACtC,IAAI,aAAA;GACJ,IAAI,cAAc;GAClB,IAAI,aAAa;EACnB,OAAO;GACL,IAAI,aAAa;GACjB,OAAO;EACT;CACF;CACA,IAAI,YAAY,sBAAsB;CACtC,IAAI,SAAS;CACb,OAAO;AACT;AAEA,SAAgB,wBACd,MACyC;CACzC,MAAM,uBAAgE,CAAC;CACvE,MAAM,cAAgC;EACpC;EACA;EACA;EACA;EACA;CACF;CACA,KAAK,MAAM,OAAO,MAChB,IACE,CAAC,IAAI,eACJ,IAAI,YAAY,aAAa,IAAI,YAAY,qBAC9C,IAAI,WACJ,iBAAiB,IAAI,OAAO,KAC5B,YAAY,SAAS,IAAI,OAAO,KAChC,SAAS,IAAI,YAAY,GAEzB,qBAAqB,IAAI,WAAW,IAAI;CAG5C,OAAO;AACT"}
|
|
1
|
+
{"version":3,"file":"dependency.js","names":[],"sources":["../../../../../../lib/modules/manager/npm/extract/common/dependency.ts"],"sourcesContent":["import { isString } from '@sindresorhus/is';\nimport validateNpmPackageName from 'validate-npm-package-name';\nimport { logger } from '../../../../../logger/index.ts';\nimport type { ConstraintName } from '../../../../../util/exec/types.ts';\nimport { isConstraintName } from '../../../../../util/exec/types.ts';\nimport { regEx } from '../../../../../util/regex.ts';\nimport { GithubTagsDatasource } from '../../../../datasource/github-tags/index.ts';\nimport { NodeVersionDatasource } from '../../../../datasource/node-version/index.ts';\nimport { NpmDatasource } from '../../../../datasource/npm/index.ts';\nimport {\n api,\n isValid,\n isVersion,\n id as npmVersioningId,\n} from '../../../../versioning/npm/index.ts';\nimport type { PackageDependency } from '../../../types.ts';\n\nconst RE_REPOSITORY_GITHUB_SSH_FORMAT = regEx(\n /(?:git@)github.com:([^/]+)\\/([^/]+?)(?:\\.git)?$/,\n);\n\nexport function parseDepName(depType: string, key: string): string {\n if (depType !== 'resolutions') {\n return key;\n }\n\n // Yarn selective dependency resolutions may nest a path of parent\n // packages before the target package, e.g. `parent/child` or\n // `@scope/parent/child`, and any segment (including the last) may carry\n // a `@range` suffix used to disambiguate which version of that package\n // to match, e.g. `@cypress/request/qs@~6.14.1`.\n const parts = key.split('/');\n const segments: string[] = [];\n for (let i = 0; i < parts.length; i += 1) {\n const part = parts[i];\n if (part.startsWith('@') && i + 1 < parts.length) {\n i += 1;\n segments.push(`${part}/${parts[i]}`);\n } else {\n segments.push(part);\n }\n }\n\n const lastSegment = segments.at(-1);\n const [, depName] =\n regEx(/^((?:@[^/]+\\/)?[^@]+)/).exec(lastSegment ?? '') ?? [];\n return depName;\n}\n\nexport function extractDependency(\n depType: string,\n depName: string,\n input: string,\n): PackageDependency {\n const dep: PackageDependency = {};\n if (!validateNpmPackageName(depName).validForOldPackages) {\n dep.skipReason = 'invalid-name';\n return dep;\n }\n if (!isString(input)) {\n dep.skipReason = 'invalid-value';\n return dep;\n }\n dep.currentValue = input.trim();\n if (depType === 'engines' || depType === 'packageManager') {\n if (depName === 'node') {\n dep.datasource = NodeVersionDatasource.id;\n } else if (depName === 'yarn') {\n dep.datasource = NpmDatasource.id;\n dep.commitMessageTopic = 'Yarn';\n const major =\n isVersion(dep.currentValue) && api.getMajor(dep.currentValue);\n if (major && major > 1) {\n dep.packageName = '@yarnpkg/cli';\n }\n } else if (depName === 'npm') {\n dep.datasource = NpmDatasource.id;\n dep.commitMessageTopic = 'npm';\n } else if (depName === 'pnpm') {\n dep.datasource = NpmDatasource.id;\n dep.commitMessageTopic = 'pnpm';\n } else if (depName === 'vscode') {\n dep.datasource = GithubTagsDatasource.id;\n dep.packageName = 'microsoft/vscode';\n dep.versioning = npmVersioningId;\n } else {\n dep.skipReason = 'unknown-engines';\n }\n if (!isValid(dep.currentValue)) {\n dep.skipReason = 'unspecified-version';\n }\n return dep;\n }\n\n // support for volta\n if (depType === 'volta') {\n if (depName === 'node') {\n dep.datasource = NodeVersionDatasource.id;\n } else if (depName === 'yarn') {\n dep.datasource = NpmDatasource.id;\n dep.commitMessageTopic = 'Yarn';\n const major =\n isVersion(dep.currentValue) && api.getMajor(dep.currentValue);\n if (major && major > 1) {\n dep.packageName = '@yarnpkg/cli';\n }\n } else if (depName === 'npm') {\n dep.datasource = NpmDatasource.id;\n } else if (depName === 'pnpm') {\n dep.datasource = NpmDatasource.id;\n dep.commitMessageTopic = 'pnpm';\n } else {\n dep.skipReason = 'unknown-volta';\n }\n if (!isValid(dep.currentValue)) {\n dep.skipReason = 'unspecified-version';\n }\n return dep;\n }\n\n if (dep.currentValue.startsWith('npm:')) {\n dep.npmPackageAlias = true;\n const valSplit = dep.currentValue.replace('npm:', '').split('@');\n if (valSplit.length === 1) {\n dep.packageName = depName;\n dep.currentValue = valSplit[0];\n } else if (valSplit.length === 2) {\n dep.packageName = valSplit[0];\n dep.currentValue = valSplit[1];\n } else if (valSplit.length === 3) {\n dep.packageName = `${valSplit[0]}@${valSplit[1]}`;\n dep.currentValue = valSplit[2];\n } else {\n logger.debug(\n `Invalid npm package alias for dependency: \"${depName}\":\"${dep.currentValue}\"`,\n );\n }\n }\n if (dep.currentValue.startsWith('file:')) {\n dep.skipReason = 'file';\n return dep;\n }\n\n if (isValid(dep.currentValue)) {\n dep.datasource = NpmDatasource.id;\n if (dep.currentValue === '') {\n dep.skipReason = 'empty';\n }\n return dep;\n }\n const hashSplit = dep.currentValue.split('#');\n if (hashSplit.length !== 2) {\n dep.skipReason = 'unspecified-version';\n return dep;\n }\n const [depNamePart, depRefPart] = hashSplit;\n\n let githubOwnerRepo: string;\n let githubOwner: string;\n let githubRepo: string;\n const matchUrlSshFormat = RE_REPOSITORY_GITHUB_SSH_FORMAT.exec(depNamePart);\n if (matchUrlSshFormat === null) {\n githubOwnerRepo = depNamePart\n .replace(regEx(/^github:/), '')\n .replace(regEx(/^git\\+/), '')\n .replace(regEx(/^https:\\/\\/github\\.com\\//), '')\n .replace(regEx(/\\.git$/), '');\n const githubRepoSplit = githubOwnerRepo.split('/');\n if (githubRepoSplit.length !== 2) {\n dep.skipReason = 'unspecified-version';\n return dep;\n }\n [githubOwner, githubRepo] = githubRepoSplit;\n } else {\n githubOwner = matchUrlSshFormat[1];\n githubRepo = matchUrlSshFormat[2];\n githubOwnerRepo = `${githubOwner}/${githubRepo}`;\n }\n const githubOwnerRegex = /^[a-z\\d](?:[a-z\\d]|-(?=[a-z\\d])){0,38}$/i; // TODO #12872 lookahead\n const githubRepoRegex = regEx(/^[a-zA-Z0-9._-]{1,100}$/);\n if (\n !githubOwnerRegex.test(githubOwner) ||\n !githubRepoRegex.test(githubRepo)\n ) {\n dep.skipReason = 'unspecified-version';\n return dep;\n }\n if (isVersion(depRefPart)) {\n dep.currentRawValue = dep.currentValue;\n dep.currentValue = depRefPart;\n dep.datasource = GithubTagsDatasource.id;\n dep.versioning = npmVersioningId;\n dep.packageName = githubOwnerRepo;\n dep.pinDigests = false;\n } else if (\n regEx(/^[0-9a-f]{7}$/).test(depRefPart) ||\n regEx(/^[0-9a-f]{40}$/).test(depRefPart)\n ) {\n dep.currentRawValue = dep.currentValue;\n dep.currentValue = null;\n dep.currentDigest = depRefPart;\n dep.datasource = GithubTagsDatasource.id;\n dep.versioning = npmVersioningId;\n dep.packageName = githubOwnerRepo;\n } else {\n // <protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish> | #semver:<semver>]\n // https://docs.npmjs.com/cli/v10/configuring-npm/package-json#git-urls-as-dependencies\n const len = 7; // length of 'semver:'\n const maybeVersion = depRefPart.substring(len);\n\n if (depRefPart.startsWith('semver:') && isValid(maybeVersion)) {\n dep.currentRawValue = dep.currentValue;\n dep.currentValue = maybeVersion;\n dep.datasource = GithubTagsDatasource.id;\n dep.versioning = npmVersioningId;\n dep.packageName = githubOwnerRepo;\n dep.pinDigests = false;\n } else {\n dep.skipReason = 'unversioned-reference';\n return dep;\n }\n }\n dep.sourceUrl = `https://github.com/${githubOwnerRepo}`;\n dep.gitRef = true;\n return dep;\n}\n\nexport function getExtractedConstraints(\n deps: PackageDependency[],\n): Partial<Record<ConstraintName, string>> {\n const extractedConstraints: Partial<Record<ConstraintName, string>> = {};\n const constraints: ConstraintName[] = [\n 'node',\n 'yarn',\n 'npm',\n 'pnpm',\n 'vscode',\n ];\n for (const dep of deps) {\n if (\n !dep.skipReason &&\n (dep.depType === 'engines' || dep.depType === 'packageManager') &&\n dep.depName &&\n isConstraintName(dep.depName) &&\n constraints.includes(dep.depName) &&\n isString(dep.currentValue)\n ) {\n extractedConstraints[dep.depName] = dep.currentValue;\n }\n }\n return extractedConstraints;\n}\n"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { logger } from "../../../../../logger/index.js";
|
|
|
2
2
|
import { getParentDir, getSiblingFileName } from "../../../../../util/fs/index.js";
|
|
3
3
|
import { detectPnpmWorkspaces } from "../pnpm.js";
|
|
4
4
|
import { matchesAnyPattern } from "../utils.js";
|
|
5
|
-
import { isArray, isString } from "@sindresorhus/is";
|
|
5
|
+
import { isArray, isString, isTruthy } from "@sindresorhus/is";
|
|
6
6
|
//#region lib/modules/manager/npm/extract/post/monorepo.ts
|
|
7
7
|
async function detectMonorepos(packageFiles) {
|
|
8
8
|
await detectPnpmWorkspaces(packageFiles);
|
|
@@ -14,7 +14,7 @@ async function detectMonorepos(packageFiles) {
|
|
|
14
14
|
if (packages?.length) {
|
|
15
15
|
const internalPackagePatterns = (isArray(packages) ? packages : [packages]).map((pattern) => getSiblingFileName(packageFile, pattern));
|
|
16
16
|
const internalPackageFiles = packageFiles.filter((sp) => matchesAnyPattern(getParentDir(sp.packageFile), internalPackagePatterns));
|
|
17
|
-
const internalPackageNames = internalPackageFiles.map((sp) => sp.managerData?.packageJsonName).filter(
|
|
17
|
+
const internalPackageNames = internalPackageFiles.map((sp) => sp.managerData?.packageJsonName).filter(isTruthy);
|
|
18
18
|
p.deps?.forEach((dep) => {
|
|
19
19
|
if (isString(dep.depName) && internalPackageNames.includes(dep.depName)) dep.isInternal = true;
|
|
20
20
|
});
|
|
@@ -32,7 +32,7 @@ async function detectMonorepos(packageFiles) {
|
|
|
32
32
|
...subPackage.extractedConstraints
|
|
33
33
|
};
|
|
34
34
|
subPackage.deps?.forEach((dep) => {
|
|
35
|
-
if (internalPackageNames.includes(dep.depName)) dep.isInternal = true;
|
|
35
|
+
if (isString(dep.depName) && internalPackageNames.includes(dep.depName)) dep.isInternal = true;
|
|
36
36
|
});
|
|
37
37
|
}
|
|
38
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"monorepo.js","names":[],"sources":["../../../../../../lib/modules/manager/npm/extract/post/monorepo.ts"],"sourcesContent":["import { isArray, isString } from '@sindresorhus/is';\nimport { logger } from '../../../../../logger/index.ts';\nimport {\n getParentDir,\n getSiblingFileName,\n} from '../../../../../util/fs/index.ts';\nimport type { PackageFile } from '../../../types.ts';\nimport type { NpmManagerData } from '../../types.ts';\nimport { detectPnpmWorkspaces } from '../pnpm.ts';\nimport { matchesAnyPattern } from '../utils.ts';\n\nexport async function detectMonorepos(\n packageFiles: Partial<PackageFile<NpmManagerData>>[],\n): Promise<void> {\n await detectPnpmWorkspaces(packageFiles);\n logger.debug('Detecting workspaces');\n for (const p of packageFiles) {\n const { packageFile, npmrc, managerData = {}, skipInstalls } = p;\n const {\n npmLock,\n yarnZeroInstall,\n hasPackageManager,\n workspacesPackages,\n yarnLock,\n } = managerData;\n\n const packages = workspacesPackages as string[] | undefined;\n if (packages?.length) {\n const internalPackagePatterns = (\n isArray(packages) ? packages : [packages]\n ).map((pattern) => getSiblingFileName(packageFile!, pattern));\n const internalPackageFiles = packageFiles.filter((sp) =>\n matchesAnyPattern(\n getParentDir(sp.packageFile!),\n internalPackagePatterns,\n ),\n );\n const internalPackageNames = internalPackageFiles\n .map((sp) => sp.managerData?.packageJsonName)\n .filter(
|
|
1
|
+
{"version":3,"file":"monorepo.js","names":[],"sources":["../../../../../../lib/modules/manager/npm/extract/post/monorepo.ts"],"sourcesContent":["import { isArray, isString, isTruthy } from '@sindresorhus/is';\nimport { logger } from '../../../../../logger/index.ts';\nimport {\n getParentDir,\n getSiblingFileName,\n} from '../../../../../util/fs/index.ts';\nimport type { PackageFile } from '../../../types.ts';\nimport type { NpmManagerData } from '../../types.ts';\nimport { detectPnpmWorkspaces } from '../pnpm.ts';\nimport { matchesAnyPattern } from '../utils.ts';\n\nexport async function detectMonorepos(\n packageFiles: Partial<PackageFile<NpmManagerData>>[],\n): Promise<void> {\n await detectPnpmWorkspaces(packageFiles);\n logger.debug('Detecting workspaces');\n for (const p of packageFiles) {\n const { packageFile, npmrc, managerData = {}, skipInstalls } = p;\n const {\n npmLock,\n yarnZeroInstall,\n hasPackageManager,\n workspacesPackages,\n yarnLock,\n } = managerData;\n\n const packages = workspacesPackages as string[] | undefined;\n if (packages?.length) {\n const internalPackagePatterns = (\n isArray(packages) ? packages : [packages]\n ).map((pattern) => getSiblingFileName(packageFile!, pattern));\n const internalPackageFiles = packageFiles.filter((sp) =>\n matchesAnyPattern(\n getParentDir(sp.packageFile!),\n internalPackagePatterns,\n ),\n );\n const internalPackageNames = internalPackageFiles\n .map((sp) => sp.managerData?.packageJsonName)\n .filter(isTruthy);\n\n p.deps?.forEach((dep) => {\n if (\n isString(dep.depName) &&\n internalPackageNames.includes(dep.depName)\n ) {\n dep.isInternal = true;\n }\n });\n\n for (const subPackage of internalPackageFiles) {\n subPackage.managerData = subPackage.managerData ?? {};\n subPackage.managerData.yarnZeroInstall = yarnZeroInstall;\n subPackage.managerData.hasPackageManager = hasPackageManager;\n subPackage.managerData.yarnLock ??= yarnLock;\n subPackage.managerData.npmLock ??= npmLock;\n subPackage.skipInstalls = skipInstalls && subPackage.skipInstalls; // skip if both are true\n subPackage.managerData.workspacesPackages = workspacesPackages;\n subPackage.npmrc ??= npmrc;\n\n if (p.extractedConstraints) {\n subPackage.extractedConstraints = {\n ...p.extractedConstraints,\n ...subPackage.extractedConstraints,\n };\n }\n\n subPackage.deps?.forEach((dep) => {\n if (\n isString(dep.depName) &&\n internalPackageNames.includes(dep.depName)\n ) {\n dep.isInternal = true;\n }\n });\n }\n }\n }\n}\n"],"mappings":";;;;;;AAWA,eAAsB,gBACpB,cACe;CACf,MAAM,qBAAqB,YAAY;CACvC,OAAO,MAAM,sBAAsB;CACnC,KAAK,MAAM,KAAK,cAAc;EAC5B,MAAM,EAAE,aAAa,OAAO,cAAc,CAAC,GAAG,iBAAiB;EAC/D,MAAM,EACJ,SACA,iBACA,mBACA,oBACA,aACE;EAEJ,MAAM,WAAW;EACjB,IAAI,UAAU,QAAQ;GACpB,MAAM,2BACJ,QAAQ,QAAQ,IAAI,WAAW,CAAC,QAAQ,EAAA,CACxC,KAAK,YAAY,mBAAmB,aAAc,OAAO,CAAC;GAC5D,MAAM,uBAAuB,aAAa,QAAQ,OAChD,kBACE,aAAa,GAAG,WAAY,GAC5B,uBACF,CACF;GACA,MAAM,uBAAuB,qBAC1B,KAAK,OAAO,GAAG,aAAa,eAAe,CAAC,CAC5C,OAAO,QAAQ;GAElB,EAAE,MAAM,SAAS,QAAQ;IACvB,IACE,SAAS,IAAI,OAAO,KACpB,qBAAqB,SAAS,IAAI,OAAO,GAEzC,IAAI,aAAa;GAErB,CAAC;GAED,KAAK,MAAM,cAAc,sBAAsB;IAC7C,WAAW,cAAc,WAAW,eAAe,CAAC;IACpD,WAAW,YAAY,kBAAkB;IACzC,WAAW,YAAY,oBAAoB;IAC3C,WAAW,YAAY,aAAa;IACpC,WAAW,YAAY,YAAY;IACnC,WAAW,eAAe,gBAAgB,WAAW;IACrD,WAAW,YAAY,qBAAqB;IAC5C,WAAW,UAAU;IAErB,IAAI,EAAE,sBACJ,WAAW,uBAAuB;KAChC,GAAG,EAAE;KACL,GAAG,WAAW;IAChB;IAGF,WAAW,MAAM,SAAS,QAAQ;KAChC,IACE,SAAS,IAAI,OAAO,KACpB,qBAAqB,SAAS,IAAI,OAAO,GAEzC,IAAI,aAAa;IAErB,CAAC;GACH;EACF;CACF;AACF"}
|
|
@@ -3,14 +3,14 @@ import { toBase64 } from "../../../../util/string.js";
|
|
|
3
3
|
import { logger } from "../../../../logger/index.js";
|
|
4
4
|
import { isHttpUrl } from "../../../../util/url.js";
|
|
5
5
|
import { findAll, getAll } from "../../../../util/host-rules.js";
|
|
6
|
-
import { isString } from "@sindresorhus/is";
|
|
6
|
+
import { isNullOrUndefined, isString } from "@sindresorhus/is";
|
|
7
7
|
//#region lib/modules/manager/npm/post-update/rules.ts
|
|
8
8
|
function processHostRules() {
|
|
9
9
|
const additionalYarnRcYml = { npmRegistries: {} };
|
|
10
10
|
const additionalNpmrcContent = [];
|
|
11
11
|
const npmHostRules = findAll({ hostType: "npm" });
|
|
12
12
|
logger.debug(`Found ${npmHostRules.length} npm host rule(s)`);
|
|
13
|
-
const noTypeHostRules = getAll().filter((rule) => rule.hostType
|
|
13
|
+
const noTypeHostRules = getAll().filter((rule) => isNullOrUndefined(rule.hostType));
|
|
14
14
|
logger.debug(`Found ${noTypeHostRules.length} host rule(s) without host type`);
|
|
15
15
|
const noTypeHostRulesWithoutDuplicates = noTypeHostRules.filter((rule) => !npmHostRules.some((elem) => elem.matchHost === rule.matchHost));
|
|
16
16
|
logger.debug(`Found ${noTypeHostRulesWithoutDuplicates.length} host rule(s) without host type after dropping duplicates`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.js","names":["hostRules.findAll","hostRules\n .getAll"],"sources":["../../../../../lib/modules/manager/npm/post-update/rules.ts"],"sourcesContent":["import { isString } from '@sindresorhus/is';\nimport { logger } from '../../../../logger/index.ts';\nimport * as hostRules from '../../../../util/host-rules.ts';\nimport { regEx } from '../../../../util/regex.ts';\nimport { toBase64 } from '../../../../util/string.ts';\nimport { isHttpUrl } from '../../../../util/url.ts';\nimport type { YarnRcYmlFile } from './types.ts';\n\nexport interface HostRulesResult {\n additionalNpmrcContent: string[];\n additionalYarnRcYml?: any;\n}\n\nexport function processHostRules(): HostRulesResult {\n const additionalYarnRcYml: YarnRcYmlFile = { npmRegistries: {} };\n\n // Determine the additional npmrc content to add based on host rules\n const additionalNpmrcContent = [];\n const npmHostRules = hostRules.findAll({\n hostType: 'npm',\n });\n logger.debug(`Found ${npmHostRules.length} npm host rule(s)`);\n // Include host rules without specific type to mimic the behavior used when determining dependencies with updates.\n const noTypeHostRules = hostRules\n .getAll()\n .filter((rule) => rule.hostType
|
|
1
|
+
{"version":3,"file":"rules.js","names":["hostRules.findAll","hostRules\n .getAll"],"sources":["../../../../../lib/modules/manager/npm/post-update/rules.ts"],"sourcesContent":["import { isNullOrUndefined, isString } from '@sindresorhus/is';\nimport { logger } from '../../../../logger/index.ts';\nimport * as hostRules from '../../../../util/host-rules.ts';\nimport { regEx } from '../../../../util/regex.ts';\nimport { toBase64 } from '../../../../util/string.ts';\nimport { isHttpUrl } from '../../../../util/url.ts';\nimport type { YarnRcYmlFile } from './types.ts';\n\nexport interface HostRulesResult {\n additionalNpmrcContent: string[];\n additionalYarnRcYml?: any;\n}\n\nexport function processHostRules(): HostRulesResult {\n const additionalYarnRcYml: YarnRcYmlFile = { npmRegistries: {} };\n\n // Determine the additional npmrc content to add based on host rules\n const additionalNpmrcContent = [];\n const npmHostRules = hostRules.findAll({\n hostType: 'npm',\n });\n logger.debug(`Found ${npmHostRules.length} npm host rule(s)`);\n // Include host rules without specific type to mimic the behavior used when determining dependencies with updates.\n const noTypeHostRules = hostRules\n .getAll()\n .filter((rule) => isNullOrUndefined(rule.hostType));\n logger.debug(\n `Found ${noTypeHostRules.length} host rule(s) without host type`,\n );\n // Drop duplicates for the same matchHost while prefering the more specific rules with hostType npm.\n const noTypeHostRulesWithoutDuplicates = noTypeHostRules.filter(\n (rule) => !npmHostRules.some((elem) => elem.matchHost === rule.matchHost),\n );\n logger.debug(\n `Found ${noTypeHostRulesWithoutDuplicates.length} host rule(s) without host type after dropping duplicates`,\n );\n const effectiveHostRules = npmHostRules.concat(\n noTypeHostRulesWithoutDuplicates,\n );\n logger.trace(\n `Found ${effectiveHostRules.length} effective npm host rule(s) after deduplication`,\n );\n for (const hostRule of effectiveHostRules) {\n if (!hostRule.resolvedHost) {\n logger.debug('Skipping host rule without resolved host');\n continue;\n }\n\n const matchedHost = hostRule.matchHost;\n // Should never be necessary as if we have a resolvedHost, there has to be a matchHost\n /* v8 ignore if -- unreachable: a resolvedHost implies matchHost is set (see comment above) */\n if (!matchedHost) {\n logger.debug('Skipping host rule without matchHost');\n continue;\n }\n\n const uri = `//${matchedHost}/`;\n let cleanedUri = uri;\n if (isHttpUrl(matchedHost)) {\n cleanedUri = matchedHost.replace(regEx(/^https?:/), '');\n }\n\n if (hostRule.token) {\n const key = hostRule.authType === 'Basic' ? '_auth' : '_authToken';\n logger.debug(`Adding npmrc entry for ${cleanedUri} with key ${key}`);\n additionalNpmrcContent.push(`${cleanedUri}:${key}=${hostRule.token}`);\n\n if (hostRule.authType === 'Basic') {\n const registry = {\n npmAuthIdent: hostRule.token,\n };\n additionalYarnRcYml.npmRegistries[cleanedUri] = registry;\n additionalYarnRcYml.npmRegistries[uri] = registry;\n\n continue;\n }\n\n const registry = {\n npmAuthToken: hostRule.token,\n };\n additionalYarnRcYml.npmRegistries[cleanedUri] = registry;\n additionalYarnRcYml.npmRegistries[uri] = registry;\n\n continue;\n }\n\n // v8 ignore else -- TODO: add test #40625\n if (isString(hostRule.username) && isString(hostRule.password)) {\n logger.debug(\n `Adding npmrc entry for ${cleanedUri} with username/password`,\n );\n const password = toBase64(hostRule.password);\n additionalNpmrcContent.push(\n `${cleanedUri}:username=${hostRule.username}`,\n );\n additionalNpmrcContent.push(`${cleanedUri}:_password=${password}`);\n\n const registries = {\n npmAuthIdent: `${hostRule.username}:${hostRule.password}`,\n };\n additionalYarnRcYml.npmRegistries[cleanedUri] = registries;\n additionalYarnRcYml.npmRegistries[uri] = registries;\n }\n }\n\n const hasYarnRcNpmRegistries =\n Object.keys(additionalYarnRcYml.npmRegistries).length > 0;\n return {\n additionalNpmrcContent,\n additionalYarnRcYml: hasYarnRcNpmRegistries\n ? additionalYarnRcYml\n : undefined,\n };\n}\n"],"mappings":";;;;;;;AAaA,SAAgB,mBAAoC;CAClD,MAAM,sBAAqC,EAAE,eAAe,CAAC,EAAE;CAG/D,MAAM,yBAAyB,CAAC;CAChC,MAAM,eAAeA,QAAkB,EACrC,UAAU,MACZ,CAAC;CACD,OAAO,MAAM,SAAS,aAAa,OAAO,kBAAkB;CAE5D,MAAM,kBAAkBC,OACd,CAAC,CACR,QAAQ,SAAS,kBAAkB,KAAK,QAAQ,CAAC;CACpD,OAAO,MACL,SAAS,gBAAgB,OAAO,gCAClC;CAEA,MAAM,mCAAmC,gBAAgB,QACtD,SAAS,CAAC,aAAa,MAAM,SAAS,KAAK,cAAc,KAAK,SAAS,CAC1E;CACA,OAAO,MACL,SAAS,iCAAiC,OAAO,0DACnD;CACA,MAAM,qBAAqB,aAAa,OACtC,gCACF;CACA,OAAO,MACL,SAAS,mBAAmB,OAAO,gDACrC;CACA,KAAK,MAAM,YAAY,oBAAoB;EACzC,IAAI,CAAC,SAAS,cAAc;GAC1B,OAAO,MAAM,0CAA0C;GACvD;EACF;EAEA,MAAM,cAAc,SAAS;;EAG7B,IAAI,CAAC,aAAa;GAChB,OAAO,MAAM,sCAAsC;GACnD;EACF;EAEA,MAAM,MAAM,KAAK,YAAY;EAC7B,IAAI,aAAa;EACjB,IAAI,UAAU,WAAW,GACvB,aAAa,YAAY,QAAQ,MAAM,UAAU,GAAG,EAAE;EAGxD,IAAI,SAAS,OAAO;GAClB,MAAM,MAAM,SAAS,aAAa,UAAU,UAAU;GACtD,OAAO,MAAM,0BAA0B,WAAW,YAAY,KAAK;GACnE,uBAAuB,KAAK,GAAG,WAAW,GAAG,IAAI,GAAG,SAAS,OAAO;GAEpE,IAAI,SAAS,aAAa,SAAS;IACjC,MAAM,WAAW,EACf,cAAc,SAAS,MACzB;IACA,oBAAoB,cAAc,cAAc;IAChD,oBAAoB,cAAc,OAAO;IAEzC;GACF;GAEA,MAAM,WAAW,EACf,cAAc,SAAS,MACzB;GACA,oBAAoB,cAAc,cAAc;GAChD,oBAAoB,cAAc,OAAO;GAEzC;EACF;;EAGA,IAAI,SAAS,SAAS,QAAQ,KAAK,SAAS,SAAS,QAAQ,GAAG;GAC9D,OAAO,MACL,0BAA0B,WAAW,wBACvC;GACA,MAAM,WAAW,SAAS,SAAS,QAAQ;GAC3C,uBAAuB,KACrB,GAAG,WAAW,YAAY,SAAS,UACrC;GACA,uBAAuB,KAAK,GAAG,WAAW,aAAa,UAAU;GAEjE,MAAM,aAAa,EACjB,cAAc,GAAG,SAAS,SAAS,GAAG,SAAS,WACjD;GACA,oBAAoB,cAAc,cAAc;GAChD,oBAAoB,cAAc,OAAO;EAC3C;CACF;CAIA,OAAO;EACL;EACA,qBAHA,OAAO,KAAK,oBAAoB,aAAa,CAAC,CAAC,SAAS,IAIpD,sBACA,KAAA;CACN;AACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { logger } from "../../../logger/index.js";
|
|
2
2
|
import { MavenDatasource } from "../../datasource/maven/index.js";
|
|
3
|
-
import { isArray, isNullOrUndefined } from "@sindresorhus/is";
|
|
3
|
+
import { isArray, isNullOrUndefined, isString } from "@sindresorhus/is";
|
|
4
4
|
import JSON5 from "json5";
|
|
5
5
|
import { coerce, satisfies } from "semver";
|
|
6
6
|
//#region lib/modules/manager/osgi/extract.ts
|
|
@@ -30,7 +30,7 @@ function extractPackageFile(content, packageFile, _config) {
|
|
|
30
30
|
allBundles.push(...customSectionEntries);
|
|
31
31
|
}
|
|
32
32
|
for (const entry of allBundles) {
|
|
33
|
-
const rawGav =
|
|
33
|
+
const rawGav = isString(entry) ? entry : entry.id;
|
|
34
34
|
if (!rawGav) continue;
|
|
35
35
|
const gav = rawGav.replace(/\//g, ":");
|
|
36
36
|
const parts = gav.split(":");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","names":["json5"],"sources":["../../../../lib/modules/manager/osgi/extract.ts"],"sourcesContent":["import { isArray, isNullOrUndefined } from '@sindresorhus/is';\nimport json5 from 'json5';\nimport { coerce, satisfies } from 'semver';\nimport { logger } from '../../../logger/index.ts';\nimport { MavenDatasource } from '../../datasource/maven/index.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFileContent,\n} from '../types.ts';\nimport type { Bundle, FeatureModel } from './types.ts';\n\nexport function extractPackageFile(\n content: string,\n packageFile: string,\n _config?: ExtractConfig,\n): PackageFileContent | null {\n // References:\n // - OSGi compendium release 8 ( https://docs.osgi.org/specification/osgi.cmpn/8.0.0/service.feature.html )\n // - The Sling implementation of the feature model ( https://sling.apache.org/documentation/development/feature-model.html )\n logger.trace(`osgi.extractPackageFile($packageFile)`);\n\n const deps: PackageDependency[] = [];\n let featureModel: FeatureModel;\n try {\n // Compendium R8 159.3: JS comments are supported\n featureModel = json5.parse<FeatureModel>(content);\n } catch (err) {\n logger.warn({ packageFile, err }, 'Failed to parse osgi file');\n return null;\n }\n\n if (\n // for empty an empty result\n isNullOrUndefined(featureModel) ||\n // Compendium R8 159.9: resource versioning\n !isSupportedFeatureResourceVersion(featureModel, packageFile)\n ) {\n return null;\n }\n\n // OSGi Compendium R8 159.4: bundles entry\n const allBundles = featureModel.bundles ?? [];\n\n // The 'execution-environment' key is supported by the Sling/OSGi feature model implementation\n const execEnvFramework =\n featureModel['execution-environment:JSON|false']?.framework;\n if (!isNullOrUndefined(execEnvFramework)) {\n allBundles.push(execEnvFramework);\n }\n\n // parse custom sections\n //\n // Note: we do not support artifact list extensions as defined in\n // section 159.7.3 yet. As of 05-12-2022, there is no implementation that\n // supports this\n for (const [section, value] of Object.entries(featureModel)) {\n logger.trace({ fileName: packageFile, section }, 'Parsing section');\n const customSectionEntries = extractArtifactList(section, value);\n allBundles.push(...customSectionEntries);\n }\n\n // convert bundles to dependencies\n for (const entry of allBundles) {\n const rawGav =
|
|
1
|
+
{"version":3,"file":"extract.js","names":["json5"],"sources":["../../../../lib/modules/manager/osgi/extract.ts"],"sourcesContent":["import { isArray, isNullOrUndefined, isString } from '@sindresorhus/is';\nimport json5 from 'json5';\nimport { coerce, satisfies } from 'semver';\nimport { logger } from '../../../logger/index.ts';\nimport { MavenDatasource } from '../../datasource/maven/index.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFileContent,\n} from '../types.ts';\nimport type { Bundle, FeatureModel } from './types.ts';\n\nexport function extractPackageFile(\n content: string,\n packageFile: string,\n _config?: ExtractConfig,\n): PackageFileContent | null {\n // References:\n // - OSGi compendium release 8 ( https://docs.osgi.org/specification/osgi.cmpn/8.0.0/service.feature.html )\n // - The Sling implementation of the feature model ( https://sling.apache.org/documentation/development/feature-model.html )\n logger.trace(`osgi.extractPackageFile($packageFile)`);\n\n const deps: PackageDependency[] = [];\n let featureModel: FeatureModel;\n try {\n // Compendium R8 159.3: JS comments are supported\n featureModel = json5.parse<FeatureModel>(content);\n } catch (err) {\n logger.warn({ packageFile, err }, 'Failed to parse osgi file');\n return null;\n }\n\n if (\n // for empty an empty result\n isNullOrUndefined(featureModel) ||\n // Compendium R8 159.9: resource versioning\n !isSupportedFeatureResourceVersion(featureModel, packageFile)\n ) {\n return null;\n }\n\n // OSGi Compendium R8 159.4: bundles entry\n const allBundles = featureModel.bundles ?? [];\n\n // The 'execution-environment' key is supported by the Sling/OSGi feature model implementation\n const execEnvFramework =\n featureModel['execution-environment:JSON|false']?.framework;\n if (!isNullOrUndefined(execEnvFramework)) {\n allBundles.push(execEnvFramework);\n }\n\n // parse custom sections\n //\n // Note: we do not support artifact list extensions as defined in\n // section 159.7.3 yet. As of 05-12-2022, there is no implementation that\n // supports this\n for (const [section, value] of Object.entries(featureModel)) {\n logger.trace({ fileName: packageFile, section }, 'Parsing section');\n const customSectionEntries = extractArtifactList(section, value);\n allBundles.push(...customSectionEntries);\n }\n\n // convert bundles to dependencies\n for (const entry of allBundles) {\n const rawGav = isString(entry) ? entry : entry.id;\n // skip invalid definitions, such as objects without an id set\n if (!rawGav) {\n continue;\n }\n\n // both '/' and ':' are valid separators, but the Maven datasource\n // expects the separator to be ':'\n const gav = rawGav.replace(/\\//g, ':');\n\n // identifiers support 3-5 parts, see OSGi R8 - 159.2.1 Identifiers\n // groupId ':' artifactId ( ':' type ( ':' classifier )? )? ':' version\n const parts = gav.split(':');\n if (parts.length < 3 || parts.length > 5) {\n deps.push({\n depName: gav,\n skipReason: 'invalid-value',\n });\n continue;\n }\n // parsing should use the last entry for the version\n const currentValue = parts.at(-1)!;\n const result: PackageDependency = {\n datasource: MavenDatasource.id,\n depName: `${parts[0]}:${parts[1]}`,\n };\n if (currentValue.includes('${')) {\n result.skipReason = 'contains-variable';\n } else {\n result.currentValue = currentValue;\n }\n\n deps.push(result);\n }\n\n return deps.length ? { deps } : null;\n}\n\nfunction isSupportedFeatureResourceVersion(\n featureModel: FeatureModel,\n fileName: string,\n): boolean {\n const resourceVersion = featureModel['feature-resource-version'];\n if (resourceVersion) {\n const resourceSemVer = coerce(resourceVersion);\n if (!resourceSemVer) {\n logger.debug(\n `Skipping file ${fileName} due to invalid feature-resource-version '${resourceVersion}'`,\n );\n return false;\n }\n\n // we only support 1.x, although no over version has been defined\n if (!satisfies(resourceSemVer, '^1')) {\n logger.debug(\n `Skipping file ${fileName} due to unsupported feature-resource-version '${resourceVersion}'`,\n );\n return false;\n }\n }\n\n return true;\n}\n\nfunction extractArtifactList(\n sectionName: string,\n sectionValue: unknown,\n): Bundle[] {\n // The 'ARTIFACTS' key is supported by the Sling/OSGi feature model implementation\n if (sectionName.includes(':ARTIFACTS|') && isArray(sectionValue)) {\n return sectionValue as Bundle[];\n }\n\n return [];\n}\n"],"mappings":";;;;;;AAYA,SAAgB,mBACd,SACA,aACA,SAC2B;CAI3B,OAAO,MAAM,uCAAuC;CAEpD,MAAM,OAA4B,CAAC;CACnC,IAAI;CACJ,IAAI;EAEF,eAAeA,MAAM,MAAoB,OAAO;CAClD,SAAS,KAAK;EACZ,OAAO,KAAK;GAAE;GAAa;EAAI,GAAG,2BAA2B;EAC7D,OAAO;CACT;CAEA,IAEE,kBAAkB,YAAY,KAE9B,CAAC,kCAAkC,cAAc,WAAW,GAE5D,OAAO;CAIT,MAAM,aAAa,aAAa,WAAW,CAAC;CAG5C,MAAM,mBACJ,aAAa,mCAAmC,EAAE;CACpD,IAAI,CAAC,kBAAkB,gBAAgB,GACrC,WAAW,KAAK,gBAAgB;CAQlC,KAAK,MAAM,CAAC,SAAS,UAAU,OAAO,QAAQ,YAAY,GAAG;EAC3D,OAAO,MAAM;GAAE,UAAU;GAAa;EAAQ,GAAG,iBAAiB;EAClE,MAAM,uBAAuB,oBAAoB,SAAS,KAAK;EAC/D,WAAW,KAAK,GAAG,oBAAoB;CACzC;CAGA,KAAK,MAAM,SAAS,YAAY;EAC9B,MAAM,SAAS,SAAS,KAAK,IAAI,QAAQ,MAAM;EAE/C,IAAI,CAAC,QACH;EAKF,MAAM,MAAM,OAAO,QAAQ,OAAO,GAAG;EAIrC,MAAM,QAAQ,IAAI,MAAM,GAAG;EAC3B,IAAI,MAAM,SAAS,KAAK,MAAM,SAAS,GAAG;GACxC,KAAK,KAAK;IACR,SAAS;IACT,YAAY;GACd,CAAC;GACD;EACF;EAEA,MAAM,eAAe,MAAM,GAAG,EAAE;EAChC,MAAM,SAA4B;GAChC,YAAY,gBAAgB;GAC5B,SAAS,GAAG,MAAM,GAAG,GAAG,MAAM;EAChC;EACA,IAAI,aAAa,SAAS,IAAI,GAC5B,OAAO,aAAa;OAEpB,OAAO,eAAe;EAGxB,KAAK,KAAK,MAAM;CAClB;CAEA,OAAO,KAAK,SAAS,EAAE,KAAK,IAAI;AAClC;AAEA,SAAS,kCACP,cACA,UACS;CACT,MAAM,kBAAkB,aAAa;CACrC,IAAI,iBAAiB;EACnB,MAAM,iBAAiB,OAAO,eAAe;EAC7C,IAAI,CAAC,gBAAgB;GACnB,OAAO,MACL,iBAAiB,SAAS,4CAA4C,gBAAgB,EACxF;GACA,OAAO;EACT;EAGA,IAAI,CAAC,UAAU,gBAAgB,IAAI,GAAG;GACpC,OAAO,MACL,iBAAiB,SAAS,gDAAgD,gBAAgB,EAC5F;GACA,OAAO;EACT;CACF;CAEA,OAAO;AACT;AAEA,SAAS,oBACP,aACA,cACU;CAEV,IAAI,YAAY,SAAS,aAAa,KAAK,QAAQ,YAAY,GAC7D,OAAO;CAGT,OAAO,CAAC;AACV"}
|
|
@@ -5,7 +5,7 @@ import { ensureLocalPath } from "../../../util/fs/util.js";
|
|
|
5
5
|
import { getParentDir, localPathExists } from "../../../util/fs/index.js";
|
|
6
6
|
import { normalizePythonDepName } from "../../datasource/pypi/common.js";
|
|
7
7
|
import { PypiDatasource } from "../../datasource/pypi/index.js";
|
|
8
|
-
import { isArray, isObject, isString } from "@sindresorhus/is";
|
|
8
|
+
import { isArray, isObject, isString, isTruthy } from "@sindresorhus/is";
|
|
9
9
|
import { RANGE_PATTERN } from "@renovatebot/pep440";
|
|
10
10
|
import { pipenv } from "@renovatebot/detect-tools";
|
|
11
11
|
//#region lib/modules/manager/pipenv/extract.ts
|
|
@@ -59,7 +59,7 @@ function extractFromSection(sectionName, pipfileSection, sources) {
|
|
|
59
59
|
if (source) dep.registryUrls = [source.url];
|
|
60
60
|
}
|
|
61
61
|
return dep;
|
|
62
|
-
}).filter(
|
|
62
|
+
}).filter(isTruthy);
|
|
63
63
|
}
|
|
64
64
|
function isPipRequirements(section) {
|
|
65
65
|
return !isArray(section) && isObject(section) && !Object.values(section).some((dep) => !isObject(dep) && !isString(dep));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","names":["rangePattern","parseToml","pipenvDetect"],"sources":["../../../../lib/modules/manager/pipenv/extract.ts"],"sourcesContent":["import { pipenv as pipenvDetect } from '@renovatebot/detect-tools';\nimport { RANGE_PATTERN } from '@renovatebot/pep440';\nimport { isArray, isObject, isString } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport type { SkipReason } from '../../../types/index.ts';\nimport type { ConstraintName } from '../../../util/exec/types.ts';\nimport { getParentDir, localPathExists } from '../../../util/fs/index.ts';\nimport { ensureLocalPath } from '../../../util/fs/util.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { parse as parseToml } from '../../../util/toml.ts';\nimport { normalizePythonDepName } from '../../datasource/pypi/common.ts';\nimport { PypiDatasource } from '../../datasource/pypi/index.ts';\nimport type { PackageDependency, PackageFileContent } from '../types.ts';\nimport type { PipFile, PipRequirement, PipSource } from './types.ts';\n\n// based on https://www.python.org/dev/peps/pep-0508/#names\nexport const packagePattern = '[A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9]';\nexport const extrasPattern = '(?:\\\\s*\\\\[[^\\\\]]+\\\\])*';\nconst packageRegex = regEx(`^(${packagePattern})(${extrasPattern})$`, 'i');\n\nconst rangePattern: string = RANGE_PATTERN;\n\nconst specifierPartPattern = `\\\\s*${rangePattern.replace(\n regEx(/\\?<\\w+>/g),\n '?:',\n)}\\\\s*`;\nconst specifierPattern = `${specifierPartPattern}(?:,${specifierPartPattern})*`;\nconst specifierRegex = regEx(`^${specifierPattern}$`);\nfunction extractFromSection(\n sectionName: string,\n pipfileSection: Record<string, PipRequirement>,\n sources?: PipSource[],\n): PackageDependency[] {\n const deps = Object.entries(pipfileSection)\n .map((x) => {\n const [packageNameString, requirements] = x;\n let depName = packageNameString;\n\n let currentValue: string | undefined;\n let nestedVersion = false;\n let skipReason: SkipReason | undefined;\n if (isObject(requirements)) {\n if (requirements.git) {\n skipReason = 'git-dependency';\n } else if (requirements.file) {\n skipReason = 'file-dependency';\n } else if (requirements.path) {\n skipReason = 'local-dependency';\n } else if (requirements.version) {\n currentValue = requirements.version;\n nestedVersion = true;\n } else {\n skipReason = 'unspecified-version';\n }\n } else {\n currentValue = requirements;\n }\n if (currentValue === '*') {\n skipReason = 'unspecified-version';\n }\n if (!skipReason) {\n const packageMatches = packageRegex.exec(packageNameString);\n if (packageMatches) {\n depName = packageMatches[1];\n } else {\n logger.debug(\n `Skipping dependency with malformed package name \"${packageNameString}\".`,\n );\n skipReason = 'invalid-name';\n }\n // validated above\n const specifierMatches = specifierRegex.exec(currentValue!);\n if (!specifierMatches) {\n logger.debug(\n `Skipping dependency with malformed version specifier \"${currentValue!}\".`,\n );\n skipReason = 'invalid-version';\n }\n }\n const dep: PackageDependency = {\n depType: sectionName,\n depName,\n packageName: normalizePythonDepName(depName),\n managerData: {},\n };\n if (currentValue) {\n dep.currentValue = currentValue;\n }\n if (skipReason) {\n dep.skipReason = skipReason;\n } else {\n dep.datasource = PypiDatasource.id;\n }\n if (!skipReason && currentValue?.startsWith('==')) {\n dep.currentVersion = currentValue.replace(regEx(/^==\\s*/), '');\n }\n if (nestedVersion) {\n // TODO #22198\n dep.managerData!.nestedVersion = nestedVersion;\n }\n if (sources && isObject(requirements) && requirements.index) {\n const source = sources.find((item) => item.name === requirements.index);\n if (source) {\n dep.registryUrls = [source.url];\n }\n }\n return dep;\n })\n .filter(
|
|
1
|
+
{"version":3,"file":"extract.js","names":["rangePattern","parseToml","pipenvDetect"],"sources":["../../../../lib/modules/manager/pipenv/extract.ts"],"sourcesContent":["import { pipenv as pipenvDetect } from '@renovatebot/detect-tools';\nimport { RANGE_PATTERN } from '@renovatebot/pep440';\nimport { isArray, isObject, isString, isTruthy } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport type { SkipReason } from '../../../types/index.ts';\nimport type { ConstraintName } from '../../../util/exec/types.ts';\nimport { getParentDir, localPathExists } from '../../../util/fs/index.ts';\nimport { ensureLocalPath } from '../../../util/fs/util.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { parse as parseToml } from '../../../util/toml.ts';\nimport { normalizePythonDepName } from '../../datasource/pypi/common.ts';\nimport { PypiDatasource } from '../../datasource/pypi/index.ts';\nimport type { PackageDependency, PackageFileContent } from '../types.ts';\nimport type { PipFile, PipRequirement, PipSource } from './types.ts';\n\n// based on https://www.python.org/dev/peps/pep-0508/#names\nexport const packagePattern = '[A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9]';\nexport const extrasPattern = '(?:\\\\s*\\\\[[^\\\\]]+\\\\])*';\nconst packageRegex = regEx(`^(${packagePattern})(${extrasPattern})$`, 'i');\n\nconst rangePattern: string = RANGE_PATTERN;\n\nconst specifierPartPattern = `\\\\s*${rangePattern.replace(\n regEx(/\\?<\\w+>/g),\n '?:',\n)}\\\\s*`;\nconst specifierPattern = `${specifierPartPattern}(?:,${specifierPartPattern})*`;\nconst specifierRegex = regEx(`^${specifierPattern}$`);\nfunction extractFromSection(\n sectionName: string,\n pipfileSection: Record<string, PipRequirement>,\n sources?: PipSource[],\n): PackageDependency[] {\n const deps = Object.entries(pipfileSection)\n .map((x) => {\n const [packageNameString, requirements] = x;\n let depName = packageNameString;\n\n let currentValue: string | undefined;\n let nestedVersion = false;\n let skipReason: SkipReason | undefined;\n if (isObject(requirements)) {\n if (requirements.git) {\n skipReason = 'git-dependency';\n } else if (requirements.file) {\n skipReason = 'file-dependency';\n } else if (requirements.path) {\n skipReason = 'local-dependency';\n } else if (requirements.version) {\n currentValue = requirements.version;\n nestedVersion = true;\n } else {\n skipReason = 'unspecified-version';\n }\n } else {\n currentValue = requirements;\n }\n if (currentValue === '*') {\n skipReason = 'unspecified-version';\n }\n if (!skipReason) {\n const packageMatches = packageRegex.exec(packageNameString);\n if (packageMatches) {\n depName = packageMatches[1];\n } else {\n logger.debug(\n `Skipping dependency with malformed package name \"${packageNameString}\".`,\n );\n skipReason = 'invalid-name';\n }\n // validated above\n const specifierMatches = specifierRegex.exec(currentValue!);\n if (!specifierMatches) {\n logger.debug(\n `Skipping dependency with malformed version specifier \"${currentValue!}\".`,\n );\n skipReason = 'invalid-version';\n }\n }\n const dep: PackageDependency = {\n depType: sectionName,\n depName,\n packageName: normalizePythonDepName(depName),\n managerData: {},\n };\n if (currentValue) {\n dep.currentValue = currentValue;\n }\n if (skipReason) {\n dep.skipReason = skipReason;\n } else {\n dep.datasource = PypiDatasource.id;\n }\n if (!skipReason && currentValue?.startsWith('==')) {\n dep.currentVersion = currentValue.replace(regEx(/^==\\s*/), '');\n }\n if (nestedVersion) {\n // TODO #22198\n dep.managerData!.nestedVersion = nestedVersion;\n }\n if (sources && isObject(requirements) && requirements.index) {\n const source = sources.find((item) => item.name === requirements.index);\n if (source) {\n dep.registryUrls = [source.url];\n }\n }\n return dep;\n })\n .filter(isTruthy);\n return deps;\n}\n\nfunction isPipRequirements(\n section?:\n | Record<string, PipRequirement>\n | Record<string, string>\n | PipSource[],\n): section is Record<string, PipRequirement> {\n return (\n !isArray(section) &&\n isObject(section) &&\n !Object.values(section).some((dep) => !isObject(dep) && !isString(dep))\n );\n}\n\nexport async function extractPackageFile(\n content: string,\n packageFile: string,\n): Promise<PackageFileContent | null> {\n logger.trace(`pipenv.extractPackageFile(${packageFile})`);\n\n let pipfile: PipFile;\n try {\n // TODO: fix type (#9610)\n pipfile = parseToml(content) as any;\n } catch (err) {\n logger.debug({ err, packageFile }, 'Error parsing Pipfile');\n return null;\n }\n const res: PackageFileContent = { deps: [] };\n\n const sources = pipfile?.source;\n\n if (sources) {\n res.registryUrls = sources.map((source) => source.url);\n }\n\n res.deps = Object.entries(pipfile)\n .map(([category, section]) => {\n if (\n category === 'source' ||\n category === 'requires' ||\n !isPipRequirements(section)\n ) {\n return [];\n }\n\n return extractFromSection(category, section, sources);\n })\n .flat();\n\n if (!res.deps.length) {\n return null;\n }\n\n const extractedConstraints: Partial<Record<ConstraintName, string>> = {};\n\n const pipfileDir = getParentDir(ensureLocalPath(packageFile));\n\n const pythonConstraint = await pipenvDetect.getPythonConstraint(pipfileDir);\n if (pythonConstraint) {\n extractedConstraints.python = pythonConstraint;\n }\n\n const pipenvConstraint = await pipenvDetect.getPipenvConstraint(pipfileDir);\n if (pipenvConstraint) {\n extractedConstraints.pipenv = pipenvConstraint;\n }\n\n const lockFileName = `${packageFile}.lock`;\n if (await localPathExists(lockFileName)) {\n res.lockFiles = [lockFileName];\n }\n\n res.extractedConstraints = extractedConstraints;\n return res;\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { hasKey } from "../../../util/object.js";
|
|
2
|
+
import { isObject } from "@sindresorhus/is";
|
|
2
3
|
//#region lib/modules/manager/pre-commit/parsing.ts
|
|
3
4
|
/**
|
|
4
5
|
* Type guard to determine whether the file matches pre-commit configuration format
|
|
@@ -9,7 +10,7 @@ import { hasKey } from "../../../util/object.js";
|
|
|
9
10
|
* rev: v1.0.0
|
|
10
11
|
*/
|
|
11
12
|
function matchesPrecommitConfigHeuristic(data) {
|
|
12
|
-
return !!(data &&
|
|
13
|
+
return !!(isObject(data) && hasKey("repos", data));
|
|
13
14
|
}
|
|
14
15
|
/**
|
|
15
16
|
* Type guard to determine whether a given repo definition defines a pre-commit Git hook dependency.
|
|
@@ -19,7 +20,7 @@ function matchesPrecommitConfigHeuristic(data) {
|
|
|
19
20
|
* rev: v1.0.0
|
|
20
21
|
*/
|
|
21
22
|
function matchesPrecommitDependencyHeuristic(data) {
|
|
22
|
-
return !!(data &&
|
|
23
|
+
return !!(isObject(data) && hasKey("repo", data) && hasKey("rev", data));
|
|
23
24
|
}
|
|
24
25
|
//#endregion
|
|
25
26
|
export { matchesPrecommitConfigHeuristic, matchesPrecommitDependencyHeuristic };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsing.js","names":[],"sources":["../../../../lib/modules/manager/pre-commit/parsing.ts"],"sourcesContent":["import { hasKey } from '../../../util/object.ts';\nimport type { PreCommitConfig, PreCommitDependency } from './types.ts';\n\n/**\n * Type guard to determine whether the file matches pre-commit configuration format\n * Example original yaml:\n *\n * repos\n * - repo: https://github.com/user/repo\n * rev: v1.0.0\n */\nexport function matchesPrecommitConfigHeuristic(\n data: unknown,\n): data is PreCommitConfig {\n return !!(data &&
|
|
1
|
+
{"version":3,"file":"parsing.js","names":[],"sources":["../../../../lib/modules/manager/pre-commit/parsing.ts"],"sourcesContent":["import { isObject } from '@sindresorhus/is';\nimport { hasKey } from '../../../util/object.ts';\nimport type { PreCommitConfig, PreCommitDependency } from './types.ts';\n\n/**\n * Type guard to determine whether the file matches pre-commit configuration format\n * Example original yaml:\n *\n * repos\n * - repo: https://github.com/user/repo\n * rev: v1.0.0\n */\nexport function matchesPrecommitConfigHeuristic(\n data: unknown,\n): data is PreCommitConfig {\n return !!(isObject(data) && hasKey('repos', data));\n}\n\n/**\n * Type guard to determine whether a given repo definition defines a pre-commit Git hook dependency.\n * Example original yaml portion\n *\n * - repo: https://github.com/user/repo\n * rev: v1.0.0\n */\nexport function matchesPrecommitDependencyHeuristic(\n data: unknown,\n): data is PreCommitDependency {\n return !!(isObject(data) && hasKey('repo', data) && hasKey('rev', data));\n}\n"],"mappings":";;;;;;;;;;;AAYA,SAAgB,gCACd,MACyB;CACzB,OAAO,CAAC,EAAE,SAAS,IAAI,KAAK,OAAO,SAAS,IAAI;AAClD;;;;;;;;AASA,SAAgB,oCACd,MAC6B;CAC7B,OAAO,CAAC,EAAE,SAAS,IAAI,KAAK,OAAO,QAAQ,IAAI,KAAK,OAAO,OAAO,IAAI;AACxE"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Toml } from "../../../util/schema-utils/index.js";
|
|
2
|
+
import { isString } from "@sindresorhus/is";
|
|
2
3
|
import { z } from "zod/v4";
|
|
3
4
|
//#region lib/modules/manager/proto/schema.ts
|
|
4
5
|
/**
|
|
@@ -16,7 +17,7 @@ const nonVersionKeys = /* @__PURE__ */ new Set([
|
|
|
16
17
|
]);
|
|
17
18
|
const ProtoToolsFile = Toml.pipe(z.record(z.string(), z.unknown()).transform((data) => {
|
|
18
19
|
const versions = {};
|
|
19
|
-
for (const [key, value] of Object.entries(data)) if (
|
|
20
|
+
for (const [key, value] of Object.entries(data)) if (isString(value) && !nonVersionKeys.has(key)) versions[key] = value;
|
|
20
21
|
return { versions };
|
|
21
22
|
}));
|
|
22
23
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","names":[],"sources":["../../../../lib/modules/manager/proto/schema.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport { Toml } from '../../../util/schema-utils/index.ts';\n\n/**\n * Known non-version sections in .prototools files.\n * These are structured TOML tables, not version pins.\n * @see https://moonrepo.dev/docs/proto/config\n */\nexport const nonVersionKeys = new Set([\n 'settings',\n 'plugins',\n 'tools',\n 'env',\n 'shell',\n 'backends',\n]);\n\nexport const ProtoToolsFile = Toml.pipe(\n z.record(z.string(), z.unknown()).transform((data) => {\n const versions: Record<string, string> = {};\n for (const [key, value] of Object.entries(data)) {\n if (
|
|
1
|
+
{"version":3,"file":"schema.js","names":[],"sources":["../../../../lib/modules/manager/proto/schema.ts"],"sourcesContent":["import { isString } from '@sindresorhus/is';\nimport { z } from 'zod/v4';\nimport { Toml } from '../../../util/schema-utils/index.ts';\n\n/**\n * Known non-version sections in .prototools files.\n * These are structured TOML tables, not version pins.\n * @see https://moonrepo.dev/docs/proto/config\n */\nexport const nonVersionKeys = new Set([\n 'settings',\n 'plugins',\n 'tools',\n 'env',\n 'shell',\n 'backends',\n]);\n\nexport const ProtoToolsFile = Toml.pipe(\n z.record(z.string(), z.unknown()).transform((data) => {\n const versions: Record<string, string> = {};\n for (const [key, value] of Object.entries(data)) {\n if (isString(value) && !nonVersionKeys.has(key)) {\n versions[key] = value;\n }\n }\n return { versions };\n }),\n);\nexport type ProtoToolsFile = z.infer<typeof ProtoToolsFile>;\n"],"mappings":";;;;;;;;;AASA,MAAa,iCAAiB,IAAI,IAAI;CACpC;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,MAAa,iBAAiB,KAAK,KACjC,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAW,SAAS;CACpD,MAAM,WAAmC,CAAC;CAC1C,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,IAAI,GAC5C,IAAI,SAAS,KAAK,KAAK,CAAC,eAAe,IAAI,GAAG,GAC5C,SAAS,OAAO;CAGpB,OAAO,EAAE,SAAS;AACpB,CAAC,CACH"}
|
|
@@ -25,11 +25,25 @@ function extractPackageFile(content, packageFile) {
|
|
|
25
25
|
}
|
|
26
26
|
const deps = [];
|
|
27
27
|
for (const preset of config.data.extends ?? []) {
|
|
28
|
-
|
|
28
|
+
if (preset.includes("{{")) continue;
|
|
29
|
+
let parsedPreset;
|
|
30
|
+
try {
|
|
31
|
+
parsedPreset = parsePreset(preset);
|
|
32
|
+
} catch (err) {
|
|
33
|
+
logger.debug({
|
|
34
|
+
preset,
|
|
35
|
+
err
|
|
36
|
+
}, "Failed to parse preset");
|
|
37
|
+
deps.push({
|
|
38
|
+
depName: preset,
|
|
39
|
+
skipReason: "invalid-value"
|
|
40
|
+
});
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
29
43
|
const datasource = supportedPresetSources[parsedPreset.presetSource];
|
|
30
44
|
if (isNullOrUndefined(datasource)) {
|
|
31
45
|
if (parsedPreset.presetSource !== "internal") deps.push({
|
|
32
|
-
depName: parsedPreset.repo,
|
|
46
|
+
depName: parsedPreset.presetSource === "relative" ? preset : parsedPreset.repo,
|
|
33
47
|
skipReason: "unsupported-datasource"
|
|
34
48
|
});
|
|
35
49
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/renovate-config/extract.ts"],"sourcesContent":["import { isNonEmptyArray, isNullOrUndefined } from '@sindresorhus/is';\nimport { parsePreset } from '../../../config/presets/parse.ts';\nimport { logger } from '../../../logger/index.ts';\nimport { getToolConfig } from '../../../util/exec/containerbase.ts';\nimport { isToolName } from '../../../util/exec/types.ts';\nimport { GiteaTagsDatasource } from '../../datasource/gitea-tags/index.ts';\nimport { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';\nimport { GitlabTagsDatasource } from '../../datasource/gitlab-tags/index.ts';\nimport type { PackageDependency, PackageFileContent } from '../types.ts';\nimport { RenovateJson } from './schema.ts';\n\nconst supportedPresetSources: Record<string, string> = {\n github: GithubTagsDatasource.id,\n gitlab: GitlabTagsDatasource.id,\n gitea: GiteaTagsDatasource.id,\n};\n\nexport function extractPackageFile(\n content: string,\n packageFile: string,\n): PackageFileContent | null {\n logger.trace(`renovate-config.extractPackageFile(${packageFile})`);\n const config = RenovateJson.safeParse(content);\n if (!config.success) {\n logger.debug({ packageFile, err: config.error }, 'Invalid Renovate Config');\n return null;\n }\n\n const deps: PackageDependency[] = [];\n\n for (const preset of config.data.extends ?? []) {\n
|
|
1
|
+
{"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/renovate-config/extract.ts"],"sourcesContent":["import { isNonEmptyArray, isNullOrUndefined } from '@sindresorhus/is';\nimport { parsePreset } from '../../../config/presets/parse.ts';\nimport type { ParsedPreset } from '../../../config/presets/types.ts';\nimport { logger } from '../../../logger/index.ts';\nimport { getToolConfig } from '../../../util/exec/containerbase.ts';\nimport { isToolName } from '../../../util/exec/types.ts';\nimport { GiteaTagsDatasource } from '../../datasource/gitea-tags/index.ts';\nimport { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';\nimport { GitlabTagsDatasource } from '../../datasource/gitlab-tags/index.ts';\nimport type { PackageDependency, PackageFileContent } from '../types.ts';\nimport { RenovateJson } from './schema.ts';\n\nconst supportedPresetSources: Record<string, string> = {\n github: GithubTagsDatasource.id,\n gitlab: GitlabTagsDatasource.id,\n gitea: GiteaTagsDatasource.id,\n};\n\nexport function extractPackageFile(\n content: string,\n packageFile: string,\n): PackageFileContent | null {\n logger.trace(`renovate-config.extractPackageFile(${packageFile})`);\n const config = RenovateJson.safeParse(content);\n if (!config.success) {\n logger.debug({ packageFile, err: config.error }, 'Invalid Renovate Config');\n return null;\n }\n\n const deps: PackageDependency[] = [];\n\n for (const preset of config.data.extends ?? []) {\n if (preset.includes('{{')) {\n // templated presets are only resolvable at runtime\n continue;\n }\n\n let parsedPreset: ParsedPreset;\n try {\n parsedPreset = parsePreset(preset);\n } catch (err) {\n logger.debug({ preset, err }, 'Failed to parse preset');\n deps.push({\n depName: preset,\n skipReason: 'invalid-value',\n });\n continue;\n }\n const datasource = supportedPresetSources[parsedPreset.presetSource];\n\n if (isNullOrUndefined(datasource)) {\n if (parsedPreset.presetSource !== 'internal') {\n deps.push({\n // relative references have no repository of their own\n depName:\n parsedPreset.presetSource === 'relative'\n ? preset\n : parsedPreset.repo,\n skipReason: 'unsupported-datasource',\n });\n }\n continue;\n }\n\n if (isNullOrUndefined(parsedPreset.tag)) {\n deps.push({\n depName: parsedPreset.repo,\n skipReason: 'unspecified-version',\n });\n continue;\n }\n\n deps.push({\n depName: parsedPreset.repo,\n datasource,\n currentValue: parsedPreset.tag,\n });\n }\n\n for (const [constraint, value] of Object.entries(\n config.data.constraints ?? {},\n )) {\n if (isToolName(constraint)) {\n const toolConfig = getToolConfig(constraint);\n deps.push({\n ...toolConfig,\n depName: constraint,\n currentValue: value,\n depType: 'tool-constraint',\n commitMessageTopic: '{{{depName}}} tool constraint',\n });\n } else {\n deps.push({\n depName: constraint,\n currentValue: value,\n skipReason: 'unsupported',\n depType: 'constraint',\n commitMessageTopic: '{{{depName}}} constraint',\n });\n }\n }\n\n for (const packageRule of config.data.packageRules ?? []) {\n for (const [constraint, value] of Object.entries(\n packageRule.constraints ?? {},\n )) {\n if (isToolName(constraint)) {\n const toolConfig = getToolConfig(constraint);\n deps.push({\n ...toolConfig,\n depName: constraint,\n currentValue: value,\n depType: 'tool-constraint',\n commitMessageTopic: '{{{depName}}} tool constraint',\n });\n } else {\n deps.push({\n depName: constraint,\n currentValue: value,\n skipReason: 'unsupported',\n depType: 'constraint',\n commitMessageTopic: '{{{depName}}} constraint',\n });\n }\n }\n }\n\n return isNonEmptyArray(deps) ? { deps } : null;\n}\n"],"mappings":";;;;;;;;;;AAYA,MAAM,yBAAiD;CACrD,QAAQ,qBAAqB;CAC7B,QAAQ,qBAAqB;CAC7B,OAAO,oBAAoB;AAC7B;AAEA,SAAgB,mBACd,SACA,aAC2B;CAC3B,OAAO,MAAM,sCAAsC,YAAY,EAAE;CACjE,MAAM,SAAS,aAAa,UAAU,OAAO;CAC7C,IAAI,CAAC,OAAO,SAAS;EACnB,OAAO,MAAM;GAAE;GAAa,KAAK,OAAO;EAAM,GAAG,yBAAyB;EAC1E,OAAO;CACT;CAEA,MAAM,OAA4B,CAAC;CAEnC,KAAK,MAAM,UAAU,OAAO,KAAK,WAAW,CAAC,GAAG;EAC9C,IAAI,OAAO,SAAS,IAAI,GAEtB;EAGF,IAAI;EACJ,IAAI;GACF,eAAe,YAAY,MAAM;EACnC,SAAS,KAAK;GACZ,OAAO,MAAM;IAAE;IAAQ;GAAI,GAAG,wBAAwB;GACtD,KAAK,KAAK;IACR,SAAS;IACT,YAAY;GACd,CAAC;GACD;EACF;EACA,MAAM,aAAa,uBAAuB,aAAa;EAEvD,IAAI,kBAAkB,UAAU,GAAG;GACjC,IAAI,aAAa,iBAAiB,YAChC,KAAK,KAAK;IAER,SACE,aAAa,iBAAiB,aAC1B,SACA,aAAa;IACnB,YAAY;GACd,CAAC;GAEH;EACF;EAEA,IAAI,kBAAkB,aAAa,GAAG,GAAG;GACvC,KAAK,KAAK;IACR,SAAS,aAAa;IACtB,YAAY;GACd,CAAC;GACD;EACF;EAEA,KAAK,KAAK;GACR,SAAS,aAAa;GACtB;GACA,cAAc,aAAa;EAC7B,CAAC;CACH;CAEA,KAAK,MAAM,CAAC,YAAY,UAAU,OAAO,QACvC,OAAO,KAAK,eAAe,CAAC,CAC9B,GACE,IAAI,WAAW,UAAU,GAAG;EAC1B,MAAM,aAAa,cAAc,UAAU;EAC3C,KAAK,KAAK;GACR,GAAG;GACH,SAAS;GACT,cAAc;GACd,SAAS;GACT,oBAAoB;EACtB,CAAC;CACH,OACE,KAAK,KAAK;EACR,SAAS;EACT,cAAc;EACd,YAAY;EACZ,SAAS;EACT,oBAAoB;CACtB,CAAC;CAIL,KAAK,MAAM,eAAe,OAAO,KAAK,gBAAgB,CAAC,GACrD,KAAK,MAAM,CAAC,YAAY,UAAU,OAAO,QACvC,YAAY,eAAe,CAAC,CAC9B,GACE,IAAI,WAAW,UAAU,GAAG;EAC1B,MAAM,aAAa,cAAc,UAAU;EAC3C,KAAK,KAAK;GACR,GAAG;GACH,SAAS;GACT,cAAc;GACd,SAAS;GACT,oBAAoB;EACtB,CAAC;CACH,OACE,KAAK,KAAK;EACR,SAAS;EACT,cAAc;EACd,YAAY;EACZ,SAAS;EACT,oBAAoB;CACtB,CAAC;CAKP,OAAO,gBAAgB,IAAI,IAAI,EAAE,KAAK,IAAI;AAC5C"}
|