renovate 44.71.2 → 44.72.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/global.js.map +1 -1
- package/dist/config/options/index.js +2 -0
- package/dist/config/options/index.js.map +1 -1
- package/dist/config/presets/internal/security.preset.js.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/config/validation.js.map +1 -1
- package/dist/logger/config-serializer.js +7 -7
- package/dist/logger/config-serializer.js.map +1 -1
- package/dist/modules/datasource/conan/schema.js.map +1 -1
- package/dist/modules/datasource/deb/index.js +1 -1
- package/dist/modules/datasource/deb/index.js.map +1 -1
- package/dist/modules/datasource/deb/packages.js +1 -1
- package/dist/modules/datasource/deb/packages.js.map +1 -1
- package/dist/modules/datasource/docker/schema.js +1 -1
- package/dist/modules/datasource/docker/schema.js.map +1 -1
- package/dist/modules/datasource/orb/schema.js.map +1 -1
- package/dist/modules/datasource/terraform-module/schema.js.map +1 -1
- package/dist/modules/datasource/terraform-provider/schema.js.map +1 -1
- package/dist/modules/manager/argocd/extract.js +17 -15
- package/dist/modules/manager/argocd/extract.js.map +1 -1
- package/dist/modules/manager/bazel-module/rules.js.map +1 -1
- package/dist/modules/manager/cargo/schema.js.map +1 -1
- package/dist/modules/manager/dockerfile/extract.js.map +1 -1
- package/dist/modules/manager/fingerprint.generated.js +10 -10
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/fleet/extract.js +16 -7
- package/dist/modules/manager/fleet/extract.js.map +1 -1
- package/dist/modules/manager/flux/extract.js +4 -8
- package/dist/modules/manager/flux/extract.js.map +1 -1
- package/dist/modules/manager/gradle/extract/catalog.js.map +1 -1
- package/dist/modules/manager/helmfile/extract.js +12 -12
- package/dist/modules/manager/helmfile/extract.js.map +1 -1
- package/dist/modules/manager/helmsman/extract.js +8 -10
- package/dist/modules/manager/helmsman/extract.js.map +1 -1
- package/dist/modules/manager/helmv3/oci.js +22 -1
- package/dist/modules/manager/helmv3/oci.js.map +1 -1
- package/dist/modules/manager/helmv3/utils.js +2 -7
- package/dist/modules/manager/helmv3/utils.js.map +1 -1
- package/dist/modules/manager/kustomize/extract.js +6 -10
- package/dist/modules/manager/kustomize/extract.js.map +1 -1
- package/dist/modules/manager/mise/extract.js +1 -1
- package/dist/modules/manager/mise/extract.js.map +1 -1
- package/dist/modules/manager/nix/extract.js +2 -2
- package/dist/modules/manager/nix/extract.js.map +1 -1
- package/dist/modules/manager/npm/extract/index.js.map +1 -1
- package/dist/modules/manager/npm/post-update/index.js.map +1 -1
- package/dist/modules/manager/npm/post-update/npm.js.map +1 -1
- package/dist/modules/manager/npm/update/dependency/index.js.map +1 -1
- package/dist/modules/manager/ocb/extract.js +2 -2
- package/dist/modules/manager/ocb/extract.js.map +1 -1
- package/dist/modules/manager/pep723/utils.js +1 -1
- package/dist/modules/manager/pep723/utils.js.map +1 -1
- package/dist/modules/manager/pipenv/extract.js.map +1 -1
- package/dist/modules/manager/poetry/schema.js.map +1 -1
- package/dist/modules/manager/poetry/update-locked.js.map +1 -1
- package/dist/modules/manager/sveltos/extract.js +13 -19
- package/dist/modules/manager/sveltos/extract.js.map +1 -1
- package/dist/modules/manager/swift/artifacts.js +1 -1
- package/dist/modules/manager/swift/artifacts.js.map +1 -1
- package/dist/modules/manager/terraform/extractors/resources/helm-release.js +3 -10
- package/dist/modules/manager/terraform/extractors/resources/helm-release.js.map +1 -1
- package/dist/modules/manager/vendir/extract.js +3 -4
- package/dist/modules/manager/vendir/extract.js.map +1 -1
- package/dist/modules/platform/bitbucket/pr-cache.js.map +1 -1
- package/dist/modules/platform/forgejo/pr-cache.js.map +1 -1
- package/dist/modules/platform/gerrit/index.js.map +1 -1
- package/dist/modules/platform/gitea/pr-cache.js.map +1 -1
- package/dist/modules/platform/github/schema.js +1 -1
- package/dist/modules/platform/github/schema.js.map +1 -1
- package/dist/modules/platform/scm-manager/index.js.map +1 -1
- package/dist/modules/versioning/ruby/range.js.map +1 -1
- package/dist/util/cache/package/impl/redis.js.map +1 -1
- package/dist/util/cache/package/impl/sqlite.js.map +1 -1
- package/dist/util/cache/package/namespaces.js.map +1 -1
- package/dist/util/exec/index.js.map +1 -1
- package/dist/util/package-rules/merge-confidence.js +5 -0
- package/dist/util/package-rules/merge-confidence.js.map +1 -1
- package/dist/util/result.js.map +1 -1
- package/dist/util/yaml.js +1 -1
- package/dist/util/yaml.js.map +1 -1
- package/dist/workers/global/config/parse/additional-config-file.js +1 -1
- package/dist/workers/global/config/parse/additional-config-file.js.map +1 -1
- package/dist/workers/global/config/parse/file.js +1 -1
- package/dist/workers/global/config/parse/file.js.map +1 -1
- package/dist/workers/global/config/parse/host-rules-from-env.js.map +1 -1
- package/dist/workers/repository/dependency-dashboard.js.map +1 -1
- package/dist/workers/repository/error.js +1 -1
- package/dist/workers/repository/error.js.map +1 -1
- package/dist/workers/repository/index.js +1 -1
- package/dist/workers/repository/index.js.map +1 -1
- package/dist/workers/repository/onboarding/branch/onboarding-branch-cache.js.map +1 -1
- package/dist/workers/repository/onboarding/pr/pr-list.js.map +1 -1
- package/dist/workers/repository/update/branch/index.js.map +1 -1
- package/package.json +7 -7
- package/renovate-schema.json +2 -2
|
@@ -4,7 +4,7 @@ hashMap.set("ansible", "a52394a36ac5517f7330473c31d93aa05b2ce607c5e951b48f25a469
|
|
|
4
4
|
hashMap.set("ansible-galaxy", "0a264d6be73953d801510fdeff271e4071c274339569c6dab4e2a128eaf4869f");
|
|
5
5
|
hashMap.set("ant", "2df5943cf0ed19a21b94df13729dbb925655548130caf37e3e22bebaed518e17");
|
|
6
6
|
hashMap.set("apm", "146e023bced69a0625adfac29148a5254d9457ad5a48931c7047299f6452cb43");
|
|
7
|
-
hashMap.set("argocd", "
|
|
7
|
+
hashMap.set("argocd", "cff9cd22257bc460ae4b9936570bf0ed5585f280a55d26629deaeeb0bfee8eb5");
|
|
8
8
|
hashMap.set("asdf", "430eb99b58171700c8a59c78b9e648575e9b176b781d90dd10a710f7b69015bb");
|
|
9
9
|
hashMap.set("azure-pipelines", "6bf7782e8a02fc87dc5d84aab59e517c09df51fd23cf57805e62207dbd5efdb5");
|
|
10
10
|
hashMap.set("batect", "375d39b432013bedb1330cf40a2199dd822751b28578214f219e7bab98594b8d");
|
|
@@ -39,8 +39,8 @@ hashMap.set("devcontainer", "24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f25
|
|
|
39
39
|
hashMap.set("docker-compose", "a9c27711356fbda8dd14f21e046936e1e43f18c5528325b468d89937f76fe1e7");
|
|
40
40
|
hashMap.set("dockerfile", "a83e9e93f31576697d45fd60a0b44f7d14a610752e695a62507624ab2dbb2162");
|
|
41
41
|
hashMap.set("droneci", "e2039bb37c2d63c53027b188d1f0faa7c8923dcbfe6cf3851fba8d4e9f43a358");
|
|
42
|
-
hashMap.set("fleet", "
|
|
43
|
-
hashMap.set("flux", "
|
|
42
|
+
hashMap.set("fleet", "4942d52e82f35c41e2d46cf76f426e2d91b350338cfc0bbcb97e8aaae2a1ac0b");
|
|
43
|
+
hashMap.set("flux", "c67562b40cc7cd5e22b4c1ac642fc92ef46db79da9cea174e8aefcc20dde9811");
|
|
44
44
|
hashMap.set("fvm", "9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90");
|
|
45
45
|
hashMap.set("git-submodules", "df8bb92b2906d8cddda2d4b302ee503f8002e3554d32d74cef2f584fe891f38f");
|
|
46
46
|
hashMap.set("github-actions", "28532556bb676239d3af375c21af30cfe392ff029f8a695391e0fc1203fc0cab");
|
|
@@ -54,9 +54,9 @@ hashMap.set("gradle-wrapper", "77f7e75be2597b847fc821ff8ff5bb4b3e37ab3cc4e780e22
|
|
|
54
54
|
hashMap.set("haskell-cabal", "f158b7725e3143dfd2950e3de0bbccc2a61cd7eba87f7a54c5057e01252348e2");
|
|
55
55
|
hashMap.set("helm-requirements", "7ee9dace4c036dfe113c0c0e46369d8b83a739caa831660142ca98d3236a180a");
|
|
56
56
|
hashMap.set("helm-values", "01069e887d4f3b55ca62a3c0dc66d8620264e1426207be9eb240a10c1ad5e412");
|
|
57
|
-
hashMap.set("helmfile", "
|
|
58
|
-
hashMap.set("helmsman", "
|
|
59
|
-
hashMap.set("helmv3", "
|
|
57
|
+
hashMap.set("helmfile", "0084e0b81794d57ee7937a76f652a7f06be49fe045a22715773153486e1b4849");
|
|
58
|
+
hashMap.set("helmsman", "951deeb3355da751ef39c9e932b26ea749450e32e75759e4b5fc29359e100b37");
|
|
59
|
+
hashMap.set("helmv3", "b9be11ed173f52808328e1d180289aa0a005ad64bb6261ad3e2e0269a18ec18f");
|
|
60
60
|
hashMap.set("hermit", "0fb25b7766c3a264fbb765ff75b1542b24136c4c9f933696d4a5aecfed637071");
|
|
61
61
|
hashMap.set("homeassistant-manifest", "05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f");
|
|
62
62
|
hashMap.set("homebrew", "9c64a4f1475b1c2052372e566c9190f32ae8acd1c54313031d55ae8772388367");
|
|
@@ -75,7 +75,7 @@ hashMap.set("mise", "bc13ff3b8b16a2e79f450017920e87da37fbfbf61fc8c95ddeaa7cfd451
|
|
|
75
75
|
hashMap.set("mix", "473bb870c00b270faae93c4614873f644ad516f762acf07f773b12a7b8e01d19");
|
|
76
76
|
hashMap.set("nix", "a9d4ae3f9f01abb71dc9ebc12a9cd8bec237ad9d2dabfbf4f5ffd59e56c9a612");
|
|
77
77
|
hashMap.set("nodenv", "ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8");
|
|
78
|
-
hashMap.set("npm", "
|
|
78
|
+
hashMap.set("npm", "2620e8dab9fb20820cbcb083fdcfc7d14379eb94d2c2873be71b783ccbcde32c");
|
|
79
79
|
hashMap.set("nuget", "136bc3226e77b8fe65940454dc2c858fde86c2e0da6dbbdf71a5269ab137caee");
|
|
80
80
|
hashMap.set("nvm", "3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322");
|
|
81
81
|
hashMap.set("ocb", "032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca");
|
|
@@ -102,10 +102,10 @@ hashMap.set("sbt", "2bb0c98d231bbd6c9043127bfc566a954e7e04fc8654b119c14438a63371
|
|
|
102
102
|
hashMap.set("scalafmt", "9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f");
|
|
103
103
|
hashMap.set("setup-cfg", "4a3a7c812d34739c07685691e7e64c7d3127f9d7d4aff99dc45a25df97ed9745");
|
|
104
104
|
hashMap.set("smithy", "9641b91d065ffb63be0dd888139a0402dba41e550f8b44c592db9daf52109100");
|
|
105
|
-
hashMap.set("sveltos", "
|
|
105
|
+
hashMap.set("sveltos", "60dd75bb53ace31217211100d622fdb65068c6162758b6ae7103a6ce8bdc9f90");
|
|
106
106
|
hashMap.set("swift", "5ebd875ee7a541b4725f6263789ea9a7c77a4b7c40b2119f894e67b588cfa672");
|
|
107
107
|
hashMap.set("tekton", "33948f5bdf7553909fa63744adb26da97ddf366e9499bccab1250879570267c9");
|
|
108
|
-
hashMap.set("terraform", "
|
|
108
|
+
hashMap.set("terraform", "d1d5e54517e6075035b4c03de3419f09008c661587ad16a7d8bada4150a92f6f");
|
|
109
109
|
hashMap.set("terraform-version", "ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa");
|
|
110
110
|
hashMap.set("terragrunt", "ffcbaa67dd65f064d43f8c121c1006115eab1879c4bd38de263b9b90a009c118");
|
|
111
111
|
hashMap.set("terragrunt-version", "eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d");
|
|
@@ -114,7 +114,7 @@ hashMap.set("travis", "04c94f72622003195c8ea8147c8fbd93003f444ec807ce33f2ada2384
|
|
|
114
114
|
hashMap.set("typst", "d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248");
|
|
115
115
|
hashMap.set("unity3d", "f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920");
|
|
116
116
|
hashMap.set("velaci", "fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de");
|
|
117
|
-
hashMap.set("vendir", "
|
|
117
|
+
hashMap.set("vendir", "59e860a89a35f58760296ecc076310f672a0211740dcebca20e38b04dc0c5553");
|
|
118
118
|
hashMap.set("woodpecker", "6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045");
|
|
119
119
|
hashMap.set("xcodegen", "dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683");
|
|
120
120
|
hashMap.set("jsonata", "416bcf61144b276b3112814c6e6d261aa29608f46fbb0516c471d35c16f8f0d7");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprint.generated.js","names":[],"sources":["../../../lib/modules/manager/fingerprint.generated.ts"],"sourcesContent":["export const hashMap = new Map<string, string>();\n\nhashMap.set('ansible','a52394a36ac5517f7330473c31d93aa05b2ce607c5e951b48f25a4693cd20a81');\nhashMap.set('ansible-galaxy','0a264d6be73953d801510fdeff271e4071c274339569c6dab4e2a128eaf4869f');\nhashMap.set('ant','2df5943cf0ed19a21b94df13729dbb925655548130caf37e3e22bebaed518e17');\nhashMap.set('apm','146e023bced69a0625adfac29148a5254d9457ad5a48931c7047299f6452cb43');\nhashMap.set('argocd','5d35b1992e53130bf83b0e59a0f90ccd3a78919974c69044f306dc5d162f48ce');\nhashMap.set('asdf','430eb99b58171700c8a59c78b9e648575e9b176b781d90dd10a710f7b69015bb');\nhashMap.set('azure-pipelines','6bf7782e8a02fc87dc5d84aab59e517c09df51fd23cf57805e62207dbd5efdb5');\nhashMap.set('batect','375d39b432013bedb1330cf40a2199dd822751b28578214f219e7bab98594b8d');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','ef00591c6f09069550ef97ff7ff5e387b9dd3df51cdecc9ef941169b19315396');\nhashMap.set('bazel-module','65e6cb3d6c0d9b3b1fda22388b6c72148c518cd06e8c434b46e4645384381bad');\nhashMap.set('bazelisk','a83328e3c5b4c3f5af2e425f680b4852c08ef5c6d035a248e09577136cf3b14d');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','59c0503494ab1442b127914503c01b97ac17b6742b19c632292d5aa24de115cd');\nhashMap.set('bitrise','478dfd316221fad7c29e177c70d1018d832fb2626b53308a5d0f1f0380e69f42');\nhashMap.set('buildkite','b8b404f53cd5d61c39153fddf93945e621471c4ac6aa9960c881cd868922bb4c');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','3d40239b69d462ab843562ff8ee5bfacbc46d4976d38d0af17d037973f174e3e');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','9c5b8a2e7b84a545bbd6cc74c1fd9422f167da67c41bcc9bfb4cc2098b41de0c');\nhashMap.set('cake','9ebd8b481220b30a8860121d26184540a1a2fcc05ef780df9295dea39b386fad');\nhashMap.set('cargo','e8f43c68e874a9f3e684c2f3323b77a2799c49a1a538495ae75fb3a3bdd1f786');\nhashMap.set('cdnurl','9a81c8e3c6ad6c788498c99fc1067ffdfcd92a427c3afaf8c0130975d83131f2');\nhashMap.set('circleci','91cbeb33ea20f9838e2c81a1195eb806f0b38fa282bc3679f62552f20575ca85');\nhashMap.set('cloudbuild','f4e40388944652c8a19f8518771ac8d3f3c4ccf81ddef0e68b463aca833cb73c');\nhashMap.set('cocoapods','f832e2beef885bb3fd697ed9bb3e8cd742926bfec37ff41212edd2dbb4edb3ba');\nhashMap.set('composer','3906e56e8decf5d5e51cccdb46d2ce4eb4ff8efc8b0596b859f0f7210e13ed45');\nhashMap.set('conan','1cfe3887dba15d974fbbad3c0f49b7b745a6bad194ff95f067976ce3ae47d2bf');\nhashMap.set('copier','d70688a4a74d7239229a69eb1e3c5af19da0a38d12b9324c92ff86776fa0dec7');\nhashMap.set('cpanfile','07813fec3f3c2197056500e9266a0553b9774c02f2c74d5ca2e213188c7c12d3');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deno','bdb28fcfdc032e3ea75d2569213fef207fd18bcaa46a6e4ea933150e49df24bf');\nhashMap.set('deps-edn','7b6ac92be04b44fdf1da8755550a6417bb294908158119c8fff10adeb05048d2');\nhashMap.set('devbox','abca7468e2363c04b7e4b85bfdbc75e11ed38e9d3b84b9ccc6d1a4c34a8fc1fb');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','a9c27711356fbda8dd14f21e046936e1e43f18c5528325b468d89937f76fe1e7');\nhashMap.set('dockerfile','a83e9e93f31576697d45fd60a0b44f7d14a610752e695a62507624ab2dbb2162');\nhashMap.set('droneci','e2039bb37c2d63c53027b188d1f0faa7c8923dcbfe6cf3851fba8d4e9f43a358');\nhashMap.set('fleet','6b091fd5b8c2e9fc5d5b81ba34befec915d585d45cbc175c851ccc1555372925');\nhashMap.set('flux','70833dd068ea0a746a9392469e7904021562c7629428d0cd554603bad4eb6ce5');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','df8bb92b2906d8cddda2d4b302ee503f8002e3554d32d74cef2f584fe891f38f');\nhashMap.set('github-actions','28532556bb676239d3af375c21af30cfe392ff029f8a695391e0fc1203fc0cab');\nhashMap.set('gitlabci','a5e1e66ef461e1c1e71062f85f35a212417e23627f4b002810f9a98295d6e672');\nhashMap.set('gitlabci-include','8860a15ab516fde00694f9bd9bf56fce4addafe5a55b5ddb9a4ec477d301d351');\nhashMap.set('glasskube','93e7b9000a17efa15a1abaaf320b5af9169b1ecd828fc0c881d98570ef9d9e30');\nhashMap.set('gleam','a3bd05c4814eb57872d39979a40342a8ee23e61a85e2ab25e84346e8215dadc1');\nhashMap.set('gomod','1ed58f0af452a6776ae1899466851bab659f8287c90cff96619068d8184048d5');\nhashMap.set('gradle','ef9db616bf60e9a3623fff0e41df274a457333a37f37c24f3841a3ca3a531449');\nhashMap.set('gradle-wrapper','77f7e75be2597b847fc821ff8ff5bb4b3e37ab3cc4e780e22ce75e0342becac8');\nhashMap.set('haskell-cabal','f158b7725e3143dfd2950e3de0bbccc2a61cd7eba87f7a54c5057e01252348e2');\nhashMap.set('helm-requirements','7ee9dace4c036dfe113c0c0e46369d8b83a739caa831660142ca98d3236a180a');\nhashMap.set('helm-values','01069e887d4f3b55ca62a3c0dc66d8620264e1426207be9eb240a10c1ad5e412');\nhashMap.set('helmfile','433d1d0fd4a81f191a0b553ab52419627b1d7aa0eb3099d53f7ae4a1d076c221');\nhashMap.set('helmsman','c4af380756eae8dc988d24c91e9749ce0a97b201daa55f59d2394c1c90d73779');\nhashMap.set('helmv3','cc9396b650a7226eeae1bed6b620cfb6d12e6a8ad52faf80b527ffaeb2b68066');\nhashMap.set('hermit','0fb25b7766c3a264fbb765ff75b1542b24136c4c9f933696d4a5aecfed637071');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','9c64a4f1475b1c2052372e566c9190f32ae8acd1c54313031d55ae8772388367');\nhashMap.set('html','81fa6c2bf2b868596584a48b949645207a2aa3081951ed99183ee50b70b77d5f');\nhashMap.set('jenkins','7bfb09418a132e052579196633bac78ac947cf93f1e70748ea1b3da929874b87');\nhashMap.set('jsonnet-bundler','06d163b939b258e1e2847a12a1249cb7d68d77c7bcf13c6d1a0a916744eba5cc');\nhashMap.set('kotlin-script','95ebc844c040ca047321b207d525220e29774a2a1fe06f9639e8353c66908564');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','558fcfe5b20f1eb4aba0d3c755a060bb4561611e99db7000786ce4edcd3f7894');\nhashMap.set('leiningen','a7295160ce901e08e12be75cb3aaf6b9a199de811eb60b618feb773f7c552bba');\nhashMap.set('maven','c110b99291c2a5bc82cf7a69330275e9bbd7dc8ba3e9e987611dfcffbe002d8d');\nhashMap.set('maven-wrapper','db967206d960b12d7c58d78132808d3c412087ababf5c59444262782e4434c6a');\nhashMap.set('meteor','4636a47ba4dcfff19fe662572ef7a40d17146be3c966e00ef437e1fc8de92776');\nhashMap.set('mint','248fe4f1ea5c985921c286785792c97e06fc41f402b2d45df82f6aecd17f710e');\nhashMap.set('mise','bc13ff3b8b16a2e79f450017920e87da37fbfbf61fc8c95ddeaa7cfd4517b5b6');\nhashMap.set('mix','473bb870c00b270faae93c4614873f644ad516f762acf07f773b12a7b8e01d19');\nhashMap.set('nix','a9d4ae3f9f01abb71dc9ebc12a9cd8bec237ad9d2dabfbf4f5ffd59e56c9a612');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','26f264e7496db13a14384335b904f2a3ba8517fd5ac95ed8285248b95da46dda');\nhashMap.set('nuget','136bc3226e77b8fe65940454dc2c858fde86c2e0da6dbbdf71a5269ab137caee');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','d6567a733ef3983112b46fdccd7ceebfcd48411104e0c6b6e714d4310db48024');\nhashMap.set('pep621','2908e3287941e0d111b492140b56863915f8ed8601a7728de39ff9f878400210');\nhashMap.set('pep723','b96683163de63ed93207ec0538066705b1e58a1cd5b8bd11c63fc28b26bddba1');\nhashMap.set('pip-compile','ad43905a365c677315d2dcba725aef9b82c677d6ff30ee358f890f10faeb035f');\nhashMap.set('pip_requirements','953af0f3b41c2c1027327a8b1f37675c72892a8b03fdfbc3862ab63a1c3c72bf');\nhashMap.set('pip_setup','df18fba2bdcf48f3ca12a8f7e5cd28df31e2368d5528127277038ef4206eca79');\nhashMap.set('pipenv','fc2fd2e06753fada34958eb190c6d9236271b81a8a4cf1a354937a209cef06a9');\nhashMap.set('pixi','eb3a49c742d7de368b631c0b4fc5ae1a011b5ce85752e6bdf870f24c3e548bc5');\nhashMap.set('poetry','33dfbd8bddcf2aca101be8c869cca7ba8d33a7224c7b86296718814fde8241cb');\nhashMap.set('pre-commit','a8fa968d6308947c8a6eedd799ea449e548e918971acdc250b627e86a446dc23');\nhashMap.set('proto','412053d4550026b4ace490b46e970915b87ec1abf0b0a0c6c8c58ccf1fc16843');\nhashMap.set('pub','d0c11bb1076c7b84a3f30458d8747d5cdfd0126cc52a8d8218ab77c46287219b');\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','2bb0c98d231bbd6c9043127bfc566a954e7e04fc8654b119c14438a63371e4a7');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','4a3a7c812d34739c07685691e7e64c7d3127f9d7d4aff99dc45a25df97ed9745');\nhashMap.set('smithy','9641b91d065ffb63be0dd888139a0402dba41e550f8b44c592db9daf52109100');\nhashMap.set('sveltos','e0b799487e3331b91de1fec7dfb975378340b883dc0aeb95b950d289eb4737c5');\nhashMap.set('swift','5ebd875ee7a541b4725f6263789ea9a7c77a4b7c40b2119f894e67b588cfa672');\nhashMap.set('tekton','33948f5bdf7553909fa63744adb26da97ddf366e9499bccab1250879570267c9');\nhashMap.set('terraform','369872bc79b8c0424d68345b2cec69d71534c0a4a42113af8ee7f04c32ad95a2');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','ffcbaa67dd65f064d43f8c121c1006115eab1879c4bd38de263b9b90a009c118');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','31247d37bc80aae17039bfa21bd989c5717730c5ef10cf2a6f09841576d012ec');\nhashMap.set('travis','04c94f72622003195c8ea8147c8fbd93003f444ec807ce33f2ada2384282db83');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','f07c508ef8bf0c6d74b4e3ebdc7573ab606ab7f0671f4d1e5f6002adaed84c9c');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('xcodegen','dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683');\nhashMap.set('jsonata','416bcf61144b276b3112814c6e6d261aa29608f46fbb0516c471d35c16f8f0d7');\nhashMap.set('regex','20be5247fdc164173871a051acb0527da017d0c155c653d7563601f55e7b3ff5');"],"mappings":";AAAA,MAAa,0BAAU,IAAI,IAAoB;AAE/C,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,mBAAkB,kEAAkE;AAChG,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,gBAAe,kEAAkE;AAC7F,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,uBAAsB,kEAAkE;AACpG,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,eAAc,kEAAkE;AAC5F,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,gBAAe,kEAAkE;AAC7F,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,oBAAmB,kEAAkE;AACjG,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,iBAAgB,kEAAkE;AAC9F,QAAQ,IAAI,qBAAoB,kEAAkE;AAClG,QAAQ,IAAI,eAAc,kEAAkE;AAC5F,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,0BAAyB,kEAAkE;AACvG,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,mBAAkB,kEAAkE;AAChG,QAAQ,IAAI,iBAAgB,kEAAkE;AAC9F,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,iBAAgB,kEAAkE;AAC9F,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,eAAc,kEAAkE;AAC5F,QAAQ,IAAI,oBAAmB,kEAAkE;AACjG,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,QAAO,kEAAkE;AACrF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,mBAAkB,kEAAkE;AAChG,QAAQ,IAAI,gBAAe,kEAAkE;AAC7F,QAAQ,IAAI,mBAAkB,kEAAkE;AAChG,QAAQ,IAAI,kBAAiB,kEAAkE;AAC/F,QAAQ,IAAI,OAAM,kEAAkE;AACpF,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,aAAY,kEAAkE;AAC1F,QAAQ,IAAI,qBAAoB,kEAAkE;AAClG,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,sBAAqB,kEAAkE;AACnG,QAAQ,IAAI,iBAAgB,kEAAkE;AAC9F,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,SAAQ,kEAAkE;AACtF,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,UAAS,kEAAkE;AACvF,QAAQ,IAAI,cAAa,kEAAkE;AAC3F,QAAQ,IAAI,YAAW,kEAAkE;AACzF,QAAQ,IAAI,WAAU,kEAAkE;AACxF,QAAQ,IAAI,SAAQ,kEAAkE"}
|
|
1
|
+
{"version":3,"file":"fingerprint.generated.js","names":[],"sources":["../../../lib/modules/manager/fingerprint.generated.ts"],"sourcesContent":["export const hashMap = new Map<string, string>();\n\nhashMap.set('ansible','a52394a36ac5517f7330473c31d93aa05b2ce607c5e951b48f25a4693cd20a81');\nhashMap.set('ansible-galaxy','0a264d6be73953d801510fdeff271e4071c274339569c6dab4e2a128eaf4869f');\nhashMap.set('ant','2df5943cf0ed19a21b94df13729dbb925655548130caf37e3e22bebaed518e17');\nhashMap.set('apm','146e023bced69a0625adfac29148a5254d9457ad5a48931c7047299f6452cb43');\nhashMap.set('argocd','cff9cd22257bc460ae4b9936570bf0ed5585f280a55d26629deaeeb0bfee8eb5');\nhashMap.set('asdf','430eb99b58171700c8a59c78b9e648575e9b176b781d90dd10a710f7b69015bb');\nhashMap.set('azure-pipelines','6bf7782e8a02fc87dc5d84aab59e517c09df51fd23cf57805e62207dbd5efdb5');\nhashMap.set('batect','375d39b432013bedb1330cf40a2199dd822751b28578214f219e7bab98594b8d');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','ef00591c6f09069550ef97ff7ff5e387b9dd3df51cdecc9ef941169b19315396');\nhashMap.set('bazel-module','65e6cb3d6c0d9b3b1fda22388b6c72148c518cd06e8c434b46e4645384381bad');\nhashMap.set('bazelisk','a83328e3c5b4c3f5af2e425f680b4852c08ef5c6d035a248e09577136cf3b14d');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','59c0503494ab1442b127914503c01b97ac17b6742b19c632292d5aa24de115cd');\nhashMap.set('bitrise','478dfd316221fad7c29e177c70d1018d832fb2626b53308a5d0f1f0380e69f42');\nhashMap.set('buildkite','b8b404f53cd5d61c39153fddf93945e621471c4ac6aa9960c881cd868922bb4c');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','3d40239b69d462ab843562ff8ee5bfacbc46d4976d38d0af17d037973f174e3e');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','9c5b8a2e7b84a545bbd6cc74c1fd9422f167da67c41bcc9bfb4cc2098b41de0c');\nhashMap.set('cake','9ebd8b481220b30a8860121d26184540a1a2fcc05ef780df9295dea39b386fad');\nhashMap.set('cargo','e8f43c68e874a9f3e684c2f3323b77a2799c49a1a538495ae75fb3a3bdd1f786');\nhashMap.set('cdnurl','9a81c8e3c6ad6c788498c99fc1067ffdfcd92a427c3afaf8c0130975d83131f2');\nhashMap.set('circleci','91cbeb33ea20f9838e2c81a1195eb806f0b38fa282bc3679f62552f20575ca85');\nhashMap.set('cloudbuild','f4e40388944652c8a19f8518771ac8d3f3c4ccf81ddef0e68b463aca833cb73c');\nhashMap.set('cocoapods','f832e2beef885bb3fd697ed9bb3e8cd742926bfec37ff41212edd2dbb4edb3ba');\nhashMap.set('composer','3906e56e8decf5d5e51cccdb46d2ce4eb4ff8efc8b0596b859f0f7210e13ed45');\nhashMap.set('conan','1cfe3887dba15d974fbbad3c0f49b7b745a6bad194ff95f067976ce3ae47d2bf');\nhashMap.set('copier','d70688a4a74d7239229a69eb1e3c5af19da0a38d12b9324c92ff86776fa0dec7');\nhashMap.set('cpanfile','07813fec3f3c2197056500e9266a0553b9774c02f2c74d5ca2e213188c7c12d3');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deno','bdb28fcfdc032e3ea75d2569213fef207fd18bcaa46a6e4ea933150e49df24bf');\nhashMap.set('deps-edn','7b6ac92be04b44fdf1da8755550a6417bb294908158119c8fff10adeb05048d2');\nhashMap.set('devbox','abca7468e2363c04b7e4b85bfdbc75e11ed38e9d3b84b9ccc6d1a4c34a8fc1fb');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','a9c27711356fbda8dd14f21e046936e1e43f18c5528325b468d89937f76fe1e7');\nhashMap.set('dockerfile','a83e9e93f31576697d45fd60a0b44f7d14a610752e695a62507624ab2dbb2162');\nhashMap.set('droneci','e2039bb37c2d63c53027b188d1f0faa7c8923dcbfe6cf3851fba8d4e9f43a358');\nhashMap.set('fleet','4942d52e82f35c41e2d46cf76f426e2d91b350338cfc0bbcb97e8aaae2a1ac0b');\nhashMap.set('flux','c67562b40cc7cd5e22b4c1ac642fc92ef46db79da9cea174e8aefcc20dde9811');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','df8bb92b2906d8cddda2d4b302ee503f8002e3554d32d74cef2f584fe891f38f');\nhashMap.set('github-actions','28532556bb676239d3af375c21af30cfe392ff029f8a695391e0fc1203fc0cab');\nhashMap.set('gitlabci','a5e1e66ef461e1c1e71062f85f35a212417e23627f4b002810f9a98295d6e672');\nhashMap.set('gitlabci-include','8860a15ab516fde00694f9bd9bf56fce4addafe5a55b5ddb9a4ec477d301d351');\nhashMap.set('glasskube','93e7b9000a17efa15a1abaaf320b5af9169b1ecd828fc0c881d98570ef9d9e30');\nhashMap.set('gleam','a3bd05c4814eb57872d39979a40342a8ee23e61a85e2ab25e84346e8215dadc1');\nhashMap.set('gomod','1ed58f0af452a6776ae1899466851bab659f8287c90cff96619068d8184048d5');\nhashMap.set('gradle','ef9db616bf60e9a3623fff0e41df274a457333a37f37c24f3841a3ca3a531449');\nhashMap.set('gradle-wrapper','77f7e75be2597b847fc821ff8ff5bb4b3e37ab3cc4e780e22ce75e0342becac8');\nhashMap.set('haskell-cabal','f158b7725e3143dfd2950e3de0bbccc2a61cd7eba87f7a54c5057e01252348e2');\nhashMap.set('helm-requirements','7ee9dace4c036dfe113c0c0e46369d8b83a739caa831660142ca98d3236a180a');\nhashMap.set('helm-values','01069e887d4f3b55ca62a3c0dc66d8620264e1426207be9eb240a10c1ad5e412');\nhashMap.set('helmfile','0084e0b81794d57ee7937a76f652a7f06be49fe045a22715773153486e1b4849');\nhashMap.set('helmsman','951deeb3355da751ef39c9e932b26ea749450e32e75759e4b5fc29359e100b37');\nhashMap.set('helmv3','b9be11ed173f52808328e1d180289aa0a005ad64bb6261ad3e2e0269a18ec18f');\nhashMap.set('hermit','0fb25b7766c3a264fbb765ff75b1542b24136c4c9f933696d4a5aecfed637071');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','9c64a4f1475b1c2052372e566c9190f32ae8acd1c54313031d55ae8772388367');\nhashMap.set('html','81fa6c2bf2b868596584a48b949645207a2aa3081951ed99183ee50b70b77d5f');\nhashMap.set('jenkins','7bfb09418a132e052579196633bac78ac947cf93f1e70748ea1b3da929874b87');\nhashMap.set('jsonnet-bundler','06d163b939b258e1e2847a12a1249cb7d68d77c7bcf13c6d1a0a916744eba5cc');\nhashMap.set('kotlin-script','95ebc844c040ca047321b207d525220e29774a2a1fe06f9639e8353c66908564');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','558fcfe5b20f1eb4aba0d3c755a060bb4561611e99db7000786ce4edcd3f7894');\nhashMap.set('leiningen','a7295160ce901e08e12be75cb3aaf6b9a199de811eb60b618feb773f7c552bba');\nhashMap.set('maven','c110b99291c2a5bc82cf7a69330275e9bbd7dc8ba3e9e987611dfcffbe002d8d');\nhashMap.set('maven-wrapper','db967206d960b12d7c58d78132808d3c412087ababf5c59444262782e4434c6a');\nhashMap.set('meteor','4636a47ba4dcfff19fe662572ef7a40d17146be3c966e00ef437e1fc8de92776');\nhashMap.set('mint','248fe4f1ea5c985921c286785792c97e06fc41f402b2d45df82f6aecd17f710e');\nhashMap.set('mise','bc13ff3b8b16a2e79f450017920e87da37fbfbf61fc8c95ddeaa7cfd4517b5b6');\nhashMap.set('mix','473bb870c00b270faae93c4614873f644ad516f762acf07f773b12a7b8e01d19');\nhashMap.set('nix','a9d4ae3f9f01abb71dc9ebc12a9cd8bec237ad9d2dabfbf4f5ffd59e56c9a612');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','2620e8dab9fb20820cbcb083fdcfc7d14379eb94d2c2873be71b783ccbcde32c');\nhashMap.set('nuget','136bc3226e77b8fe65940454dc2c858fde86c2e0da6dbbdf71a5269ab137caee');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','d6567a733ef3983112b46fdccd7ceebfcd48411104e0c6b6e714d4310db48024');\nhashMap.set('pep621','2908e3287941e0d111b492140b56863915f8ed8601a7728de39ff9f878400210');\nhashMap.set('pep723','b96683163de63ed93207ec0538066705b1e58a1cd5b8bd11c63fc28b26bddba1');\nhashMap.set('pip-compile','ad43905a365c677315d2dcba725aef9b82c677d6ff30ee358f890f10faeb035f');\nhashMap.set('pip_requirements','953af0f3b41c2c1027327a8b1f37675c72892a8b03fdfbc3862ab63a1c3c72bf');\nhashMap.set('pip_setup','df18fba2bdcf48f3ca12a8f7e5cd28df31e2368d5528127277038ef4206eca79');\nhashMap.set('pipenv','fc2fd2e06753fada34958eb190c6d9236271b81a8a4cf1a354937a209cef06a9');\nhashMap.set('pixi','eb3a49c742d7de368b631c0b4fc5ae1a011b5ce85752e6bdf870f24c3e548bc5');\nhashMap.set('poetry','33dfbd8bddcf2aca101be8c869cca7ba8d33a7224c7b86296718814fde8241cb');\nhashMap.set('pre-commit','a8fa968d6308947c8a6eedd799ea449e548e918971acdc250b627e86a446dc23');\nhashMap.set('proto','412053d4550026b4ace490b46e970915b87ec1abf0b0a0c6c8c58ccf1fc16843');\nhashMap.set('pub','d0c11bb1076c7b84a3f30458d8747d5cdfd0126cc52a8d8218ab77c46287219b');\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','2bb0c98d231bbd6c9043127bfc566a954e7e04fc8654b119c14438a63371e4a7');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','4a3a7c812d34739c07685691e7e64c7d3127f9d7d4aff99dc45a25df97ed9745');\nhashMap.set('smithy','9641b91d065ffb63be0dd888139a0402dba41e550f8b44c592db9daf52109100');\nhashMap.set('sveltos','60dd75bb53ace31217211100d622fdb65068c6162758b6ae7103a6ce8bdc9f90');\nhashMap.set('swift','5ebd875ee7a541b4725f6263789ea9a7c77a4b7c40b2119f894e67b588cfa672');\nhashMap.set('tekton','33948f5bdf7553909fa63744adb26da97ddf366e9499bccab1250879570267c9');\nhashMap.set('terraform','d1d5e54517e6075035b4c03de3419f09008c661587ad16a7d8bada4150a92f6f');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','ffcbaa67dd65f064d43f8c121c1006115eab1879c4bd38de263b9b90a009c118');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','31247d37bc80aae17039bfa21bd989c5717730c5ef10cf2a6f09841576d012ec');\nhashMap.set('travis','04c94f72622003195c8ea8147c8fbd93003f444ec807ce33f2ada2384282db83');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','59e860a89a35f58760296ecc076310f672a0211740dcebca20e38b04dc0c5553');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('xcodegen','dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683');\nhashMap.set('jsonata','416bcf61144b276b3112814c6e6d261aa29608f46fbb0516c471d35c16f8f0d7');\nhashMap.set('regex','20be5247fdc164173871a051acb0527da017d0c155c653d7563601f55e7b3ff5');"],"mappings":"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"}
|
|
@@ -2,8 +2,7 @@ import { regEx } from "../../../util/regex.js";
|
|
|
2
2
|
import { parseYaml } from "../../../util/yaml.js";
|
|
3
3
|
import { GitTagsDatasource } from "../../datasource/git-tags/index.js";
|
|
4
4
|
import { HelmDatasource } from "../../datasource/helm/index.js";
|
|
5
|
-
import {
|
|
6
|
-
import { isOCIRegistry, removeOCIPrefix } from "../helmv3/oci.js";
|
|
5
|
+
import { getOciChartDep, isOCIRegistry, removeOCIPrefix } from "../helmv3/oci.js";
|
|
7
6
|
import { checkIfStringIsPath } from "../terraform/util.js";
|
|
8
7
|
import { FleetFile, GitRepo } from "./schema.js";
|
|
9
8
|
import { isUndefined } from "@sindresorhus/is";
|
|
@@ -39,11 +38,21 @@ function extractFleetHelmBlock(doc, config) {
|
|
|
39
38
|
...dep,
|
|
40
39
|
skipReason: "missing-depname"
|
|
41
40
|
};
|
|
42
|
-
if (isOCIRegistry(doc.chart))
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
41
|
+
if (isOCIRegistry(doc.chart)) {
|
|
42
|
+
const ociDep = {
|
|
43
|
+
...dep,
|
|
44
|
+
...getOciChartDep(doc.chart, void 0, config.registryAliases),
|
|
45
|
+
depName: removeOCIPrefix(doc.chart)
|
|
46
|
+
};
|
|
47
|
+
if (!doc.version) return {
|
|
48
|
+
...ociDep,
|
|
49
|
+
skipReason: "unspecified-version"
|
|
50
|
+
};
|
|
51
|
+
return {
|
|
52
|
+
...ociDep,
|
|
53
|
+
currentValue: doc.version
|
|
54
|
+
};
|
|
55
|
+
}
|
|
47
56
|
dep.depName = doc.chart;
|
|
48
57
|
dep.packageName = doc.chart;
|
|
49
58
|
if (!doc.repo) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/fleet/extract.ts"],"sourcesContent":["import { isUndefined } from '@sindresorhus/is';\nimport { regEx } from '../../../util/regex.ts';\nimport { parseYaml } from '../../../util/yaml.ts';\nimport { GitTagsDatasource } from '../../datasource/git-tags/index.ts';\nimport { HelmDatasource } from '../../datasource/helm/index.ts';\nimport {
|
|
1
|
+
{"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/fleet/extract.ts"],"sourcesContent":["import { isUndefined } from '@sindresorhus/is';\nimport { regEx } from '../../../util/regex.ts';\nimport { parseYaml } from '../../../util/yaml.ts';\nimport { GitTagsDatasource } from '../../datasource/git-tags/index.ts';\nimport { HelmDatasource } from '../../datasource/helm/index.ts';\nimport {\n getOciChartDep,\n isOCIRegistry,\n removeOCIPrefix,\n} from '../helmv3/oci.ts';\nimport { checkIfStringIsPath } from '../terraform/util.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFileContent,\n} from '../types.ts';\nimport { FleetFile, type FleetHelmBlock, GitRepo } from './schema.ts';\n\nfunction extractGitRepo(doc: GitRepo): PackageDependency {\n const dep: PackageDependency = {\n depType: 'git_repo',\n datasource: GitTagsDatasource.id,\n };\n\n const repo = doc.spec?.repo;\n if (!repo) {\n return {\n ...dep,\n skipReason: 'missing-depname',\n };\n }\n dep.sourceUrl = repo;\n dep.depName = repo;\n\n const currentValue = doc.spec.revision;\n if (!currentValue) {\n return {\n ...dep,\n skipReason: 'unspecified-version',\n };\n }\n\n return {\n ...dep,\n currentValue,\n };\n}\n\nfunction extractFleetHelmBlock(\n doc: FleetHelmBlock,\n config: ExtractConfig,\n): PackageDependency {\n const dep: PackageDependency = {\n depType: 'fleet',\n datasource: HelmDatasource.id,\n };\n\n if (!doc.chart) {\n return {\n ...dep,\n skipReason: 'missing-depname',\n };\n }\n\n if (isOCIRegistry(doc.chart)) {\n const ociDep: PackageDependency = {\n ...dep,\n ...getOciChartDep(doc.chart, undefined, config.registryAliases),\n depName: removeOCIPrefix(doc.chart),\n };\n if (!doc.version) {\n return {\n ...ociDep,\n skipReason: 'unspecified-version',\n };\n }\n return {\n ...ociDep,\n currentValue: doc.version,\n };\n }\n\n dep.depName = doc.chart;\n dep.packageName = doc.chart;\n\n if (!doc.repo) {\n if (checkIfStringIsPath(doc.chart)) {\n return {\n ...dep,\n skipReason: 'local-chart',\n };\n }\n return {\n ...dep,\n skipReason: 'no-repository',\n };\n }\n\n const alias = config.registryAliases?.[doc.repo];\n if (alias) {\n dep.registryUrls = [alias];\n } else {\n dep.registryUrls = [doc.repo];\n }\n\n const currentValue = doc.version;\n if (!doc.version) {\n return {\n ...dep,\n skipReason: 'unspecified-version',\n };\n }\n\n return {\n ...dep,\n currentValue,\n };\n}\n\nfunction extractFleetFile(\n doc: FleetFile,\n config: ExtractConfig,\n): PackageDependency[] {\n const result: PackageDependency[] = [];\n\n result.push(extractFleetHelmBlock(doc.helm, config));\n\n if (!isUndefined(doc.targetCustomizations)) {\n // remove version from helm block to allow usage of variables defined in the global block, but do not create PRs\n // if there is no version defined in the customization.\n const helmBlockContext: FleetHelmBlock = { ...doc.helm };\n delete helmBlockContext.version;\n\n for (const [index, custom] of doc.targetCustomizations.entries()) {\n const dep = extractFleetHelmBlock(\n {\n // merge base config with customization\n ...helmBlockContext,\n ...custom.helm,\n },\n config,\n );\n result.push({\n // overwrite name with customization name to allow splitting of PRs\n ...dep,\n depName: custom.name ?? `targetCustomization[${index}]`, // if no name is provided, use the index\n });\n }\n }\n return result;\n}\n\nexport function extractPackageFile(\n content: string,\n packageFile: string,\n config: ExtractConfig,\n): PackageFileContent | null {\n if (!content) {\n return null;\n }\n const deps: PackageDependency[] = [];\n\n if (regEx('fleet.ya?ml').test(packageFile)) {\n const docs = parseYaml(content, {\n customSchema: FleetFile,\n failureBehaviour: 'filter',\n });\n const fleetDeps = docs.flatMap((doc) => extractFleetFile(doc, config));\n\n deps.push(...fleetDeps);\n } else {\n const docs = parseYaml(content, {\n customSchema: GitRepo,\n failureBehaviour: 'filter',\n });\n const gitRepoDeps = docs.flatMap(extractGitRepo);\n deps.push(...gitRepoDeps);\n }\n\n return deps.length ? { deps } : null;\n}\n"],"mappings":";;;;;;;;;AAkBA,SAAS,eAAe,KAAiC;CACvD,MAAM,MAAyB;EAC7B,SAAS;EACT,YAAY,kBAAkB;CAChC;CAEA,MAAM,OAAO,IAAI,MAAM;CACvB,IAAI,CAAC,MACH,OAAO;EACL,GAAG;EACH,YAAY;CACd;CAEF,IAAI,YAAY;CAChB,IAAI,UAAU;CAEd,MAAM,eAAe,IAAI,KAAK;CAC9B,IAAI,CAAC,cACH,OAAO;EACL,GAAG;EACH,YAAY;CACd;CAGF,OAAO;EACL,GAAG;EACH;CACF;AACF;AAEA,SAAS,sBACP,KACA,QACmB;CACnB,MAAM,MAAyB;EAC7B,SAAS;EACT,YAAY,eAAe;CAC7B;CAEA,IAAI,CAAC,IAAI,OACP,OAAO;EACL,GAAG;EACH,YAAY;CACd;CAGF,IAAI,cAAc,IAAI,KAAK,GAAG;EAC5B,MAAM,SAA4B;GAChC,GAAG;GACH,GAAG,eAAe,IAAI,OAAO,KAAA,GAAW,OAAO,eAAe;GAC9D,SAAS,gBAAgB,IAAI,KAAK;EACpC;EACA,IAAI,CAAC,IAAI,SACP,OAAO;GACL,GAAG;GACH,YAAY;EACd;EAEF,OAAO;GACL,GAAG;GACH,cAAc,IAAI;EACpB;CACF;CAEA,IAAI,UAAU,IAAI;CAClB,IAAI,cAAc,IAAI;CAEtB,IAAI,CAAC,IAAI,MAAM;EACb,IAAI,oBAAoB,IAAI,KAAK,GAC/B,OAAO;GACL,GAAG;GACH,YAAY;EACd;EAEF,OAAO;GACL,GAAG;GACH,YAAY;EACd;CACF;CAEA,MAAM,QAAQ,OAAO,kBAAkB,IAAI;CAC3C,IAAI,OACF,IAAI,eAAe,CAAC,KAAK;MAEzB,IAAI,eAAe,CAAC,IAAI,IAAI;CAG9B,MAAM,eAAe,IAAI;CACzB,IAAI,CAAC,IAAI,SACP,OAAO;EACL,GAAG;EACH,YAAY;CACd;CAGF,OAAO;EACL,GAAG;EACH;CACF;AACF;AAEA,SAAS,iBACP,KACA,QACqB;CACrB,MAAM,SAA8B,CAAC;CAErC,OAAO,KAAK,sBAAsB,IAAI,MAAM,MAAM,CAAC;CAEnD,IAAI,CAAC,YAAY,IAAI,oBAAoB,GAAG;EAG1C,MAAM,mBAAmC,EAAE,GAAG,IAAI,KAAK;EACvD,OAAO,iBAAiB;EAExB,KAAK,MAAM,CAAC,OAAO,WAAW,IAAI,qBAAqB,QAAQ,GAAG;GAChE,MAAM,MAAM,sBACV;IAEE,GAAG;IACH,GAAG,OAAO;GACZ,GACA,MACF;GACA,OAAO,KAAK;IAEV,GAAG;IACH,SAAS,OAAO,QAAQ,uBAAuB,MAAM;GACvD,CAAC;EACH;CACF;CACA,OAAO;AACT;AAEA,SAAgB,mBACd,SACA,aACA,QAC2B;CAC3B,IAAI,CAAC,SACH,OAAO;CAET,MAAM,OAA4B,CAAC;CAEnC,IAAI,MAAM,aAAa,CAAC,CAAC,KAAK,WAAW,GAAG;EAK1C,MAAM,YAJO,UAAU,SAAS;GAC9B,cAAc;GACd,kBAAkB;EACpB,CACqB,CAAC,CAAC,SAAS,QAAQ,iBAAiB,KAAK,MAAM,CAAC;EAErE,KAAK,KAAK,GAAG,SAAS;CACxB,OAAO;EAKL,MAAM,cAJO,UAAU,SAAS;GAC9B,cAAc;GACd,kBAAkB;EACpB,CACuB,CAAC,CAAC,QAAQ,cAAc;EAC/C,KAAK,KAAK,GAAG,WAAW;CAC1B;CAEA,OAAO,KAAK,SAAS,EAAE,KAAK,IAAI;AAClC"}
|
|
@@ -5,7 +5,6 @@ import { isHttpUrl } from "../../../util/url.js";
|
|
|
5
5
|
import { parseYaml } from "../../../util/yaml.js";
|
|
6
6
|
import { readLocalFile } from "../../../util/fs/index.js";
|
|
7
7
|
import { BitbucketTagsDatasource } from "../../datasource/bitbucket-tags/index.js";
|
|
8
|
-
import { DockerDatasource } from "../../datasource/docker/index.js";
|
|
9
8
|
import { GitRefsDatasource } from "../../datasource/git-refs/index.js";
|
|
10
9
|
import { GitTagsDatasource } from "../../datasource/git-tags/index.js";
|
|
11
10
|
import { GithubReleasesDatasource } from "../../datasource/github-releases/index.js";
|
|
@@ -13,7 +12,7 @@ import { GithubTagsDatasource } from "../../datasource/github-tags/index.js";
|
|
|
13
12
|
import { GitlabTagsDatasource } from "../../datasource/gitlab-tags/index.js";
|
|
14
13
|
import { HelmDatasource } from "../../datasource/helm/index.js";
|
|
15
14
|
import { getDep } from "../dockerfile/extract.js";
|
|
16
|
-
import { isOCIRegistry, removeOCIPrefix } from "../helmv3/oci.js";
|
|
15
|
+
import { getOciChartDep, isOCIRegistry, removeOCIPrefix } from "../helmv3/oci.js";
|
|
17
16
|
import { collectHelmRepos, isSystemManifest, systemManifestHeaderRegex } from "./common.js";
|
|
18
17
|
import { findDependencies } from "../helm-values/extract.js";
|
|
19
18
|
import { extractImage } from "../kustomize/extract.js";
|
|
@@ -77,8 +76,7 @@ function resolveHelmRepository(dep, matchingRepositories, registryAliases, sourc
|
|
|
77
76
|
if (matchingRepositories.length) {
|
|
78
77
|
dep.registryUrls = matchingRepositories.map((repo) => {
|
|
79
78
|
if (repo.spec.type === "oci" || isOCIRegistry(repo.spec.url)) {
|
|
80
|
-
dep.
|
|
81
|
-
dep.packageName = getDep(`${removeOCIPrefix(repo.spec.url)}/${dep.depName}`, false, registryAliases).packageName;
|
|
79
|
+
Object.assign(dep, getOciChartDep(repo.spec.url, dep.depName, registryAliases));
|
|
82
80
|
return null;
|
|
83
81
|
}
|
|
84
82
|
return repo.spec.url;
|
|
@@ -89,10 +87,8 @@ function resolveHelmRepository(dep, matchingRepositories, registryAliases, sourc
|
|
|
89
87
|
if (sourceRefName && registryAliases) {
|
|
90
88
|
const aliasUrl = registryAliases[sourceRefName];
|
|
91
89
|
if (aliasUrl) {
|
|
92
|
-
if (isOCIRegistry(aliasUrl))
|
|
93
|
-
|
|
94
|
-
dep.packageName = getDep(`${removeOCIPrefix(aliasUrl)}/${dep.depName}`, false, registryAliases).packageName;
|
|
95
|
-
} else dep.registryUrls = [aliasUrl];
|
|
90
|
+
if (isOCIRegistry(aliasUrl)) Object.assign(dep, getOciChartDep(aliasUrl, dep.depName, registryAliases));
|
|
91
|
+
else dep.registryUrls = [aliasUrl];
|
|
96
92
|
return;
|
|
97
93
|
}
|
|
98
94
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/flux/extract.ts"],"sourcesContent":["import { isString } from '@sindresorhus/is';\nimport {\n type Document,\n type Scalar,\n type YAMLMap,\n isMap,\n isPair,\n isScalar,\n parseAllDocuments,\n} from 'yaml';\nimport { logger } from '../../../logger/index.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport { readLocalFile } from '../../../util/fs/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { isHttpUrl } from '../../../util/url.ts';\nimport { parseYaml } from '../../../util/yaml.ts';\nimport { BitbucketTagsDatasource } from '../../datasource/bitbucket-tags/index.ts';\nimport { DockerDatasource } from '../../datasource/docker/index.ts';\nimport { GitRefsDatasource } from '../../datasource/git-refs/index.ts';\nimport { GitTagsDatasource } from '../../datasource/git-tags/index.ts';\nimport { GithubReleasesDatasource } from '../../datasource/github-releases/index.ts';\nimport { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';\nimport { GitlabTagsDatasource } from '../../datasource/gitlab-tags/index.ts';\nimport { HelmDatasource } from '../../datasource/helm/index.ts';\nimport { getDep } from '../dockerfile/extract.ts';\nimport { findDependencies } from '../helm-values/extract.ts';\nimport { isOCIRegistry, removeOCIPrefix } from '../helmv3/oci.ts';\nimport { extractImage } from '../kustomize/extract.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFile,\n PackageFileContent,\n} from '../types.ts';\nimport {\n collectHelmRepos,\n isSystemManifest,\n systemManifestHeaderRegex,\n} from './common.ts';\nimport { FluxResource, type HelmRepository } from './schema.ts';\nimport type {\n FluxManagerData,\n FluxManifest,\n ResourceFluxManifest,\n SystemFluxManifest,\n} from './types.ts';\n\nfunction readManifest(\n content: string,\n packageFile: string,\n): FluxManifest | null {\n if (isSystemManifest(packageFile)) {\n const versionMatch = regEx(systemManifestHeaderRegex).exec(content);\n if (!versionMatch) {\n return null;\n }\n return {\n kind: 'system',\n file: packageFile,\n content,\n version: versionMatch[1],\n components: versionMatch[2],\n };\n }\n\n return {\n kind: 'resource',\n file: packageFile,\n content,\n resources: parseYaml(content, {\n customSchema: FluxResource,\n failureBehaviour: 'filter',\n removeTemplates: true,\n }),\n };\n}\n\nconst githubUrlRegex = regEx(\n /^(?:https:\\/\\/|git@)github\\.com[/:](?<packageName>[^/]+\\/[^/]+?)(?:\\.git)?$/,\n);\nconst gitlabUrlRegex = regEx(\n /^(?:https:\\/\\/|git@)gitlab\\.com[/:](?<packageName>[^/]+\\/[^/]+?)(?:\\.git)?$/,\n);\nconst bitbucketUrlRegex = regEx(\n /^(?:https:\\/\\/|git@)bitbucket\\.org[/:](?<packageName>[^/]+\\/[^/]+?)(?:\\.git)?$/,\n);\n\nfunction resolveGitRepositoryPerSourceTag(\n dep: PackageDependency,\n gitUrl: string,\n): void {\n const githubMatchGroups = githubUrlRegex.exec(gitUrl)?.groups;\n if (githubMatchGroups) {\n dep.datasource = GithubTagsDatasource.id;\n dep.packageName = githubMatchGroups.packageName;\n dep.sourceUrl = `https://github.com/${dep.packageName}`;\n return;\n }\n\n const gitlabMatchGroups = gitlabUrlRegex.exec(gitUrl)?.groups;\n if (gitlabMatchGroups) {\n dep.datasource = GitlabTagsDatasource.id;\n dep.packageName = gitlabMatchGroups.packageName;\n dep.sourceUrl = `https://gitlab.com/${dep.packageName}`;\n return;\n }\n\n const bitbucketMatchGroups = bitbucketUrlRegex.exec(gitUrl)?.groups;\n if (bitbucketMatchGroups) {\n dep.datasource = BitbucketTagsDatasource.id;\n dep.packageName = bitbucketMatchGroups.packageName;\n dep.sourceUrl = `https://bitbucket.org/${dep.packageName}`;\n return;\n }\n\n dep.datasource = GitTagsDatasource.id;\n dep.packageName = gitUrl;\n if (isHttpUrl(gitUrl)) {\n dep.sourceUrl = gitUrl.replace(regEx(/\\.git$/), '');\n }\n}\n\nfunction resolveHelmRepository(\n dep: PackageDependency,\n matchingRepositories: HelmRepository[],\n registryAliases: Record<string, string> | undefined,\n sourceRefName?: string,\n): void {\n if (matchingRepositories.length) {\n dep.registryUrls = matchingRepositories\n .map((repo) => {\n if (repo.spec.type === 'oci' || isOCIRegistry(repo.spec.url)) {\n // Change datasource to Docker\n dep.datasource = DockerDatasource.id;\n // Ensure the URL is a valid OCI path\n dep.packageName = getDep(\n `${removeOCIPrefix(repo.spec.url)}/${dep.depName}`,\n false,\n registryAliases,\n ).packageName;\n return null;\n }\n return repo.spec.url;\n })\n .filter(isString);\n\n // if registryUrls is empty, delete it from dep\n if (!dep.registryUrls?.length) {\n delete dep.registryUrls;\n }\n return;\n }\n\n if (sourceRefName && registryAliases) {\n const aliasUrl = registryAliases[sourceRefName];\n if (aliasUrl) {\n if (isOCIRegistry(aliasUrl)) {\n // Treat alias value as an OCI registry URL\n dep.datasource = DockerDatasource.id;\n dep.packageName = getDep(\n `${removeOCIPrefix(aliasUrl)}/${dep.depName}`,\n false,\n registryAliases,\n ).packageName;\n } else {\n dep.registryUrls = [aliasUrl];\n }\n return;\n }\n }\n\n dep.skipReason = 'unknown-registry';\n}\n\nfunction resolveSystemManifest(\n manifest: SystemFluxManifest,\n): PackageDependency<FluxManagerData>[] {\n return [\n {\n depName: 'fluxcd/flux2',\n datasource: GithubReleasesDatasource.id,\n currentValue: manifest.version,\n managerData: {\n components: manifest.components,\n },\n },\n ];\n}\n\n/**\n * Returns all `spec.ref` map nodes for OCIRepository resources matching `resourceName`.\n */\nfunction findOCIRefNodes(\n docs: Document.Parsed[],\n resourceName: string,\n): YAMLMap[] {\n const refNodes: YAMLMap[] = [];\n for (const doc of docs) {\n const docContents = doc.contents;\n if (!isMap(docContents)) {\n continue;\n }\n const kindNode = docContents.get('kind', true);\n if (\n !isScalar(kindNode) ||\n (kindNode.value as unknown) !== 'OCIRepository'\n ) {\n continue;\n }\n const nameNode = docContents.getIn(['metadata', 'name'], true);\n if (!isScalar(nameNode) || nameNode.value !== resourceName) {\n continue;\n }\n const specNode = docContents.get('spec');\n if (!isMap(specNode)) {\n continue;\n }\n const refNode = specNode.get('ref');\n if (isMap(refNode)) {\n refNodes.push(refNode);\n }\n }\n\n return refNodes;\n}\n\nfunction extractOCIRefTagAndDigestRange(\n docs: Document.Parsed[],\n content: string,\n resourceName: string,\n): { replaceString: string; tagFirst: boolean } | null {\n for (const refNode of findOCIRefNodes(docs, resourceName)) {\n let tagKey: Scalar | undefined;\n let tagValue: Scalar | undefined;\n let digestKey: Scalar | undefined;\n let digestValue: Scalar | undefined;\n\n for (const item of refNode.items) {\n if (!isPair(item) || !isScalar(item.key)) {\n continue;\n }\n if (item.key.value === 'tag' && isScalar(item.value)) {\n tagKey = item.key;\n tagValue = item.value;\n } else if (item.key.value === 'digest' && isScalar(item.value)) {\n digestKey = item.key;\n digestValue = item.value;\n }\n }\n\n if (\n !tagKey?.range ||\n !tagValue?.range ||\n !digestKey?.range ||\n !digestValue?.range\n ) {\n continue;\n }\n\n const tagFirst = tagKey.range[0] < digestKey.range[0];\n const start = tagFirst ? tagKey.range[0] : digestKey.range[0];\n const end = tagFirst ? digestValue.range[1] : tagValue.range[1];\n\n return { replaceString: content.slice(start, end), tagFirst };\n }\n\n return null;\n}\n\nfunction extractOCIRefTagRange(\n docs: Document.Parsed[],\n content: string,\n resourceName: string,\n): { replaceString: string; indentation: string } | null {\n for (const refNode of findOCIRefNodes(docs, resourceName)) {\n for (const item of refNode.items) {\n if (\n isPair(item) &&\n isScalar(item.key) &&\n item.key.value === 'tag' &&\n isScalar(item.value) &&\n item.key.range &&\n item.value.range\n ) {\n const keyStart = item.key.range[0];\n const valueEnd = item.value.range[1];\n const lineStart = content.lastIndexOf('\\n', keyStart - 1) + 1;\n return {\n replaceString: content.slice(keyStart, valueEnd),\n indentation: content.slice(lineStart, keyStart),\n };\n }\n }\n }\n\n return null;\n}\n\nfunction resolveResourceManifest(\n manifest: ResourceFluxManifest,\n helmRepositories: HelmRepository[],\n registryAliases: Record<string, string> | undefined,\n content: string,\n): PackageDependency[] {\n let docs: Document.Parsed[] | undefined;\n const deps: PackageDependency[] = [];\n for (const resource of manifest.resources) {\n switch (resource.kind) {\n case 'HelmRelease': {\n if (resource.spec.chartRef) {\n logger.trace(\n 'HelmRelease using chartRef was found, skipping as version will be handled via referenced resource directly',\n );\n } else if (resource.spec.chart) {\n const chartSpec = resource.spec.chart.spec;\n const depName = chartSpec.chart;\n const dep: PackageDependency = {\n depName,\n currentValue: resource.spec.chart.spec.version,\n datasource: HelmDatasource.id,\n };\n\n if (depName.startsWith('./')) {\n dep.skipReason = 'local-chart';\n delete dep.datasource;\n } else {\n const sourceRef = chartSpec.sourceRef;\n const matchingRepositories = helmRepositories.filter(\n (rep) =>\n rep.kind === sourceRef?.kind &&\n rep.metadata.name === sourceRef.name &&\n rep.metadata.namespace ===\n (sourceRef?.namespace ?? resource.metadata?.namespace),\n );\n resolveHelmRepository(\n dep,\n matchingRepositories,\n registryAliases,\n sourceRef?.name,\n );\n }\n deps.push(dep);\n } else {\n logger.debug(\n `invalid or incomplete ${resource.metadata.name} HelmRelease spec, skipping`,\n );\n }\n\n if (resource.spec.values) {\n logger.trace('detecting dependencies in HelmRelease values');\n deps.push(...findDependencies(resource.spec.values, registryAliases));\n }\n break;\n }\n\n case 'HelmChart': {\n if (resource.spec.sourceRef.kind === 'GitRepository') {\n logger.trace(\n 'HelmChart using GitRepository was found, skipping as version will be handled via referenced resource directly',\n );\n continue;\n }\n\n const dep: PackageDependency = {\n depName: resource.spec.chart,\n };\n\n if (resource.spec.sourceRef.kind === 'HelmRepository') {\n dep.currentValue = resource.spec.version;\n dep.datasource = HelmDatasource.id;\n\n const sourceRef = resource.spec.sourceRef;\n const matchingRepositories = helmRepositories.filter(\n (rep) =>\n rep.kind === sourceRef?.kind &&\n rep.metadata.name === sourceRef.name &&\n rep.metadata.namespace === resource.metadata?.namespace,\n );\n resolveHelmRepository(\n dep,\n matchingRepositories,\n registryAliases,\n sourceRef?.name,\n );\n } else {\n dep.skipReason = 'unsupported-datasource';\n }\n deps.push(dep);\n break;\n }\n\n case 'GitRepository': {\n const dep: PackageDependency = {\n depName: resource.metadata.name,\n };\n\n if (resource.spec.ref?.commit) {\n const gitUrl = resource.spec.url;\n dep.currentDigest = resource.spec.ref.commit;\n dep.datasource = GitRefsDatasource.id;\n dep.packageName = gitUrl;\n dep.replaceString = resource.spec.ref.commit;\n if (isHttpUrl(gitUrl)) {\n dep.sourceUrl = gitUrl.replace(regEx(/\\.git$/), '');\n }\n if (resource.spec.ref?.branch) {\n dep.currentValue = resource.spec.ref.branch;\n }\n } else if (resource.spec.ref?.tag) {\n dep.currentValue = resource.spec.ref.tag;\n resolveGitRepositoryPerSourceTag(dep, resource.spec.url);\n } else {\n dep.skipReason = 'unversioned-reference';\n }\n deps.push(dep);\n break;\n }\n case 'OCIRepository': {\n const container = removeOCIPrefix(resource.spec.url);\n if (resource.spec.ref?.digest && resource.spec.ref?.tag) {\n const combinedDep = getDep(\n `${container}@${resource.spec.ref.digest}`,\n false,\n registryAliases,\n );\n // Set currentValue to the tag so the docker datasource can look up the image's new digest\n combinedDep.currentValue = resource.spec.ref.tag;\n\n const refRange = extractOCIRefTagAndDigestRange(\n (docs ??= parseAllDocuments(content, { strict: false })),\n content,\n resource.metadata.name,\n );\n if (refRange) {\n combinedDep.replaceString = refRange.replaceString;\n if (refRange.tagFirst) {\n combinedDep.autoReplaceStringTemplate = refRange.replaceString\n .replace(resource.spec.ref.tag, '{{newValue}}')\n .replace(resource.spec.ref.digest, '{{newDigest}}');\n } else {\n combinedDep.autoReplaceStringTemplate = refRange.replaceString\n .replace(resource.spec.ref.digest, '{{newDigest}}')\n .replace(resource.spec.ref.tag, '{{newValue}}');\n }\n } else {\n logger.debug(\n { file: manifest.file, name: resource.metadata.name },\n 'Could not find tag/digest nodes in content, skipping replacement',\n );\n combinedDep.skipReason = 'invalid-value';\n }\n\n deps.push(combinedDep);\n } else if (resource.spec.ref?.digest) {\n const dep = getDep(\n `${container}@${resource.spec.ref.digest}`,\n false,\n registryAliases,\n );\n deps.push(dep);\n } else if (resource.spec.ref?.tag) {\n const dep = getDep(\n `${container}:${resource.spec.ref.tag}`,\n false,\n registryAliases,\n );\n const refTagRange = extractOCIRefTagRange(\n (docs ??= parseAllDocuments(content, { strict: false })),\n content,\n resource.metadata.name,\n );\n if (refTagRange) {\n dep.replaceString = refTagRange.replaceString;\n const newline = content.includes('\\r\\n') ? '\\r\\n' : '\\n';\n dep.autoReplaceStringTemplate = `${refTagRange.replaceString.replace(\n resource.spec.ref.tag,\n '{{newValue}}',\n )}{{#if newDigest}}${newline}${refTagRange.indentation}digest: {{newDigest}}{{/if}}`;\n } else {\n logger.debug(\n { file: manifest.file, name: resource.metadata.name },\n 'Unable to locate tag node for replacement (may be YAML alias or alias reference), digest pinning will not be possible',\n );\n dep.replaceString = resource.spec.ref.tag;\n dep.autoReplaceStringTemplate = '{{newValue}}';\n }\n deps.push(dep);\n } else {\n const dep = getDep(container, false, registryAliases);\n dep.skipReason = 'unversioned-reference';\n deps.push(dep);\n }\n break;\n }\n\n case 'Kustomization': {\n for (const image of coerceArray(resource.spec.images)) {\n const dep = extractImage(image, registryAliases);\n if (dep) {\n deps.push(dep);\n }\n }\n }\n }\n }\n return deps;\n}\n\nexport function extractPackageFile(\n content: string,\n packageFile: string,\n config?: ExtractConfig,\n): PackageFileContent<FluxManagerData> | null {\n const manifest = readManifest(content, packageFile);\n if (!manifest) {\n return null;\n }\n const helmRepositories = collectHelmRepos([manifest]);\n let deps: PackageDependency[] | null = null;\n switch (manifest.kind) {\n case 'system':\n deps = resolveSystemManifest(manifest);\n break;\n case 'resource': {\n deps = resolveResourceManifest(\n manifest,\n helmRepositories,\n config?.registryAliases,\n content,\n );\n break;\n }\n }\n return deps?.length ? { deps } : null;\n}\n\nexport async function extractAllPackageFiles(\n config: ExtractConfig,\n packageFiles: string[],\n): Promise<PackageFile<FluxManagerData>[] | null> {\n const manifests: FluxManifest[] = [];\n const results: PackageFile<FluxManagerData>[] = [];\n\n for (const file of packageFiles) {\n const content = await readLocalFile(file, 'utf8');\n if (content) {\n const manifest = readManifest(content, file);\n if (manifest) {\n manifests.push(manifest);\n }\n }\n }\n\n const helmRepositories = collectHelmRepos(manifests);\n\n for (const manifest of manifests) {\n let deps: PackageDependency[] | null = null;\n switch (manifest.kind) {\n case 'system':\n deps = resolveSystemManifest(manifest);\n break;\n case 'resource': {\n deps = resolveResourceManifest(\n manifest,\n helmRepositories,\n config.registryAliases,\n manifest.content,\n );\n break;\n }\n }\n if (deps?.length) {\n results.push({\n packageFile: manifest.file,\n deps,\n });\n }\n }\n\n return results.length ? results : null;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/flux/extract.ts"],"sourcesContent":["import { isString } from '@sindresorhus/is';\nimport {\n type Document,\n type Scalar,\n type YAMLMap,\n isMap,\n isPair,\n isScalar,\n parseAllDocuments,\n} from 'yaml';\nimport { logger } from '../../../logger/index.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport { readLocalFile } from '../../../util/fs/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { isHttpUrl } from '../../../util/url.ts';\nimport { parseYaml } from '../../../util/yaml.ts';\nimport { BitbucketTagsDatasource } from '../../datasource/bitbucket-tags/index.ts';\nimport { GitRefsDatasource } from '../../datasource/git-refs/index.ts';\nimport { GitTagsDatasource } from '../../datasource/git-tags/index.ts';\nimport { GithubReleasesDatasource } from '../../datasource/github-releases/index.ts';\nimport { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';\nimport { GitlabTagsDatasource } from '../../datasource/gitlab-tags/index.ts';\nimport { HelmDatasource } from '../../datasource/helm/index.ts';\nimport { getDep } from '../dockerfile/extract.ts';\nimport { findDependencies } from '../helm-values/extract.ts';\nimport {\n getOciChartDep,\n isOCIRegistry,\n removeOCIPrefix,\n} from '../helmv3/oci.ts';\nimport { extractImage } from '../kustomize/extract.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFile,\n PackageFileContent,\n} from '../types.ts';\nimport {\n collectHelmRepos,\n isSystemManifest,\n systemManifestHeaderRegex,\n} from './common.ts';\nimport { FluxResource, type HelmRepository } from './schema.ts';\nimport type {\n FluxManagerData,\n FluxManifest,\n ResourceFluxManifest,\n SystemFluxManifest,\n} from './types.ts';\n\nfunction readManifest(\n content: string,\n packageFile: string,\n): FluxManifest | null {\n if (isSystemManifest(packageFile)) {\n const versionMatch = regEx(systemManifestHeaderRegex).exec(content);\n if (!versionMatch) {\n return null;\n }\n return {\n kind: 'system',\n file: packageFile,\n content,\n version: versionMatch[1],\n components: versionMatch[2],\n };\n }\n\n return {\n kind: 'resource',\n file: packageFile,\n content,\n resources: parseYaml(content, {\n customSchema: FluxResource,\n failureBehaviour: 'filter',\n removeTemplates: true,\n }),\n };\n}\n\nconst githubUrlRegex = regEx(\n /^(?:https:\\/\\/|git@)github\\.com[/:](?<packageName>[^/]+\\/[^/]+?)(?:\\.git)?$/,\n);\nconst gitlabUrlRegex = regEx(\n /^(?:https:\\/\\/|git@)gitlab\\.com[/:](?<packageName>[^/]+\\/[^/]+?)(?:\\.git)?$/,\n);\nconst bitbucketUrlRegex = regEx(\n /^(?:https:\\/\\/|git@)bitbucket\\.org[/:](?<packageName>[^/]+\\/[^/]+?)(?:\\.git)?$/,\n);\n\nfunction resolveGitRepositoryPerSourceTag(\n dep: PackageDependency,\n gitUrl: string,\n): void {\n const githubMatchGroups = githubUrlRegex.exec(gitUrl)?.groups;\n if (githubMatchGroups) {\n dep.datasource = GithubTagsDatasource.id;\n dep.packageName = githubMatchGroups.packageName;\n dep.sourceUrl = `https://github.com/${dep.packageName}`;\n return;\n }\n\n const gitlabMatchGroups = gitlabUrlRegex.exec(gitUrl)?.groups;\n if (gitlabMatchGroups) {\n dep.datasource = GitlabTagsDatasource.id;\n dep.packageName = gitlabMatchGroups.packageName;\n dep.sourceUrl = `https://gitlab.com/${dep.packageName}`;\n return;\n }\n\n const bitbucketMatchGroups = bitbucketUrlRegex.exec(gitUrl)?.groups;\n if (bitbucketMatchGroups) {\n dep.datasource = BitbucketTagsDatasource.id;\n dep.packageName = bitbucketMatchGroups.packageName;\n dep.sourceUrl = `https://bitbucket.org/${dep.packageName}`;\n return;\n }\n\n dep.datasource = GitTagsDatasource.id;\n dep.packageName = gitUrl;\n if (isHttpUrl(gitUrl)) {\n dep.sourceUrl = gitUrl.replace(regEx(/\\.git$/), '');\n }\n}\n\nfunction resolveHelmRepository(\n dep: PackageDependency,\n matchingRepositories: HelmRepository[],\n registryAliases: Record<string, string> | undefined,\n sourceRefName?: string,\n): void {\n if (matchingRepositories.length) {\n dep.registryUrls = matchingRepositories\n .map((repo) => {\n if (repo.spec.type === 'oci' || isOCIRegistry(repo.spec.url)) {\n Object.assign(\n dep,\n getOciChartDep(repo.spec.url, dep.depName, registryAliases),\n );\n return null;\n }\n return repo.spec.url;\n })\n .filter(isString);\n\n // if registryUrls is empty, delete it from dep\n if (!dep.registryUrls?.length) {\n delete dep.registryUrls;\n }\n return;\n }\n\n if (sourceRefName && registryAliases) {\n const aliasUrl = registryAliases[sourceRefName];\n if (aliasUrl) {\n if (isOCIRegistry(aliasUrl)) {\n // Treat alias value as an OCI registry URL\n Object.assign(\n dep,\n getOciChartDep(aliasUrl, dep.depName, registryAliases),\n );\n } else {\n dep.registryUrls = [aliasUrl];\n }\n return;\n }\n }\n\n dep.skipReason = 'unknown-registry';\n}\n\nfunction resolveSystemManifest(\n manifest: SystemFluxManifest,\n): PackageDependency<FluxManagerData>[] {\n return [\n {\n depName: 'fluxcd/flux2',\n datasource: GithubReleasesDatasource.id,\n currentValue: manifest.version,\n managerData: {\n components: manifest.components,\n },\n },\n ];\n}\n\n/**\n * Returns all `spec.ref` map nodes for OCIRepository resources matching `resourceName`.\n */\nfunction findOCIRefNodes(\n docs: Document.Parsed[],\n resourceName: string,\n): YAMLMap[] {\n const refNodes: YAMLMap[] = [];\n for (const doc of docs) {\n const docContents = doc.contents;\n if (!isMap(docContents)) {\n continue;\n }\n const kindNode = docContents.get('kind', true);\n if (\n !isScalar(kindNode) ||\n (kindNode.value as unknown) !== 'OCIRepository'\n ) {\n continue;\n }\n const nameNode = docContents.getIn(['metadata', 'name'], true);\n if (!isScalar(nameNode) || nameNode.value !== resourceName) {\n continue;\n }\n const specNode = docContents.get('spec');\n if (!isMap(specNode)) {\n continue;\n }\n const refNode = specNode.get('ref');\n if (isMap(refNode)) {\n refNodes.push(refNode);\n }\n }\n\n return refNodes;\n}\n\nfunction extractOCIRefTagAndDigestRange(\n docs: Document.Parsed[],\n content: string,\n resourceName: string,\n): { replaceString: string; tagFirst: boolean } | null {\n for (const refNode of findOCIRefNodes(docs, resourceName)) {\n let tagKey: Scalar | undefined;\n let tagValue: Scalar | undefined;\n let digestKey: Scalar | undefined;\n let digestValue: Scalar | undefined;\n\n for (const item of refNode.items) {\n if (!isPair(item) || !isScalar(item.key)) {\n continue;\n }\n if (item.key.value === 'tag' && isScalar(item.value)) {\n tagKey = item.key;\n tagValue = item.value;\n } else if (item.key.value === 'digest' && isScalar(item.value)) {\n digestKey = item.key;\n digestValue = item.value;\n }\n }\n\n if (\n !tagKey?.range ||\n !tagValue?.range ||\n !digestKey?.range ||\n !digestValue?.range\n ) {\n continue;\n }\n\n const tagFirst = tagKey.range[0] < digestKey.range[0];\n const start = tagFirst ? tagKey.range[0] : digestKey.range[0];\n const end = tagFirst ? digestValue.range[1] : tagValue.range[1];\n\n return { replaceString: content.slice(start, end), tagFirst };\n }\n\n return null;\n}\n\nfunction extractOCIRefTagRange(\n docs: Document.Parsed[],\n content: string,\n resourceName: string,\n): { replaceString: string; indentation: string } | null {\n for (const refNode of findOCIRefNodes(docs, resourceName)) {\n for (const item of refNode.items) {\n if (\n isPair(item) &&\n isScalar(item.key) &&\n item.key.value === 'tag' &&\n isScalar(item.value) &&\n item.key.range &&\n item.value.range\n ) {\n const keyStart = item.key.range[0];\n const valueEnd = item.value.range[1];\n const lineStart = content.lastIndexOf('\\n', keyStart - 1) + 1;\n return {\n replaceString: content.slice(keyStart, valueEnd),\n indentation: content.slice(lineStart, keyStart),\n };\n }\n }\n }\n\n return null;\n}\n\nfunction resolveResourceManifest(\n manifest: ResourceFluxManifest,\n helmRepositories: HelmRepository[],\n registryAliases: Record<string, string> | undefined,\n content: string,\n): PackageDependency[] {\n let docs: Document.Parsed[] | undefined;\n const deps: PackageDependency[] = [];\n for (const resource of manifest.resources) {\n switch (resource.kind) {\n case 'HelmRelease': {\n if (resource.spec.chartRef) {\n logger.trace(\n 'HelmRelease using chartRef was found, skipping as version will be handled via referenced resource directly',\n );\n } else if (resource.spec.chart) {\n const chartSpec = resource.spec.chart.spec;\n const depName = chartSpec.chart;\n const dep: PackageDependency = {\n depName,\n currentValue: resource.spec.chart.spec.version,\n datasource: HelmDatasource.id,\n };\n\n if (depName.startsWith('./')) {\n dep.skipReason = 'local-chart';\n delete dep.datasource;\n } else {\n const sourceRef = chartSpec.sourceRef;\n const matchingRepositories = helmRepositories.filter(\n (rep) =>\n rep.kind === sourceRef?.kind &&\n rep.metadata.name === sourceRef.name &&\n rep.metadata.namespace ===\n (sourceRef?.namespace ?? resource.metadata?.namespace),\n );\n resolveHelmRepository(\n dep,\n matchingRepositories,\n registryAliases,\n sourceRef?.name,\n );\n }\n deps.push(dep);\n } else {\n logger.debug(\n `invalid or incomplete ${resource.metadata.name} HelmRelease spec, skipping`,\n );\n }\n\n if (resource.spec.values) {\n logger.trace('detecting dependencies in HelmRelease values');\n deps.push(...findDependencies(resource.spec.values, registryAliases));\n }\n break;\n }\n\n case 'HelmChart': {\n if (resource.spec.sourceRef.kind === 'GitRepository') {\n logger.trace(\n 'HelmChart using GitRepository was found, skipping as version will be handled via referenced resource directly',\n );\n continue;\n }\n\n const dep: PackageDependency = {\n depName: resource.spec.chart,\n };\n\n if (resource.spec.sourceRef.kind === 'HelmRepository') {\n dep.currentValue = resource.spec.version;\n dep.datasource = HelmDatasource.id;\n\n const sourceRef = resource.spec.sourceRef;\n const matchingRepositories = helmRepositories.filter(\n (rep) =>\n rep.kind === sourceRef?.kind &&\n rep.metadata.name === sourceRef.name &&\n rep.metadata.namespace === resource.metadata?.namespace,\n );\n resolveHelmRepository(\n dep,\n matchingRepositories,\n registryAliases,\n sourceRef?.name,\n );\n } else {\n dep.skipReason = 'unsupported-datasource';\n }\n deps.push(dep);\n break;\n }\n\n case 'GitRepository': {\n const dep: PackageDependency = {\n depName: resource.metadata.name,\n };\n\n if (resource.spec.ref?.commit) {\n const gitUrl = resource.spec.url;\n dep.currentDigest = resource.spec.ref.commit;\n dep.datasource = GitRefsDatasource.id;\n dep.packageName = gitUrl;\n dep.replaceString = resource.spec.ref.commit;\n if (isHttpUrl(gitUrl)) {\n dep.sourceUrl = gitUrl.replace(regEx(/\\.git$/), '');\n }\n if (resource.spec.ref?.branch) {\n dep.currentValue = resource.spec.ref.branch;\n }\n } else if (resource.spec.ref?.tag) {\n dep.currentValue = resource.spec.ref.tag;\n resolveGitRepositoryPerSourceTag(dep, resource.spec.url);\n } else {\n dep.skipReason = 'unversioned-reference';\n }\n deps.push(dep);\n break;\n }\n case 'OCIRepository': {\n const container = removeOCIPrefix(resource.spec.url);\n if (resource.spec.ref?.digest && resource.spec.ref?.tag) {\n const combinedDep = getDep(\n `${container}@${resource.spec.ref.digest}`,\n false,\n registryAliases,\n );\n // Set currentValue to the tag so the docker datasource can look up the image's new digest\n combinedDep.currentValue = resource.spec.ref.tag;\n\n const refRange = extractOCIRefTagAndDigestRange(\n (docs ??= parseAllDocuments(content, { strict: false })),\n content,\n resource.metadata.name,\n );\n if (refRange) {\n combinedDep.replaceString = refRange.replaceString;\n if (refRange.tagFirst) {\n combinedDep.autoReplaceStringTemplate = refRange.replaceString\n .replace(resource.spec.ref.tag, '{{newValue}}')\n .replace(resource.spec.ref.digest, '{{newDigest}}');\n } else {\n combinedDep.autoReplaceStringTemplate = refRange.replaceString\n .replace(resource.spec.ref.digest, '{{newDigest}}')\n .replace(resource.spec.ref.tag, '{{newValue}}');\n }\n } else {\n logger.debug(\n { file: manifest.file, name: resource.metadata.name },\n 'Could not find tag/digest nodes in content, skipping replacement',\n );\n combinedDep.skipReason = 'invalid-value';\n }\n\n deps.push(combinedDep);\n } else if (resource.spec.ref?.digest) {\n const dep = getDep(\n `${container}@${resource.spec.ref.digest}`,\n false,\n registryAliases,\n );\n deps.push(dep);\n } else if (resource.spec.ref?.tag) {\n const dep = getDep(\n `${container}:${resource.spec.ref.tag}`,\n false,\n registryAliases,\n );\n const refTagRange = extractOCIRefTagRange(\n (docs ??= parseAllDocuments(content, { strict: false })),\n content,\n resource.metadata.name,\n );\n if (refTagRange) {\n dep.replaceString = refTagRange.replaceString;\n const newline = content.includes('\\r\\n') ? '\\r\\n' : '\\n';\n dep.autoReplaceStringTemplate = `${refTagRange.replaceString.replace(\n resource.spec.ref.tag,\n '{{newValue}}',\n )}{{#if newDigest}}${newline}${refTagRange.indentation}digest: {{newDigest}}{{/if}}`;\n } else {\n logger.debug(\n { file: manifest.file, name: resource.metadata.name },\n 'Unable to locate tag node for replacement (may be YAML alias or alias reference), digest pinning will not be possible',\n );\n dep.replaceString = resource.spec.ref.tag;\n dep.autoReplaceStringTemplate = '{{newValue}}';\n }\n deps.push(dep);\n } else {\n const dep = getDep(container, false, registryAliases);\n dep.skipReason = 'unversioned-reference';\n deps.push(dep);\n }\n break;\n }\n\n case 'Kustomization': {\n for (const image of coerceArray(resource.spec.images)) {\n const dep = extractImage(image, registryAliases);\n if (dep) {\n deps.push(dep);\n }\n }\n }\n }\n }\n return deps;\n}\n\nexport function extractPackageFile(\n content: string,\n packageFile: string,\n config?: ExtractConfig,\n): PackageFileContent<FluxManagerData> | null {\n const manifest = readManifest(content, packageFile);\n if (!manifest) {\n return null;\n }\n const helmRepositories = collectHelmRepos([manifest]);\n let deps: PackageDependency[] | null = null;\n switch (manifest.kind) {\n case 'system':\n deps = resolveSystemManifest(manifest);\n break;\n case 'resource': {\n deps = resolveResourceManifest(\n manifest,\n helmRepositories,\n config?.registryAliases,\n content,\n );\n break;\n }\n }\n return deps?.length ? { deps } : null;\n}\n\nexport async function extractAllPackageFiles(\n config: ExtractConfig,\n packageFiles: string[],\n): Promise<PackageFile<FluxManagerData>[] | null> {\n const manifests: FluxManifest[] = [];\n const results: PackageFile<FluxManagerData>[] = [];\n\n for (const file of packageFiles) {\n const content = await readLocalFile(file, 'utf8');\n if (content) {\n const manifest = readManifest(content, file);\n if (manifest) {\n manifests.push(manifest);\n }\n }\n }\n\n const helmRepositories = collectHelmRepos(manifests);\n\n for (const manifest of manifests) {\n let deps: PackageDependency[] | null = null;\n switch (manifest.kind) {\n case 'system':\n deps = resolveSystemManifest(manifest);\n break;\n case 'resource': {\n deps = resolveResourceManifest(\n manifest,\n helmRepositories,\n config.registryAliases,\n manifest.content,\n );\n break;\n }\n }\n if (deps?.length) {\n results.push({\n packageFile: manifest.file,\n deps,\n });\n }\n }\n\n return results.length ? results : null;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","names":["parseToml","deepmerge"],"sources":["../../../../../lib/modules/manager/gradle/extract/catalog.ts"],"sourcesContent":["import { isPlainObject, isString } from '@sindresorhus/is';\nimport deepmerge from 'deepmerge';\nimport type { SkipReason } from '../../../../types/index.ts';\nimport { coerceObject, hasKey } from '../../../../util/object.ts';\nimport { regEx } from '../../../../util/regex.ts';\nimport { massage, parse as parseToml } from '../../../../util/toml.ts';\nimport type { PackageDependency } from '../../types.ts';\nimport type {\n GradleCatalog,\n GradleCatalogArtifactDescriptor,\n GradleCatalogModuleDescriptor,\n GradleManagerData,\n GradleVersionCatalogVersion,\n GradleVersionPointerTarget,\n PackageVariables,\n VersionPointer,\n} from '../types.ts';\nimport { isTOMLFile } from '../utils.ts';\n\nfunction findVersionIndex(\n content: string,\n depName: string,\n version: string,\n): number {\n const eDn = RegExp.escape(depName);\n const eVer = RegExp.escape(version);\n const re = regEx(\n `(?:id\\\\s*=\\\\s*)?['\"]?${eDn}[\"']?(?:(?:\\\\s*=\\\\s*)|:|,\\\\s*)(?:.*version(?:\\\\.ref)?(?:\\\\s*\\\\=\\\\s*))?[\"']?${eVer}['\"]?`,\n );\n const match = re.exec(content);\n if (match) {\n return match.index + content.slice(match.index).indexOf(version);\n }\n // ignoring Fallback because I can't reach it in tests, and code is not supposed to reach it but just in case.\n /* istanbul ignore next */\n return findIndexAfter(content, depName, version);\n}\n\nfunction findIndexAfter(\n content: string,\n sliceAfter: string,\n find: string,\n): number {\n const slicePoint = content.indexOf(sliceAfter) + sliceAfter.length;\n return slicePoint + content.slice(slicePoint).indexOf(find);\n}\n\nfunction isArtifactDescriptor(\n obj: GradleCatalogArtifactDescriptor | GradleCatalogModuleDescriptor,\n): obj is GradleCatalogArtifactDescriptor {\n return hasKey('group', obj);\n}\n\nfunction isVersionPointer(\n obj: GradleVersionCatalogVersion | undefined,\n): obj is VersionPointer {\n return hasKey('ref', obj);\n}\n\nfunction normalizeAlias(alias: string): string {\n return alias.replace(regEx(/[-_]/g), '.');\n}\n\nfunction findOriginalAlias(\n versions: Record<string, GradleVersionPointerTarget>,\n alias: string,\n): string {\n const normalizedAlias = normalizeAlias(alias);\n for (const sectionKey of Object.keys(versions)) {\n if (normalizeAlias(sectionKey) === normalizedAlias) {\n return sectionKey;\n }\n }\n\n return alias;\n}\n\ninterface VersionExtract {\n currentValue?: string;\n fileReplacePosition?: number;\n skipReason?: SkipReason;\n}\n\nfunction extractVersion({\n version,\n versions,\n depStartIndex,\n depSubContent,\n depName,\n versionStartIndex,\n versionSubContent,\n}: {\n version: GradleVersionCatalogVersion | undefined;\n versions: Record<string, GradleVersionPointerTarget>;\n depStartIndex: number;\n depSubContent: string;\n depName: string;\n versionStartIndex: number;\n versionSubContent: string;\n}): VersionExtract {\n if (isVersionPointer(version)) {\n const originalAlias = findOriginalAlias(versions, version.ref);\n return extractLiteralVersion({\n version: versions[originalAlias],\n depStartIndex: versionStartIndex,\n depSubContent: versionSubContent,\n sectionKey: originalAlias,\n });\n }\n return extractLiteralVersion({\n version,\n depStartIndex,\n depSubContent,\n sectionKey: depName,\n });\n}\n\nfunction extractLiteralVersion({\n version,\n depStartIndex,\n depSubContent,\n sectionKey,\n}: {\n version: GradleVersionPointerTarget | undefined;\n depStartIndex: number;\n depSubContent: string;\n sectionKey: string;\n}): VersionExtract {\n if (!version) {\n return { skipReason: 'unspecified-version' };\n }\n if (isString(version)) {\n const fileReplacePosition =\n depStartIndex + findVersionIndex(depSubContent, sectionKey, version);\n return { currentValue: version, fileReplacePosition };\n }\n if (isPlainObject(version)) {\n // https://github.com/gradle/gradle/blob/d9adf33a57925582988fc512002dcc0e8ce4db95/subprojects/core/src/main/java/org/gradle/api/internal/catalog/parser/TomlCatalogFileParser.java#L368\n // https://docs.gradle.org/current/userguide/rich_versions.html\n // https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format\n const versionKeys = ['require', 'prefer', 'strictly'];\n let found = false;\n let currentValue: string | undefined;\n let fileReplacePosition: number | undefined;\n\n if (version.reject || version.rejectAll) {\n return { skipReason: 'unsupported-version' };\n }\n\n for (const key of versionKeys) {\n if (key in version) {\n if (found) {\n // Currently, we only support one version constraint at a time\n return { skipReason: 'multiple-constraint-dep' };\n }\n found = true;\n\n currentValue = version[key] as string;\n fileReplacePosition =\n depStartIndex +\n findIndexAfter(depSubContent, sectionKey, currentValue);\n }\n }\n\n if (found) {\n return { currentValue, fileReplacePosition };\n }\n }\n\n return { skipReason: 'unspecified-version' };\n}\n\nfunction extractDependency({\n descriptor,\n versions,\n depStartIndex,\n depSubContent,\n depName,\n versionStartIndex,\n versionSubContent,\n}: {\n descriptor:\n | string\n | GradleCatalogModuleDescriptor\n | GradleCatalogArtifactDescriptor;\n versions: Record<string, GradleVersionPointerTarget>;\n depStartIndex: number;\n depSubContent: string;\n depName: string;\n versionStartIndex: number;\n versionSubContent: string;\n}): PackageDependency<GradleManagerData> {\n if (isString(descriptor)) {\n const [group, name, currentValue] = descriptor.split(':');\n if (!currentValue) {\n return {\n depName,\n skipReason: 'unspecified-version',\n };\n }\n return {\n depName: `${group}:${name}`,\n currentValue,\n managerData: {\n fileReplacePosition:\n depStartIndex + findIndexAfter(depSubContent, depName, currentValue),\n },\n };\n }\n\n const { currentValue, fileReplacePosition, skipReason } = extractVersion({\n version: descriptor.version,\n versions,\n depStartIndex,\n depSubContent,\n depName,\n versionStartIndex,\n versionSubContent,\n });\n\n if (skipReason) {\n return {\n depName,\n skipReason,\n };\n }\n\n const dependency: PackageDependency<GradleManagerData> = {\n currentValue,\n managerData: { fileReplacePosition },\n };\n\n if (isArtifactDescriptor(descriptor)) {\n const { group, name } = descriptor;\n dependency.depName = `${group}:${name}`;\n } else {\n const [depGroupName, name] = descriptor.module.split(':');\n dependency.depName = `${depGroupName}:${name}`;\n }\n\n if (isVersionPointer(descriptor.version)) {\n dependency.sharedVariableName = normalizeAlias(descriptor.version.ref);\n }\n\n return dependency;\n}\n\nexport function parseCatalog(\n packageFile: string,\n content: string,\n): { vars: PackageVariables; deps: PackageDependency<GradleManagerData>[] } {\n const tomlContent = parseToml(massage(content)) as GradleCatalog;\n const versions = coerceObject(tomlContent.versions);\n const libs = coerceObject(tomlContent.libraries);\n const libStartIndex = content.indexOf('libraries');\n const libSubContent = content.slice(libStartIndex);\n const versionStartIndex = content.indexOf('versions');\n const versionSubContent = content.slice(versionStartIndex);\n const extractedDeps: PackageDependency<GradleManagerData>[] = [];\n const vars: PackageVariables = {};\n\n for (const [key, version] of Object.entries(versions)) {\n const { currentValue, fileReplacePosition } = extractLiteralVersion({\n version,\n depStartIndex: versionStartIndex,\n depSubContent: versionSubContent,\n sectionKey: key,\n });\n if (currentValue && fileReplacePosition !== undefined) {\n vars[normalizeAlias(key)] = {\n key: normalizeAlias(key),\n value: currentValue,\n fileReplacePosition,\n packageFile,\n };\n }\n }\n\n for (const libraryName of Object.keys(libs)) {\n const libDescriptor = libs[libraryName];\n const dependency = extractDependency({\n descriptor: libDescriptor,\n versions,\n depStartIndex: libStartIndex,\n depSubContent: libSubContent,\n depName: libraryName,\n versionStartIndex,\n versionSubContent,\n });\n extractedDeps.push(dependency);\n }\n\n const plugins = coerceObject(tomlContent.plugins);\n const pluginsStartIndex = content.indexOf('[plugins]');\n const pluginsSubContent = content.slice(pluginsStartIndex);\n for (const pluginName of Object.keys(plugins)) {\n const pluginDescriptor = plugins[pluginName];\n const [depName, version] = isString(pluginDescriptor)\n ? pluginDescriptor.split(':')\n : [pluginDescriptor.id, pluginDescriptor.version];\n const { currentValue, fileReplacePosition, skipReason } = extractVersion({\n version,\n versions,\n depStartIndex: pluginsStartIndex,\n depSubContent: pluginsSubContent,\n depName,\n versionStartIndex,\n versionSubContent,\n });\n\n const dependency: PackageDependency<GradleManagerData> = {\n depType: 'plugin',\n depName,\n packageName: `${depName}:${depName}.gradle.plugin`,\n currentValue,\n commitMessageTopic: `plugin ${pluginName}`,\n managerData: { fileReplacePosition },\n };\n if (skipReason) {\n dependency.skipReason = skipReason;\n }\n if (isVersionPointer(version) && dependency.commitMessageTopic) {\n dependency.sharedVariableName = normalizeAlias(version.ref);\n delete dependency.commitMessageTopic;\n }\n\n extractedDeps.push(dependency);\n }\n\n const deps = extractedDeps.map((dep) => {\n return deepmerge(dep, { managerData: { packageFile } });\n });\n return { vars, deps };\n}\n\nfunction makeCatalogGroupKey(\n dep: PackageDependency<GradleManagerData>,\n): string {\n return `${dep.managerData!.packageFile}:${dep.managerData!.fileReplacePosition}`;\n}\n\nexport function unifyCatalogSharedVariableNames(\n deps: PackageDependency<GradleManagerData>[],\n): void {\n const aliasMap: Record<string, string[]> = {};\n const catalogDeps: PackageDependency<GradleManagerData>[] = [];\n\n for (const dep of deps) {\n const packageFile = dep.managerData?.packageFile;\n if (\n packageFile &&\n dep.managerData?.fileReplacePosition !== undefined &&\n dep.sharedVariableName &&\n isTOMLFile(packageFile)\n ) {\n catalogDeps.push(dep);\n\n const key = makeCatalogGroupKey(dep);\n (aliasMap[key] ??= []).push(dep.sharedVariableName);\n }\n }\n\n for (const dep of catalogDeps) {\n const key = makeCatalogGroupKey(dep);\n const aliases = aliasMap[key];\n if (aliases.length > 1) {\n const name = aliases[0];\n dep.sharedVariableName = name.replace(regEx(/^[^.]+\\.versions\\./), '');\n }\n }\n}\n"],"mappings":";;;;;;;AAmBA,SAAS,iBACP,SACA,SACA,SACQ;CACR,MAAM,MAAM,OAAO,OAAO,OAAO;CACjC,MAAM,OAAO,OAAO,OAAO,OAAO;CAIlC,MAAM,QAHK,MACT,wBAAwB,IAAI,6EAA6E,KAAK,MAEjG,CAAC,CAAC,KAAK,OAAO;CAC7B,IAAI,OACF,OAAO,MAAM,QAAQ,QAAQ,MAAM,MAAM,KAAK,CAAC,CAAC,QAAQ,OAAO;;CAIjE,OAAO,eAAe,SAAS,SAAS,OAAO;AACjD;AAEA,SAAS,eACP,SACA,YACA,MACQ;CACR,MAAM,aAAa,QAAQ,QAAQ,UAAU,IAAI,WAAW;CAC5D,OAAO,aAAa,QAAQ,MAAM,UAAU,CAAC,CAAC,QAAQ,IAAI;AAC5D;AAEA,SAAS,qBACP,KACwC;CACxC,OAAO,OAAO,SAAS,GAAG;AAC5B;AAEA,SAAS,iBACP,KACuB;CACvB,OAAO,OAAO,OAAO,GAAG;AAC1B;AAEA,SAAS,eAAe,OAAuB;CAC7C,OAAO,MAAM,QAAQ,MAAM,OAAO,GAAG,GAAG;AAC1C;AAEA,SAAS,kBACP,UACA,OACQ;CACR,MAAM,kBAAkB,eAAe,KAAK;CAC5C,KAAK,MAAM,cAAc,OAAO,KAAK,QAAQ,GAC3C,IAAI,eAAe,UAAU,MAAM,iBACjC,OAAO;CAIX,OAAO;AACT;AAQA,SAAS,eAAe,EACtB,SACA,UACA,eACA,eACA,SACA,mBACA,qBASiB;CACjB,IAAI,iBAAiB,OAAO,GAAG;EAC7B,MAAM,gBAAgB,kBAAkB,UAAU,QAAQ,GAAG;EAC7D,OAAO,sBAAsB;GAC3B,SAAS,SAAS;GAClB,eAAe;GACf,eAAe;GACf,YAAY;EACd,CAAC;CACH;CACA,OAAO,sBAAsB;EAC3B;EACA;EACA;EACA,YAAY;CACd,CAAC;AACH;AAEA,SAAS,sBAAsB,EAC7B,SACA,eACA,eACA,cAMiB;CACjB,IAAI,CAAC,SACH,OAAO,EAAE,YAAY,sBAAsB;CAE7C,IAAI,SAAS,OAAO,GAGlB,OAAO;EAAE,cAAc;EAAS,qBAD9B,gBAAgB,iBAAiB,eAAe,YAAY,OAAO;CACjB;CAEtD,IAAI,cAAc,OAAO,GAAG;EAI1B,MAAM,cAAc;GAAC;GAAW;GAAU;EAAU;EACpD,IAAI,QAAQ;EACZ,IAAI;EACJ,IAAI;EAEJ,IAAI,QAAQ,UAAU,QAAQ,WAC5B,OAAO,EAAE,YAAY,sBAAsB;EAG7C,KAAK,MAAM,OAAO,aAChB,IAAI,OAAO,SAAS;GAClB,IAAI,OAEF,OAAO,EAAE,YAAY,0BAA0B;GAEjD,QAAQ;GAER,eAAe,QAAQ;GACvB,sBACE,gBACA,eAAe,eAAe,YAAY,YAAY;EAC1D;EAGF,IAAI,OACF,OAAO;GAAE;GAAc;EAAoB;CAE/C;CAEA,OAAO,EAAE,YAAY,sBAAsB;AAC7C;AAEA,SAAS,kBAAkB,EACzB,YACA,UACA,eACA,eACA,SACA,mBACA,qBAYuC;CACvC,IAAI,SAAS,UAAU,GAAG;EACxB,MAAM,CAAC,OAAO,MAAM,gBAAgB,WAAW,MAAM,GAAG;EACxD,IAAI,CAAC,cACH,OAAO;GACL;GACA,YAAY;EACd;EAEF,OAAO;GACL,SAAS,GAAG,MAAM,GAAG;GACrB;GACA,aAAa,EACX,qBACE,gBAAgB,eAAe,eAAe,SAAS,YAAY,EACvE;EACF;CACF;CAEA,MAAM,EAAE,cAAc,qBAAqB,eAAe,eAAe;EACvE,SAAS,WAAW;EACpB;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,IAAI,YACF,OAAO;EACL;EACA;CACF;CAGF,MAAM,aAAmD;EACvD;EACA,aAAa,EAAE,oBAAoB;CACrC;CAEA,IAAI,qBAAqB,UAAU,GAAG;EACpC,MAAM,EAAE,OAAO,SAAS;EACxB,WAAW,UAAU,GAAG,MAAM,GAAG;CACnC,OAAO;EACL,MAAM,CAAC,cAAc,QAAQ,WAAW,OAAO,MAAM,GAAG;EACxD,WAAW,UAAU,GAAG,aAAa,GAAG;CAC1C;CAEA,IAAI,iBAAiB,WAAW,OAAO,GACrC,WAAW,qBAAqB,eAAe,WAAW,QAAQ,GAAG;CAGvE,OAAO;AACT;AAEA,SAAgB,aACd,aACA,SAC0E;CAC1E,MAAM,cAAcA,MAAU,QAAQ,OAAO,CAAC;CAC9C,MAAM,WAAW,aAAa,YAAY,QAAQ;CAClD,MAAM,OAAO,aAAa,YAAY,SAAS;CAC/C,MAAM,gBAAgB,QAAQ,QAAQ,WAAW;CACjD,MAAM,gBAAgB,QAAQ,MAAM,aAAa;CACjD,MAAM,oBAAoB,QAAQ,QAAQ,UAAU;CACpD,MAAM,oBAAoB,QAAQ,MAAM,iBAAiB;CACzD,MAAM,gBAAwD,CAAC;CAC/D,MAAM,OAAyB,CAAC;CAEhC,KAAK,MAAM,CAAC,KAAK,YAAY,OAAO,QAAQ,QAAQ,GAAG;EACrD,MAAM,EAAE,cAAc,wBAAwB,sBAAsB;GAClE;GACA,eAAe;GACf,eAAe;GACf,YAAY;EACd,CAAC;EACD,IAAI,gBAAgB,wBAAwB,KAAA,GAC1C,KAAK,eAAe,GAAG,KAAK;GAC1B,KAAK,eAAe,GAAG;GACvB,OAAO;GACP;GACA;EACF;CAEJ;CAEA,KAAK,MAAM,eAAe,OAAO,KAAK,IAAI,GAAG;EAC3C,MAAM,gBAAgB,KAAK;EAC3B,MAAM,aAAa,kBAAkB;GACnC,YAAY;GACZ;GACA,eAAe;GACf,eAAe;GACf,SAAS;GACT;GACA;EACF,CAAC;EACD,cAAc,KAAK,UAAU;CAC/B;CAEA,MAAM,UAAU,aAAa,YAAY,OAAO;CAChD,MAAM,oBAAoB,QAAQ,QAAQ,WAAW;CACrD,MAAM,oBAAoB,QAAQ,MAAM,iBAAiB;CACzD,KAAK,MAAM,cAAc,OAAO,KAAK,OAAO,GAAG;EAC7C,MAAM,mBAAmB,QAAQ;EACjC,MAAM,CAAC,SAAS,WAAW,SAAS,gBAAgB,IAChD,iBAAiB,MAAM,GAAG,IAC1B,CAAC,iBAAiB,IAAI,iBAAiB,OAAO;EAClD,MAAM,EAAE,cAAc,qBAAqB,eAAe,eAAe;GACvE;GACA;GACA,eAAe;GACf,eAAe;GACf;GACA;GACA;EACF,CAAC;EAED,MAAM,aAAmD;GACvD,SAAS;GACT;GACA,aAAa,GAAG,QAAQ,GAAG,QAAQ;GACnC;GACA,oBAAoB,UAAU;GAC9B,aAAa,EAAE,oBAAoB;EACrC;EACA,IAAI,YACF,WAAW,aAAa;EAE1B,IAAI,iBAAiB,OAAO,KAAK,WAAW,oBAAoB;GAC9D,WAAW,qBAAqB,eAAe,QAAQ,GAAG;GAC1D,OAAO,WAAW;EACpB;EAEA,cAAc,KAAK,UAAU;CAC/B;CAKA,OAAO;EAAE;EAAM,MAHF,cAAc,KAAK,QAAQ;GACtC,OAAOC,MAAU,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;EACxD,CACkB;CAAE;AACtB;AAEA,SAAS,oBACP,KACQ;CACR,OAAO,GAAG,IAAI,YAAa,YAAY,GAAG,IAAI,YAAa;AAC7D;AAEA,SAAgB,gCACd,MACM;CACN,MAAM,WAAqC,CAAC;CAC5C,MAAM,cAAsD,CAAC;CAE7D,KAAK,MAAM,OAAO,MAAM;EACtB,MAAM,cAAc,IAAI,aAAa;EACrC,IACE,eACA,IAAI,aAAa,wBAAwB,KAAA,KACzC,IAAI,sBACJ,WAAW,WAAW,GACtB;GACA,YAAY,KAAK,GAAG;GAEpB,MAAM,MAAM,oBAAoB,GAAG;GACnC,CAAC,SAAS,SAAS,CAAC,EAAA,CAAG,KAAK,IAAI,kBAAkB;EACpD;CACF;CAEA,KAAK,MAAM,OAAO,aAAa;EAE7B,MAAM,UAAU,SADJ,oBAAoB,GACL;EAC3B,IAAI,QAAQ,SAAS,GAEnB,IAAI,qBADS,QAAQ,EACQ,CAAC,QAAQ,MAAM,oBAAoB,GAAG,EAAE;CAEzE;AACF"}
|
|
1
|
+
{"version":3,"file":"catalog.js","names":["parseToml","deepmerge"],"sources":["../../../../../lib/modules/manager/gradle/extract/catalog.ts"],"sourcesContent":["import { isPlainObject, isString } from '@sindresorhus/is';\nimport deepmerge from 'deepmerge';\nimport type { SkipReason } from '../../../../types/index.ts';\nimport { coerceObject, hasKey } from '../../../../util/object.ts';\nimport { regEx } from '../../../../util/regex.ts';\nimport { massage, parse as parseToml } from '../../../../util/toml.ts';\nimport type { PackageDependency } from '../../types.ts';\nimport type {\n GradleCatalog,\n GradleCatalogArtifactDescriptor,\n GradleCatalogModuleDescriptor,\n GradleManagerData,\n GradleVersionCatalogVersion,\n GradleVersionPointerTarget,\n PackageVariables,\n VersionPointer,\n} from '../types.ts';\nimport { isTOMLFile } from '../utils.ts';\n\nfunction findVersionIndex(\n content: string,\n depName: string,\n version: string,\n): number {\n const eDn = RegExp.escape(depName);\n const eVer = RegExp.escape(version);\n const re = regEx(\n `(?:id\\\\s*=\\\\s*)?['\"]?${eDn}[\"']?(?:(?:\\\\s*=\\\\s*)|:|,\\\\s*)(?:.*version(?:\\\\.ref)?(?:\\\\s*\\\\=\\\\s*))?[\"']?${eVer}['\"]?`,\n );\n const match = re.exec(content);\n if (match) {\n return match.index + content.slice(match.index).indexOf(version);\n }\n // ignoring Fallback because I can't reach it in tests, and code is not supposed to reach it but just in case.\n /* istanbul ignore next */\n return findIndexAfter(content, depName, version);\n}\n\nfunction findIndexAfter(\n content: string,\n sliceAfter: string,\n find: string,\n): number {\n const slicePoint = content.indexOf(sliceAfter) + sliceAfter.length;\n return slicePoint + content.slice(slicePoint).indexOf(find);\n}\n\nfunction isArtifactDescriptor(\n obj: GradleCatalogArtifactDescriptor | GradleCatalogModuleDescriptor,\n): obj is GradleCatalogArtifactDescriptor {\n return hasKey('group', obj);\n}\n\nfunction isVersionPointer(\n obj: GradleVersionCatalogVersion | undefined,\n): obj is VersionPointer {\n return hasKey('ref', obj);\n}\n\nfunction normalizeAlias(alias: string): string {\n return alias.replace(regEx(/[-_]/g), '.');\n}\n\nfunction findOriginalAlias(\n versions: Record<string, GradleVersionPointerTarget>,\n alias: string,\n): string {\n const normalizedAlias = normalizeAlias(alias);\n for (const sectionKey of Object.keys(versions)) {\n if (normalizeAlias(sectionKey) === normalizedAlias) {\n return sectionKey;\n }\n }\n\n return alias;\n}\n\ninterface VersionExtract {\n currentValue?: string;\n fileReplacePosition?: number;\n skipReason?: SkipReason;\n}\n\nfunction extractVersion({\n version,\n versions,\n depStartIndex,\n depSubContent,\n depName,\n versionStartIndex,\n versionSubContent,\n}: {\n version: GradleVersionCatalogVersion | undefined;\n versions: Record<string, GradleVersionPointerTarget>;\n depStartIndex: number;\n depSubContent: string;\n depName: string;\n versionStartIndex: number;\n versionSubContent: string;\n}): VersionExtract {\n if (isVersionPointer(version)) {\n const originalAlias = findOriginalAlias(versions, version.ref);\n return extractLiteralVersion({\n version: versions[originalAlias],\n depStartIndex: versionStartIndex,\n depSubContent: versionSubContent,\n sectionKey: originalAlias,\n });\n }\n return extractLiteralVersion({\n version,\n depStartIndex,\n depSubContent,\n sectionKey: depName,\n });\n}\n\nfunction extractLiteralVersion({\n version,\n depStartIndex,\n depSubContent,\n sectionKey,\n}: {\n version: GradleVersionPointerTarget | undefined;\n depStartIndex: number;\n depSubContent: string;\n sectionKey: string;\n}): VersionExtract {\n if (!version) {\n return { skipReason: 'unspecified-version' };\n }\n if (isString(version)) {\n const fileReplacePosition =\n depStartIndex + findVersionIndex(depSubContent, sectionKey, version);\n return { currentValue: version, fileReplacePosition };\n }\n if (isPlainObject(version)) {\n // https://github.com/gradle/gradle/blob/d9adf33a57925582988fc512002dcc0e8ce4db95/subprojects/core/src/main/java/org/gradle/api/internal/catalog/parser/TomlCatalogFileParser.java#L368\n // https://docs.gradle.org/current/userguide/rich_versions.html\n // https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format\n const versionKeys = ['require', 'prefer', 'strictly'];\n let found = false;\n let currentValue: string | undefined;\n let fileReplacePosition: number | undefined;\n\n if (version.reject || version.rejectAll) {\n return { skipReason: 'unsupported-version' };\n }\n\n for (const key of versionKeys) {\n if (key in version) {\n if (found) {\n // Currently, we only support one version constraint at a time\n return { skipReason: 'multiple-constraint-dep' };\n }\n found = true;\n\n currentValue = version[key] as string;\n fileReplacePosition =\n depStartIndex +\n findIndexAfter(depSubContent, sectionKey, currentValue);\n }\n }\n\n if (found) {\n return { currentValue, fileReplacePosition };\n }\n }\n\n return { skipReason: 'unspecified-version' };\n}\n\nfunction extractDependency({\n descriptor,\n versions,\n depStartIndex,\n depSubContent,\n depName,\n versionStartIndex,\n versionSubContent,\n}: {\n descriptor:\n string | GradleCatalogModuleDescriptor | GradleCatalogArtifactDescriptor;\n versions: Record<string, GradleVersionPointerTarget>;\n depStartIndex: number;\n depSubContent: string;\n depName: string;\n versionStartIndex: number;\n versionSubContent: string;\n}): PackageDependency<GradleManagerData> {\n if (isString(descriptor)) {\n const [group, name, currentValue] = descriptor.split(':');\n if (!currentValue) {\n return {\n depName,\n skipReason: 'unspecified-version',\n };\n }\n return {\n depName: `${group}:${name}`,\n currentValue,\n managerData: {\n fileReplacePosition:\n depStartIndex + findIndexAfter(depSubContent, depName, currentValue),\n },\n };\n }\n\n const { currentValue, fileReplacePosition, skipReason } = extractVersion({\n version: descriptor.version,\n versions,\n depStartIndex,\n depSubContent,\n depName,\n versionStartIndex,\n versionSubContent,\n });\n\n if (skipReason) {\n return {\n depName,\n skipReason,\n };\n }\n\n const dependency: PackageDependency<GradleManagerData> = {\n currentValue,\n managerData: { fileReplacePosition },\n };\n\n if (isArtifactDescriptor(descriptor)) {\n const { group, name } = descriptor;\n dependency.depName = `${group}:${name}`;\n } else {\n const [depGroupName, name] = descriptor.module.split(':');\n dependency.depName = `${depGroupName}:${name}`;\n }\n\n if (isVersionPointer(descriptor.version)) {\n dependency.sharedVariableName = normalizeAlias(descriptor.version.ref);\n }\n\n return dependency;\n}\n\nexport function parseCatalog(\n packageFile: string,\n content: string,\n): { vars: PackageVariables; deps: PackageDependency<GradleManagerData>[] } {\n const tomlContent = parseToml(massage(content)) as GradleCatalog;\n const versions = coerceObject(tomlContent.versions);\n const libs = coerceObject(tomlContent.libraries);\n const libStartIndex = content.indexOf('libraries');\n const libSubContent = content.slice(libStartIndex);\n const versionStartIndex = content.indexOf('versions');\n const versionSubContent = content.slice(versionStartIndex);\n const extractedDeps: PackageDependency<GradleManagerData>[] = [];\n const vars: PackageVariables = {};\n\n for (const [key, version] of Object.entries(versions)) {\n const { currentValue, fileReplacePosition } = extractLiteralVersion({\n version,\n depStartIndex: versionStartIndex,\n depSubContent: versionSubContent,\n sectionKey: key,\n });\n if (currentValue && fileReplacePosition !== undefined) {\n vars[normalizeAlias(key)] = {\n key: normalizeAlias(key),\n value: currentValue,\n fileReplacePosition,\n packageFile,\n };\n }\n }\n\n for (const libraryName of Object.keys(libs)) {\n const libDescriptor = libs[libraryName];\n const dependency = extractDependency({\n descriptor: libDescriptor,\n versions,\n depStartIndex: libStartIndex,\n depSubContent: libSubContent,\n depName: libraryName,\n versionStartIndex,\n versionSubContent,\n });\n extractedDeps.push(dependency);\n }\n\n const plugins = coerceObject(tomlContent.plugins);\n const pluginsStartIndex = content.indexOf('[plugins]');\n const pluginsSubContent = content.slice(pluginsStartIndex);\n for (const pluginName of Object.keys(plugins)) {\n const pluginDescriptor = plugins[pluginName];\n const [depName, version] = isString(pluginDescriptor)\n ? pluginDescriptor.split(':')\n : [pluginDescriptor.id, pluginDescriptor.version];\n const { currentValue, fileReplacePosition, skipReason } = extractVersion({\n version,\n versions,\n depStartIndex: pluginsStartIndex,\n depSubContent: pluginsSubContent,\n depName,\n versionStartIndex,\n versionSubContent,\n });\n\n const dependency: PackageDependency<GradleManagerData> = {\n depType: 'plugin',\n depName,\n packageName: `${depName}:${depName}.gradle.plugin`,\n currentValue,\n commitMessageTopic: `plugin ${pluginName}`,\n managerData: { fileReplacePosition },\n };\n if (skipReason) {\n dependency.skipReason = skipReason;\n }\n if (isVersionPointer(version) && dependency.commitMessageTopic) {\n dependency.sharedVariableName = normalizeAlias(version.ref);\n delete dependency.commitMessageTopic;\n }\n\n extractedDeps.push(dependency);\n }\n\n const deps = extractedDeps.map((dep) => {\n return deepmerge(dep, { managerData: { packageFile } });\n });\n return { vars, deps };\n}\n\nfunction makeCatalogGroupKey(\n dep: PackageDependency<GradleManagerData>,\n): string {\n return `${dep.managerData!.packageFile}:${dep.managerData!.fileReplacePosition}`;\n}\n\nexport function unifyCatalogSharedVariableNames(\n deps: PackageDependency<GradleManagerData>[],\n): void {\n const aliasMap: Record<string, string[]> = {};\n const catalogDeps: PackageDependency<GradleManagerData>[] = [];\n\n for (const dep of deps) {\n const packageFile = dep.managerData?.packageFile;\n if (\n packageFile &&\n dep.managerData?.fileReplacePosition !== undefined &&\n dep.sharedVariableName &&\n isTOMLFile(packageFile)\n ) {\n catalogDeps.push(dep);\n\n const key = makeCatalogGroupKey(dep);\n (aliasMap[key] ??= []).push(dep.sharedVariableName);\n }\n }\n\n for (const dep of catalogDeps) {\n const key = makeCatalogGroupKey(dep);\n const aliases = aliasMap[key];\n if (aliases.length > 1) {\n const name = aliases[0];\n dep.sharedVariableName = name.replace(regEx(/^[^.]+\\.versions\\./), '');\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { logger } from "../../../logger/index.js";
|
|
|
5
5
|
import { parseYaml } from "../../../util/yaml.js";
|
|
6
6
|
import { DockerDatasource } from "../../datasource/docker/index.js";
|
|
7
7
|
import { HelmDatasource } from "../../datasource/helm/index.js";
|
|
8
|
-
import { isOCIRegistry, removeOCIPrefix } from "../helmv3/oci.js";
|
|
8
|
+
import { getOciChartDep, isOCIRegistry, removeOCIPrefix } from "../helmv3/oci.js";
|
|
9
9
|
import { Doc } from "./schema.js";
|
|
10
10
|
import { kustomizationsKeysUsed, localChartHasKustomizationsYaml } from "./utils.js";
|
|
11
11
|
import { isEmptyArray, isString } from "@sindresorhus/is";
|
|
@@ -50,7 +50,7 @@ async function extractPackageFile(content, packageFile, config) {
|
|
|
50
50
|
}
|
|
51
51
|
for (const dep of [...coerceArray(doc.releases), ...Object.values(coerceObject(doc.templates))]) {
|
|
52
52
|
let depName = dep.chart;
|
|
53
|
-
let
|
|
53
|
+
let ociDep = null;
|
|
54
54
|
let repoName = null;
|
|
55
55
|
if (isLocalPath(dep.chart)) {
|
|
56
56
|
if (kustomizationsKeysUsed(dep) || await localChartHasKustomizationsYaml(dep, packageFile)) needKustomize = true;
|
|
@@ -60,16 +60,18 @@ async function extractPackageFile(content, packageFile, config) {
|
|
|
60
60
|
});
|
|
61
61
|
continue;
|
|
62
62
|
}
|
|
63
|
-
if (isOCIRegistry(dep.chart))
|
|
64
|
-
|
|
63
|
+
if (isOCIRegistry(dep.chart)) {
|
|
64
|
+
depName = removeOCIPrefix(dep.chart);
|
|
65
|
+
ociDep = getOciChartDep(dep.chart, void 0, config.registryAliases);
|
|
66
|
+
} else {
|
|
65
67
|
if (dep.chart.includes("/")) {
|
|
66
68
|
const v = dep.chart.split("/");
|
|
67
69
|
repoName = v.shift();
|
|
68
70
|
depName = v.join("/");
|
|
69
71
|
} else repoName = dep.chart;
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
72
|
+
const registry = registryData[repoName];
|
|
73
|
+
if (registry?.oci) {
|
|
74
|
+
ociDep = getOciChartDep(registry.url, depName, config.registryAliases);
|
|
73
75
|
repoName = null;
|
|
74
76
|
}
|
|
75
77
|
}
|
|
@@ -85,11 +87,9 @@ async function extractPackageFile(content, packageFile, config) {
|
|
|
85
87
|
currentValue: dep.version
|
|
86
88
|
};
|
|
87
89
|
if (kustomizationsKeysUsed(dep)) needKustomize = true;
|
|
88
|
-
if (
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
} else if (repoName) res.registryUrls = [registryData[repoName]?.url].concat([config.registryAliases?.[repoName]]).filter(isString);
|
|
92
|
-
if (!isValidChartName(isOCIRegistry(dep.chart) ? depName.slice(depName.lastIndexOf("/") + 1) : depName, !!packageName)) res.skipReason = "unsupported-chart-type";
|
|
90
|
+
if (ociDep) Object.assign(res, ociDep);
|
|
91
|
+
else if (repoName) res.registryUrls = [registryData[repoName]?.url].concat([config.registryAliases?.[repoName]]).filter(isString);
|
|
92
|
+
if (!isValidChartName(isOCIRegistry(dep.chart) ? depName.slice(depName.lastIndexOf("/") + 1) : depName, !!ociDep)) res.skipReason = "unsupported-chart-type";
|
|
93
93
|
if (res.datasource !== DockerDatasource.id && isEmptyArray(res.registryUrls)) res.skipReason = "unknown-registry";
|
|
94
94
|
deps.push(res);
|
|
95
95
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","names":["Document"],"sources":["../../../../lib/modules/manager/helmfile/extract.ts"],"sourcesContent":["import { isEmptyArray, isString } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport { coerceObject } from '../../../util/object.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { parseYaml } from '../../../util/yaml.ts';\nimport { DockerDatasource } from '../../datasource/docker/index.ts';\nimport { HelmDatasource } from '../../datasource/helm/index.ts';\nimport {
|
|
1
|
+
{"version":3,"file":"extract.js","names":["Document"],"sources":["../../../../lib/modules/manager/helmfile/extract.ts"],"sourcesContent":["import { isEmptyArray, isString } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport { coerceObject } from '../../../util/object.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { parseYaml } from '../../../util/yaml.ts';\nimport { DockerDatasource } from '../../datasource/docker/index.ts';\nimport { HelmDatasource } from '../../datasource/helm/index.ts';\nimport {\n getOciChartDep,\n isOCIRegistry,\n removeOCIPrefix,\n} from '../helmv3/oci.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFileContent,\n} from '../types.ts';\nimport type { Doc, HelmRepository } from './schema.ts';\nimport { Doc as Document } from './schema.ts';\nimport {\n kustomizationsKeysUsed,\n localChartHasKustomizationsYaml,\n} from './utils.ts';\n\nfunction isValidChartName(name: string | undefined, oci: boolean): boolean {\n if (oci) {\n return !!name && !regEx(/[!@#$%^&*(),.?\":{}|<>A-Z]/).test(name);\n }\n return !!name && !regEx(/[!@#$%^&*(),.?\":{}/|<>A-Z]/).test(name);\n}\n\nfunction isLocalPath(possiblePath: string): boolean {\n return ['./', '../', '/'].some((localPrefix) =>\n possiblePath.startsWith(localPrefix),\n );\n}\n\nexport async function extractPackageFile(\n content: string,\n packageFile: string,\n config: ExtractConfig,\n): Promise<PackageFileContent | null> {\n const deps: PackageDependency[] = [];\n let registryData: Record<string, HelmRepository> = {};\n // Record kustomization usage for all deps, since updating artifacts is run on the helmfile.yaml as a whole.\n let needKustomize = false;\n const docs: Doc[] = parseYaml(content, {\n customSchema: Document,\n failureBehaviour: 'filter',\n removeTemplates: true,\n });\n\n for (const doc of docs) {\n // Always check for repositories in the current document and override the existing ones if any (as YAML does)\n if (doc.repositories) {\n registryData = {};\n for (const repo of doc.repositories) {\n if (repo.url?.startsWith('git+')) {\n logger.debug(\n { repo, packageFile },\n `Skipping unsupported helm-git repository.`,\n );\n continue;\n }\n registryData[repo.name] = repo;\n }\n logger.debug(\n { registryAliases: registryData, packageFile },\n `repositories discovered.`,\n );\n }\n\n for (const dep of [\n ...coerceArray(doc.releases),\n ...Object.values(coerceObject(doc.templates)),\n ]) {\n let depName = dep.chart;\n let ociDep: PackageDependency | null = null;\n let repoName: string | null = null;\n\n // If it starts with ./ ../ or / then it's a local path\n if (isLocalPath(dep.chart)) {\n if (\n kustomizationsKeysUsed(dep) ||\n (await localChartHasKustomizationsYaml(dep, packageFile))\n ) {\n needKustomize = true;\n }\n deps.push({\n depName: dep.name,\n skipReason: 'local-chart',\n });\n continue;\n }\n\n if (isOCIRegistry(dep.chart)) {\n depName = removeOCIPrefix(dep.chart);\n ociDep = getOciChartDep(dep.chart, undefined, config.registryAliases);\n } else {\n if (dep.chart.includes('/')) {\n const v = dep.chart.split('/');\n repoName = v.shift()!;\n depName = v.join('/');\n } else {\n repoName = dep.chart;\n }\n const registry = registryData[repoName];\n if (registry?.oci) {\n ociDep = getOciChartDep(\n registry.url,\n depName,\n config.registryAliases,\n );\n repoName = null;\n }\n }\n\n if (!isString(dep.version)) {\n deps.push({\n depName,\n skipReason: 'invalid-version',\n });\n continue;\n }\n\n const res: PackageDependency = {\n depName,\n currentValue: dep.version,\n };\n if (kustomizationsKeysUsed(dep)) {\n needKustomize = true;\n }\n if (ociDep) {\n Object.assign(res, ociDep);\n } else if (repoName) {\n res.registryUrls = [registryData[repoName]?.url]\n .concat([config.registryAliases?.[repoName]] as string[])\n .filter(isString);\n }\n\n // By definition on helm the chart name should be lowercase letter + number + -\n // However helmfile support templating of that field\n if (\n !isValidChartName(\n isOCIRegistry(dep.chart)\n ? depName.slice(depName.lastIndexOf('/') + 1)\n : depName,\n !!ociDep,\n )\n ) {\n res.skipReason = 'unsupported-chart-type';\n }\n\n // Skip in case we cannot locate the registry\n if (\n res.datasource !== DockerDatasource.id &&\n isEmptyArray(res.registryUrls)\n ) {\n res.skipReason = 'unknown-registry';\n }\n\n deps.push(res);\n }\n }\n\n return deps.length\n ? {\n deps,\n datasource: HelmDatasource.id,\n ...(needKustomize && { managerData: { needKustomize } }),\n }\n : null;\n}\n"],"mappings":"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"}
|