renovate 43.122.0 → 43.123.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/config/presets/internal/config.preset.js +2 -0
  2. package/dist/config/presets/internal/config.preset.js.map +1 -1
  3. package/dist/config/presets/internal/global.preset.js +1 -0
  4. package/dist/config/presets/internal/global.preset.js.map +1 -1
  5. package/dist/config/presets/internal/helpers.preset.js +33 -4
  6. package/dist/config/presets/internal/helpers.preset.js.map +1 -1
  7. package/dist/manager-list.generated.d.ts +1 -1
  8. package/dist/manager-list.generated.js +2 -1
  9. package/dist/manager-list.generated.js.map +1 -1
  10. package/dist/modules/datasource/terraform-module/base.js +4 -3
  11. package/dist/modules/datasource/terraform-module/base.js.map +1 -1
  12. package/dist/modules/datasource/terraform-module/index.js +46 -67
  13. package/dist/modules/datasource/terraform-module/index.js.map +1 -1
  14. package/dist/modules/datasource/terraform-module/schema.js +31 -0
  15. package/dist/modules/datasource/terraform-module/schema.js.map +1 -0
  16. package/dist/modules/datasource/terraform-module/utils.js +15 -1
  17. package/dist/modules/datasource/terraform-module/utils.js.map +1 -1
  18. package/dist/modules/datasource/terraform-provider/index.js +0 -1
  19. package/dist/modules/datasource/terraform-provider/index.js.map +1 -1
  20. package/dist/modules/manager/api.js +2 -0
  21. package/dist/modules/manager/api.js.map +1 -1
  22. package/dist/modules/manager/fingerprint.generated.js +2 -1
  23. package/dist/modules/manager/fingerprint.generated.js.map +1 -1
  24. package/dist/modules/manager/terraform/base.js +2 -2
  25. package/dist/modules/manager/terraform/base.js.map +1 -1
  26. package/dist/modules/manager/xcodegen/extract.js +142 -0
  27. package/dist/modules/manager/xcodegen/extract.js.map +1 -0
  28. package/dist/modules/manager/xcodegen/index.js +30 -0
  29. package/dist/modules/manager/xcodegen/index.js.map +1 -0
  30. package/dist/modules/manager/xcodegen/schema.js +25 -0
  31. package/dist/modules/manager/xcodegen/schema.js.map +1 -0
  32. package/dist/modules/platform/github/schema.d.ts +2 -2
  33. package/package.json +2 -2
  34. package/renovate-schema.json +59 -2
@@ -32,6 +32,8 @@ const presets = {
32
32
  "mergeConfidence:age-confidence-badges",
33
33
  "replacements:all",
34
34
  "workarounds:all",
35
+ "helpers:forgejoDigestChangelogs",
36
+ "helpers:giteaDigestChangelogs",
35
37
  "helpers:githubDigestChangelogs",
36
38
  "helpers:goXPackagesChangelogLink",
37
39
  "helpers:goXPackagesNameLink"
@@ -1 +1 @@
1
- {"version":3,"file":"config.preset.js","names":[],"sources":["../../../../lib/config/presets/internal/config.preset.ts"],"sourcesContent":["import type { Preset } from '../types.ts';\n\nexport const presets: Record<string, Preset> = {\n 'best-practices': {\n description:\n 'Preset with best practices from the Renovate maintainers. Recommended for advanced users, who want to follow our best practices.',\n extends: [\n 'config:recommended',\n 'docker:pinDigests',\n 'helpers:pinGitHubActionDigests',\n ':configMigration',\n ':pinDevDependencies',\n 'abandonments:recommended',\n 'security:minimumReleaseAgeNpm',\n ':maintainLockFilesWeekly',\n ],\n },\n 'js-app': {\n description: 'Default configuration for webapps.',\n extends: ['config:recommended', ':pinAllExceptPeerDependencies'],\n },\n 'js-lib': {\n description: 'Default configuration for libraries.',\n extends: ['config:recommended', ':pinOnlyDevDependencies'],\n },\n recommended: {\n description:\n 'Recommended configuration for most users. It does not matter what programming language you use.',\n extends: [\n ':dependencyDashboard',\n ':semanticPrefixFixDepsChoreOthers',\n ':ignoreModulesAndTests',\n 'group:monorepos',\n 'group:recommended',\n 'mergeConfidence:age-confidence-badges',\n 'replacements:all',\n 'workarounds:all',\n 'helpers:githubDigestChangelogs',\n 'helpers:goXPackagesChangelogLink',\n 'helpers:goXPackagesNameLink',\n ],\n },\n semverAllMonthly: {\n description:\n 'Preserve SemVer ranges and update everything together once a month. (excluding replacements and lockfile maintenance)',\n extends: [\n ':preserveSemverRanges',\n 'group:all',\n 'schedule:monthly',\n ':maintainLockFilesMonthly',\n ],\n lockFileMaintenance: {\n commitMessageAction: 'Update',\n },\n separateMajorMinor: false,\n },\n semverAllWeekly: {\n description:\n 'Preserve SemVer ranges and update everything together once a week (excluding replacements and lockfile maintenance).',\n extends: [\n ':preserveSemverRanges',\n 'group:all',\n 'schedule:weekly',\n ':maintainLockFilesWeekly',\n ],\n lockFileMaintenance: {\n commitMessageAction: 'Update',\n },\n separateMajorMinor: false,\n },\n};\n"],"mappings":";AAEA,MAAa,UAAkC;CAC7C,kBAAkB;EAChB,aACE;EACF,SAAS;GACP;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD;EACF;CACD,UAAU;EACR,aAAa;EACb,SAAS,CAAC,sBAAsB,gCAAgC;EACjE;CACD,UAAU;EACR,aAAa;EACb,SAAS,CAAC,sBAAsB,0BAA0B;EAC3D;CACD,aAAa;EACX,aACE;EACF,SAAS;GACP;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD;EACF;CACD,kBAAkB;EAChB,aACE;EACF,SAAS;GACP;GACA;GACA;GACA;GACD;EACD,qBAAqB,EACnB,qBAAqB,UACtB;EACD,oBAAoB;EACrB;CACD,iBAAiB;EACf,aACE;EACF,SAAS;GACP;GACA;GACA;GACA;GACD;EACD,qBAAqB,EACnB,qBAAqB,UACtB;EACD,oBAAoB;EACrB;CACF"}
1
+ {"version":3,"file":"config.preset.js","names":[],"sources":["../../../../lib/config/presets/internal/config.preset.ts"],"sourcesContent":["import type { Preset } from '../types.ts';\n\nexport const presets: Record<string, Preset> = {\n 'best-practices': {\n description:\n 'Preset with best practices from the Renovate maintainers. Recommended for advanced users, who want to follow our best practices.',\n extends: [\n 'config:recommended',\n 'docker:pinDigests',\n 'helpers:pinGitHubActionDigests',\n ':configMigration',\n ':pinDevDependencies',\n 'abandonments:recommended',\n 'security:minimumReleaseAgeNpm',\n ':maintainLockFilesWeekly',\n ],\n },\n 'js-app': {\n description: 'Default configuration for webapps.',\n extends: ['config:recommended', ':pinAllExceptPeerDependencies'],\n },\n 'js-lib': {\n description: 'Default configuration for libraries.',\n extends: ['config:recommended', ':pinOnlyDevDependencies'],\n },\n recommended: {\n description:\n 'Recommended configuration for most users. It does not matter what programming language you use.',\n extends: [\n ':dependencyDashboard',\n ':semanticPrefixFixDepsChoreOthers',\n ':ignoreModulesAndTests',\n 'group:monorepos',\n 'group:recommended',\n 'mergeConfidence:age-confidence-badges',\n 'replacements:all',\n 'workarounds:all',\n 'helpers:forgejoDigestChangelogs',\n 'helpers:giteaDigestChangelogs',\n 'helpers:githubDigestChangelogs',\n 'helpers:goXPackagesChangelogLink',\n 'helpers:goXPackagesNameLink',\n ],\n },\n semverAllMonthly: {\n description:\n 'Preserve SemVer ranges and update everything together once a month. (excluding replacements and lockfile maintenance)',\n extends: [\n ':preserveSemverRanges',\n 'group:all',\n 'schedule:monthly',\n ':maintainLockFilesMonthly',\n ],\n lockFileMaintenance: {\n commitMessageAction: 'Update',\n },\n separateMajorMinor: false,\n },\n semverAllWeekly: {\n description:\n 'Preserve SemVer ranges and update everything together once a week (excluding replacements and lockfile maintenance).',\n extends: [\n ':preserveSemverRanges',\n 'group:all',\n 'schedule:weekly',\n ':maintainLockFilesWeekly',\n ],\n lockFileMaintenance: {\n commitMessageAction: 'Update',\n },\n separateMajorMinor: false,\n },\n};\n"],"mappings":";AAEA,MAAa,UAAkC;CAC7C,kBAAkB;EAChB,aACE;EACF,SAAS;GACP;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD;EACF;CACD,UAAU;EACR,aAAa;EACb,SAAS,CAAC,sBAAsB,gCAAgC;EACjE;CACD,UAAU;EACR,aAAa;EACb,SAAS,CAAC,sBAAsB,0BAA0B;EAC3D;CACD,aAAa;EACX,aACE;EACF,SAAS;GACP;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD;EACF;CACD,kBAAkB;EAChB,aACE;EACF,SAAS;GACP;GACA;GACA;GACA;GACD;EACD,qBAAqB,EACnB,qBAAqB,UACtB;EACD,oBAAoB;EACrB;CACD,iBAAiB;EACf,aACE;EACF,SAAS;GACP;GACA;GACA;GACA;GACD;EACD,qBAAqB,EACnB,qBAAqB,UACtB;EACD,oBAAoB;EACrB;CACF"}
@@ -1,6 +1,7 @@
1
1
  //#region lib/config/presets/internal/global.preset.ts
2
2
  const presets = { safeEnv: {
3
3
  allowedEnv: [
4
+ "BUN_CONFIG_MAX_HTTP_REQUESTS",
4
5
  "GO*",
5
6
  "GRADLE_OPTS",
6
7
  "RUSTC_BOOTSTRAP"
@@ -1 +1 @@
1
- {"version":3,"file":"global.preset.js","names":[],"sources":["../../../../lib/config/presets/internal/global.preset.ts"],"sourcesContent":["import type { GlobalPreset } from '../types.ts';\n\nexport const presets: Record<string, GlobalPreset> = {\n safeEnv: {\n allowedEnv: ['GO*', 'GRADLE_OPTS', 'RUSTC_BOOTSTRAP'],\n description:\n 'Hopefully safe environment variables to allow users to configure.',\n },\n};\n"],"mappings":";AAEA,MAAa,UAAwC,EACnD,SAAS;CACP,YAAY;EAAC;EAAO;EAAe;EAAkB;CACrD,aACE;CACH,EACF"}
1
+ {"version":3,"file":"global.preset.js","names":[],"sources":["../../../../lib/config/presets/internal/global.preset.ts"],"sourcesContent":["import type { GlobalPreset } from '../types.ts';\n\nexport const presets: Record<string, GlobalPreset> = {\n safeEnv: {\n allowedEnv: [\n 'BUN_CONFIG_MAX_HTTP_REQUESTS',\n 'GO*',\n 'GRADLE_OPTS',\n 'RUSTC_BOOTSTRAP',\n ],\n description:\n 'Hopefully safe environment variables to allow users to configure.',\n },\n};\n"],"mappings":";AAEA,MAAa,UAAwC,EACnD,SAAS;CACP,YAAY;EACV;EACA;EACA;EACA;EACD;CACD,aACE;CACH,EACF"}
@@ -16,17 +16,46 @@ const presets = {
16
16
  description: "Keep `typescript` version in sync with the `rc` tag.",
17
17
  extends: [":followTag(typescript, rc)"]
18
18
  },
19
+ forgejoDigestChangelogs: {
20
+ description: "Ensure that every dependency pinned by digest and sourced from Forgejo contains a link to the commit-to-commit diff",
21
+ packageRules: [{
22
+ changelogUrl: "{{sourceUrl}}/compare/{{currentDigest}}..{{newDigest}}",
23
+ matchDatasources: ["forgejo-releases", "forgejo-tags"],
24
+ matchUpdateTypes: ["digest"]
25
+ }, {
26
+ changelogUrl: "{{sourceUrl}}/compare/{{currentDigest}}..{{newDigest}}",
27
+ matchDatasources: ["git-refs", "git-tags"],
28
+ matchJsonata: ["$detectPlatform(sourceUrl) = 'forgejo'"],
29
+ matchUpdateTypes: ["digest"]
30
+ }]
31
+ },
32
+ giteaDigestChangelogs: {
33
+ description: "Ensure that every dependency pinned by digest and sourced from Gitea contains a link to the commit-to-commit diff",
34
+ packageRules: [{
35
+ changelogUrl: "{{sourceUrl}}/compare/{{currentDigest}}..{{newDigest}}",
36
+ matchDatasources: ["gitea-releases", "gitea-tags"],
37
+ matchUpdateTypes: ["digest"]
38
+ }, {
39
+ changelogUrl: "{{sourceUrl}}/compare/{{currentDigest}}..{{newDigest}}",
40
+ matchDatasources: ["git-refs", "git-tags"],
41
+ matchJsonata: ["$detectPlatform(sourceUrl) = 'gitea'"],
42
+ matchUpdateTypes: ["digest"]
43
+ }]
44
+ },
19
45
  githubDigestChangelogs: {
20
- description: "Ensure that every dependency pinned by digest and sourced from GitHub.com contains a link to the commit-to-commit diff",
46
+ description: "Ensure that every dependency pinned by digest and sourced from GitHub.com and Github enterprise contains a link to the commit-to-commit diff",
21
47
  packageRules: [{
22
48
  changelogUrl: "{{sourceUrl}}/compare/{{currentDigest}}..{{newDigest}}",
23
49
  matchDatasources: [
24
- "git-refs",
25
- "git-tags",
50
+ "github-digest",
26
51
  "github-releases",
27
52
  "github-tags"
28
53
  ],
29
- matchSourceUrls: ["https://github.com/**"],
54
+ matchUpdateTypes: ["digest"]
55
+ }, {
56
+ changelogUrl: "{{sourceUrl}}/compare/{{currentDigest}}..{{newDigest}}",
57
+ matchDatasources: ["git-refs", "git-tags"],
58
+ matchJsonata: ["$detectPlatform(sourceUrl) = 'github'"],
30
59
  matchUpdateTypes: ["digest"]
31
60
  }]
32
61
  },
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.preset.js","names":[],"sources":["../../../../lib/config/presets/internal/helpers.preset.ts"],"sourcesContent":["import type { Preset } from '../types.ts';\n\nexport const presets: Record<string, Preset> = {\n disableTypesNodeMajor: {\n description: 'Disable `major` updates to `@types/node`.',\n packageRules: [\n {\n enabled: false,\n matchPackageNames: ['@types/node'],\n matchUpdateTypes: ['major'],\n },\n ],\n },\n followTypescriptNext: {\n description: 'Keep `typescript` version in sync with the `next` tag.',\n extends: [':followTag(typescript, next)'],\n },\n followTypescriptRc: {\n description: 'Keep `typescript` version in sync with the `rc` tag.',\n extends: [':followTag(typescript, rc)'],\n },\n githubDigestChangelogs: {\n description:\n 'Ensure that every dependency pinned by digest and sourced from GitHub.com contains a link to the commit-to-commit diff',\n packageRules: [\n {\n changelogUrl: '{{sourceUrl}}/compare/{{currentDigest}}..{{newDigest}}',\n matchDatasources: [\n 'git-refs',\n 'git-tags',\n 'github-releases',\n 'github-tags',\n ],\n matchSourceUrls: ['https://github.com/**'],\n matchUpdateTypes: ['digest'],\n },\n ],\n },\n goXPackagesChangelogLink: {\n description: 'Correctly link to the source code for golang.org/x packages',\n packageRules: [\n {\n matchManagers: ['gomod'],\n // NOTE that digests are not supported with the below diff view\n matchUpdateTypes: ['major', 'minor', 'patch'],\n prBodyDefinitions: {\n Change:\n \"{{#if (containsString depName 'golang.org/x/')}}[`{{{displayFrom}}}` → `{{{displayTo}}}`](https://cs.opensource.google/{{{replace '^golang\\\\.org' 'go' depName}}}/+/refs/tags/{{{currentValue}}}...refs/tags/{{{newValue}}}){{else}}`{{{displayFrom}}}` → `{{{displayTo}}}`{{/if}}\",\n },\n },\n ],\n },\n goXPackagesNameLink: {\n description: \"Link to pkg.go.dev/... for golang.org/x packages' title\",\n packageRules: [\n {\n matchManagers: ['gomod'],\n prBodyDefinitions: {\n Package:\n \"{{#if (containsString depName 'golang.org/x/')}}[{{{depName}}}](https://pkg.go.dev/{{{depName}}}){{else}}{{{depNameLinked}}}{{/if}}\",\n },\n },\n ],\n },\n pinGitHubActionDigests: {\n description: 'Pin `github-action` digests.',\n packageRules: [\n {\n matchDepTypes: ['action'],\n pinDigests: true,\n },\n ],\n },\n pinGitHubActionDigestsToSemver: {\n description: 'Convert pinned GitHub Action digests to SemVer.',\n packageRules: [\n {\n extends: ['helpers:pinGitHubActionDigests'],\n extractVersion: '^(?<version>v?\\\\d+\\\\.\\\\d+\\\\.\\\\d+)$',\n versioning:\n 'regex:^v?(?<major>\\\\d+)(\\\\.(?<minor>\\\\d+)\\\\.(?<patch>\\\\d+))?$',\n },\n ],\n },\n};\n"],"mappings":";AAEA,MAAa,UAAkC;CAC7C,uBAAuB;EACrB,aAAa;EACb,cAAc,CACZ;GACE,SAAS;GACT,mBAAmB,CAAC,cAAc;GAClC,kBAAkB,CAAC,QAAQ;GAC5B,CACF;EACF;CACD,sBAAsB;EACpB,aAAa;EACb,SAAS,CAAC,+BAA+B;EAC1C;CACD,oBAAoB;EAClB,aAAa;EACb,SAAS,CAAC,6BAA6B;EACxC;CACD,wBAAwB;EACtB,aACE;EACF,cAAc,CACZ;GACE,cAAc;GACd,kBAAkB;IAChB;IACA;IACA;IACA;IACD;GACD,iBAAiB,CAAC,wBAAwB;GAC1C,kBAAkB,CAAC,SAAS;GAC7B,CACF;EACF;CACD,0BAA0B;EACxB,aAAa;EACb,cAAc,CACZ;GACE,eAAe,CAAC,QAAQ;GAExB,kBAAkB;IAAC;IAAS;IAAS;IAAQ;GAC7C,mBAAmB,EACjB,QACE,sRACH;GACF,CACF;EACF;CACD,qBAAqB;EACnB,aAAa;EACb,cAAc,CACZ;GACE,eAAe,CAAC,QAAQ;GACxB,mBAAmB,EACjB,SACE,uIACH;GACF,CACF;EACF;CACD,wBAAwB;EACtB,aAAa;EACb,cAAc,CACZ;GACE,eAAe,CAAC,SAAS;GACzB,YAAY;GACb,CACF;EACF;CACD,gCAAgC;EAC9B,aAAa;EACb,cAAc,CACZ;GACE,SAAS,CAAC,iCAAiC;GAC3C,gBAAgB;GAChB,YACE;GACH,CACF;EACF;CACF"}
1
+ {"version":3,"file":"helpers.preset.js","names":[],"sources":["../../../../lib/config/presets/internal/helpers.preset.ts"],"sourcesContent":["import type { Preset } from '../types.ts';\n\nexport const presets: Record<string, Preset> = {\n disableTypesNodeMajor: {\n description: 'Disable `major` updates to `@types/node`.',\n packageRules: [\n {\n enabled: false,\n matchPackageNames: ['@types/node'],\n matchUpdateTypes: ['major'],\n },\n ],\n },\n followTypescriptNext: {\n description: 'Keep `typescript` version in sync with the `next` tag.',\n extends: [':followTag(typescript, next)'],\n },\n followTypescriptRc: {\n description: 'Keep `typescript` version in sync with the `rc` tag.',\n extends: [':followTag(typescript, rc)'],\n },\n forgejoDigestChangelogs: {\n description:\n 'Ensure that every dependency pinned by digest and sourced from Forgejo contains a link to the commit-to-commit diff',\n packageRules: [\n {\n changelogUrl: '{{sourceUrl}}/compare/{{currentDigest}}..{{newDigest}}',\n matchDatasources: ['forgejo-releases', 'forgejo-tags'],\n matchUpdateTypes: ['digest'],\n },\n {\n changelogUrl: '{{sourceUrl}}/compare/{{currentDigest}}..{{newDigest}}',\n matchDatasources: ['git-refs', 'git-tags'],\n matchJsonata: [\"$detectPlatform(sourceUrl) = 'forgejo'\"],\n matchUpdateTypes: ['digest'],\n },\n ],\n },\n giteaDigestChangelogs: {\n description:\n 'Ensure that every dependency pinned by digest and sourced from Gitea contains a link to the commit-to-commit diff',\n packageRules: [\n {\n changelogUrl: '{{sourceUrl}}/compare/{{currentDigest}}..{{newDigest}}',\n matchDatasources: ['gitea-releases', 'gitea-tags'],\n matchUpdateTypes: ['digest'],\n },\n {\n changelogUrl: '{{sourceUrl}}/compare/{{currentDigest}}..{{newDigest}}',\n matchDatasources: ['git-refs', 'git-tags'],\n matchJsonata: [\"$detectPlatform(sourceUrl) = 'gitea'\"],\n matchUpdateTypes: ['digest'],\n },\n ],\n },\n githubDigestChangelogs: {\n description:\n 'Ensure that every dependency pinned by digest and sourced from GitHub.com and Github enterprise contains a link to the commit-to-commit diff',\n packageRules: [\n {\n changelogUrl: '{{sourceUrl}}/compare/{{currentDigest}}..{{newDigest}}',\n matchDatasources: ['github-digest', 'github-releases', 'github-tags'],\n matchUpdateTypes: ['digest'],\n },\n {\n changelogUrl: '{{sourceUrl}}/compare/{{currentDigest}}..{{newDigest}}',\n matchDatasources: ['git-refs', 'git-tags'],\n matchJsonata: [\"$detectPlatform(sourceUrl) = 'github'\"],\n matchUpdateTypes: ['digest'],\n },\n ],\n },\n goXPackagesChangelogLink: {\n description: 'Correctly link to the source code for golang.org/x packages',\n packageRules: [\n {\n matchManagers: ['gomod'],\n // NOTE that digests are not supported with the below diff view\n matchUpdateTypes: ['major', 'minor', 'patch'],\n prBodyDefinitions: {\n Change:\n \"{{#if (containsString depName 'golang.org/x/')}}[`{{{displayFrom}}}` → `{{{displayTo}}}`](https://cs.opensource.google/{{{replace '^golang\\\\.org' 'go' depName}}}/+/refs/tags/{{{currentValue}}}...refs/tags/{{{newValue}}}){{else}}`{{{displayFrom}}}` → `{{{displayTo}}}`{{/if}}\",\n },\n },\n ],\n },\n goXPackagesNameLink: {\n description: \"Link to pkg.go.dev/... for golang.org/x packages' title\",\n packageRules: [\n {\n matchManagers: ['gomod'],\n prBodyDefinitions: {\n Package:\n \"{{#if (containsString depName 'golang.org/x/')}}[{{{depName}}}](https://pkg.go.dev/{{{depName}}}){{else}}{{{depNameLinked}}}{{/if}}\",\n },\n },\n ],\n },\n pinGitHubActionDigests: {\n description: 'Pin `github-action` digests.',\n packageRules: [\n {\n matchDepTypes: ['action'],\n pinDigests: true,\n },\n ],\n },\n pinGitHubActionDigestsToSemver: {\n description: 'Convert pinned GitHub Action digests to SemVer.',\n packageRules: [\n {\n extends: ['helpers:pinGitHubActionDigests'],\n extractVersion: '^(?<version>v?\\\\d+\\\\.\\\\d+\\\\.\\\\d+)$',\n versioning:\n 'regex:^v?(?<major>\\\\d+)(\\\\.(?<minor>\\\\d+)\\\\.(?<patch>\\\\d+))?$',\n },\n ],\n },\n};\n"],"mappings":";AAEA,MAAa,UAAkC;CAC7C,uBAAuB;EACrB,aAAa;EACb,cAAc,CACZ;GACE,SAAS;GACT,mBAAmB,CAAC,cAAc;GAClC,kBAAkB,CAAC,QAAQ;GAC5B,CACF;EACF;CACD,sBAAsB;EACpB,aAAa;EACb,SAAS,CAAC,+BAA+B;EAC1C;CACD,oBAAoB;EAClB,aAAa;EACb,SAAS,CAAC,6BAA6B;EACxC;CACD,yBAAyB;EACvB,aACE;EACF,cAAc,CACZ;GACE,cAAc;GACd,kBAAkB,CAAC,oBAAoB,eAAe;GACtD,kBAAkB,CAAC,SAAS;GAC7B,EACD;GACE,cAAc;GACd,kBAAkB,CAAC,YAAY,WAAW;GAC1C,cAAc,CAAC,yCAAyC;GACxD,kBAAkB,CAAC,SAAS;GAC7B,CACF;EACF;CACD,uBAAuB;EACrB,aACE;EACF,cAAc,CACZ;GACE,cAAc;GACd,kBAAkB,CAAC,kBAAkB,aAAa;GAClD,kBAAkB,CAAC,SAAS;GAC7B,EACD;GACE,cAAc;GACd,kBAAkB,CAAC,YAAY,WAAW;GAC1C,cAAc,CAAC,uCAAuC;GACtD,kBAAkB,CAAC,SAAS;GAC7B,CACF;EACF;CACD,wBAAwB;EACtB,aACE;EACF,cAAc,CACZ;GACE,cAAc;GACd,kBAAkB;IAAC;IAAiB;IAAmB;IAAc;GACrE,kBAAkB,CAAC,SAAS;GAC7B,EACD;GACE,cAAc;GACd,kBAAkB,CAAC,YAAY,WAAW;GAC1C,cAAc,CAAC,wCAAwC;GACvD,kBAAkB,CAAC,SAAS;GAC7B,CACF;EACF;CACD,0BAA0B;EACxB,aAAa;EACb,cAAc,CACZ;GACE,eAAe,CAAC,QAAQ;GAExB,kBAAkB;IAAC;IAAS;IAAS;IAAQ;GAC7C,mBAAmB,EACjB,QACE,sRACH;GACF,CACF;EACF;CACD,qBAAqB;EACnB,aAAa;EACb,cAAc,CACZ;GACE,eAAe,CAAC,QAAQ;GACxB,mBAAmB,EACjB,SACE,uIACH;GACF,CACF;EACF;CACD,wBAAwB;EACtB,aAAa;EACb,cAAc,CACZ;GACE,eAAe,CAAC,SAAS;GACzB,YAAY;GACb,CACF;EACF;CACD,gCAAgC;EAC9B,aAAa;EACb,cAAc,CACZ;GACE,SAAS,CAAC,iCAAiC;GAC3C,gBAAgB;GAChB,YACE;GACH,CACF;EACF;CACF"}
@@ -1,5 +1,5 @@
1
1
  //#region lib/manager-list.generated.d.ts
2
- declare const AllManagersListLiteral: readonly ["ansible", "ansible-galaxy", "ant", "argocd", "asdf", "azure-pipelines", "batect", "batect-wrapper", "bazel", "bazel-module", "bazelisk", "bicep", "bitbucket-pipelines", "bitrise", "buildkite", "buildpacks", "bun", "bun-version", "bundler", "cake", "cargo", "cdnurl", "circleci", "cloudbuild", "cocoapods", "composer", "conan", "copier", "cpanfile", "crossplane", "crow", "deps-edn", "devbox", "devcontainer", "docker-compose", "dockerfile", "droneci", "fleet", "flux", "fvm", "git-submodules", "github-actions", "gitlabci", "gitlabci-include", "glasskube", "gleam", "gomod", "gradle", "gradle-wrapper", "haskell-cabal", "helm-requirements", "helm-values", "helmfile", "helmsman", "helmv3", "hermit", "homeassistant-manifest", "homebrew", "html", "jenkins", "jsonnet-bundler", "kotlin-script", "kubernetes", "kustomize", "leiningen", "maven", "maven-wrapper", "meteor", "mint", "mise", "mix", "nix", "nodenv", "npm", "nuget", "nvm", "ocb", "osgi", "pep621", "pep723", "pip-compile", "pip_requirements", "pip_setup", "pipenv", "pixi", "poetry", "pre-commit", "pub", "puppet", "pyenv", "quadlet", "renovate-config-presets", "ruby-version", "runtime-version", "sbt", "scalafmt", "setup-cfg", "sveltos", "swift", "tekton", "terraform", "terraform-version", "terragrunt", "terragrunt-version", "tflint-plugin", "travis", "typst", "unity3d", "velaci", "vendir", "woodpecker"];
2
+ declare const AllManagersListLiteral: readonly ["ansible", "ansible-galaxy", "ant", "argocd", "asdf", "azure-pipelines", "batect", "batect-wrapper", "bazel", "bazel-module", "bazelisk", "bicep", "bitbucket-pipelines", "bitrise", "buildkite", "buildpacks", "bun", "bun-version", "bundler", "cake", "cargo", "cdnurl", "circleci", "cloudbuild", "cocoapods", "composer", "conan", "copier", "cpanfile", "crossplane", "crow", "deps-edn", "devbox", "devcontainer", "docker-compose", "dockerfile", "droneci", "fleet", "flux", "fvm", "git-submodules", "github-actions", "gitlabci", "gitlabci-include", "glasskube", "gleam", "gomod", "gradle", "gradle-wrapper", "haskell-cabal", "helm-requirements", "helm-values", "helmfile", "helmsman", "helmv3", "hermit", "homeassistant-manifest", "homebrew", "html", "jenkins", "jsonnet-bundler", "kotlin-script", "kubernetes", "kustomize", "leiningen", "maven", "maven-wrapper", "meteor", "mint", "mise", "mix", "nix", "nodenv", "npm", "nuget", "nvm", "ocb", "osgi", "pep621", "pep723", "pip-compile", "pip_requirements", "pip_setup", "pipenv", "pixi", "poetry", "pre-commit", "pub", "puppet", "pyenv", "quadlet", "renovate-config-presets", "ruby-version", "runtime-version", "sbt", "scalafmt", "setup-cfg", "sveltos", "swift", "tekton", "terraform", "terraform-version", "terragrunt", "terragrunt-version", "tflint-plugin", "travis", "typst", "unity3d", "velaci", "vendir", "woodpecker", "xcodegen"];
3
3
  type ManagerName = typeof AllManagersListLiteral[number];
4
4
  //#endregion
5
5
  export { ManagerName };
@@ -110,7 +110,8 @@ const AllManagersListLiteral = [
110
110
  "unity3d",
111
111
  "velaci",
112
112
  "vendir",
113
- "woodpecker"
113
+ "woodpecker",
114
+ "xcodegen"
114
115
  ];
115
116
  //#endregion
116
117
  export { AllManagersListLiteral };
@@ -1 +1 @@
1
- {"version":3,"file":"manager-list.generated.js","names":[],"sources":["../lib/manager-list.generated.ts"],"sourcesContent":["\nexport const AllManagersListLiteral = [\"ansible\",\"ansible-galaxy\",\"ant\",\"argocd\",\"asdf\",\"azure-pipelines\",\"batect\",\"batect-wrapper\",\"bazel\",\"bazel-module\",\"bazelisk\",\"bicep\",\"bitbucket-pipelines\",\"bitrise\",\"buildkite\",\"buildpacks\",\"bun\",\"bun-version\",\"bundler\",\"cake\",\"cargo\",\"cdnurl\",\"circleci\",\"cloudbuild\",\"cocoapods\",\"composer\",\"conan\",\"copier\",\"cpanfile\",\"crossplane\",\"crow\",\"deps-edn\",\"devbox\",\"devcontainer\",\"docker-compose\",\"dockerfile\",\"droneci\",\"fleet\",\"flux\",\"fvm\",\"git-submodules\",\"github-actions\",\"gitlabci\",\"gitlabci-include\",\"glasskube\",\"gleam\",\"gomod\",\"gradle\",\"gradle-wrapper\",\"haskell-cabal\",\"helm-requirements\",\"helm-values\",\"helmfile\",\"helmsman\",\"helmv3\",\"hermit\",\"homeassistant-manifest\",\"homebrew\",\"html\",\"jenkins\",\"jsonnet-bundler\",\"kotlin-script\",\"kubernetes\",\"kustomize\",\"leiningen\",\"maven\",\"maven-wrapper\",\"meteor\",\"mint\",\"mise\",\"mix\",\"nix\",\"nodenv\",\"npm\",\"nuget\",\"nvm\",\"ocb\",\"osgi\",\"pep621\",\"pep723\",\"pip-compile\",\"pip_requirements\",\"pip_setup\",\"pipenv\",\"pixi\",\"poetry\",\"pre-commit\",\"pub\",\"puppet\",\"pyenv\",\"quadlet\",\"renovate-config-presets\",\"ruby-version\",\"runtime-version\",\"sbt\",\"scalafmt\",\"setup-cfg\",\"sveltos\",\"swift\",\"tekton\",\"terraform\",\"terraform-version\",\"terragrunt\",\"terragrunt-version\",\"tflint-plugin\",\"travis\",\"typst\",\"unity3d\",\"velaci\",\"vendir\",\"woodpecker\"] as const;\nexport type ManagerName = typeof AllManagersListLiteral[number];\n"],"mappings":";AACA,MAAa,yBAAyB;CAAC;CAAU;CAAiB;CAAM;CAAS;CAAO;CAAkB;CAAS;CAAiB;CAAQ;CAAe;CAAW;CAAQ;CAAsB;CAAU;CAAY;CAAa;CAAM;CAAc;CAAU;CAAO;CAAQ;CAAS;CAAW;CAAa;CAAY;CAAW;CAAQ;CAAS;CAAW;CAAa;CAAO;CAAW;CAAS;CAAe;CAAiB;CAAa;CAAU;CAAQ;CAAO;CAAM;CAAiB;CAAiB;CAAW;CAAmB;CAAY;CAAQ;CAAQ;CAAS;CAAiB;CAAgB;CAAoB;CAAc;CAAW;CAAW;CAAS;CAAS;CAAyB;CAAW;CAAO;CAAU;CAAkB;CAAgB;CAAa;CAAY;CAAY;CAAQ;CAAgB;CAAS;CAAO;CAAO;CAAM;CAAM;CAAS;CAAM;CAAQ;CAAM;CAAM;CAAO;CAAS;CAAS;CAAc;CAAmB;CAAY;CAAS;CAAO;CAAS;CAAa;CAAM;CAAS;CAAQ;CAAU;CAA0B;CAAe;CAAkB;CAAM;CAAW;CAAY;CAAU;CAAQ;CAAS;CAAY;CAAoB;CAAa;CAAqB;CAAgB;CAAS;CAAQ;CAAU;CAAS;CAAS;CAAa"}
1
+ {"version":3,"file":"manager-list.generated.js","names":[],"sources":["../lib/manager-list.generated.ts"],"sourcesContent":["\nexport const AllManagersListLiteral = [\"ansible\",\"ansible-galaxy\",\"ant\",\"argocd\",\"asdf\",\"azure-pipelines\",\"batect\",\"batect-wrapper\",\"bazel\",\"bazel-module\",\"bazelisk\",\"bicep\",\"bitbucket-pipelines\",\"bitrise\",\"buildkite\",\"buildpacks\",\"bun\",\"bun-version\",\"bundler\",\"cake\",\"cargo\",\"cdnurl\",\"circleci\",\"cloudbuild\",\"cocoapods\",\"composer\",\"conan\",\"copier\",\"cpanfile\",\"crossplane\",\"crow\",\"deps-edn\",\"devbox\",\"devcontainer\",\"docker-compose\",\"dockerfile\",\"droneci\",\"fleet\",\"flux\",\"fvm\",\"git-submodules\",\"github-actions\",\"gitlabci\",\"gitlabci-include\",\"glasskube\",\"gleam\",\"gomod\",\"gradle\",\"gradle-wrapper\",\"haskell-cabal\",\"helm-requirements\",\"helm-values\",\"helmfile\",\"helmsman\",\"helmv3\",\"hermit\",\"homeassistant-manifest\",\"homebrew\",\"html\",\"jenkins\",\"jsonnet-bundler\",\"kotlin-script\",\"kubernetes\",\"kustomize\",\"leiningen\",\"maven\",\"maven-wrapper\",\"meteor\",\"mint\",\"mise\",\"mix\",\"nix\",\"nodenv\",\"npm\",\"nuget\",\"nvm\",\"ocb\",\"osgi\",\"pep621\",\"pep723\",\"pip-compile\",\"pip_requirements\",\"pip_setup\",\"pipenv\",\"pixi\",\"poetry\",\"pre-commit\",\"pub\",\"puppet\",\"pyenv\",\"quadlet\",\"renovate-config-presets\",\"ruby-version\",\"runtime-version\",\"sbt\",\"scalafmt\",\"setup-cfg\",\"sveltos\",\"swift\",\"tekton\",\"terraform\",\"terraform-version\",\"terragrunt\",\"terragrunt-version\",\"tflint-plugin\",\"travis\",\"typst\",\"unity3d\",\"velaci\",\"vendir\",\"woodpecker\",\"xcodegen\"] as const;\nexport type ManagerName = typeof AllManagersListLiteral[number];\n"],"mappings":";AACA,MAAa,yBAAyB;CAAC;CAAU;CAAiB;CAAM;CAAS;CAAO;CAAkB;CAAS;CAAiB;CAAQ;CAAe;CAAW;CAAQ;CAAsB;CAAU;CAAY;CAAa;CAAM;CAAc;CAAU;CAAO;CAAQ;CAAS;CAAW;CAAa;CAAY;CAAW;CAAQ;CAAS;CAAW;CAAa;CAAO;CAAW;CAAS;CAAe;CAAiB;CAAa;CAAU;CAAQ;CAAO;CAAM;CAAiB;CAAiB;CAAW;CAAmB;CAAY;CAAQ;CAAQ;CAAS;CAAiB;CAAgB;CAAoB;CAAc;CAAW;CAAW;CAAS;CAAS;CAAyB;CAAW;CAAO;CAAU;CAAkB;CAAgB;CAAa;CAAY;CAAY;CAAQ;CAAgB;CAAS;CAAO;CAAO;CAAM;CAAM;CAAS;CAAM;CAAQ;CAAM;CAAM;CAAO;CAAS;CAAS;CAAc;CAAmB;CAAY;CAAS;CAAO;CAAS;CAAa;CAAM;CAAS;CAAQ;CAAU;CAA0B;CAAe;CAAkB;CAAM;CAAW;CAAY;CAAU;CAAQ;CAAS;CAAY;CAAoB;CAAa;CAAqB;CAAgB;CAAS;CAAQ;CAAU;CAAS;CAAS;CAAa;CAAW"}
@@ -2,13 +2,16 @@ import { ensureTrailingSlash } from "../../../util/url.js";
2
2
  import { ExternalHostError } from "../../../types/errors/external-host-error.js";
3
3
  import { withCache } from "../../../util/cache/package/with-cache.js";
4
4
  import { Datasource } from "../datasource.js";
5
+ import { ServiceDiscoveryResponse } from "./schema.js";
5
6
  //#region lib/modules/datasource/terraform-module/base.ts
6
7
  const terraformId = "terraform";
7
8
  var TerraformDatasource = class TerraformDatasource extends Datasource {
8
9
  static id = terraformId;
10
+ static terraformRegistryUrl = "https://registry.terraform.io";
9
11
  async _getTerraformServiceDiscoveryResult(registryUrl) {
10
12
  const discoveryURL = TerraformDatasource.getDiscoveryUrl(registryUrl);
11
- return (await this.http.getJsonUnchecked(discoveryURL)).body;
13
+ const { body: res } = await this.http.getJson(discoveryURL, ServiceDiscoveryResponse);
14
+ return res;
12
15
  }
13
16
  getTerraformServiceDiscoveryResult(registryUrl) {
14
17
  return withCache({
@@ -21,9 +24,7 @@ var TerraformDatasource = class TerraformDatasource extends Datasource {
21
24
  return `${ensureTrailingSlash(registryUrl)}.well-known/terraform.json`;
22
25
  }
23
26
  handleHttpErrors(err) {
24
- // istanbul ignore if
25
27
  if (["EAI_AGAIN"].includes(err.code)) throw new ExternalHostError(err);
26
- // istanbul ignore if
27
28
  if (err.response?.statusCode === 503) throw new ExternalHostError(err);
28
29
  }
29
30
  };
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","names":[],"sources":["../../../../lib/modules/datasource/terraform-module/base.ts"],"sourcesContent":["import { ExternalHostError } from '../../../types/errors/external-host-error.ts';\nimport { withCache } from '../../../util/cache/package/with-cache.ts';\nimport type { HttpError } from '../../../util/http/index.ts';\nimport { ensureTrailingSlash } from '../../../util/url.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { ServiceDiscoveryResult } from './types.ts';\n\nconst terraformId = 'terraform';\n\n// TODO: extract to a separate directory structure (#10532)\nexport abstract class TerraformDatasource extends Datasource {\n static id = terraformId;\n\n private async _getTerraformServiceDiscoveryResult(\n registryUrl: string,\n ): Promise<ServiceDiscoveryResult> {\n const discoveryURL = TerraformDatasource.getDiscoveryUrl(registryUrl);\n const serviceDiscovery = (\n await this.http.getJsonUnchecked<ServiceDiscoveryResult>(discoveryURL)\n ).body;\n return serviceDiscovery;\n }\n\n getTerraformServiceDiscoveryResult(\n registryUrl: string,\n ): Promise<ServiceDiscoveryResult> {\n return withCache(\n {\n namespace: `datasource-${terraformId}`,\n key: TerraformDatasource.getDiscoveryUrl(registryUrl),\n ttlMinutes: 1440,\n },\n () => this._getTerraformServiceDiscoveryResult(registryUrl),\n );\n }\n\n private static getDiscoveryUrl(registryUrl: string): string {\n return `${ensureTrailingSlash(registryUrl)}.well-known/terraform.json`;\n }\n\n override handleHttpErrors(err: HttpError): void {\n const failureCodes = ['EAI_AGAIN'];\n // istanbul ignore if\n if (failureCodes.includes(err.code)) {\n throw new ExternalHostError(err);\n }\n // istanbul ignore if\n if (err.response?.statusCode === 503) {\n throw new ExternalHostError(err);\n }\n }\n}\n"],"mappings":";;;;;AAOA,MAAM,cAAc;AAGpB,IAAsB,sBAAtB,MAAsB,4BAA4B,WAAW;CAC3D,OAAO,KAAK;CAEZ,MAAc,oCACZ,aACiC;EACjC,MAAM,eAAe,oBAAoB,gBAAgB,YAAY;AAIrE,UAFE,MAAM,KAAK,KAAK,iBAAyC,aAAa,EACtE;;CAIJ,mCACE,aACiC;AACjC,SAAO,UACL;GACE,WAAW,cAAc;GACzB,KAAK,oBAAoB,gBAAgB,YAAY;GACrD,YAAY;GACb,QACK,KAAK,oCAAoC,YAAY,CAC5D;;CAGH,OAAe,gBAAgB,aAA6B;AAC1D,SAAO,GAAG,oBAAoB,YAAY,CAAC;;CAG7C,iBAA0B,KAAsB;;AAG9C,MAFqB,CAAC,YAAY,CAEjB,SAAS,IAAI,KAAK,CACjC,OAAM,IAAI,kBAAkB,IAAI;;AAGlC,MAAI,IAAI,UAAU,eAAe,IAC/B,OAAM,IAAI,kBAAkB,IAAI"}
1
+ {"version":3,"file":"base.js","names":[],"sources":["../../../../lib/modules/datasource/terraform-module/base.ts"],"sourcesContent":["import { ExternalHostError } from '../../../types/errors/external-host-error.ts';\nimport { withCache } from '../../../util/cache/package/with-cache.ts';\nimport type { HttpError } from '../../../util/http/index.ts';\nimport { ensureTrailingSlash } from '../../../util/url.ts';\nimport { Datasource } from '../datasource.ts';\nimport { ServiceDiscoveryResponse } from './schema.ts';\n\nconst terraformId = 'terraform';\n\n// TODO: extract to a separate directory structure (#10532)\nexport abstract class TerraformDatasource extends Datasource {\n static id = terraformId;\n\n static readonly terraformRegistryUrl = 'https://registry.terraform.io';\n\n private async _getTerraformServiceDiscoveryResult(\n registryUrl: string,\n ): Promise<ServiceDiscoveryResponse> {\n const discoveryURL = TerraformDatasource.getDiscoveryUrl(registryUrl);\n const { body: res } = await this.http.getJson(\n discoveryURL,\n ServiceDiscoveryResponse,\n );\n return res;\n }\n\n getTerraformServiceDiscoveryResult(\n registryUrl: string,\n ): Promise<ServiceDiscoveryResponse> {\n return withCache(\n {\n namespace: `datasource-${terraformId}`,\n key: TerraformDatasource.getDiscoveryUrl(registryUrl),\n ttlMinutes: 1440,\n },\n () => this._getTerraformServiceDiscoveryResult(registryUrl),\n );\n }\n\n private static getDiscoveryUrl(registryUrl: string): string {\n return `${ensureTrailingSlash(registryUrl)}.well-known/terraform.json`;\n }\n\n override handleHttpErrors(err: HttpError): void {\n const failureCodes = ['EAI_AGAIN'];\n if (failureCodes.includes(err.code)) {\n throw new ExternalHostError(err);\n }\n if (err.response?.statusCode === 503) {\n throw new ExternalHostError(err);\n }\n }\n}\n"],"mappings":";;;;;;AAOA,MAAM,cAAc;AAGpB,IAAsB,sBAAtB,MAAsB,4BAA4B,WAAW;CAC3D,OAAO,KAAK;CAEZ,OAAgB,uBAAuB;CAEvC,MAAc,oCACZ,aACmC;EACnC,MAAM,eAAe,oBAAoB,gBAAgB,YAAY;EACrE,MAAM,EAAE,MAAM,QAAQ,MAAM,KAAK,KAAK,QACpC,cACA,yBACD;AACD,SAAO;;CAGT,mCACE,aACmC;AACnC,SAAO,UACL;GACE,WAAW,cAAc;GACzB,KAAK,oBAAoB,gBAAgB,YAAY;GACrD,YAAY;GACb,QACK,KAAK,oCAAoC,YAAY,CAC5D;;CAGH,OAAe,gBAAgB,aAA6B;AAC1D,SAAO,GAAG,oBAAoB,YAAY,CAAC;;CAG7C,iBAA0B,KAAsB;AAE9C,MADqB,CAAC,YAAY,CACjB,SAAS,IAAI,KAAK,CACjC,OAAM,IAAI,kBAAkB,IAAI;AAElC,MAAI,IAAI,UAAU,eAAe,IAC/B,OAAM,IAAI,kBAAkB,IAAI"}
@@ -1,41 +1,46 @@
1
- import { regEx } from "../../../util/regex.js";
2
- import { coerceString } from "../../../util/string.js";
3
1
  import { logger } from "../../../logger/index.js";
4
2
  import { isHttpUrl } from "../../../util/url.js";
5
3
  import { withCache } from "../../../util/cache/package/with-cache.js";
6
- import { asTimestamp } from "../../../util/timestamp.js";
7
4
  import { id } from "../../versioning/hashicorp/index.js";
5
+ import { ProtocolModuleResponse, TerraformModuleResponse } from "./schema.js";
8
6
  import { TerraformDatasource } from "./base.js";
9
- import { createSDBackendURL } from "./utils.js";
7
+ import { createSDBackendURL, getRegistryRepository } from "./utils.js";
10
8
  //#region lib/modules/datasource/terraform-module/index.ts
11
9
  var TerraformModuleDatasource = class TerraformModuleDatasource extends TerraformDatasource {
12
10
  static id = "terraform-module";
11
+ static terraformCloudUrl = "https://app.terraform.io";
12
+ static defaultRegistryUrls = [TerraformModuleDatasource.terraformRegistryUrl];
13
+ static extendedApiRegistryUrls = [TerraformModuleDatasource.terraformRegistryUrl, TerraformModuleDatasource.terraformCloudUrl];
13
14
  constructor() {
14
15
  super(TerraformModuleDatasource.id);
15
16
  }
16
- defaultRegistryUrls = ["https://registry.terraform.io"];
17
+ defaultRegistryUrls = TerraformModuleDatasource.defaultRegistryUrls;
17
18
  defaultVersioning = id;
18
19
  releaseTimestampSupport = true;
19
20
  releaseTimestampNote = "The release timestamp is only supported for the latest version, and is determined from the `published_at` field in the results.";
20
21
  sourceUrlSupport = "package";
21
22
  sourceUrlNote = "The source URL is determined from the the `source` field in the results.";
22
- extendedApiRegistryUrls = ["https://registry.terraform.io", "https://app.terraform.io"];
23
23
  /**
24
- * This function will fetch a package from the specified Terraform registry and return all semver versions.
25
- * - `sourceUrl` is supported if "source" field is set
26
- * - `homepage` is set to the Terraform registry's page if it's on the official main registry
24
+ * Resolves a module release list for the configured registry.
25
+ *
26
+ * Requests against the public Terraform registry and Terraform Cloud use the
27
+ * registry-specific module endpoint, while other registries use the generic
28
+ * Module Registry Protocol versions endpoint.
27
29
  */
28
30
  async _getReleases({ packageName, registryUrl }) {
29
31
  /* v8 ignore next 3 -- should never happen */
30
32
  if (!registryUrl) return null;
31
- const { registry: registryUrlNormalized, repository } = TerraformModuleDatasource.getRegistryRepository(packageName, registryUrl);
33
+ const { registry, repository } = getRegistryRepository(packageName, registryUrl);
32
34
  logger.trace({
33
- registryUrlNormalized,
35
+ registryUrlNormalized: registry,
34
36
  terraformRepository: repository
35
37
  }, "terraform-module.getReleases()");
36
- const serviceDiscovery = await this.getTerraformServiceDiscoveryResult(registryUrlNormalized);
37
- if (this.extendedApiRegistryUrls.includes(registryUrlNormalized)) return await this.queryRegistryExtendedApi(serviceDiscovery, registryUrlNormalized, repository);
38
- return await this.queryRegistryVersions(serviceDiscovery, registryUrlNormalized, repository);
38
+ try {
39
+ if (TerraformModuleDatasource.extendedApiRegistryUrls.includes(registry)) return await this.queryTerraformRegistry(registry, repository);
40
+ return await this.queryModuleRegistry(registry, repository);
41
+ } catch (err) {
42
+ this.handleGenericErrors(err);
43
+ }
39
44
  }
40
45
  getReleases(config) {
41
46
  return withCache({
@@ -45,67 +50,41 @@ var TerraformModuleDatasource = class TerraformModuleDatasource extends Terrafor
45
50
  }, () => this._getReleases(config));
46
51
  }
47
52
  /**
48
- * this uses the api that terraform registry has in addition to the base api
49
- * this endpoint provides more information, such as release date
50
- * https://www.terraform.io/registry/api-docs#latest-version-for-a-specific-module-provider
53
+ * Queries the Terraform Registry module endpoint.
54
+ *
55
+ * The response includes the latest published version separately, so only that
56
+ * release can be annotated with `releaseTimestamp`.
57
+ *
58
+ * https://developer.hashicorp.com/terraform/registry/api-docs#get-a-specific-module
51
59
  */
52
- async queryRegistryExtendedApi(serviceDiscovery, registryUrl, repository) {
53
- let res;
54
- let pkgUrl;
55
- try {
56
- pkgUrl = createSDBackendURL(registryUrl, "modules.v1", serviceDiscovery, repository);
57
- res = (await this.http.getJsonUnchecked(pkgUrl)).body;
58
- if (res.namespace + "/" + res.name + "/" + res.provider !== repository) {
59
- logger.warn({ pkgUrl }, "Terraform registry result mismatch");
60
- return null;
61
- }
62
- } catch (err) {
63
- this.handleGenericErrors(err);
64
- }
65
- const dep = { releases: res.versions.map((version) => ({ version })) };
66
- if (res.source) dep.sourceUrl = res.source;
67
- dep.homepage = `${registryUrl}/modules/${repository}`;
68
- const latestVersion = dep.releases.find((release) => res.version === release.version);
69
- if (latestVersion) latestVersion.releaseTimestamp = asTimestamp(res.published_at);
70
- return dep;
60
+ async queryTerraformRegistry(registryUrl, repository) {
61
+ const pkgUrl = createSDBackendURL(registryUrl, "modules.v1", await this.getTerraformServiceDiscoveryResult(registryUrl), repository);
62
+ const { body: res } = await this.http.getJson(pkgUrl, TerraformModuleResponse);
63
+ return {
64
+ releases: res.versions,
65
+ sourceUrl: res.source,
66
+ homepage: `${registryUrl}/modules/${repository}`
67
+ };
71
68
  }
72
69
  /**
73
- * this version uses the Module Registry Protocol that all registries are required to implement
74
- * https://www.terraform.io/internals/module-registry-protocol
70
+ * Queries a registry through the Terraform Module Registry Protocol.
71
+ *
72
+ * This is the default path for registries implementing the standard module
73
+ * registry protocol. It returns release versions and, when present and valid,
74
+ * the upstream source URL.
75
+ *
76
+ * https://developer.hashicorp.com/terraform/internals/module-registry-protocol
75
77
  */
76
- async queryRegistryVersions(serviceDiscovery, registryUrl, repository) {
77
- let res;
78
- let pkgUrl;
79
- try {
80
- pkgUrl = createSDBackendURL(registryUrl, "modules.v1", serviceDiscovery, `${repository}/versions`);
81
- res = (await this.http.getJsonUnchecked(pkgUrl)).body;
82
- if (res.modules.length < 1) {
83
- logger.warn({ pkgUrl }, "Terraform registry result mismatch");
84
- return null;
85
- }
86
- } catch (err) {
87
- this.handleGenericErrors(err);
88
- }
89
- const dep = { releases: res.modules[0].versions.map(({ version }) => ({ version })) };
90
- if (isHttpUrl(res.modules[0].source)) dep.sourceUrl = res.modules[0].source;
91
- return dep;
92
- }
93
- static getRegistryRepository(packageName, registryUrl) {
94
- let registry;
95
- const split = packageName.split("/");
96
- if (split.length > 3 && split[0].includes(".")) {
97
- [registry] = split;
98
- split.shift();
99
- } else registry = coerceString(registryUrl);
100
- if (!regEx(/^https?:\/\//).test(registry)) registry = `https://${registry}`;
101
- const repository = split.join("/");
78
+ async queryModuleRegistry(registryUrl, repository) {
79
+ const pkgUrl = createSDBackendURL(registryUrl, "modules.v1", await this.getTerraformServiceDiscoveryResult(registryUrl), `${repository}/versions`);
80
+ const { body: res } = await this.http.getJson(pkgUrl, ProtocolModuleResponse);
102
81
  return {
103
- registry,
104
- repository
82
+ releases: res.versions,
83
+ sourceUrl: isHttpUrl(res.source) ? res.source : void 0
105
84
  };
106
85
  }
107
86
  static getCacheKey({ packageName, registryUrl }) {
108
- const { registry, repository } = TerraformModuleDatasource.getRegistryRepository(packageName, registryUrl);
87
+ const { registry, repository } = getRegistryRepository(packageName, registryUrl);
109
88
  return `${registry}/${repository}`;
110
89
  }
111
90
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["hashicorpVersioning.id"],"sources":["../../../../lib/modules/datasource/terraform-module/index.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport { withCache } from '../../../util/cache/package/with-cache.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { coerceString } from '../../../util/string.ts';\nimport { asTimestamp } from '../../../util/timestamp.ts';\nimport { isHttpUrl } from '../../../util/url.ts';\nimport * as hashicorpVersioning from '../../versioning/hashicorp/index.ts';\nimport type { GetReleasesConfig, ReleaseResult } from '../types.ts';\nimport { TerraformDatasource } from './base.ts';\nimport type {\n RegistryRepository,\n ServiceDiscoveryResult,\n TerraformModuleVersions,\n TerraformRelease,\n} from './types.ts';\nimport { createSDBackendURL } from './utils.ts';\n\nexport class TerraformModuleDatasource extends TerraformDatasource {\n static override readonly id = 'terraform-module';\n\n constructor() {\n super(TerraformModuleDatasource.id);\n }\n\n override readonly defaultRegistryUrls = ['https://registry.terraform.io'];\n\n override readonly defaultVersioning = hashicorpVersioning.id;\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is only supported for the latest version, and is determined from the `published_at` field in the results.';\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'The source URL is determined from the the `source` field in the results.';\n\n readonly extendedApiRegistryUrls = [\n 'https://registry.terraform.io',\n 'https://app.terraform.io',\n ];\n\n /**\n * This function will fetch a package from the specified Terraform registry and return all semver versions.\n * - `sourceUrl` is supported if \"source\" field is set\n * - `homepage` is set to the Terraform registry's page if it's on the official main registry\n */\n private async _getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n /* v8 ignore next 3 -- should never happen */\n if (!registryUrl) {\n return null;\n }\n\n const { registry: registryUrlNormalized, repository } =\n TerraformModuleDatasource.getRegistryRepository(packageName, registryUrl);\n logger.trace(\n { registryUrlNormalized, terraformRepository: repository },\n 'terraform-module.getReleases()',\n );\n\n const serviceDiscovery = await this.getTerraformServiceDiscoveryResult(\n registryUrlNormalized,\n );\n if (this.extendedApiRegistryUrls.includes(registryUrlNormalized)) {\n return await this.queryRegistryExtendedApi(\n serviceDiscovery,\n registryUrlNormalized,\n repository,\n );\n }\n\n return await this.queryRegistryVersions(\n serviceDiscovery,\n registryUrlNormalized,\n repository,\n );\n }\n\n getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n return withCache(\n {\n namespace: `datasource-${TerraformModuleDatasource.id}`,\n key: TerraformModuleDatasource.getCacheKey(config),\n fallback: true,\n },\n () => this._getReleases(config),\n );\n }\n\n /**\n * this uses the api that terraform registry has in addition to the base api\n * this endpoint provides more information, such as release date\n * https://www.terraform.io/registry/api-docs#latest-version-for-a-specific-module-provider\n */\n private async queryRegistryExtendedApi(\n serviceDiscovery: ServiceDiscoveryResult,\n registryUrl: string,\n repository: string,\n ): Promise<ReleaseResult | null> {\n let res: TerraformRelease;\n let pkgUrl: string;\n\n try {\n // TODO: types (#22198)\n\n pkgUrl = createSDBackendURL(\n registryUrl,\n 'modules.v1',\n serviceDiscovery,\n repository,\n );\n res = (await this.http.getJsonUnchecked<TerraformRelease>(pkgUrl)).body;\n const returnedName = res.namespace + '/' + res.name + '/' + res.provider;\n if (returnedName !== repository) {\n logger.warn({ pkgUrl }, 'Terraform registry result mismatch');\n return null;\n }\n } catch (err) {\n this.handleGenericErrors(err);\n }\n\n // Simplify response before caching and returning\n const dep: ReleaseResult = {\n releases: res.versions.map((version) => ({\n version,\n })),\n };\n if (res.source) {\n dep.sourceUrl = res.source;\n }\n dep.homepage = `${registryUrl}/modules/${repository}`;\n // set published date for latest release\n const latestVersion = dep.releases.find(\n (release) => res.version === release.version,\n );\n if (latestVersion) {\n latestVersion.releaseTimestamp = asTimestamp(res.published_at);\n }\n return dep;\n }\n\n /**\n * this version uses the Module Registry Protocol that all registries are required to implement\n * https://www.terraform.io/internals/module-registry-protocol\n */\n private async queryRegistryVersions(\n serviceDiscovery: ServiceDiscoveryResult,\n registryUrl: string,\n repository: string,\n ): Promise<ReleaseResult | null> {\n let res: TerraformModuleVersions;\n let pkgUrl: string;\n try {\n // TODO: types (#22198)\n pkgUrl = createSDBackendURL(\n registryUrl,\n 'modules.v1',\n serviceDiscovery,\n `${repository}/versions`,\n );\n res = (await this.http.getJsonUnchecked<TerraformModuleVersions>(pkgUrl))\n .body;\n if (res.modules.length < 1) {\n logger.warn({ pkgUrl }, 'Terraform registry result mismatch');\n return null;\n }\n } catch (err) {\n this.handleGenericErrors(err);\n }\n\n // Simplify response before caching and returning\n const dep: ReleaseResult = {\n releases: res.modules[0].versions.map(({ version }) => ({\n version,\n })),\n };\n\n // Add the source URL if given\n if (isHttpUrl(res.modules[0].source)) {\n dep.sourceUrl = res.modules[0].source;\n }\n\n return dep;\n }\n\n private static getRegistryRepository(\n packageName: string,\n registryUrl: string | undefined,\n ): RegistryRepository {\n let registry: string;\n const split = packageName.split('/');\n if (split.length > 3 && split[0].includes('.')) {\n [registry] = split;\n split.shift();\n } else {\n registry = coerceString(registryUrl);\n }\n if (!regEx(/^https?:\\/\\//).test(registry)) {\n registry = `https://${registry}`;\n }\n const repository = split.join('/');\n return {\n registry,\n repository,\n };\n }\n\n private static getCacheKey({\n packageName,\n registryUrl,\n }: GetReleasesConfig): string {\n const { registry, repository } =\n TerraformModuleDatasource.getRegistryRepository(packageName, registryUrl);\n return `${registry}/${repository}`;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["hashicorpVersioning.id"],"sources":["../../../../lib/modules/datasource/terraform-module/index.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport { withCache } from '../../../util/cache/package/with-cache.ts';\nimport { isHttpUrl } from '../../../util/url.ts';\nimport * as hashicorpVersioning from '../../versioning/hashicorp/index.ts';\nimport type { GetReleasesConfig, ReleaseResult } from '../types.ts';\nimport { TerraformDatasource } from './base.ts';\nimport { ProtocolModuleResponse, TerraformModuleResponse } from './schema.ts';\nimport { createSDBackendURL, getRegistryRepository } from './utils.ts';\n\nexport class TerraformModuleDatasource extends TerraformDatasource {\n static override readonly id = 'terraform-module';\n\n static readonly terraformCloudUrl = 'https://app.terraform.io';\n\n static readonly defaultRegistryUrls = [\n TerraformModuleDatasource.terraformRegistryUrl,\n ];\n\n static readonly extendedApiRegistryUrls = [\n TerraformModuleDatasource.terraformRegistryUrl,\n TerraformModuleDatasource.terraformCloudUrl,\n ];\n\n constructor() {\n super(TerraformModuleDatasource.id);\n }\n\n override readonly defaultRegistryUrls =\n TerraformModuleDatasource.defaultRegistryUrls;\n\n override readonly defaultVersioning = hashicorpVersioning.id;\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is only supported for the latest version, and is determined from the `published_at` field in the results.';\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'The source URL is determined from the the `source` field in the results.';\n\n /**\n * Resolves a module release list for the configured registry.\n *\n * Requests against the public Terraform registry and Terraform Cloud use the\n * registry-specific module endpoint, while other registries use the generic\n * Module Registry Protocol versions endpoint.\n */\n private async _getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n /* v8 ignore next 3 -- should never happen */\n if (!registryUrl) {\n return null;\n }\n\n const { registry, repository } = getRegistryRepository(\n packageName,\n registryUrl,\n );\n logger.trace(\n { registryUrlNormalized: registry, terraformRepository: repository },\n 'terraform-module.getReleases()',\n );\n\n try {\n if (\n TerraformModuleDatasource.extendedApiRegistryUrls.includes(registry)\n ) {\n return await this.queryTerraformRegistry(registry, repository);\n }\n\n // Use the standard Module Registry Protocol for other conformant registries.\n return await this.queryModuleRegistry(registry, repository);\n } catch (err) {\n this.handleGenericErrors(err);\n }\n }\n\n getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n return withCache(\n {\n namespace: `datasource-${TerraformModuleDatasource.id}`,\n key: TerraformModuleDatasource.getCacheKey(config),\n fallback: true,\n },\n () => this._getReleases(config),\n );\n }\n\n /**\n * Queries the Terraform Registry module endpoint.\n *\n * The response includes the latest published version separately, so only that\n * release can be annotated with `releaseTimestamp`.\n *\n * https://developer.hashicorp.com/terraform/registry/api-docs#get-a-specific-module\n */\n private async queryTerraformRegistry(\n registryUrl: string,\n repository: string,\n ): Promise<ReleaseResult> {\n const serviceDiscovery =\n await this.getTerraformServiceDiscoveryResult(registryUrl);\n const pkgUrl = createSDBackendURL(\n registryUrl,\n 'modules.v1',\n serviceDiscovery,\n repository,\n );\n const { body: res } = await this.http.getJson(\n pkgUrl,\n TerraformModuleResponse,\n );\n return {\n releases: res.versions,\n sourceUrl: res.source,\n homepage: `${registryUrl}/modules/${repository}`,\n };\n }\n\n /**\n * Queries a registry through the Terraform Module Registry Protocol.\n *\n * This is the default path for registries implementing the standard module\n * registry protocol. It returns release versions and, when present and valid,\n * the upstream source URL.\n *\n * https://developer.hashicorp.com/terraform/internals/module-registry-protocol\n */\n private async queryModuleRegistry(\n registryUrl: string,\n repository: string,\n ): Promise<ReleaseResult | null> {\n const serviceDiscovery =\n await this.getTerraformServiceDiscoveryResult(registryUrl);\n const pkgUrl = createSDBackendURL(\n registryUrl,\n 'modules.v1',\n serviceDiscovery,\n `${repository}/versions`,\n );\n const { body: res } = await this.http.getJson(\n pkgUrl,\n ProtocolModuleResponse,\n );\n return {\n releases: res.versions,\n sourceUrl: isHttpUrl(res.source) ? res.source : undefined,\n };\n }\n\n private static getCacheKey({\n packageName,\n registryUrl,\n }: GetReleasesConfig): string {\n const { registry, repository } = getRegistryRepository(\n packageName,\n registryUrl,\n );\n return `${registry}/${repository}`;\n }\n}\n"],"mappings":";;;;;;;;AASA,IAAa,4BAAb,MAAa,kCAAkC,oBAAoB;CACjE,OAAyB,KAAK;CAE9B,OAAgB,oBAAoB;CAEpC,OAAgB,sBAAsB,CACpC,0BAA0B,qBAC3B;CAED,OAAgB,0BAA0B,CACxC,0BAA0B,sBAC1B,0BAA0B,kBAC3B;CAED,cAAc;AACZ,QAAM,0BAA0B,GAAG;;CAGrC,sBACE,0BAA0B;CAE5B,oBAAsCA;CAEtC,0BAA4C;CAC5C,uBACE;CACF,mBAAqC;CACrC,gBACE;;;;;;;;CASF,MAAc,aAAa,EACzB,aACA,eACmD;;AAEnD,MAAI,CAAC,YACH,QAAO;EAGT,MAAM,EAAE,UAAU,eAAe,sBAC/B,aACA,YACD;AACD,SAAO,MACL;GAAE,uBAAuB;GAAU,qBAAqB;GAAY,EACpE,iCACD;AAED,MAAI;AACF,OACE,0BAA0B,wBAAwB,SAAS,SAAS,CAEpE,QAAO,MAAM,KAAK,uBAAuB,UAAU,WAAW;AAIhE,UAAO,MAAM,KAAK,oBAAoB,UAAU,WAAW;WACpD,KAAK;AACZ,QAAK,oBAAoB,IAAI;;;CAIjC,YAAY,QAA0D;AACpE,SAAO,UACL;GACE,WAAW,cAAc,0BAA0B;GACnD,KAAK,0BAA0B,YAAY,OAAO;GAClD,UAAU;GACX,QACK,KAAK,aAAa,OAAO,CAChC;;;;;;;;;;CAWH,MAAc,uBACZ,aACA,YACwB;EAGxB,MAAM,SAAS,mBACb,aACA,cAHA,MAAM,KAAK,mCAAmC,YAAY,EAK1D,WACD;EACD,MAAM,EAAE,MAAM,QAAQ,MAAM,KAAK,KAAK,QACpC,QACA,wBACD;AACD,SAAO;GACL,UAAU,IAAI;GACd,WAAW,IAAI;GACf,UAAU,GAAG,YAAY,WAAW;GACrC;;;;;;;;;;;CAYH,MAAc,oBACZ,aACA,YAC+B;EAG/B,MAAM,SAAS,mBACb,aACA,cAHA,MAAM,KAAK,mCAAmC,YAAY,EAK1D,GAAG,WAAW,WACf;EACD,MAAM,EAAE,MAAM,QAAQ,MAAM,KAAK,KAAK,QACpC,QACA,uBACD;AACD,SAAO;GACL,UAAU,IAAI;GACd,WAAW,UAAU,IAAI,OAAO,GAAG,IAAI,SAAS,KAAA;GACjD;;CAGH,OAAe,YAAY,EACzB,aACA,eAC4B;EAC5B,MAAM,EAAE,UAAU,eAAe,sBAC/B,aACA,YACD;AACD,SAAO,GAAG,SAAS,GAAG"}
@@ -0,0 +1,31 @@
1
+ import { LooseArray } from "../../../util/schema-utils/index.js";
2
+ import { MaybeTimestamp } from "../../../util/timestamp.js";
3
+ import { isNonEmptyArray } from "@sindresorhus/is";
4
+ import { z } from "zod/v3";
5
+ //#region lib/modules/datasource/terraform-module/schema.ts
6
+ const ServiceDiscoveryResponse = z.object({
7
+ "modules.v1": z.string().optional(),
8
+ "providers.v1": z.string().optional()
9
+ });
10
+ const TerraformModuleResponse = z.object({
11
+ source: z.string().optional(),
12
+ versions: z.array(z.string()),
13
+ version: z.string(),
14
+ published_at: MaybeTimestamp
15
+ }).transform((resource) => ({
16
+ source: resource.source,
17
+ versions: resource.versions.map((version) => ({
18
+ version,
19
+ ...version === resource.version && { releaseTimestamp: resource.published_at }
20
+ }))
21
+ }));
22
+ const TerraformModuleVersion = z.object({ version: z.string() }).transform(({ version }) => ({ version }));
23
+ const TerraformModule = z.object({
24
+ versions: LooseArray(TerraformModuleVersion),
25
+ source: z.string().optional()
26
+ }).refine(({ versions }) => isNonEmptyArray(versions), "Empty versions array in module response");
27
+ const ProtocolModuleResponse = z.object({ modules: LooseArray(TerraformModule) }).refine(({ modules }) => isNonEmptyArray(modules), "Empty response from `/v1/modules` endpoint").transform(({ modules: [module] }) => module);
28
+ //#endregion
29
+ export { ProtocolModuleResponse, ServiceDiscoveryResponse, TerraformModuleResponse };
30
+
31
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","names":[],"sources":["../../../../lib/modules/datasource/terraform-module/schema.ts"],"sourcesContent":["import { isNonEmptyArray } from '@sindresorhus/is';\nimport { z } from 'zod/v3';\nimport { LooseArray } from '../../../util/schema-utils/index.ts';\nimport { MaybeTimestamp } from '../../../util/timestamp.ts';\nimport type { Release } from '../types.ts';\n\nexport const ServiceDiscoveryResponse = z.object({\n 'modules.v1': z.string().optional(),\n 'providers.v1': z.string().optional(),\n});\n\nexport type ServiceDiscoveryResponse = z.infer<typeof ServiceDiscoveryResponse>;\nexport type ServiceDiscoveryEndpointType = keyof ServiceDiscoveryResponse;\n\nexport const TerraformModuleResponse = z\n .object({\n source: z.string().optional(),\n versions: z.array(z.string()),\n version: z.string(),\n published_at: MaybeTimestamp,\n })\n .transform((resource) => ({\n source: resource.source,\n versions: resource.versions.map(\n (version): Release => ({\n version,\n ...(version === resource.version && {\n releaseTimestamp: resource.published_at,\n }),\n }),\n ),\n }));\n\nexport type TerraformModuleResponse = z.infer<typeof TerraformModuleResponse>;\n\nexport const TerraformModuleVersion = z\n .object({ version: z.string() })\n .transform(({ version }): Release => ({ version }));\n\nexport const TerraformModule = z\n .object({\n versions: LooseArray(TerraformModuleVersion),\n source: z.string().optional(),\n })\n .refine(\n ({ versions }) => isNonEmptyArray(versions),\n 'Empty versions array in module response',\n );\n\nexport const ProtocolModuleResponse = z\n .object({ modules: LooseArray(TerraformModule) })\n .refine(\n ({ modules }) => isNonEmptyArray(modules),\n 'Empty response from `/v1/modules` endpoint',\n )\n .transform(({ modules: [module] }) => module);\n\nexport type ProtocolModuleResponse = z.infer<typeof ProtocolModuleResponse>;\n"],"mappings":";;;;;AAMA,MAAa,2BAA2B,EAAE,OAAO;CAC/C,cAAc,EAAE,QAAQ,CAAC,UAAU;CACnC,gBAAgB,EAAE,QAAQ,CAAC,UAAU;CACtC,CAAC;AAKF,MAAa,0BAA0B,EACpC,OAAO;CACN,QAAQ,EAAE,QAAQ,CAAC,UAAU;CAC7B,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC;CAC7B,SAAS,EAAE,QAAQ;CACnB,cAAc;CACf,CAAC,CACD,WAAW,cAAc;CACxB,QAAQ,SAAS;CACjB,UAAU,SAAS,SAAS,KACzB,aAAsB;EACrB;EACA,GAAI,YAAY,SAAS,WAAW,EAClC,kBAAkB,SAAS,cAC5B;EACF,EACF;CACF,EAAE;AAIL,MAAa,yBAAyB,EACnC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAC/B,WAAW,EAAE,eAAwB,EAAE,SAAS,EAAE;AAErD,MAAa,kBAAkB,EAC5B,OAAO;CACN,UAAU,WAAW,uBAAuB;CAC5C,QAAQ,EAAE,QAAQ,CAAC,UAAU;CAC9B,CAAC,CACD,QACE,EAAE,eAAe,gBAAgB,SAAS,EAC3C,0CACD;AAEH,MAAa,yBAAyB,EACnC,OAAO,EAAE,SAAS,WAAW,gBAAgB,EAAE,CAAC,CAChD,QACE,EAAE,cAAc,gBAAgB,QAAQ,EACzC,6CACD,CACA,WAAW,EAAE,SAAS,CAAC,cAAc,OAAO"}
@@ -1,3 +1,5 @@
1
+ import { regEx } from "../../../util/regex.js";
2
+ import { coerceString } from "../../../util/string.js";
1
3
  import { isHttpUrl, joinUrlParts } from "../../../util/url.js";
2
4
  //#region lib/modules/datasource/terraform-module/utils.ts
3
5
  function createSDBackendURL(registryURL, sdType, sdResult, subPath) {
@@ -5,7 +7,19 @@ function createSDBackendURL(registryURL, sdType, sdResult, subPath) {
5
7
  if (isHttpUrl(fullPath)) return fullPath;
6
8
  return joinUrlParts(registryURL, fullPath);
7
9
  }
10
+ function getRegistryRepository(packageName, registryUrl) {
11
+ let registry;
12
+ const split = packageName.split("/");
13
+ if (split.length > 3 && split[0].includes(".")) registry = split.shift();
14
+ else registry = coerceString(registryUrl);
15
+ if (!regEx(/^https?:\/\//).test(registry)) registry = `https://${registry}`;
16
+ const repository = split.join("/");
17
+ return {
18
+ registry,
19
+ repository
20
+ };
21
+ }
8
22
  //#endregion
9
- export { createSDBackendURL };
23
+ export { createSDBackendURL, getRegistryRepository };
10
24
 
11
25
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":[],"sources":["../../../../lib/modules/datasource/terraform-module/utils.ts"],"sourcesContent":["import { isHttpUrl, joinUrlParts } from '../../../util/url.ts';\nimport type {\n ServiceDiscoveryEndpointType,\n ServiceDiscoveryResult,\n} from './types.ts';\n\nexport function createSDBackendURL(\n registryURL: string,\n sdType: ServiceDiscoveryEndpointType,\n sdResult: ServiceDiscoveryResult,\n subPath: string,\n): string {\n const sdEndpoint = sdResult[sdType] ?? '';\n const fullPath = joinUrlParts(sdEndpoint, subPath);\n if (isHttpUrl(fullPath)) {\n return fullPath;\n }\n return joinUrlParts(registryURL, fullPath);\n}\n"],"mappings":";;AAMA,SAAgB,mBACd,aACA,QACA,UACA,SACQ;CAER,MAAM,WAAW,aADE,SAAS,WAAW,IACG,QAAQ;AAClD,KAAI,UAAU,SAAS,CACrB,QAAO;AAET,QAAO,aAAa,aAAa,SAAS"}
1
+ {"version":3,"file":"utils.js","names":[],"sources":["../../../../lib/modules/datasource/terraform-module/utils.ts"],"sourcesContent":["import { regEx } from '../../../util/regex.ts';\nimport { coerceString } from '../../../util/string.ts';\nimport { isHttpUrl, joinUrlParts } from '../../../util/url.ts';\nimport type {\n ServiceDiscoveryEndpointType,\n ServiceDiscoveryResponse,\n} from './schema.ts';\nimport type { RegistryRepository } from './types.ts';\n\nexport function createSDBackendURL(\n registryURL: string,\n sdType: ServiceDiscoveryEndpointType,\n sdResult: ServiceDiscoveryResponse,\n subPath: string,\n): string {\n const sdEndpoint = sdResult[sdType] ?? '';\n const fullPath = joinUrlParts(sdEndpoint, subPath);\n if (isHttpUrl(fullPath)) {\n return fullPath;\n }\n return joinUrlParts(registryURL, fullPath);\n}\n\nexport function getRegistryRepository(\n packageName: string,\n registryUrl: string | undefined,\n): RegistryRepository {\n let registry: string;\n const split = packageName.split('/');\n if (split.length > 3 && split[0].includes('.')) {\n registry = split.shift()!;\n } else {\n registry = coerceString(registryUrl);\n }\n if (!regEx(/^https?:\\/\\//).test(registry)) {\n registry = `https://${registry}`;\n }\n const repository = split.join('/');\n return {\n registry,\n repository,\n };\n}\n"],"mappings":";;;;AASA,SAAgB,mBACd,aACA,QACA,UACA,SACQ;CAER,MAAM,WAAW,aADE,SAAS,WAAW,IACG,QAAQ;AAClD,KAAI,UAAU,SAAS,CACrB,QAAO;AAET,QAAO,aAAa,aAAa,SAAS;;AAG5C,SAAgB,sBACd,aACA,aACoB;CACpB,IAAI;CACJ,MAAM,QAAQ,YAAY,MAAM,IAAI;AACpC,KAAI,MAAM,SAAS,KAAK,MAAM,GAAG,SAAS,IAAI,CAC5C,YAAW,MAAM,OAAO;KAExB,YAAW,aAAa,YAAY;AAEtC,KAAI,CAAC,MAAM,eAAe,CAAC,KAAK,SAAS,CACvC,YAAW,WAAW;CAExB,MAAM,aAAa,MAAM,KAAK,IAAI;AAClC,QAAO;EACL;EACA;EACD"}
@@ -12,7 +12,6 @@ import { TerraformProviderV2Response } from "./schema.js";
12
12
  var TerraformProviderDatasource = class TerraformProviderDatasource extends TerraformDatasource {
13
13
  static id = "terraform-provider";
14
14
  static hashicorpReleaseUrl = "https://releases.hashicorp.com";
15
- static terraformRegistryUrl = "https://registry.terraform.io";
16
15
  static defaultRegistryUrls = [TerraformProviderDatasource.terraformRegistryUrl, TerraformProviderDatasource.hashicorpReleaseUrl];
17
16
  static repositoryRegex = regEx(/^hashicorp\/(?<packageName>\S+)$/);
18
17
  constructor() {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["hashicorpVersioning.id","p.map"],"sources":["../../../../lib/modules/datasource/terraform-provider/index.ts"],"sourcesContent":["// TODO: types (#22198)\nimport { logger } from '../../../logger/index.ts';\nimport { ExternalHostError } from '../../../types/errors/external-host-error.ts';\nimport { withCache } from '../../../util/cache/package/with-cache.ts';\nimport * as p from '../../../util/promises.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { getQueryString, joinUrlParts } from '../../../util/url.ts';\nimport * as hashicorpVersioning from '../../versioning/hashicorp/index.ts';\nimport { TerraformDatasource } from '../terraform-module/base.ts';\nimport type { ServiceDiscoveryResult } from '../terraform-module/types.ts';\nimport { createSDBackendURL } from '../terraform-module/utils.ts';\nimport type { GetReleasesConfig, ReleaseResult } from '../types.ts';\nimport { TerraformProviderV2Response } from './schema.ts';\nimport type {\n TerraformBuild,\n TerraformProviderReleaseBackend,\n TerraformProviderVersions,\n TerraformRegistryBuildResponse,\n TerraformRegistryVersions,\n VersionDetailResponse,\n} from './types.ts';\n\nexport class TerraformProviderDatasource extends TerraformDatasource {\n static override readonly id = 'terraform-provider';\n\n static readonly hashicorpReleaseUrl = 'https://releases.hashicorp.com';\n static readonly terraformRegistryUrl = 'https://registry.terraform.io';\n\n static readonly defaultRegistryUrls = [\n TerraformProviderDatasource.terraformRegistryUrl,\n TerraformProviderDatasource.hashicorpReleaseUrl,\n ];\n\n static repositoryRegex = regEx(/^hashicorp\\/(?<packageName>\\S+)$/);\n\n constructor() {\n super(TerraformProviderDatasource.id);\n }\n\n override readonly defaultRegistryUrls =\n TerraformProviderDatasource.defaultRegistryUrls;\n\n override readonly defaultVersioning = hashicorpVersioning.id;\n\n override readonly registryStrategy = 'hunt';\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `published-at` field in the Terraform Registry v2 API response and is only available for `https://registry.terraform.io`.';\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'The source URL is determined from the the `source` field in the results.';\n\n private async _getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n /* v8 ignore next 3 -- should never happen */\n if (!registryUrl) {\n return null;\n }\n logger.trace(\n `terraform-provider.getDependencies() packageName: ${packageName}`,\n );\n\n if (registryUrl === TerraformProviderDatasource.terraformRegistryUrl) {\n return await this.queryTerraformRegistryV2(registryUrl, packageName);\n }\n if (registryUrl === TerraformProviderDatasource.hashicorpReleaseUrl) {\n return await this.queryReleaseBackend(packageName, registryUrl);\n }\n\n // Fall back to the standard Provider Registry Protocol for other registries.\n return await this.queryProviderRegistry(registryUrl, packageName);\n }\n\n getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n const url = config.registryUrl;\n const repo = TerraformProviderDatasource.getRepository(config);\n return withCache(\n {\n namespace: `datasource-${TerraformProviderDatasource.id}`,\n key: `getReleases:${url}/${repo}`,\n fallback: true,\n },\n () => this._getReleases(config),\n );\n }\n\n private static getRepository({ packageName }: GetReleasesConfig): string {\n return packageName.includes('/') ? packageName : `hashicorp/${packageName}`;\n }\n\n /**\n * Query the Terraform Registry using the undocumented v2 JSON:API.\n *\n * Returns release timestamps for all versions, unlike the v1 API\n * which only exposed the timestamp for the latest version.\n */\n private async queryTerraformRegistryV2(\n registryUrl: string,\n packageName: string,\n ): Promise<ReleaseResult> {\n const repository = TerraformProviderDatasource.getRepository({\n packageName,\n });\n const providerUrl = `${joinUrlParts(\n registryUrl,\n 'v2/providers',\n repository,\n )}?${getQueryString({ include: 'provider-versions' })}`;\n const { body: res } = await this.http.getJson(\n providerUrl,\n TerraformProviderV2Response,\n );\n res.homepage = `${registryUrl}/providers/${repository}`;\n return res;\n }\n\n /**\n * Query a registry using the Provider Registry Protocol that all registries\n * are required to implement.\n * https://www.terraform.io/internals/provider-registry-protocol\n */\n private async queryProviderRegistry(\n registryUrl: string,\n packageName: string,\n ): Promise<ReleaseResult> {\n const repository = TerraformProviderDatasource.getRepository({\n packageName,\n });\n const serviceDiscovery: ServiceDiscoveryResult =\n await this.getTerraformServiceDiscoveryResult(registryUrl);\n const backendURL = createSDBackendURL(\n registryUrl,\n 'providers.v1',\n serviceDiscovery,\n `${repository}/versions`,\n );\n const res = (\n await this.http.getJsonUnchecked<TerraformProviderVersions>(backendURL)\n ).body;\n const dep: ReleaseResult = {\n releases: res.versions.map(({ version }) => ({\n version,\n })),\n };\n return dep;\n }\n\n private async queryReleaseBackend(\n packageName: string,\n registryURL: string,\n ): Promise<ReleaseResult | null> {\n const hashicorpPackage = packageName.replace('hashicorp/', '');\n const backendLookUpName = `terraform-provider-${hashicorpPackage}`;\n const backendURL = joinUrlParts(\n registryURL,\n backendLookUpName,\n `index.json`,\n );\n const res = (\n await this.http.getJsonUnchecked<TerraformProviderReleaseBackend>(\n backendURL,\n )\n ).body;\n\n const dep: ReleaseResult = {\n releases: Object.keys(res.versions).map((version) => ({\n version,\n })),\n sourceUrl: joinUrlParts(\n 'https://github.com/terraform-providers',\n backendLookUpName,\n ),\n };\n return dep;\n }\n\n private async _getBuilds(\n registryURL: string,\n repository: string,\n version: string,\n ): Promise<TerraformBuild[] | null> {\n if (registryURL === TerraformProviderDatasource.hashicorpReleaseUrl) {\n // check if registryURL === secondary backend\n const repositoryRegexResult =\n TerraformProviderDatasource.repositoryRegex.exec(repository)?.groups;\n if (!repositoryRegexResult) {\n // non hashicorp builds are not supported with releases.hashicorp.com\n return null;\n }\n const packageName = repositoryRegexResult.packageName;\n const backendLookUpName = `terraform-provider-${packageName}`;\n let versionReleaseBackend: VersionDetailResponse;\n try {\n versionReleaseBackend = await this.getReleaseBackendIndex(\n backendLookUpName,\n version,\n );\n } catch (err) {\n if (err instanceof ExternalHostError) {\n throw err;\n }\n logger.debug(\n { err, backendLookUpName, version },\n `Failed to retrieve builds for ${backendLookUpName} ${version}`,\n );\n // throw an error to disable caching\n throw new ExternalHostError(err);\n }\n return versionReleaseBackend.builds;\n }\n\n // check public or private Terraform registry\n const serviceDiscovery =\n await this.getTerraformServiceDiscoveryResult(registryURL);\n if (!serviceDiscovery) {\n // throw an error to disable caching\n throw new ExternalHostError(\n new Error(`Service discovery not found for ${registryURL}`),\n );\n }\n const backendURL = createSDBackendURL(\n registryURL,\n 'providers.v1',\n serviceDiscovery,\n repository,\n );\n const versionsResponse = (\n await this.http.getJsonUnchecked<TerraformRegistryVersions>(\n `${backendURL}/versions`,\n )\n ).body;\n if (!versionsResponse.versions) {\n // throw an error to disable caching\n throw new ExternalHostError(\n new Error(`Failed to retrieve version list for ${backendURL}`),\n );\n }\n const builds = versionsResponse.versions.find(\n (value) => value.version === version,\n );\n if (!builds) {\n // should never happen, but just in case\n // throw an error to disable caching\n throw new ExternalHostError(\n new Error(\n `No builds found for ${repository}:${version} on ${registryURL}`,\n ),\n );\n }\n const result = await p.map(\n builds.platforms,\n async (platform) => {\n const buildURL = `${backendURL}/${version}/download/${platform.os}/${platform.arch}`;\n try {\n const res = (\n await this.http.getJsonUnchecked<TerraformRegistryBuildResponse>(\n buildURL,\n )\n ).body;\n const newBuild: TerraformBuild = {\n name: repository,\n url: res.download_url,\n version,\n ...res,\n };\n return newBuild;\n } catch (err) {\n /* v8 ignore next 3 -- hard to test */\n if (err instanceof ExternalHostError) {\n throw err;\n }\n logger.debug({ err, url: buildURL }, 'Failed to retrieve build');\n // throw an error to disable caching\n throw new ExternalHostError(err);\n }\n },\n { concurrency: 4 },\n );\n\n return result;\n }\n\n getBuilds(\n registryURL: string,\n repository: string,\n version: string,\n ): Promise<TerraformBuild[] | null> {\n return withCache(\n {\n namespace: `datasource-${TerraformProviderDatasource.id}`,\n key: `getBuilds:${registryURL}/${repository}/${version}`,\n },\n () => this._getBuilds(registryURL, repository, version),\n );\n }\n\n private async _getZipHashes(\n zipHashUrl: string,\n ): Promise<string[] | undefined> {\n // The hashes are formatted as the result of sha256sum in plain text, each line: <hash>\\t<filename>\n let rawHashData: string;\n try {\n rawHashData = (await this.http.getText(zipHashUrl)).body;\n } catch (err) {\n /* v8 ignore next 3 -- hard to test */\n if (err instanceof ExternalHostError) {\n throw err;\n }\n logger.debug(\n { err, zipHashUrl },\n `Failed to retrieve zip hashes from ${zipHashUrl}`,\n );\n return undefined;\n }\n\n return rawHashData\n .trimEnd()\n .split('\\n')\n .map((line) => line.split(/\\s/)[0]);\n }\n\n getZipHashes(zipHashUrl: string): Promise<string[] | undefined> {\n return withCache(\n {\n namespace: `datasource-${TerraformProviderDatasource.id}`,\n key: `getZipHashes:${zipHashUrl}`,\n },\n () => this._getZipHashes(zipHashUrl),\n );\n }\n\n private async _getReleaseBackendIndex(\n backendLookUpName: string,\n version: string,\n ): Promise<VersionDetailResponse> {\n return (\n await this.http.getJsonUnchecked<VersionDetailResponse>(\n `${TerraformProviderDatasource.hashicorpReleaseUrl}/${backendLookUpName}/${version}/index.json`,\n )\n ).body;\n }\n\n getReleaseBackendIndex(\n backendLookUpName: string,\n version: string,\n ): Promise<VersionDetailResponse> {\n return withCache(\n {\n namespace: `datasource-${TerraformProviderDatasource.id}`,\n key: `getReleaseBackendIndex:${backendLookUpName}/${version}`,\n },\n () => this._getReleaseBackendIndex(backendLookUpName, version),\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["hashicorpVersioning.id","p.map"],"sources":["../../../../lib/modules/datasource/terraform-provider/index.ts"],"sourcesContent":["// TODO: types (#22198)\nimport { logger } from '../../../logger/index.ts';\nimport { ExternalHostError } from '../../../types/errors/external-host-error.ts';\nimport { withCache } from '../../../util/cache/package/with-cache.ts';\nimport * as p from '../../../util/promises.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { getQueryString, joinUrlParts } from '../../../util/url.ts';\nimport * as hashicorpVersioning from '../../versioning/hashicorp/index.ts';\nimport { TerraformDatasource } from '../terraform-module/base.ts';\nimport { createSDBackendURL } from '../terraform-module/utils.ts';\nimport type { GetReleasesConfig, ReleaseResult } from '../types.ts';\nimport { TerraformProviderV2Response } from './schema.ts';\nimport type {\n TerraformBuild,\n TerraformProviderReleaseBackend,\n TerraformProviderVersions,\n TerraformRegistryBuildResponse,\n TerraformRegistryVersions,\n VersionDetailResponse,\n} from './types.ts';\n\nexport class TerraformProviderDatasource extends TerraformDatasource {\n static override readonly id = 'terraform-provider';\n\n static readonly hashicorpReleaseUrl = 'https://releases.hashicorp.com';\n\n static readonly defaultRegistryUrls = [\n TerraformProviderDatasource.terraformRegistryUrl,\n TerraformProviderDatasource.hashicorpReleaseUrl,\n ];\n\n static repositoryRegex = regEx(/^hashicorp\\/(?<packageName>\\S+)$/);\n\n constructor() {\n super(TerraformProviderDatasource.id);\n }\n\n override readonly defaultRegistryUrls =\n TerraformProviderDatasource.defaultRegistryUrls;\n\n override readonly defaultVersioning = hashicorpVersioning.id;\n\n override readonly registryStrategy = 'hunt';\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `published-at` field in the Terraform Registry v2 API response and is only available for `https://registry.terraform.io`.';\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'The source URL is determined from the the `source` field in the results.';\n\n private async _getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n /* v8 ignore next 3 -- should never happen */\n if (!registryUrl) {\n return null;\n }\n logger.trace(\n `terraform-provider.getDependencies() packageName: ${packageName}`,\n );\n\n if (registryUrl === TerraformProviderDatasource.terraformRegistryUrl) {\n return await this.queryTerraformRegistryV2(registryUrl, packageName);\n }\n if (registryUrl === TerraformProviderDatasource.hashicorpReleaseUrl) {\n return await this.queryReleaseBackend(packageName, registryUrl);\n }\n\n // Fall back to the standard Provider Registry Protocol for other registries.\n return await this.queryProviderRegistry(registryUrl, packageName);\n }\n\n getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n const url = config.registryUrl;\n const repo = TerraformProviderDatasource.getRepository(config);\n return withCache(\n {\n namespace: `datasource-${TerraformProviderDatasource.id}`,\n key: `getReleases:${url}/${repo}`,\n fallback: true,\n },\n () => this._getReleases(config),\n );\n }\n\n private static getRepository({ packageName }: GetReleasesConfig): string {\n return packageName.includes('/') ? packageName : `hashicorp/${packageName}`;\n }\n\n /**\n * Query the Terraform Registry using the undocumented v2 JSON:API.\n *\n * Returns release timestamps for all versions, unlike the v1 API\n * which only exposed the timestamp for the latest version.\n */\n private async queryTerraformRegistryV2(\n registryUrl: string,\n packageName: string,\n ): Promise<ReleaseResult> {\n const repository = TerraformProviderDatasource.getRepository({\n packageName,\n });\n const providerUrl = `${joinUrlParts(\n registryUrl,\n 'v2/providers',\n repository,\n )}?${getQueryString({ include: 'provider-versions' })}`;\n const { body: res } = await this.http.getJson(\n providerUrl,\n TerraformProviderV2Response,\n );\n res.homepage = `${registryUrl}/providers/${repository}`;\n return res;\n }\n\n /**\n * Query a registry using the Provider Registry Protocol that all registries\n * are required to implement.\n * https://www.terraform.io/internals/provider-registry-protocol\n */\n private async queryProviderRegistry(\n registryUrl: string,\n packageName: string,\n ): Promise<ReleaseResult> {\n const repository = TerraformProviderDatasource.getRepository({\n packageName,\n });\n const serviceDiscovery =\n await this.getTerraformServiceDiscoveryResult(registryUrl);\n const backendURL = createSDBackendURL(\n registryUrl,\n 'providers.v1',\n serviceDiscovery,\n `${repository}/versions`,\n );\n const res = (\n await this.http.getJsonUnchecked<TerraformProviderVersions>(backendURL)\n ).body;\n const dep: ReleaseResult = {\n releases: res.versions.map(({ version }) => ({\n version,\n })),\n };\n return dep;\n }\n\n private async queryReleaseBackend(\n packageName: string,\n registryURL: string,\n ): Promise<ReleaseResult | null> {\n const hashicorpPackage = packageName.replace('hashicorp/', '');\n const backendLookUpName = `terraform-provider-${hashicorpPackage}`;\n const backendURL = joinUrlParts(\n registryURL,\n backendLookUpName,\n `index.json`,\n );\n const res = (\n await this.http.getJsonUnchecked<TerraformProviderReleaseBackend>(\n backendURL,\n )\n ).body;\n\n const dep: ReleaseResult = {\n releases: Object.keys(res.versions).map((version) => ({\n version,\n })),\n sourceUrl: joinUrlParts(\n 'https://github.com/terraform-providers',\n backendLookUpName,\n ),\n };\n return dep;\n }\n\n private async _getBuilds(\n registryURL: string,\n repository: string,\n version: string,\n ): Promise<TerraformBuild[] | null> {\n if (registryURL === TerraformProviderDatasource.hashicorpReleaseUrl) {\n // check if registryURL === secondary backend\n const repositoryRegexResult =\n TerraformProviderDatasource.repositoryRegex.exec(repository)?.groups;\n if (!repositoryRegexResult) {\n // non hashicorp builds are not supported with releases.hashicorp.com\n return null;\n }\n const packageName = repositoryRegexResult.packageName;\n const backendLookUpName = `terraform-provider-${packageName}`;\n let versionReleaseBackend: VersionDetailResponse;\n try {\n versionReleaseBackend = await this.getReleaseBackendIndex(\n backendLookUpName,\n version,\n );\n } catch (err) {\n if (err instanceof ExternalHostError) {\n throw err;\n }\n logger.debug(\n { err, backendLookUpName, version },\n `Failed to retrieve builds for ${backendLookUpName} ${version}`,\n );\n // throw an error to disable caching\n throw new ExternalHostError(err);\n }\n return versionReleaseBackend.builds;\n }\n\n // check public or private Terraform registry\n const serviceDiscovery =\n await this.getTerraformServiceDiscoveryResult(registryURL);\n if (!serviceDiscovery) {\n // throw an error to disable caching\n throw new ExternalHostError(\n new Error(`Service discovery not found for ${registryURL}`),\n );\n }\n const backendURL = createSDBackendURL(\n registryURL,\n 'providers.v1',\n serviceDiscovery,\n repository,\n );\n const versionsResponse = (\n await this.http.getJsonUnchecked<TerraformRegistryVersions>(\n `${backendURL}/versions`,\n )\n ).body;\n if (!versionsResponse.versions) {\n // throw an error to disable caching\n throw new ExternalHostError(\n new Error(`Failed to retrieve version list for ${backendURL}`),\n );\n }\n const builds = versionsResponse.versions.find(\n (value) => value.version === version,\n );\n if (!builds) {\n // should never happen, but just in case\n // throw an error to disable caching\n throw new ExternalHostError(\n new Error(\n `No builds found for ${repository}:${version} on ${registryURL}`,\n ),\n );\n }\n const result = await p.map(\n builds.platforms,\n async (platform) => {\n const buildURL = `${backendURL}/${version}/download/${platform.os}/${platform.arch}`;\n try {\n const res = (\n await this.http.getJsonUnchecked<TerraformRegistryBuildResponse>(\n buildURL,\n )\n ).body;\n const newBuild: TerraformBuild = {\n name: repository,\n url: res.download_url,\n version,\n ...res,\n };\n return newBuild;\n } catch (err) {\n /* v8 ignore next 3 -- hard to test */\n if (err instanceof ExternalHostError) {\n throw err;\n }\n logger.debug({ err, url: buildURL }, 'Failed to retrieve build');\n // throw an error to disable caching\n throw new ExternalHostError(err);\n }\n },\n { concurrency: 4 },\n );\n\n return result;\n }\n\n getBuilds(\n registryURL: string,\n repository: string,\n version: string,\n ): Promise<TerraformBuild[] | null> {\n return withCache(\n {\n namespace: `datasource-${TerraformProviderDatasource.id}`,\n key: `getBuilds:${registryURL}/${repository}/${version}`,\n },\n () => this._getBuilds(registryURL, repository, version),\n );\n }\n\n private async _getZipHashes(\n zipHashUrl: string,\n ): Promise<string[] | undefined> {\n // The hashes are formatted as the result of sha256sum in plain text, each line: <hash>\\t<filename>\n let rawHashData: string;\n try {\n rawHashData = (await this.http.getText(zipHashUrl)).body;\n } catch (err) {\n /* v8 ignore next 3 -- hard to test */\n if (err instanceof ExternalHostError) {\n throw err;\n }\n logger.debug(\n { err, zipHashUrl },\n `Failed to retrieve zip hashes from ${zipHashUrl}`,\n );\n return undefined;\n }\n\n return rawHashData\n .trimEnd()\n .split('\\n')\n .map((line) => line.split(/\\s/)[0]);\n }\n\n getZipHashes(zipHashUrl: string): Promise<string[] | undefined> {\n return withCache(\n {\n namespace: `datasource-${TerraformProviderDatasource.id}`,\n key: `getZipHashes:${zipHashUrl}`,\n },\n () => this._getZipHashes(zipHashUrl),\n );\n }\n\n private async _getReleaseBackendIndex(\n backendLookUpName: string,\n version: string,\n ): Promise<VersionDetailResponse> {\n return (\n await this.http.getJsonUnchecked<VersionDetailResponse>(\n `${TerraformProviderDatasource.hashicorpReleaseUrl}/${backendLookUpName}/${version}/index.json`,\n )\n ).body;\n }\n\n getReleaseBackendIndex(\n backendLookUpName: string,\n version: string,\n ): Promise<VersionDetailResponse> {\n return withCache(\n {\n namespace: `datasource-${TerraformProviderDatasource.id}`,\n key: `getReleaseBackendIndex:${backendLookUpName}/${version}`,\n },\n () => this._getReleaseBackendIndex(backendLookUpName, version),\n );\n }\n}\n"],"mappings":"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"}
@@ -109,6 +109,7 @@ import { unity3d_exports } from "./unity3d/index.js";
109
109
  import { velaci_exports } from "./velaci/index.js";
110
110
  import { vendir_exports } from "./vendir/index.js";
111
111
  import { woodpecker_exports } from "./woodpecker/index.js";
112
+ import { xcodegen_exports } from "./xcodegen/index.js";
112
113
  //#region lib/modules/manager/api.ts
113
114
  const api = /* @__PURE__ */ new Map();
114
115
  api.set("ant", ant_exports);
@@ -222,6 +223,7 @@ api.set("unity3d", unity3d_exports);
222
223
  api.set("velaci", velaci_exports);
223
224
  api.set("vendir", vendir_exports);
224
225
  api.set("woodpecker", woodpecker_exports);
226
+ api.set("xcodegen", xcodegen_exports);
225
227
  //#endregion
226
228
  export { api as default };
227
229
 
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","names":["ant","ansible","ansibleGalaxy","argoCD","asdf","azurePipelines","batect","batectWrapper","bazel","bazelModule","bazelisk","bicep","bitbucketPipelines","bitrise","buildkite","buildpacks","bun","bunVersion","bundler","cake","cargo","cdnurl","circleci","cloudbuild","cocoapods","composer","conan","copier","cpanfile","crossplane","crow","depsEdn","devbox","devContainer","dockerCompose","dockerfile","droneci","fleet","flux","fvm","gitSubmodules","githubActions","gitlabci","gitlabciInclude","glasskube","gleam","gomod","gradle","gradleWrapper","haskellCabal","helmRequirements","helmValues","helmfile","helmsman","helmv3","hermit","homeassistantManifest","homebrew","html","jenkins","jsonnetBundler","kotlinScript","kubernetes","kustomize","leiningen","maven","mavenWrapper","meteor","mint","mise","mix","nix","nodenv","npm","nuget","nvm","ocb","osgi","pep621","pep723","pipCompile","pip_requirements","pip_setup","pipenv","pixi","poetry","preCommit","pub","puppet","pyenv","quadlet","renovateConfigPresets","rubyVersion","runtimeVersion","sbt","scalafmt","setupCfg","sveltos","swift","tekton","terraform","terraformVersion","terragrunt","terragruntVersion","tflintPlugin","travis","typst","unity3d","velaci","vendir","woodpecker"],"sources":["../../../lib/modules/manager/api.ts"],"sourcesContent":["import * as ansible from './ansible/index.ts';\nimport * as ansibleGalaxy from './ansible-galaxy/index.ts';\nimport * as ant from './ant/index.ts';\nimport * as argoCD from './argocd/index.ts';\nimport * as asdf from './asdf/index.ts';\nimport * as azurePipelines from './azure-pipelines/index.ts';\nimport * as batect from './batect/index.ts';\nimport * as batectWrapper from './batect-wrapper/index.ts';\nimport * as bazel from './bazel/index.ts';\nimport * as bazelModule from './bazel-module/index.ts';\nimport * as bazelisk from './bazelisk/index.ts';\nimport * as bicep from './bicep/index.ts';\nimport * as bitbucketPipelines from './bitbucket-pipelines/index.ts';\nimport * as bitrise from './bitrise/index.ts';\nimport * as buildkite from './buildkite/index.ts';\nimport * as buildpacks from './buildpacks/index.ts';\nimport * as bun from './bun/index.ts';\nimport * as bunVersion from './bun-version/index.ts';\nimport * as bundler from './bundler/index.ts';\nimport * as cake from './cake/index.ts';\nimport * as cargo from './cargo/index.ts';\nimport * as cdnurl from './cdnurl/index.ts';\nimport * as circleci from './circleci/index.ts';\nimport * as cloudbuild from './cloudbuild/index.ts';\nimport * as cocoapods from './cocoapods/index.ts';\nimport * as composer from './composer/index.ts';\nimport * as conan from './conan/index.ts';\nimport * as copier from './copier/index.ts';\nimport * as cpanfile from './cpanfile/index.ts';\nimport * as crossplane from './crossplane/index.ts';\nimport * as crow from './crow/index.ts';\nimport * as depsEdn from './deps-edn/index.ts';\nimport * as devbox from './devbox/index.ts';\nimport * as devContainer from './devcontainer/index.ts';\nimport * as dockerCompose from './docker-compose/index.ts';\nimport * as dockerfile from './dockerfile/index.ts';\nimport * as droneci from './droneci/index.ts';\nimport * as fleet from './fleet/index.ts';\nimport * as flux from './flux/index.ts';\nimport * as fvm from './fvm/index.ts';\nimport * as gitSubmodules from './git-submodules/index.ts';\nimport * as githubActions from './github-actions/index.ts';\nimport * as gitlabci from './gitlabci/index.ts';\nimport * as gitlabciInclude from './gitlabci-include/index.ts';\nimport * as glasskube from './glasskube/index.ts';\nimport * as gleam from './gleam/index.ts';\nimport * as gomod from './gomod/index.ts';\nimport * as gradle from './gradle/index.ts';\nimport * as gradleWrapper from './gradle-wrapper/index.ts';\nimport * as haskellCabal from './haskell-cabal/index.ts';\nimport * as helmRequirements from './helm-requirements/index.ts';\nimport * as helmValues from './helm-values/index.ts';\nimport * as helmfile from './helmfile/index.ts';\nimport * as helmsman from './helmsman/index.ts';\nimport * as helmv3 from './helmv3/index.ts';\nimport * as hermit from './hermit/index.ts';\nimport * as homeassistantManifest from './homeassistant-manifest/index.ts';\nimport * as homebrew from './homebrew/index.ts';\nimport * as html from './html/index.ts';\nimport * as jenkins from './jenkins/index.ts';\nimport * as jsonnetBundler from './jsonnet-bundler/index.ts';\nimport * as kotlinScript from './kotlin-script/index.ts';\nimport * as kubernetes from './kubernetes/index.ts';\nimport * as kustomize from './kustomize/index.ts';\nimport * as leiningen from './leiningen/index.ts';\nimport * as maven from './maven/index.ts';\nimport * as mavenWrapper from './maven-wrapper/index.ts';\nimport * as meteor from './meteor/index.ts';\nimport * as mint from './mint/index.ts';\nimport * as mise from './mise/index.ts';\nimport * as mix from './mix/index.ts';\nimport * as nix from './nix/index.ts';\nimport * as nodenv from './nodenv/index.ts';\nimport * as npm from './npm/index.ts';\nimport * as nuget from './nuget/index.ts';\nimport * as nvm from './nvm/index.ts';\nimport * as ocb from './ocb/index.ts';\nimport * as osgi from './osgi/index.ts';\nimport * as pep621 from './pep621/index.ts';\nimport * as pep723 from './pep723/index.ts';\nimport * as pip_requirements from './pip_requirements/index.ts';\nimport * as pip_setup from './pip_setup/index.ts';\nimport * as pipCompile from './pip-compile/index.ts';\nimport * as pipenv from './pipenv/index.ts';\nimport * as pixi from './pixi/index.ts';\nimport * as poetry from './poetry/index.ts';\nimport * as preCommit from './pre-commit/index.ts';\nimport * as pub from './pub/index.ts';\nimport * as puppet from './puppet/index.ts';\nimport * as pyenv from './pyenv/index.ts';\nimport * as quadlet from './quadlet/index.ts';\nimport * as renovateConfigPresets from './renovate-config-presets/index.ts';\nimport * as rubyVersion from './ruby-version/index.ts';\nimport * as runtimeVersion from './runtime-version/index.ts';\nimport * as sbt from './sbt/index.ts';\nimport * as scalafmt from './scalafmt/index.ts';\nimport * as setupCfg from './setup-cfg/index.ts';\nimport * as sveltos from './sveltos/index.ts';\nimport * as swift from './swift/index.ts';\nimport * as tekton from './tekton/index.ts';\nimport * as terraform from './terraform/index.ts';\nimport * as terraformVersion from './terraform-version/index.ts';\nimport * as terragrunt from './terragrunt/index.ts';\nimport * as terragruntVersion from './terragrunt-version/index.ts';\nimport * as tflintPlugin from './tflint-plugin/index.ts';\nimport * as travis from './travis/index.ts';\nimport type { ManagerApi } from './types.ts';\nimport * as typst from './typst/index.ts';\nimport * as unity3d from './unity3d/index.ts';\nimport * as velaci from './velaci/index.ts';\nimport * as vendir from './vendir/index.ts';\nimport * as woodpecker from './woodpecker/index.ts';\n\nconst api = new Map<string, ManagerApi>();\nexport default api;\n\napi.set('ant', ant);\napi.set('ansible', ansible);\napi.set('ansible-galaxy', ansibleGalaxy);\napi.set('argocd', argoCD);\napi.set('asdf', asdf);\napi.set('azure-pipelines', azurePipelines);\napi.set('batect', batect);\napi.set('batect-wrapper', batectWrapper);\napi.set('bazel', bazel);\napi.set('bazel-module', bazelModule);\napi.set('bazelisk', bazelisk);\napi.set('bicep', bicep);\napi.set('bitbucket-pipelines', bitbucketPipelines);\napi.set('bitrise', bitrise);\napi.set('buildkite', buildkite);\napi.set('buildpacks', buildpacks);\napi.set('bun', bun);\napi.set('bun-version', bunVersion);\napi.set('bundler', bundler);\napi.set('cake', cake);\napi.set('cargo', cargo);\napi.set('cdnurl', cdnurl);\napi.set('circleci', circleci);\napi.set('cloudbuild', cloudbuild);\napi.set('cocoapods', cocoapods);\napi.set('composer', composer);\napi.set('conan', conan);\napi.set('copier', copier);\napi.set('cpanfile', cpanfile);\napi.set('crossplane', crossplane);\napi.set('crow', crow);\napi.set('deps-edn', depsEdn);\napi.set('devbox', devbox);\napi.set('devcontainer', devContainer);\napi.set('docker-compose', dockerCompose);\napi.set('dockerfile', dockerfile);\napi.set('droneci', droneci);\napi.set('fleet', fleet);\napi.set('flux', flux);\napi.set('fvm', fvm);\napi.set('git-submodules', gitSubmodules);\napi.set('github-actions', githubActions);\napi.set('gitlabci', gitlabci);\napi.set('gitlabci-include', gitlabciInclude);\napi.set('glasskube', glasskube);\napi.set('gleam', gleam);\napi.set('gomod', gomod);\napi.set('gradle', gradle);\napi.set('gradle-wrapper', gradleWrapper);\napi.set('haskell-cabal', haskellCabal);\napi.set('helm-requirements', helmRequirements);\napi.set('helm-values', helmValues);\napi.set('helmfile', helmfile);\napi.set('helmsman', helmsman);\napi.set('helmv3', helmv3);\napi.set('hermit', hermit);\napi.set('homeassistant-manifest', homeassistantManifest);\napi.set('homebrew', homebrew);\napi.set('html', html);\napi.set('jenkins', jenkins);\napi.set('jsonnet-bundler', jsonnetBundler);\napi.set('kotlin-script', kotlinScript);\napi.set('kubernetes', kubernetes);\napi.set('kustomize', kustomize);\napi.set('leiningen', leiningen);\napi.set('maven', maven);\napi.set('maven-wrapper', mavenWrapper);\napi.set('meteor', meteor);\napi.set('mint', mint);\napi.set('mise', mise);\napi.set('mix', mix);\napi.set('nix', nix);\napi.set('nodenv', nodenv);\napi.set('npm', npm);\napi.set('nuget', nuget);\napi.set('nvm', nvm);\napi.set('ocb', ocb);\napi.set('osgi', osgi);\napi.set('pep621', pep621);\napi.set('pep723', pep723);\napi.set('pip-compile', pipCompile);\napi.set('pip_requirements', pip_requirements);\napi.set('pip_setup', pip_setup);\napi.set('pipenv', pipenv);\napi.set('pixi', pixi);\napi.set('poetry', poetry);\napi.set('pre-commit', preCommit);\napi.set('pub', pub);\napi.set('puppet', puppet);\napi.set('pyenv', pyenv);\napi.set('quadlet', quadlet);\napi.set('renovate-config-presets', renovateConfigPresets);\napi.set('ruby-version', rubyVersion);\napi.set('runtime-version', runtimeVersion);\napi.set('sbt', sbt);\napi.set('scalafmt', scalafmt);\napi.set('setup-cfg', setupCfg);\napi.set('sveltos', sveltos);\napi.set('swift', swift);\napi.set('tekton', tekton);\napi.set('terraform', terraform);\napi.set('terraform-version', terraformVersion);\napi.set('terragrunt', terragrunt);\napi.set('terragrunt-version', terragruntVersion);\napi.set('tflint-plugin', tflintPlugin);\napi.set('travis', travis);\napi.set('typst', typst);\napi.set('unity3d', unity3d);\napi.set('velaci', velaci);\napi.set('vendir', vendir);\napi.set('woodpecker', woodpecker);\n"],"mappings":"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"}
1
+ {"version":3,"file":"api.js","names":["ant","ansible","ansibleGalaxy","argoCD","asdf","azurePipelines","batect","batectWrapper","bazel","bazelModule","bazelisk","bicep","bitbucketPipelines","bitrise","buildkite","buildpacks","bun","bunVersion","bundler","cake","cargo","cdnurl","circleci","cloudbuild","cocoapods","composer","conan","copier","cpanfile","crossplane","crow","depsEdn","devbox","devContainer","dockerCompose","dockerfile","droneci","fleet","flux","fvm","gitSubmodules","githubActions","gitlabci","gitlabciInclude","glasskube","gleam","gomod","gradle","gradleWrapper","haskellCabal","helmRequirements","helmValues","helmfile","helmsman","helmv3","hermit","homeassistantManifest","homebrew","html","jenkins","jsonnetBundler","kotlinScript","kubernetes","kustomize","leiningen","maven","mavenWrapper","meteor","mint","mise","mix","nix","nodenv","npm","nuget","nvm","ocb","osgi","pep621","pep723","pipCompile","pip_requirements","pip_setup","pipenv","pixi","poetry","preCommit","pub","puppet","pyenv","quadlet","renovateConfigPresets","rubyVersion","runtimeVersion","sbt","scalafmt","setupCfg","sveltos","swift","tekton","terraform","terraformVersion","terragrunt","terragruntVersion","tflintPlugin","travis","typst","unity3d","velaci","vendir","woodpecker","xcodegen"],"sources":["../../../lib/modules/manager/api.ts"],"sourcesContent":["import * as ansible from './ansible/index.ts';\nimport * as ansibleGalaxy from './ansible-galaxy/index.ts';\nimport * as ant from './ant/index.ts';\nimport * as argoCD from './argocd/index.ts';\nimport * as asdf from './asdf/index.ts';\nimport * as azurePipelines from './azure-pipelines/index.ts';\nimport * as batect from './batect/index.ts';\nimport * as batectWrapper from './batect-wrapper/index.ts';\nimport * as bazel from './bazel/index.ts';\nimport * as bazelModule from './bazel-module/index.ts';\nimport * as bazelisk from './bazelisk/index.ts';\nimport * as bicep from './bicep/index.ts';\nimport * as bitbucketPipelines from './bitbucket-pipelines/index.ts';\nimport * as bitrise from './bitrise/index.ts';\nimport * as buildkite from './buildkite/index.ts';\nimport * as buildpacks from './buildpacks/index.ts';\nimport * as bun from './bun/index.ts';\nimport * as bunVersion from './bun-version/index.ts';\nimport * as bundler from './bundler/index.ts';\nimport * as cake from './cake/index.ts';\nimport * as cargo from './cargo/index.ts';\nimport * as cdnurl from './cdnurl/index.ts';\nimport * as circleci from './circleci/index.ts';\nimport * as cloudbuild from './cloudbuild/index.ts';\nimport * as cocoapods from './cocoapods/index.ts';\nimport * as composer from './composer/index.ts';\nimport * as conan from './conan/index.ts';\nimport * as copier from './copier/index.ts';\nimport * as cpanfile from './cpanfile/index.ts';\nimport * as crossplane from './crossplane/index.ts';\nimport * as crow from './crow/index.ts';\nimport * as depsEdn from './deps-edn/index.ts';\nimport * as devbox from './devbox/index.ts';\nimport * as devContainer from './devcontainer/index.ts';\nimport * as dockerCompose from './docker-compose/index.ts';\nimport * as dockerfile from './dockerfile/index.ts';\nimport * as droneci from './droneci/index.ts';\nimport * as fleet from './fleet/index.ts';\nimport * as flux from './flux/index.ts';\nimport * as fvm from './fvm/index.ts';\nimport * as gitSubmodules from './git-submodules/index.ts';\nimport * as githubActions from './github-actions/index.ts';\nimport * as gitlabci from './gitlabci/index.ts';\nimport * as gitlabciInclude from './gitlabci-include/index.ts';\nimport * as glasskube from './glasskube/index.ts';\nimport * as gleam from './gleam/index.ts';\nimport * as gomod from './gomod/index.ts';\nimport * as gradle from './gradle/index.ts';\nimport * as gradleWrapper from './gradle-wrapper/index.ts';\nimport * as haskellCabal from './haskell-cabal/index.ts';\nimport * as helmRequirements from './helm-requirements/index.ts';\nimport * as helmValues from './helm-values/index.ts';\nimport * as helmfile from './helmfile/index.ts';\nimport * as helmsman from './helmsman/index.ts';\nimport * as helmv3 from './helmv3/index.ts';\nimport * as hermit from './hermit/index.ts';\nimport * as homeassistantManifest from './homeassistant-manifest/index.ts';\nimport * as homebrew from './homebrew/index.ts';\nimport * as html from './html/index.ts';\nimport * as jenkins from './jenkins/index.ts';\nimport * as jsonnetBundler from './jsonnet-bundler/index.ts';\nimport * as kotlinScript from './kotlin-script/index.ts';\nimport * as kubernetes from './kubernetes/index.ts';\nimport * as kustomize from './kustomize/index.ts';\nimport * as leiningen from './leiningen/index.ts';\nimport * as maven from './maven/index.ts';\nimport * as mavenWrapper from './maven-wrapper/index.ts';\nimport * as meteor from './meteor/index.ts';\nimport * as mint from './mint/index.ts';\nimport * as mise from './mise/index.ts';\nimport * as mix from './mix/index.ts';\nimport * as nix from './nix/index.ts';\nimport * as nodenv from './nodenv/index.ts';\nimport * as npm from './npm/index.ts';\nimport * as nuget from './nuget/index.ts';\nimport * as nvm from './nvm/index.ts';\nimport * as ocb from './ocb/index.ts';\nimport * as osgi from './osgi/index.ts';\nimport * as pep621 from './pep621/index.ts';\nimport * as pep723 from './pep723/index.ts';\nimport * as pip_requirements from './pip_requirements/index.ts';\nimport * as pip_setup from './pip_setup/index.ts';\nimport * as pipCompile from './pip-compile/index.ts';\nimport * as pipenv from './pipenv/index.ts';\nimport * as pixi from './pixi/index.ts';\nimport * as poetry from './poetry/index.ts';\nimport * as preCommit from './pre-commit/index.ts';\nimport * as pub from './pub/index.ts';\nimport * as puppet from './puppet/index.ts';\nimport * as pyenv from './pyenv/index.ts';\nimport * as quadlet from './quadlet/index.ts';\nimport * as renovateConfigPresets from './renovate-config-presets/index.ts';\nimport * as rubyVersion from './ruby-version/index.ts';\nimport * as runtimeVersion from './runtime-version/index.ts';\nimport * as sbt from './sbt/index.ts';\nimport * as scalafmt from './scalafmt/index.ts';\nimport * as setupCfg from './setup-cfg/index.ts';\nimport * as sveltos from './sveltos/index.ts';\nimport * as swift from './swift/index.ts';\nimport * as tekton from './tekton/index.ts';\nimport * as terraform from './terraform/index.ts';\nimport * as terraformVersion from './terraform-version/index.ts';\nimport * as terragrunt from './terragrunt/index.ts';\nimport * as terragruntVersion from './terragrunt-version/index.ts';\nimport * as tflintPlugin from './tflint-plugin/index.ts';\nimport * as travis from './travis/index.ts';\nimport type { ManagerApi } from './types.ts';\nimport * as typst from './typst/index.ts';\nimport * as unity3d from './unity3d/index.ts';\nimport * as velaci from './velaci/index.ts';\nimport * as vendir from './vendir/index.ts';\nimport * as woodpecker from './woodpecker/index.ts';\nimport * as xcodegen from './xcodegen/index.ts';\n\nconst api = new Map<string, ManagerApi>();\nexport default api;\n\napi.set('ant', ant);\napi.set('ansible', ansible);\napi.set('ansible-galaxy', ansibleGalaxy);\napi.set('argocd', argoCD);\napi.set('asdf', asdf);\napi.set('azure-pipelines', azurePipelines);\napi.set('batect', batect);\napi.set('batect-wrapper', batectWrapper);\napi.set('bazel', bazel);\napi.set('bazel-module', bazelModule);\napi.set('bazelisk', bazelisk);\napi.set('bicep', bicep);\napi.set('bitbucket-pipelines', bitbucketPipelines);\napi.set('bitrise', bitrise);\napi.set('buildkite', buildkite);\napi.set('buildpacks', buildpacks);\napi.set('bun', bun);\napi.set('bun-version', bunVersion);\napi.set('bundler', bundler);\napi.set('cake', cake);\napi.set('cargo', cargo);\napi.set('cdnurl', cdnurl);\napi.set('circleci', circleci);\napi.set('cloudbuild', cloudbuild);\napi.set('cocoapods', cocoapods);\napi.set('composer', composer);\napi.set('conan', conan);\napi.set('copier', copier);\napi.set('cpanfile', cpanfile);\napi.set('crossplane', crossplane);\napi.set('crow', crow);\napi.set('deps-edn', depsEdn);\napi.set('devbox', devbox);\napi.set('devcontainer', devContainer);\napi.set('docker-compose', dockerCompose);\napi.set('dockerfile', dockerfile);\napi.set('droneci', droneci);\napi.set('fleet', fleet);\napi.set('flux', flux);\napi.set('fvm', fvm);\napi.set('git-submodules', gitSubmodules);\napi.set('github-actions', githubActions);\napi.set('gitlabci', gitlabci);\napi.set('gitlabci-include', gitlabciInclude);\napi.set('glasskube', glasskube);\napi.set('gleam', gleam);\napi.set('gomod', gomod);\napi.set('gradle', gradle);\napi.set('gradle-wrapper', gradleWrapper);\napi.set('haskell-cabal', haskellCabal);\napi.set('helm-requirements', helmRequirements);\napi.set('helm-values', helmValues);\napi.set('helmfile', helmfile);\napi.set('helmsman', helmsman);\napi.set('helmv3', helmv3);\napi.set('hermit', hermit);\napi.set('homeassistant-manifest', homeassistantManifest);\napi.set('homebrew', homebrew);\napi.set('html', html);\napi.set('jenkins', jenkins);\napi.set('jsonnet-bundler', jsonnetBundler);\napi.set('kotlin-script', kotlinScript);\napi.set('kubernetes', kubernetes);\napi.set('kustomize', kustomize);\napi.set('leiningen', leiningen);\napi.set('maven', maven);\napi.set('maven-wrapper', mavenWrapper);\napi.set('meteor', meteor);\napi.set('mint', mint);\napi.set('mise', mise);\napi.set('mix', mix);\napi.set('nix', nix);\napi.set('nodenv', nodenv);\napi.set('npm', npm);\napi.set('nuget', nuget);\napi.set('nvm', nvm);\napi.set('ocb', ocb);\napi.set('osgi', osgi);\napi.set('pep621', pep621);\napi.set('pep723', pep723);\napi.set('pip-compile', pipCompile);\napi.set('pip_requirements', pip_requirements);\napi.set('pip_setup', pip_setup);\napi.set('pipenv', pipenv);\napi.set('pixi', pixi);\napi.set('poetry', poetry);\napi.set('pre-commit', preCommit);\napi.set('pub', pub);\napi.set('puppet', puppet);\napi.set('pyenv', pyenv);\napi.set('quadlet', quadlet);\napi.set('renovate-config-presets', renovateConfigPresets);\napi.set('ruby-version', rubyVersion);\napi.set('runtime-version', runtimeVersion);\napi.set('sbt', sbt);\napi.set('scalafmt', scalafmt);\napi.set('setup-cfg', setupCfg);\napi.set('sveltos', sveltos);\napi.set('swift', swift);\napi.set('tekton', tekton);\napi.set('terraform', terraform);\napi.set('terraform-version', terraformVersion);\napi.set('terragrunt', terragrunt);\napi.set('terragrunt-version', terragruntVersion);\napi.set('tflint-plugin', tflintPlugin);\napi.set('travis', travis);\napi.set('typst', typst);\napi.set('unity3d', unity3d);\napi.set('velaci', velaci);\napi.set('vendir', vendir);\napi.set('woodpecker', woodpecker);\napi.set('xcodegen', xcodegen);\n"],"mappings":"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"}
@@ -100,7 +100,7 @@ hashMap.set("setup-cfg", "7dea08c5708625e753bd56918bc214df7fb4d8543a26e936926a21
100
100
  hashMap.set("sveltos", "167a5cc79098803be3b815a28cc40ef3361c455751e1d6a7a99ba91bfce26709");
101
101
  hashMap.set("swift", "79ec9a6a2a8bb4853bb78bbb3a2a6e64e3b32b0ddeb312385abb3a14366ad505");
102
102
  hashMap.set("tekton", "4e35c75bba4abc9c3cf49c55da6c19db4f4e9181d1fd9583288ab55ef7c944fd");
103
- hashMap.set("terraform", "5bd62ce12c23896b8ecb2385a60a3cb9eb72badf10f9984bfed38f50f9262266");
103
+ hashMap.set("terraform", "51aa6b0a49001494e7ee718d01312961c7fbd244831b42ceefd690d75404e795");
104
104
  hashMap.set("terraform-version", "ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa");
105
105
  hashMap.set("terragrunt", "b8474c65383a702602eee432cc1434f9a49a1ef886d1213de92d7a84fb98b9cd");
106
106
  hashMap.set("terragrunt-version", "eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d");
@@ -111,6 +111,7 @@ hashMap.set("unity3d", "f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6d
111
111
  hashMap.set("velaci", "fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de");
112
112
  hashMap.set("vendir", "4627230d3b7698c41aac192d57b65b091c860c8f858c89d6af4b06ed6a32fae6");
113
113
  hashMap.set("woodpecker", "6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045");
114
+ hashMap.set("xcodegen", "dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683");
114
115
  hashMap.set("jsonata", "3b5f465b586993f92c8490e70885e7eecce9b6556bcc376dd9c11db8ee9e6960");
115
116
  hashMap.set("regex", "7b643b49e498465cf91b25b8b840bb1fec8c8a3a59bfa8f97a39c976675325a0");
116
117
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"fingerprint.generated.js","names":[],"sources":["../../../lib/modules/manager/fingerprint.generated.ts"],"sourcesContent":["export const hashMap = new Map<string, string>();\n\nhashMap.set('ansible','1fbc76f78daa14a8c9ab1142e9d1e05c746c0419a9f1455e4279f476590d0c04');\nhashMap.set('ansible-galaxy','8226d47128f2018825d4d6f84794e3183eb79c706045fa7e88491edd5e64106f');\nhashMap.set('ant','8640868d2249c9a0fbc57680fa81cf0c8c35f170258c50ac3ffb3a4f798cc5ae');\nhashMap.set('argocd','5d35b1992e53130bf83b0e59a0f90ccd3a78919974c69044f306dc5d162f48ce');\nhashMap.set('asdf','1f6fcf620e9c6cd35991380cb6eafb94ec60cd77cbd13335ebe3a1d9727416c9');\nhashMap.set('azure-pipelines','4f635b0ecd388ee266d992e8281fd40e3db2f5867d86fc1cbce72dc33a66e796');\nhashMap.set('batect','fad98996bea8626525ab925f83a6ae0ce9262c53770e7aa7cb448a1e0f1ddf21');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','c6e0ad88ea468664c3a33263baf7452d83d2d37ff09ba920e18f64ee81fd0acb');\nhashMap.set('bazel-module','ff071fcf8b53036956627d2a430ccdf256e30bee4d7e80c329379879d836a931');\nhashMap.set('bazelisk','b6ec532dfa7c8f82ad4084df864ac6276e87c27285369323902afc146d3537ac');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','59c0503494ab1442b127914503c01b97ac17b6742b19c632292d5aa24de115cd');\nhashMap.set('bitrise','478dfd316221fad7c29e177c70d1018d832fb2626b53308a5d0f1f0380e69f42');\nhashMap.set('buildkite','a93effb1f1c5d65b3277c3b4709924eacde282e8efd028a8e3d8c1ce3ef69407');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','1322232bf1d0c4fa796e31a00488453bdcd00d4958431d9e424c1635e60a99bd');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','6d7e9d2018ac03e15f19e8b40ef70dd87d509d5affca24bc464d085899880a25');\nhashMap.set('cake','288c3c36a50371b26957fa71992cc335228d53563c75597b36919ac7286e96eb');\nhashMap.set('cargo','308d7ab4c6d24027b050bf659dfab0e510d9a22f8134695a7c68214908ee4634');\nhashMap.set('cdnurl','d3edf6cdc38e92eb43ff5a2b4e8df6a6a13154cf83244725c39e28d7e6ea9177');\nhashMap.set('circleci','135937d4720718304adb0ba998516f8ce38c3220ccd18b00b8c70c62b45df4da');\nhashMap.set('cloudbuild','8c0c739f7e4082bbfe8e3fdffebaf43e26f70a1314d95b306e9b93e4f4297886');\nhashMap.set('cocoapods','b6ac3b4a6b8a5b32daed37bf695fe177cdb1b4a94ae7f7fb2f4c4c096c0a004c');\nhashMap.set('composer','cdb6895574020cec402e0b878e4078b62f1acfd0392a861cbb523036634f6383');\nhashMap.set('conan','aecc3917d77146db4e57dd12944be1beff860e90b7ebdd2d8fbc449fc1a06574');\nhashMap.set('copier','faa3b79991256a6fc0957fdcd530a1bc8aee65913d5aff2b1b4d226dcd44d008');\nhashMap.set('cpanfile','6a1d67d9c8751123deaf0c7f3ac38a07024e960c140f8228fcbcb93954fdca01');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deps-edn','c87dd5e88587147ad1a78f047b814f3c4aa60d6de30d0c49d849391eeaf1b64c');\nhashMap.set('devbox','bcf5334e8a21190baaa25436acf2f17fbf095504262a4e9ee7c62ffb644eb716');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','5441af5b5abf8d347e46002d47f02f85743401bda28232f49fb7b3bbb772a4fb');\nhashMap.set('dockerfile','322b95f7e55dd78d7fe71306a6f649479eca61c60d75bb10b23604a230dbdd08');\nhashMap.set('droneci','237c8de87b9bf653fb943b56e84e99c45f6d86ae27d86e599b3f3f99c35ba8ee');\nhashMap.set('fleet','d73d5d35f10df0599a561d9c8d25f3935350407d0e3bd3a1d1545295f278912e');\nhashMap.set('flux','427e0c1a5b1d8337503a9a568a76532fbde0bab8b355fa8f47312de50eadf2f6');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','fbbf1c7b7b6f4166fa3beee96a3283d007b388e9ecb6a14f76123c8ab8c78071');\nhashMap.set('github-actions','d8f83c65da1e80b639ad44a0d8641e7e97b1d93a1b6c873603333d337ad02011');\nhashMap.set('gitlabci','0dec44dd398bfc5b3c19d0929bea2fef7f386c94acfd1b1d7bc2a31d81d96fd6');\nhashMap.set('gitlabci-include','354cfc4ea327c6d5cd5bee1f17763832efc7f5402e9fd22c579239fccb9c6dab');\nhashMap.set('glasskube','253d6db30bdec75ed5ab5d26f31d69bc07813ba10089a28da12c6a29eff4ec70');\nhashMap.set('gleam','b717a48c525ad6b1d434c6a9db828ddebbb85e94519e89ddc4040878e3600e84');\nhashMap.set('gomod','82e877b22c0dd0217368760bb5d38430657fff63d07c289793a866f0845d2976');\nhashMap.set('gradle','f430d8d768b56889ad1e5a69965841e85cc700e364d15db7bce680e8a5d6f821');\nhashMap.set('gradle-wrapper','90d2ecb9d0b113f8e946d4ea221c040f17f91af846e1ff4f9fc1514ad4324b74');\nhashMap.set('haskell-cabal','d796ec6859e63ab4f1b7030c4016071202c3a44c7c11d4a9131d7e2ba19b396d');\nhashMap.set('helm-requirements','4d90e5e18a380876ad48e21e1ad88ea62e25d973a1ddaa3763447fc0a9f9915b');\nhashMap.set('helm-values','b5c52c6a27d805557418c585c5d3030c95ee641d53057021f3fe060f81b6e1af');\nhashMap.set('helmfile','e5783484b81247279563da3c835afe4002edfc412e13fb91877818ca44ae65f2');\nhashMap.set('helmsman','ef9680c612f702c7f07aea9b6e5d811e91214dcfa5755c9f3803e9528090935e');\nhashMap.set('helmv3','7724bf6cc3ff4afec1809899f619a332f4350049b9578b5c4634514b4448cf2b');\nhashMap.set('hermit','672c328e4baea3a1ccd2cde2364db01c8033a8c077bf63a5b914fc20ee1de838');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','56ef90301143874355fd2ed25dff7c646875f701f97422d02e01d45608a88f31');\nhashMap.set('html','67c5f3c5c58e96f5dd257ba5987d900cf7fef81d667c3640e96c847b37de35a8');\nhashMap.set('jenkins','268ebfc8a1caf3edeb2192c2b1b2fa4bf18a78a3e731ba20a6c104940a5539f3');\nhashMap.set('jsonnet-bundler','4b73c32ddc3fe45d9777106d45b116777a2960e6e631256a6553060e602f893c');\nhashMap.set('kotlin-script','99ef296792a0ca575ed31d3defb514b05a58083dc01c52ea0890c69d867ba1dd');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','1e44d6ef8622252dac6d9649fb04badd12d4827eb2a55f74792aa9de2b915775');\nhashMap.set('leiningen','133fca2c3423f53f2ccc22518153ddbcafbf0f4812376c77e952eb3d24d81f85');\nhashMap.set('maven','fd6bfc21be851ed076eabea1a91a89b25eb82129734c7cb0c2e684385cf1ea69');\nhashMap.set('maven-wrapper','9a868d1328f911eb72f9e65a64d46c86ae347aab0153d1cf4e9a62ad9e0d6cb0');\nhashMap.set('meteor','4a93a326b27bedfe52118e27e06f39fecd7c55bd4cd7fccec4cb120cac14cec4');\nhashMap.set('mint','b816a49c8525716454d0a2bc9127916d5b27e5cca7b2aa2030312f218942af3e');\nhashMap.set('mise','38177382f3785cfe7cce92994bfb429b68f5165e6eef1bdcd2c7a3d8d5414da2');\nhashMap.set('mix','1116e1adf1c18c866f0a9e6fa065c4fb9da055d8d150e625344899bb94095481');\nhashMap.set('nix','f3ffec2f14e7261de8068895b91392e992dcef208fbaf52110d6862e4712c031');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','eaf9fe4981de8f7504227f3be88445f60f87ba74f9b9c7e54284bc2bb41320b3');\nhashMap.set('nuget','42175b1906e8e91ae0731a13d92d0df065108063665f8a36150aeae73aafdc78');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','32233a1a8a2725699d7448ba438e3d0b78141f7799cd2b588de278d41e26ed10');\nhashMap.set('pep621','f503497a4adef31b29572176e9a69d52fa9b0bfe3477b6e228c906aeb4861de5');\nhashMap.set('pep723','b96683163de63ed93207ec0538066705b1e58a1cd5b8bd11c63fc28b26bddba1');\nhashMap.set('pip-compile','89152ad6c89f278395f32d289dc3890823c233366547d228e97dd1319aa144b5');\nhashMap.set('pip_requirements','d5c474c524bc7adc1aae065da0531bd22d9f7f52523b018f2461f6c29e12fdf3');\nhashMap.set('pip_setup','0175fe550c19d9bd31c978bd83fdc088cb40fcacd5d6751f640164274ae64e61');\nhashMap.set('pipenv','50f5a54ed714fd3d738c1aa9a353cf3aab767899acdcb763088d4bd04f3a737b');\nhashMap.set('pixi','b17af6eaa33e7babcc52cfc9a617c7801c0efb1125bbd6d0d4e9f6fe33afd353');\nhashMap.set('poetry','7f227b8b912b405df7735e9dc7c178f03021844f0c027d4b321c023c330c390a');\nhashMap.set('pre-commit','a6a6e847fdb0f56650e66ef7d69e68de752b390913f79ac31d1a7ec5955d03da');\nhashMap.set('pub','0fbad9f77579fcec3a623c6feab56e71934c67a79bb8f4f0f847452051d2a0ba');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','e355e13e104351a8b3516a8e272fc5f7e625c9f39b0c492ba27283a36227c2d4');\nhashMap.set('renovate-config-presets','a394fe55f8b6ba356f29f76efd9f0d34b56baceb111e6d92f95b29b5ca50ac67');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('sbt','74125bd9c76a5724092258cd1dee1ea99fc0d735b463a2b64fedc5d950efde2a');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','7dea08c5708625e753bd56918bc214df7fb4d8543a26e936926a21ab43b5f785');\nhashMap.set('sveltos','167a5cc79098803be3b815a28cc40ef3361c455751e1d6a7a99ba91bfce26709');\nhashMap.set('swift','79ec9a6a2a8bb4853bb78bbb3a2a6e64e3b32b0ddeb312385abb3a14366ad505');\nhashMap.set('tekton','4e35c75bba4abc9c3cf49c55da6c19db4f4e9181d1fd9583288ab55ef7c944fd');\nhashMap.set('terraform','5bd62ce12c23896b8ecb2385a60a3cb9eb72badf10f9984bfed38f50f9262266');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','b8474c65383a702602eee432cc1434f9a49a1ef886d1213de92d7a84fb98b9cd');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','4a975f0cc1aa22cd258aa835de3dc98d7a5c0d1cee0a1092324338968e08a827');\nhashMap.set('travis','bb482a0195cd009ec3896a6227bb95617f5c84bedb518c7d971e50c62235d9ca');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','4627230d3b7698c41aac192d57b65b091c860c8f858c89d6af4b06ed6a32fae6');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('jsonata','3b5f465b586993f92c8490e70885e7eecce9b6556bcc376dd9c11db8ee9e6960');\nhashMap.set('regex','7b643b49e498465cf91b25b8b840bb1fec8c8a3a59bfa8f97a39c976675325a0');"],"mappings":"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"}
1
+ {"version":3,"file":"fingerprint.generated.js","names":[],"sources":["../../../lib/modules/manager/fingerprint.generated.ts"],"sourcesContent":["export const hashMap = new Map<string, string>();\n\nhashMap.set('ansible','1fbc76f78daa14a8c9ab1142e9d1e05c746c0419a9f1455e4279f476590d0c04');\nhashMap.set('ansible-galaxy','8226d47128f2018825d4d6f84794e3183eb79c706045fa7e88491edd5e64106f');\nhashMap.set('ant','8640868d2249c9a0fbc57680fa81cf0c8c35f170258c50ac3ffb3a4f798cc5ae');\nhashMap.set('argocd','5d35b1992e53130bf83b0e59a0f90ccd3a78919974c69044f306dc5d162f48ce');\nhashMap.set('asdf','1f6fcf620e9c6cd35991380cb6eafb94ec60cd77cbd13335ebe3a1d9727416c9');\nhashMap.set('azure-pipelines','4f635b0ecd388ee266d992e8281fd40e3db2f5867d86fc1cbce72dc33a66e796');\nhashMap.set('batect','fad98996bea8626525ab925f83a6ae0ce9262c53770e7aa7cb448a1e0f1ddf21');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','c6e0ad88ea468664c3a33263baf7452d83d2d37ff09ba920e18f64ee81fd0acb');\nhashMap.set('bazel-module','ff071fcf8b53036956627d2a430ccdf256e30bee4d7e80c329379879d836a931');\nhashMap.set('bazelisk','b6ec532dfa7c8f82ad4084df864ac6276e87c27285369323902afc146d3537ac');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','59c0503494ab1442b127914503c01b97ac17b6742b19c632292d5aa24de115cd');\nhashMap.set('bitrise','478dfd316221fad7c29e177c70d1018d832fb2626b53308a5d0f1f0380e69f42');\nhashMap.set('buildkite','a93effb1f1c5d65b3277c3b4709924eacde282e8efd028a8e3d8c1ce3ef69407');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','1322232bf1d0c4fa796e31a00488453bdcd00d4958431d9e424c1635e60a99bd');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','6d7e9d2018ac03e15f19e8b40ef70dd87d509d5affca24bc464d085899880a25');\nhashMap.set('cake','288c3c36a50371b26957fa71992cc335228d53563c75597b36919ac7286e96eb');\nhashMap.set('cargo','308d7ab4c6d24027b050bf659dfab0e510d9a22f8134695a7c68214908ee4634');\nhashMap.set('cdnurl','d3edf6cdc38e92eb43ff5a2b4e8df6a6a13154cf83244725c39e28d7e6ea9177');\nhashMap.set('circleci','135937d4720718304adb0ba998516f8ce38c3220ccd18b00b8c70c62b45df4da');\nhashMap.set('cloudbuild','8c0c739f7e4082bbfe8e3fdffebaf43e26f70a1314d95b306e9b93e4f4297886');\nhashMap.set('cocoapods','b6ac3b4a6b8a5b32daed37bf695fe177cdb1b4a94ae7f7fb2f4c4c096c0a004c');\nhashMap.set('composer','cdb6895574020cec402e0b878e4078b62f1acfd0392a861cbb523036634f6383');\nhashMap.set('conan','aecc3917d77146db4e57dd12944be1beff860e90b7ebdd2d8fbc449fc1a06574');\nhashMap.set('copier','faa3b79991256a6fc0957fdcd530a1bc8aee65913d5aff2b1b4d226dcd44d008');\nhashMap.set('cpanfile','6a1d67d9c8751123deaf0c7f3ac38a07024e960c140f8228fcbcb93954fdca01');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deps-edn','c87dd5e88587147ad1a78f047b814f3c4aa60d6de30d0c49d849391eeaf1b64c');\nhashMap.set('devbox','bcf5334e8a21190baaa25436acf2f17fbf095504262a4e9ee7c62ffb644eb716');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','5441af5b5abf8d347e46002d47f02f85743401bda28232f49fb7b3bbb772a4fb');\nhashMap.set('dockerfile','322b95f7e55dd78d7fe71306a6f649479eca61c60d75bb10b23604a230dbdd08');\nhashMap.set('droneci','237c8de87b9bf653fb943b56e84e99c45f6d86ae27d86e599b3f3f99c35ba8ee');\nhashMap.set('fleet','d73d5d35f10df0599a561d9c8d25f3935350407d0e3bd3a1d1545295f278912e');\nhashMap.set('flux','427e0c1a5b1d8337503a9a568a76532fbde0bab8b355fa8f47312de50eadf2f6');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','fbbf1c7b7b6f4166fa3beee96a3283d007b388e9ecb6a14f76123c8ab8c78071');\nhashMap.set('github-actions','d8f83c65da1e80b639ad44a0d8641e7e97b1d93a1b6c873603333d337ad02011');\nhashMap.set('gitlabci','0dec44dd398bfc5b3c19d0929bea2fef7f386c94acfd1b1d7bc2a31d81d96fd6');\nhashMap.set('gitlabci-include','354cfc4ea327c6d5cd5bee1f17763832efc7f5402e9fd22c579239fccb9c6dab');\nhashMap.set('glasskube','253d6db30bdec75ed5ab5d26f31d69bc07813ba10089a28da12c6a29eff4ec70');\nhashMap.set('gleam','b717a48c525ad6b1d434c6a9db828ddebbb85e94519e89ddc4040878e3600e84');\nhashMap.set('gomod','82e877b22c0dd0217368760bb5d38430657fff63d07c289793a866f0845d2976');\nhashMap.set('gradle','f430d8d768b56889ad1e5a69965841e85cc700e364d15db7bce680e8a5d6f821');\nhashMap.set('gradle-wrapper','90d2ecb9d0b113f8e946d4ea221c040f17f91af846e1ff4f9fc1514ad4324b74');\nhashMap.set('haskell-cabal','d796ec6859e63ab4f1b7030c4016071202c3a44c7c11d4a9131d7e2ba19b396d');\nhashMap.set('helm-requirements','4d90e5e18a380876ad48e21e1ad88ea62e25d973a1ddaa3763447fc0a9f9915b');\nhashMap.set('helm-values','b5c52c6a27d805557418c585c5d3030c95ee641d53057021f3fe060f81b6e1af');\nhashMap.set('helmfile','e5783484b81247279563da3c835afe4002edfc412e13fb91877818ca44ae65f2');\nhashMap.set('helmsman','ef9680c612f702c7f07aea9b6e5d811e91214dcfa5755c9f3803e9528090935e');\nhashMap.set('helmv3','7724bf6cc3ff4afec1809899f619a332f4350049b9578b5c4634514b4448cf2b');\nhashMap.set('hermit','672c328e4baea3a1ccd2cde2364db01c8033a8c077bf63a5b914fc20ee1de838');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','56ef90301143874355fd2ed25dff7c646875f701f97422d02e01d45608a88f31');\nhashMap.set('html','67c5f3c5c58e96f5dd257ba5987d900cf7fef81d667c3640e96c847b37de35a8');\nhashMap.set('jenkins','268ebfc8a1caf3edeb2192c2b1b2fa4bf18a78a3e731ba20a6c104940a5539f3');\nhashMap.set('jsonnet-bundler','4b73c32ddc3fe45d9777106d45b116777a2960e6e631256a6553060e602f893c');\nhashMap.set('kotlin-script','99ef296792a0ca575ed31d3defb514b05a58083dc01c52ea0890c69d867ba1dd');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','1e44d6ef8622252dac6d9649fb04badd12d4827eb2a55f74792aa9de2b915775');\nhashMap.set('leiningen','133fca2c3423f53f2ccc22518153ddbcafbf0f4812376c77e952eb3d24d81f85');\nhashMap.set('maven','fd6bfc21be851ed076eabea1a91a89b25eb82129734c7cb0c2e684385cf1ea69');\nhashMap.set('maven-wrapper','9a868d1328f911eb72f9e65a64d46c86ae347aab0153d1cf4e9a62ad9e0d6cb0');\nhashMap.set('meteor','4a93a326b27bedfe52118e27e06f39fecd7c55bd4cd7fccec4cb120cac14cec4');\nhashMap.set('mint','b816a49c8525716454d0a2bc9127916d5b27e5cca7b2aa2030312f218942af3e');\nhashMap.set('mise','38177382f3785cfe7cce92994bfb429b68f5165e6eef1bdcd2c7a3d8d5414da2');\nhashMap.set('mix','1116e1adf1c18c866f0a9e6fa065c4fb9da055d8d150e625344899bb94095481');\nhashMap.set('nix','f3ffec2f14e7261de8068895b91392e992dcef208fbaf52110d6862e4712c031');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','eaf9fe4981de8f7504227f3be88445f60f87ba74f9b9c7e54284bc2bb41320b3');\nhashMap.set('nuget','42175b1906e8e91ae0731a13d92d0df065108063665f8a36150aeae73aafdc78');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','32233a1a8a2725699d7448ba438e3d0b78141f7799cd2b588de278d41e26ed10');\nhashMap.set('pep621','f503497a4adef31b29572176e9a69d52fa9b0bfe3477b6e228c906aeb4861de5');\nhashMap.set('pep723','b96683163de63ed93207ec0538066705b1e58a1cd5b8bd11c63fc28b26bddba1');\nhashMap.set('pip-compile','89152ad6c89f278395f32d289dc3890823c233366547d228e97dd1319aa144b5');\nhashMap.set('pip_requirements','d5c474c524bc7adc1aae065da0531bd22d9f7f52523b018f2461f6c29e12fdf3');\nhashMap.set('pip_setup','0175fe550c19d9bd31c978bd83fdc088cb40fcacd5d6751f640164274ae64e61');\nhashMap.set('pipenv','50f5a54ed714fd3d738c1aa9a353cf3aab767899acdcb763088d4bd04f3a737b');\nhashMap.set('pixi','b17af6eaa33e7babcc52cfc9a617c7801c0efb1125bbd6d0d4e9f6fe33afd353');\nhashMap.set('poetry','7f227b8b912b405df7735e9dc7c178f03021844f0c027d4b321c023c330c390a');\nhashMap.set('pre-commit','a6a6e847fdb0f56650e66ef7d69e68de752b390913f79ac31d1a7ec5955d03da');\nhashMap.set('pub','0fbad9f77579fcec3a623c6feab56e71934c67a79bb8f4f0f847452051d2a0ba');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','e355e13e104351a8b3516a8e272fc5f7e625c9f39b0c492ba27283a36227c2d4');\nhashMap.set('renovate-config-presets','a394fe55f8b6ba356f29f76efd9f0d34b56baceb111e6d92f95b29b5ca50ac67');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('sbt','74125bd9c76a5724092258cd1dee1ea99fc0d735b463a2b64fedc5d950efde2a');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','7dea08c5708625e753bd56918bc214df7fb4d8543a26e936926a21ab43b5f785');\nhashMap.set('sveltos','167a5cc79098803be3b815a28cc40ef3361c455751e1d6a7a99ba91bfce26709');\nhashMap.set('swift','79ec9a6a2a8bb4853bb78bbb3a2a6e64e3b32b0ddeb312385abb3a14366ad505');\nhashMap.set('tekton','4e35c75bba4abc9c3cf49c55da6c19db4f4e9181d1fd9583288ab55ef7c944fd');\nhashMap.set('terraform','51aa6b0a49001494e7ee718d01312961c7fbd244831b42ceefd690d75404e795');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','b8474c65383a702602eee432cc1434f9a49a1ef886d1213de92d7a84fb98b9cd');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','4a975f0cc1aa22cd258aa835de3dc98d7a5c0d1cee0a1092324338968e08a827');\nhashMap.set('travis','bb482a0195cd009ec3896a6227bb95617f5c84bedb518c7d971e50c62235d9ca');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','4627230d3b7698c41aac192d57b65b091c860c8f858c89d6af4b06ed6a32fae6');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('xcodegen','dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683');\nhashMap.set('jsonata','3b5f465b586993f92c8490e70885e7eecce9b6556bcc376dd9c11db8ee9e6960');\nhashMap.set('regex','7b643b49e498465cf91b25b8b840bb1fec8c8a3a59bfa8f97a39c976675325a0');"],"mappings":"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"}
@@ -17,14 +17,14 @@ var TerraformProviderExtractor = class extends DependencyExtractor {
17
17
  dep.skipReason = "unsupported-url";
18
18
  return dep;
19
19
  }
20
- if (source.groups.namespace === "terraform-providers") dep.registryUrls = [`https://releases.hashicorp.com`];
20
+ if (source.groups.namespace === "terraform-providers") dep.registryUrls = [TerraformProviderDatasource.hashicorpReleaseUrl];
21
21
  else if (source.groups.hostname) {
22
22
  dep.registryUrls = [`https://${source.groups.hostname}`];
23
23
  dep.packageName = `${source.groups.namespace}/${source.groups.type}`;
24
24
  } else {
25
25
  dep.packageName = dep.managerData?.source;
26
26
  const foundLocks = locks.filter((lock) => lock.packageName === dep.packageName);
27
- if (foundLocks.length === 1 && foundLocks[0].registryUrl !== TerraformProviderDatasource.defaultRegistryUrls[0]) {
27
+ if (foundLocks.length === 1 && foundLocks[0].registryUrl !== TerraformProviderDatasource.terraformRegistryUrl) {
28
28
  logger.debug({
29
29
  dep,
30
30
  foundLocks
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","names":[],"sources":["../../../../lib/modules/manager/terraform/base.ts"],"sourcesContent":["import { isNonEmptyString } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { TerraformProviderDatasource } from '../../datasource/terraform-provider/index.ts';\nimport type { ExtractConfig, PackageDependency } from '../types.ts';\nimport type { TerraformDefinitionFile } from './hcl/types.ts';\nimport type { ProviderLock } from './lockfile/types.ts';\nimport { getLockedVersion, massageProviderLookupName } from './util.ts';\n\nexport abstract class DependencyExtractor {\n /**\n * Get a list of signals which can be used to scan for potential processable content\n * @return a list of content signals\n */\n abstract getCheckList(): string[];\n\n /**\n * Extract dependencies from a HCL object\n * @param hclRoot HCL parsing artifact.\n * @param locks currently existing locks\n */\n abstract extract(\n hclRoot: TerraformDefinitionFile,\n locks: ProviderLock[],\n config: ExtractConfig,\n ): PackageDependency[];\n}\n\nexport abstract class TerraformProviderExtractor extends DependencyExtractor {\n sourceExtractionRegex = regEx(\n /^(?:(?<hostname>(?:[a-zA-Z0-9-_]+\\.+)+[a-zA-Z0-9-_]+)\\/)?(?:(?<namespace>[^/]+)\\/)?(?<type>[^/]+)/,\n );\n\n protected analyzeTerraformProvider(\n dep: PackageDependency,\n locks: ProviderLock[],\n depType: string,\n ): PackageDependency {\n dep.depType = depType;\n dep.depName = dep.managerData?.moduleName;\n dep.datasource = TerraformProviderDatasource.id;\n\n if (isNonEmptyString(dep.managerData?.source)) {\n // TODO #22198\n const source = this.sourceExtractionRegex.exec(dep.managerData.source);\n if (!source?.groups) {\n dep.skipReason = 'unsupported-url';\n return dep;\n }\n\n // buildin providers https://github.com/terraform-providers\n if (source.groups.namespace === 'terraform-providers') {\n dep.registryUrls = [`https://releases.hashicorp.com`];\n } else if (source.groups.hostname) {\n dep.registryUrls = [`https://${source.groups.hostname}`];\n dep.packageName = `${source.groups.namespace}/${source.groups.type}`;\n } else {\n dep.packageName = dep.managerData?.source;\n const foundLocks = locks.filter(\n (lock) => lock.packageName === dep.packageName,\n );\n\n if (\n foundLocks.length === 1 &&\n foundLocks[0].registryUrl !==\n TerraformProviderDatasource.defaultRegistryUrls[0]\n ) {\n logger.debug(\n { dep, foundLocks },\n 'Terraform: Single lock found for provider with non-default registry URL',\n );\n dep.registryUrls = [foundLocks[0].registryUrl];\n } else if (foundLocks.length > 1) {\n logger.debug(\n { dep, foundLocks },\n 'Terraform: Multiple locks found for provider unable to determine registry URL',\n );\n }\n }\n }\n massageProviderLookupName(dep);\n\n dep.lockedVersion = getLockedVersion(dep, locks);\n\n if (!dep.currentValue) {\n dep.skipReason = 'unspecified-version';\n }\n\n return dep;\n }\n}\n"],"mappings":";;;;;;AASA,IAAsB,sBAAtB,MAA0C;AAmB1C,IAAsB,6BAAtB,cAAyD,oBAAoB;CAC3E,wBAAwB,MACtB,oGACD;CAED,yBACE,KACA,OACA,SACmB;AACnB,MAAI,UAAU;AACd,MAAI,UAAU,IAAI,aAAa;AAC/B,MAAI,aAAa,4BAA4B;AAE7C,MAAI,iBAAiB,IAAI,aAAa,OAAO,EAAE;GAE7C,MAAM,SAAS,KAAK,sBAAsB,KAAK,IAAI,YAAY,OAAO;AACtE,OAAI,CAAC,QAAQ,QAAQ;AACnB,QAAI,aAAa;AACjB,WAAO;;AAIT,OAAI,OAAO,OAAO,cAAc,sBAC9B,KAAI,eAAe,CAAC,iCAAiC;YAC5C,OAAO,OAAO,UAAU;AACjC,QAAI,eAAe,CAAC,WAAW,OAAO,OAAO,WAAW;AACxD,QAAI,cAAc,GAAG,OAAO,OAAO,UAAU,GAAG,OAAO,OAAO;UACzD;AACL,QAAI,cAAc,IAAI,aAAa;IACnC,MAAM,aAAa,MAAM,QACtB,SAAS,KAAK,gBAAgB,IAAI,YACpC;AAED,QACE,WAAW,WAAW,KACtB,WAAW,GAAG,gBACZ,4BAA4B,oBAAoB,IAClD;AACA,YAAO,MACL;MAAE;MAAK;MAAY,EACnB,0EACD;AACD,SAAI,eAAe,CAAC,WAAW,GAAG,YAAY;eACrC,WAAW,SAAS,EAC7B,QAAO,MACL;KAAE;KAAK;KAAY,EACnB,gFACD;;;AAIP,4BAA0B,IAAI;AAE9B,MAAI,gBAAgB,iBAAiB,KAAK,MAAM;AAEhD,MAAI,CAAC,IAAI,aACP,KAAI,aAAa;AAGnB,SAAO"}
1
+ {"version":3,"file":"base.js","names":[],"sources":["../../../../lib/modules/manager/terraform/base.ts"],"sourcesContent":["import { isNonEmptyString } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { TerraformProviderDatasource } from '../../datasource/terraform-provider/index.ts';\nimport type { ExtractConfig, PackageDependency } from '../types.ts';\nimport type { TerraformDefinitionFile } from './hcl/types.ts';\nimport type { ProviderLock } from './lockfile/types.ts';\nimport { getLockedVersion, massageProviderLookupName } from './util.ts';\n\nexport abstract class DependencyExtractor {\n /**\n * Get a list of signals which can be used to scan for potential processable content\n * @return a list of content signals\n */\n abstract getCheckList(): string[];\n\n /**\n * Extract dependencies from a HCL object\n * @param hclRoot HCL parsing artifact.\n * @param locks currently existing locks\n */\n abstract extract(\n hclRoot: TerraformDefinitionFile,\n locks: ProviderLock[],\n config: ExtractConfig,\n ): PackageDependency[];\n}\n\nexport abstract class TerraformProviderExtractor extends DependencyExtractor {\n sourceExtractionRegex = regEx(\n /^(?:(?<hostname>(?:[a-zA-Z0-9-_]+\\.+)+[a-zA-Z0-9-_]+)\\/)?(?:(?<namespace>[^/]+)\\/)?(?<type>[^/]+)/,\n );\n\n protected analyzeTerraformProvider(\n dep: PackageDependency,\n locks: ProviderLock[],\n depType: string,\n ): PackageDependency {\n dep.depType = depType;\n dep.depName = dep.managerData?.moduleName;\n dep.datasource = TerraformProviderDatasource.id;\n\n if (isNonEmptyString(dep.managerData?.source)) {\n // TODO #22198\n const source = this.sourceExtractionRegex.exec(dep.managerData.source);\n if (!source?.groups) {\n dep.skipReason = 'unsupported-url';\n return dep;\n }\n\n // buildin providers https://github.com/terraform-providers\n if (source.groups.namespace === 'terraform-providers') {\n dep.registryUrls = [TerraformProviderDatasource.hashicorpReleaseUrl];\n } else if (source.groups.hostname) {\n dep.registryUrls = [`https://${source.groups.hostname}`];\n dep.packageName = `${source.groups.namespace}/${source.groups.type}`;\n } else {\n dep.packageName = dep.managerData?.source;\n const foundLocks = locks.filter(\n (lock) => lock.packageName === dep.packageName,\n );\n\n if (\n foundLocks.length === 1 &&\n foundLocks[0].registryUrl !==\n TerraformProviderDatasource.terraformRegistryUrl\n ) {\n logger.debug(\n { dep, foundLocks },\n 'Terraform: Single lock found for provider with non-default registry URL',\n );\n dep.registryUrls = [foundLocks[0].registryUrl];\n } else if (foundLocks.length > 1) {\n logger.debug(\n { dep, foundLocks },\n 'Terraform: Multiple locks found for provider unable to determine registry URL',\n );\n }\n }\n }\n massageProviderLookupName(dep);\n\n dep.lockedVersion = getLockedVersion(dep, locks);\n\n if (!dep.currentValue) {\n dep.skipReason = 'unspecified-version';\n }\n\n return dep;\n }\n}\n"],"mappings":";;;;;;AASA,IAAsB,sBAAtB,MAA0C;AAmB1C,IAAsB,6BAAtB,cAAyD,oBAAoB;CAC3E,wBAAwB,MACtB,oGACD;CAED,yBACE,KACA,OACA,SACmB;AACnB,MAAI,UAAU;AACd,MAAI,UAAU,IAAI,aAAa;AAC/B,MAAI,aAAa,4BAA4B;AAE7C,MAAI,iBAAiB,IAAI,aAAa,OAAO,EAAE;GAE7C,MAAM,SAAS,KAAK,sBAAsB,KAAK,IAAI,YAAY,OAAO;AACtE,OAAI,CAAC,QAAQ,QAAQ;AACnB,QAAI,aAAa;AACjB,WAAO;;AAIT,OAAI,OAAO,OAAO,cAAc,sBAC9B,KAAI,eAAe,CAAC,4BAA4B,oBAAoB;YAC3D,OAAO,OAAO,UAAU;AACjC,QAAI,eAAe,CAAC,WAAW,OAAO,OAAO,WAAW;AACxD,QAAI,cAAc,GAAG,OAAO,OAAO,UAAU,GAAG,OAAO,OAAO;UACzD;AACL,QAAI,cAAc,IAAI,aAAa;IACnC,MAAM,aAAa,MAAM,QACtB,SAAS,KAAK,gBAAgB,IAAI,YACpC;AAED,QACE,WAAW,WAAW,KACtB,WAAW,GAAG,gBACZ,4BAA4B,sBAC9B;AACA,YAAO,MACL;MAAE;MAAK;MAAY,EACnB,0EACD;AACD,SAAI,eAAe,CAAC,WAAW,GAAG,YAAY;eACrC,WAAW,SAAS,EAC7B,QAAO,MACL;KAAE;KAAK;KAAY,EACnB,gFACD;;;AAIP,4BAA0B,IAAI;AAE9B,MAAI,gBAAgB,iBAAiB,KAAK,MAAM;AAEhD,MAAI,CAAC,IAAI,aACP,KAAI,aAAa;AAGnB,SAAO"}
@@ -0,0 +1,142 @@
1
+ import { coerceString } from "../../../util/string.js";
2
+ import { logger } from "../../../logger/index.js";
3
+ import { detectPlatform } from "../../../util/common.js";
4
+ import { parseGitUrl } from "../../../util/git/url.js";
5
+ import { GitTagsDatasource } from "../../datasource/git-tags/index.js";
6
+ import { GithubTagsDatasource } from "../../datasource/github-tags/index.js";
7
+ import { GitlabTagsDatasource } from "../../datasource/gitlab-tags/index.js";
8
+ import { XcodeGenProjectFile } from "./schema.js";
9
+ //#region lib/modules/manager/xcodegen/extract.ts
10
+ function resolvePackageUrl(pkg) {
11
+ if (pkg.url) return pkg.url;
12
+ if (pkg.github) return `https://github.com/${pkg.github}`;
13
+ return null;
14
+ }
15
+ function resolveGitDep(url) {
16
+ switch (detectPlatform(url)) {
17
+ case "github": {
18
+ const { full_name, host, protocol } = parseGitUrl(url);
19
+ return {
20
+ datasource: GithubTagsDatasource.id,
21
+ packageName: full_name,
22
+ ...host !== "github.com" && { registryUrls: [`${protocol}://${host}`] }
23
+ };
24
+ }
25
+ case "gitlab": {
26
+ const { full_name, host, protocol } = parseGitUrl(url);
27
+ return {
28
+ datasource: GitlabTagsDatasource.id,
29
+ packageName: full_name,
30
+ ...host !== "gitlab.com" && { registryUrls: [`${protocol}://${host}`] }
31
+ };
32
+ }
33
+ default: return {
34
+ datasource: GitTagsDatasource.id,
35
+ packageName: url
36
+ };
37
+ }
38
+ }
39
+ function resolveCurrentValue(pkg) {
40
+ if (pkg.from) return {
41
+ currentValue: pkg.from,
42
+ depType: "from"
43
+ };
44
+ if (pkg.majorVersion) return {
45
+ currentValue: pkg.majorVersion,
46
+ depType: "majorVersion"
47
+ };
48
+ if (pkg.minorVersion) return {
49
+ currentValue: pkg.minorVersion,
50
+ depType: "minorVersion"
51
+ };
52
+ if (pkg.exactVersion) return {
53
+ currentValue: pkg.exactVersion,
54
+ depType: "exactVersion"
55
+ };
56
+ if (pkg.version) return {
57
+ currentValue: pkg.version,
58
+ depType: "version"
59
+ };
60
+ return null;
61
+ }
62
+ function extractPackageFile(content, packageFile) {
63
+ let parsed;
64
+ try {
65
+ parsed = XcodeGenProjectFile.parse(content);
66
+ } catch (err) {
67
+ logger.debug({
68
+ err,
69
+ packageFile
70
+ }, "Parsing XcodeGen project YAML failed");
71
+ return null;
72
+ }
73
+ if (!parsed.packages) {
74
+ logger.trace({ packageFile }, "XcodeGen project file has no packages");
75
+ return null;
76
+ }
77
+ const deps = [];
78
+ for (const [depName, pkg] of Object.entries(parsed.packages)) {
79
+ if (pkg.path) {
80
+ deps.push({
81
+ depName,
82
+ skipReason: "path-dependency"
83
+ });
84
+ continue;
85
+ }
86
+ const resolvedUrl = resolvePackageUrl(pkg);
87
+ if (!resolvedUrl) {
88
+ deps.push({
89
+ depName,
90
+ skipReason: "invalid-url"
91
+ });
92
+ continue;
93
+ }
94
+ if (pkg.branch) {
95
+ deps.push({
96
+ depName,
97
+ skipReason: "unversioned-reference",
98
+ currentValue: pkg.branch
99
+ });
100
+ continue;
101
+ }
102
+ if (pkg.revision) {
103
+ deps.push({
104
+ depName,
105
+ skipReason: "unversioned-reference",
106
+ currentValue: pkg.revision
107
+ });
108
+ continue;
109
+ }
110
+ if (pkg.minVersion !== void 0 || pkg.maxVersion !== void 0) {
111
+ deps.push({
112
+ depName,
113
+ skipReason: "unsupported-version",
114
+ currentValue: `${coerceString(pkg.minVersion)} - ${coerceString(pkg.maxVersion)}`.trim()
115
+ });
116
+ continue;
117
+ }
118
+ const versionInfo = resolveCurrentValue(pkg);
119
+ if (!versionInfo) {
120
+ deps.push({
121
+ depName,
122
+ skipReason: "unspecified-version"
123
+ });
124
+ continue;
125
+ }
126
+ const { datasource, packageName, registryUrls } = resolveGitDep(resolvedUrl);
127
+ deps.push({
128
+ depName,
129
+ packageName,
130
+ datasource,
131
+ ...registryUrls && { registryUrls },
132
+ currentValue: versionInfo.currentValue,
133
+ depType: versionInfo.depType
134
+ });
135
+ }
136
+ if (deps.length === 0) return null;
137
+ return { deps };
138
+ }
139
+ //#endregion
140
+ export { extractPackageFile };
141
+
142
+ //# sourceMappingURL=extract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/xcodegen/extract.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport { detectPlatform } from '../../../util/common.ts';\nimport { parseGitUrl } from '../../../util/git/url.ts';\nimport { coerceString } from '../../../util/string.ts';\nimport { GitTagsDatasource } from '../../datasource/git-tags/index.ts';\nimport { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';\nimport { GitlabTagsDatasource } from '../../datasource/gitlab-tags/index.ts';\nimport type { PackageDependency, PackageFileContent } from '../types.ts';\nimport type { XcodeGenSwiftPackage } from './schema.ts';\nimport { XcodeGenProjectFile } from './schema.ts';\n\nfunction resolvePackageUrl(pkg: XcodeGenSwiftPackage): string | null {\n if (pkg.url) {\n return pkg.url;\n }\n\n if (pkg.github) {\n return `https://github.com/${pkg.github}`;\n }\n\n return null;\n}\n\nfunction resolveGitDep(\n url: string,\n): Pick<PackageDependency, 'datasource' | 'packageName' | 'registryUrls'> {\n const platform = detectPlatform(url);\n\n switch (platform) {\n case 'github': {\n const { full_name, host, protocol } = parseGitUrl(url);\n return {\n datasource: GithubTagsDatasource.id,\n packageName: full_name,\n ...(host !== 'github.com' && {\n registryUrls: [`${protocol}://${host}`],\n }),\n };\n }\n case 'gitlab': {\n const { full_name, host, protocol } = parseGitUrl(url);\n return {\n datasource: GitlabTagsDatasource.id,\n packageName: full_name,\n ...(host !== 'gitlab.com' && {\n registryUrls: [`${protocol}://${host}`],\n }),\n };\n }\n default:\n return { datasource: GitTagsDatasource.id, packageName: url };\n }\n}\n\nfunction resolveCurrentValue(\n pkg: XcodeGenSwiftPackage,\n): { currentValue: string; depType: string } | null {\n if (pkg.from) {\n return { currentValue: pkg.from, depType: 'from' };\n }\n\n if (pkg.majorVersion) {\n return { currentValue: pkg.majorVersion, depType: 'majorVersion' };\n }\n\n if (pkg.minorVersion) {\n return { currentValue: pkg.minorVersion, depType: 'minorVersion' };\n }\n\n if (pkg.exactVersion) {\n return { currentValue: pkg.exactVersion, depType: 'exactVersion' };\n }\n\n if (pkg.version) {\n return { currentValue: pkg.version, depType: 'version' };\n }\n\n return null;\n}\n\nexport function extractPackageFile(\n content: string,\n packageFile?: string,\n): PackageFileContent | null {\n let parsed: XcodeGenProjectFile;\n try {\n parsed = XcodeGenProjectFile.parse(content);\n } catch (err) {\n logger.debug({ err, packageFile }, 'Parsing XcodeGen project YAML failed');\n return null;\n }\n\n if (!parsed.packages) {\n logger.trace({ packageFile }, 'XcodeGen project file has no packages');\n return null;\n }\n\n const deps: PackageDependency[] = [];\n\n for (const [depName, pkg] of Object.entries(parsed.packages)) {\n // Skip local packages\n if (pkg.path) {\n deps.push({\n depName,\n skipReason: 'path-dependency',\n });\n continue;\n }\n\n const resolvedUrl = resolvePackageUrl(pkg);\n if (!resolvedUrl) {\n deps.push({\n depName,\n skipReason: 'invalid-url',\n });\n continue;\n }\n\n // Skip branch/revision references\n if (pkg.branch) {\n deps.push({\n depName,\n skipReason: 'unversioned-reference',\n currentValue: pkg.branch,\n });\n continue;\n }\n\n if (pkg.revision) {\n deps.push({\n depName,\n skipReason: 'unversioned-reference',\n currentValue: pkg.revision,\n });\n continue;\n }\n\n // Skip minVersion/maxVersion range constraints\n if (pkg.minVersion !== undefined || pkg.maxVersion !== undefined) {\n deps.push({\n depName,\n skipReason: 'unsupported-version',\n currentValue:\n `${coerceString(pkg.minVersion)} - ${coerceString(pkg.maxVersion)}`.trim(),\n });\n continue;\n }\n\n const versionInfo = resolveCurrentValue(pkg);\n if (!versionInfo) {\n deps.push({\n depName,\n skipReason: 'unspecified-version',\n });\n continue;\n }\n\n const { datasource, packageName, registryUrls } =\n resolveGitDep(resolvedUrl);\n\n deps.push({\n depName,\n packageName,\n datasource,\n ...(registryUrls && { registryUrls }),\n currentValue: versionInfo.currentValue,\n depType: versionInfo.depType,\n });\n }\n\n if (deps.length === 0) {\n return null;\n }\n\n return { deps };\n}\n"],"mappings":";;;;;;;;;AAWA,SAAS,kBAAkB,KAA0C;AACnE,KAAI,IAAI,IACN,QAAO,IAAI;AAGb,KAAI,IAAI,OACN,QAAO,sBAAsB,IAAI;AAGnC,QAAO;;AAGT,SAAS,cACP,KACwE;AAGxE,SAFiB,eAAe,IAAI,EAEpC;EACE,KAAK,UAAU;GACb,MAAM,EAAE,WAAW,MAAM,aAAa,YAAY,IAAI;AACtD,UAAO;IACL,YAAY,qBAAqB;IACjC,aAAa;IACb,GAAI,SAAS,gBAAgB,EAC3B,cAAc,CAAC,GAAG,SAAS,KAAK,OAAO,EACxC;IACF;;EAEH,KAAK,UAAU;GACb,MAAM,EAAE,WAAW,MAAM,aAAa,YAAY,IAAI;AACtD,UAAO;IACL,YAAY,qBAAqB;IACjC,aAAa;IACb,GAAI,SAAS,gBAAgB,EAC3B,cAAc,CAAC,GAAG,SAAS,KAAK,OAAO,EACxC;IACF;;EAEH,QACE,QAAO;GAAE,YAAY,kBAAkB;GAAI,aAAa;GAAK;;;AAInE,SAAS,oBACP,KACkD;AAClD,KAAI,IAAI,KACN,QAAO;EAAE,cAAc,IAAI;EAAM,SAAS;EAAQ;AAGpD,KAAI,IAAI,aACN,QAAO;EAAE,cAAc,IAAI;EAAc,SAAS;EAAgB;AAGpE,KAAI,IAAI,aACN,QAAO;EAAE,cAAc,IAAI;EAAc,SAAS;EAAgB;AAGpE,KAAI,IAAI,aACN,QAAO;EAAE,cAAc,IAAI;EAAc,SAAS;EAAgB;AAGpE,KAAI,IAAI,QACN,QAAO;EAAE,cAAc,IAAI;EAAS,SAAS;EAAW;AAG1D,QAAO;;AAGT,SAAgB,mBACd,SACA,aAC2B;CAC3B,IAAI;AACJ,KAAI;AACF,WAAS,oBAAoB,MAAM,QAAQ;UACpC,KAAK;AACZ,SAAO,MAAM;GAAE;GAAK;GAAa,EAAE,uCAAuC;AAC1E,SAAO;;AAGT,KAAI,CAAC,OAAO,UAAU;AACpB,SAAO,MAAM,EAAE,aAAa,EAAE,wCAAwC;AACtE,SAAO;;CAGT,MAAM,OAA4B,EAAE;AAEpC,MAAK,MAAM,CAAC,SAAS,QAAQ,OAAO,QAAQ,OAAO,SAAS,EAAE;AAE5D,MAAI,IAAI,MAAM;AACZ,QAAK,KAAK;IACR;IACA,YAAY;IACb,CAAC;AACF;;EAGF,MAAM,cAAc,kBAAkB,IAAI;AAC1C,MAAI,CAAC,aAAa;AAChB,QAAK,KAAK;IACR;IACA,YAAY;IACb,CAAC;AACF;;AAIF,MAAI,IAAI,QAAQ;AACd,QAAK,KAAK;IACR;IACA,YAAY;IACZ,cAAc,IAAI;IACnB,CAAC;AACF;;AAGF,MAAI,IAAI,UAAU;AAChB,QAAK,KAAK;IACR;IACA,YAAY;IACZ,cAAc,IAAI;IACnB,CAAC;AACF;;AAIF,MAAI,IAAI,eAAe,KAAA,KAAa,IAAI,eAAe,KAAA,GAAW;AAChE,QAAK,KAAK;IACR;IACA,YAAY;IACZ,cACE,GAAG,aAAa,IAAI,WAAW,CAAC,KAAK,aAAa,IAAI,WAAW,GAAG,MAAM;IAC7E,CAAC;AACF;;EAGF,MAAM,cAAc,oBAAoB,IAAI;AAC5C,MAAI,CAAC,aAAa;AAChB,QAAK,KAAK;IACR;IACA,YAAY;IACb,CAAC;AACF;;EAGF,MAAM,EAAE,YAAY,aAAa,iBAC/B,cAAc,YAAY;AAE5B,OAAK,KAAK;GACR;GACA;GACA;GACA,GAAI,gBAAgB,EAAE,cAAc;GACpC,cAAc,YAAY;GAC1B,SAAS,YAAY;GACtB,CAAC;;AAGJ,KAAI,KAAK,WAAW,EAClB,QAAO;AAGT,QAAO,EAAE,MAAM"}
@@ -0,0 +1,30 @@
1
+ import { __exportAll } from "../../../_virtual/_rolldown/runtime.js";
2
+ import { GitTagsDatasource } from "../../datasource/git-tags/index.js";
3
+ import { GithubTagsDatasource } from "../../datasource/github-tags/index.js";
4
+ import { GitlabTagsDatasource } from "../../datasource/gitlab-tags/index.js";
5
+ import { extractPackageFile } from "./extract.js";
6
+ //#region lib/modules/manager/xcodegen/index.ts
7
+ var xcodegen_exports = /* @__PURE__ */ __exportAll({
8
+ categories: () => categories,
9
+ defaultConfig: () => defaultConfig,
10
+ displayName: () => displayName,
11
+ extractPackageFile: () => extractPackageFile,
12
+ supportedDatasources: () => supportedDatasources,
13
+ url: () => url
14
+ });
15
+ const displayName = "XcodeGen";
16
+ const url = "https://github.com/yonaskolb/XcodeGen";
17
+ const categories = ["swift"];
18
+ const defaultConfig = {
19
+ managerFilePatterns: ["**/project.yml"],
20
+ pinDigests: false
21
+ };
22
+ const supportedDatasources = [
23
+ GitTagsDatasource.id,
24
+ GithubTagsDatasource.id,
25
+ GitlabTagsDatasource.id
26
+ ];
27
+ //#endregion
28
+ export { xcodegen_exports };
29
+
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../lib/modules/manager/xcodegen/index.ts"],"sourcesContent":["import type { Category } from '../../../constants/index.ts';\nimport { GitTagsDatasource } from '../../datasource/git-tags/index.ts';\nimport { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';\nimport { GitlabTagsDatasource } from '../../datasource/gitlab-tags/index.ts';\n\nexport { extractPackageFile } from './extract.ts';\n\nexport const displayName = 'XcodeGen';\nexport const url = 'https://github.com/yonaskolb/XcodeGen';\nexport const categories: Category[] = ['swift'];\n\nexport const defaultConfig = {\n managerFilePatterns: ['**/project.yml'],\n pinDigests: false,\n};\n\nexport const supportedDatasources = [\n GitTagsDatasource.id,\n GithubTagsDatasource.id,\n GitlabTagsDatasource.id,\n];\n"],"mappings":";;;;;;;;;;;;;;AAOA,MAAa,cAAc;AAC3B,MAAa,MAAM;AACnB,MAAa,aAAyB,CAAC,QAAQ;AAE/C,MAAa,gBAAgB;CAC3B,qBAAqB,CAAC,iBAAiB;CACvC,YAAY;CACb;AAED,MAAa,uBAAuB;CAClC,kBAAkB;CAClB,qBAAqB;CACrB,qBAAqB;CACtB"}
@@ -0,0 +1,25 @@
1
+ import { LooseRecord, Yaml } from "../../../util/schema-utils/index.js";
2
+ import { z } from "zod/v3";
3
+ //#region lib/modules/manager/xcodegen/schema.ts
4
+ const VersionField = z.union([z.string(), z.number()]).optional().transform((val) => val?.toString());
5
+ const XcodeGenSwiftPackage = z.object({
6
+ url: z.string().optional(),
7
+ github: z.string().optional(),
8
+ path: z.string().optional(),
9
+ from: VersionField,
10
+ majorVersion: VersionField,
11
+ minorVersion: VersionField,
12
+ exactVersion: VersionField,
13
+ version: VersionField,
14
+ minVersion: VersionField,
15
+ maxVersion: VersionField,
16
+ branch: z.string().optional(),
17
+ revision: z.string().optional(),
18
+ group: z.string().optional(),
19
+ excludeFromProject: z.boolean().optional()
20
+ });
21
+ const XcodeGenProjectFile = Yaml.pipe(z.object({ packages: LooseRecord(XcodeGenSwiftPackage).optional() }));
22
+ //#endregion
23
+ export { XcodeGenProjectFile };
24
+
25
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","names":[],"sources":["../../../../lib/modules/manager/xcodegen/schema.ts"],"sourcesContent":["import { z } from 'zod/v3';\nimport { LooseRecord, Yaml } from '../../../util/schema-utils/index.ts';\n\nconst VersionField = z\n .union([z.string(), z.number()])\n .optional()\n .transform((val) => val?.toString());\n\nconst XcodeGenSwiftPackage = z.object({\n url: z.string().optional(),\n github: z.string().optional(),\n path: z.string().optional(),\n from: VersionField,\n majorVersion: VersionField,\n minorVersion: VersionField,\n exactVersion: VersionField,\n version: VersionField,\n minVersion: VersionField,\n maxVersion: VersionField,\n branch: z.string().optional(),\n revision: z.string().optional(),\n group: z.string().optional(),\n excludeFromProject: z.boolean().optional(),\n});\n\nexport type XcodeGenSwiftPackage = z.infer<typeof XcodeGenSwiftPackage>;\n\nexport const XcodeGenProjectFile = Yaml.pipe(\n z.object({\n packages: LooseRecord(XcodeGenSwiftPackage).optional(),\n }),\n);\n\nexport type XcodeGenProjectFile = z.infer<typeof XcodeGenProjectFile>;\n"],"mappings":";;;AAGA,MAAM,eAAe,EAClB,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC,CAC/B,UAAU,CACV,WAAW,QAAQ,KAAK,UAAU,CAAC;AAEtC,MAAM,uBAAuB,EAAE,OAAO;CACpC,KAAK,EAAE,QAAQ,CAAC,UAAU;CAC1B,QAAQ,EAAE,QAAQ,CAAC,UAAU;CAC7B,MAAM,EAAE,QAAQ,CAAC,UAAU;CAC3B,MAAM;CACN,cAAc;CACd,cAAc;CACd,cAAc;CACd,SAAS;CACT,YAAY;CACZ,YAAY;CACZ,QAAQ,EAAE,QAAQ,CAAC,UAAU;CAC7B,UAAU,EAAE,QAAQ,CAAC,UAAU;CAC/B,OAAO,EAAE,QAAQ,CAAC,UAAU;CAC5B,oBAAoB,EAAE,SAAS,CAAC,UAAU;CAC3C,CAAC;AAIF,MAAa,sBAAsB,KAAK,KACtC,EAAE,OAAO,EACP,UAAU,YAAY,qBAAqB,CAAC,UAAU,EACvD,CAAC,CACH"}
@@ -26,7 +26,7 @@ declare const GithubVulnerabilityAlerts: z.ZodEffects<z.ZodEffects<z.ZodArray<z.
26
26
  security_vulnerability: {
27
27
  severity: "low" | "medium" | "high" | "critical";
28
28
  package: {
29
- ecosystem: "composer" | "maven" | "npm" | "rust" | "go" | "actions" | "nuget" | "pip" | "rubygems";
29
+ ecosystem: "composer" | "maven" | "npm" | "rust" | "go" | "nuget" | "actions" | "pip" | "rubygems";
30
30
  name: string;
31
31
  };
32
32
  vulnerable_version_range: string;
@@ -63,7 +63,7 @@ declare const GithubVulnerabilityAlerts: z.ZodEffects<z.ZodEffects<z.ZodArray<z.
63
63
  security_vulnerability: {
64
64
  severity: "low" | "medium" | "high" | "critical";
65
65
  package: {
66
- ecosystem: "composer" | "maven" | "npm" | "rust" | "go" | "actions" | "nuget" | "pip" | "rubygems";
66
+ ecosystem: "composer" | "maven" | "npm" | "rust" | "go" | "nuget" | "actions" | "pip" | "rubygems";
67
67
  name: string;
68
68
  };
69
69
  vulnerable_version_range: string;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "renovate",
3
3
  "description": "Automated dependency updates. Flexible so you don't need to be.",
4
- "version": "43.122.0",
4
+ "version": "43.123.1",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "renovate": "dist/renovate.js",
@@ -123,7 +123,7 @@
123
123
  "@renovatebot/good-enough-parser": "2.0.0",
124
124
  "@renovatebot/osv-offline": "2.5.0",
125
125
  "@renovatebot/pep440": "4.2.2",
126
- "@renovatebot/pgp": "1.3.5",
126
+ "@renovatebot/pgp": "1.3.6",
127
127
  "@renovatebot/ruby-semver": "4.1.2",
128
128
  "@sindresorhus/is": "7.2.0",
129
129
  "@yarnpkg/core": "4.6.0",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$id": "https://docs.renovatebot.com/renovate-schema.json",
3
- "title": "JSON schema for Renovate 43.122.0 config files (https://renovatebot.com/)",
3
+ "title": "JSON schema for Renovate 43.123.1 config files (https://renovatebot.com/)",
4
4
  "$schema": "http://json-schema.org/draft-07/schema#",
5
- "x-renovate-version": "43.122.0",
5
+ "x-renovate-version": "43.123.1",
6
6
  "allowComments": true,
7
7
  "type": "object",
8
8
  "properties": {
@@ -9155,6 +9155,63 @@
9155
9155
  }
9156
9156
  ]
9157
9157
  }
9158
+ },
9159
+ "xcodegen": {
9160
+ "description": "Configuration object for the xcodegen manager",
9161
+ "markdownDescription": "Configuration object for the xcodegen manager",
9162
+ "type": "object",
9163
+ "default": {
9164
+ "managerFilePatterns": [
9165
+ "**/project.yml"
9166
+ ],
9167
+ "pinDigests": false
9168
+ },
9169
+ "$ref": "#",
9170
+ "items": {
9171
+ "allOf": [
9172
+ {
9173
+ "type": "object",
9174
+ "properties": {
9175
+ "description": {
9176
+ "oneOf": [
9177
+ {
9178
+ "type": "array",
9179
+ "items": {
9180
+ "type": "string",
9181
+ "description": "A custom description for this configuration object"
9182
+ }
9183
+ },
9184
+ {
9185
+ "type": "string",
9186
+ "description": "A custom description for this configuration object"
9187
+ }
9188
+ ]
9189
+ },
9190
+ "enabled": {
9191
+ "description": "Enable or disable corresponding functionality.",
9192
+ "markdownDescription": "Enable or disable corresponding functionality.",
9193
+ "type": "boolean",
9194
+ "default": true
9195
+ },
9196
+ "managerFilePatterns": {
9197
+ "description": "RegEx (`re2`) and glob patterns for matching manager files.",
9198
+ "markdownDescription": "RegEx (`re2`) and glob patterns for matching manager files.",
9199
+ "oneOf": [
9200
+ {
9201
+ "type": "array",
9202
+ "items": {
9203
+ "type": "string"
9204
+ }
9205
+ },
9206
+ {
9207
+ "type": "string"
9208
+ }
9209
+ ]
9210
+ }
9211
+ }
9212
+ }
9213
+ ]
9214
+ }
9158
9215
  }
9159
9216
  },
9160
9217
  "not": {