renovate 44.48.0 → 44.48.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/dist/config/options/index.js +1 -1
  2. package/dist/config/options/index.js.map +1 -1
  3. package/dist/global-config-option-defaults.generated.js +1 -1
  4. package/dist/global-config-option-defaults.generated.js.map +1 -1
  5. package/dist/modules/datasource/docker/dockerhub-cache.js.map +1 -1
  6. package/dist/modules/datasource/go/common.js.map +1 -1
  7. package/dist/modules/datasource/rubygems/versions-endpoint-cache.js.map +1 -1
  8. package/dist/modules/datasource/rust-version/index.js.map +1 -1
  9. package/dist/modules/datasource/rust-version/parse.js.map +1 -1
  10. package/dist/modules/manager/asdf/extract.js.map +1 -1
  11. package/dist/modules/manager/asdf/upgradeable-tooling.js.map +1 -1
  12. package/dist/modules/manager/bazel-module/extract.js.map +1 -1
  13. package/dist/modules/manager/bazel-module/parser/context.js.map +1 -1
  14. package/dist/modules/manager/bazel-module/parser/fragments.js +1 -1
  15. package/dist/modules/manager/bazel-module/parser/fragments.js.map +1 -1
  16. package/dist/modules/manager/bazel-module/parser/index.js.map +1 -1
  17. package/dist/modules/manager/bazel-module/rules.js.map +1 -1
  18. package/dist/modules/manager/custom/jsonata/utils.js.map +1 -1
  19. package/dist/modules/manager/custom/regex/utils.js.map +1 -1
  20. package/dist/modules/manager/custom/types.d.ts +1 -0
  21. package/dist/modules/manager/custom/utils.d.ts +1 -0
  22. package/dist/modules/manager/custom/utils.js.map +1 -1
  23. package/dist/modules/manager/devbox/tool-versioning.js.map +1 -1
  24. package/dist/modules/manager/fingerprint.generated.js +2 -2
  25. package/dist/modules/manager/fingerprint.generated.js.map +1 -1
  26. package/dist/modules/manager/github-actions/community.js.map +1 -1
  27. package/dist/modules/manager/github-actions/extract.js.map +1 -1
  28. package/dist/modules/manager/github-actions/parse.js.map +1 -1
  29. package/dist/modules/manager/github-actions/schema.js.map +1 -1
  30. package/dist/modules/manager/haskell-cabal/extract.js.map +1 -1
  31. package/dist/modules/manager/haskell-cabal/index.js.map +1 -1
  32. package/dist/modules/manager/homebrew/handlers/github.js.map +1 -1
  33. package/dist/modules/manager/homebrew/handlers/npm.js.map +1 -1
  34. package/dist/modules/manager/mise/backends.js.map +1 -1
  35. package/dist/modules/manager/mise/extract.js.map +1 -1
  36. package/dist/modules/manager/mise/lockfile.js.map +1 -1
  37. package/dist/modules/manager/mise/upgradeable-tooling.js.map +1 -1
  38. package/dist/modules/manager/npm/npmrc.js.map +1 -1
  39. package/dist/modules/manager/npm/post-update/node-version.js.map +1 -1
  40. package/dist/modules/manager/npm/post-update/npm.js.map +1 -1
  41. package/dist/modules/manager/npm/post-update/rules.js.map +1 -1
  42. package/dist/modules/manager/npm/post-update/utils.js.map +1 -1
  43. package/dist/modules/manager/pixi/lockfile.js.map +1 -1
  44. package/dist/modules/manager/proto/extract.js.map +1 -1
  45. package/dist/modules/manager/proto/upgradeable-tooling.js.map +1 -1
  46. package/dist/modules/manager/terragrunt/util.js.map +1 -1
  47. package/dist/modules/platform/azure/azure-helper.js.map +1 -1
  48. package/dist/modules/platform/azure/types.js.map +1 -1
  49. package/dist/modules/platform/bitbucket/comments.js.map +1 -1
  50. package/dist/modules/platform/bitbucket-server/index.js.map +1 -1
  51. package/dist/modules/platform/bitbucket-server/utils.js.map +1 -1
  52. package/dist/modules/platform/codecommit/index.js.map +1 -1
  53. package/dist/modules/versioning/apk/index.js.map +1 -1
  54. package/dist/modules/versioning/aws-machine-image/index.js.map +1 -1
  55. package/dist/modules/versioning/azure-rest-api/index.js.map +1 -1
  56. package/dist/modules/versioning/deb/index.js.map +1 -1
  57. package/dist/modules/versioning/debian/common.js.map +1 -1
  58. package/dist/modules/versioning/debian/index.js.map +1 -1
  59. package/dist/modules/versioning/devbox/index.js.map +1 -1
  60. package/dist/modules/versioning/distro.js.map +1 -1
  61. package/dist/modules/versioning/docker/index.js.map +1 -1
  62. package/dist/modules/versioning/generic.d.ts +2 -10
  63. package/dist/modules/versioning/generic.js.map +1 -1
  64. package/dist/modules/versioning/git/index.js.map +1 -1
  65. package/dist/modules/versioning/glasskube/index.js.map +1 -1
  66. package/dist/modules/versioning/gradle/compare.js.map +1 -1
  67. package/dist/modules/versioning/hermit/index.js.map +1 -1
  68. package/dist/modules/versioning/index.d.ts +2 -2
  69. package/dist/modules/versioning/ivy/parse.js.map +1 -1
  70. package/dist/modules/versioning/lambda-node/schedule.js.map +1 -1
  71. package/dist/modules/versioning/loose/index.js.map +1 -1
  72. package/dist/modules/versioning/maven/compare.js.map +1 -1
  73. package/dist/modules/versioning/nixpkgs/index.js.map +1 -1
  74. package/dist/modules/versioning/node/schedule.js.map +1 -1
  75. package/dist/modules/versioning/paket/index.js.map +1 -1
  76. package/dist/modules/versioning/paket/range.js.map +1 -1
  77. package/dist/modules/versioning/perl/index.js.map +1 -1
  78. package/dist/modules/versioning/redhat/index.js.map +1 -1
  79. package/dist/modules/versioning/regex/index.js.map +1 -1
  80. package/dist/modules/versioning/rpm/index.js.map +1 -1
  81. package/dist/modules/versioning/ruby/range.js.map +1 -1
  82. package/dist/modules/versioning/ruby/strategies/bump.js.map +1 -1
  83. package/dist/modules/versioning/ruby/strategies/replace.js.map +1 -1
  84. package/dist/modules/versioning/ruby/strategies/widen.js.map +1 -1
  85. package/dist/modules/versioning/semver/common.js.map +1 -1
  86. package/dist/modules/versioning/types.d.ts +25 -1
  87. package/dist/modules/versioning/unity3d/index.js.map +1 -1
  88. package/dist/modules/versioning/unity3d-packages/index.js.map +1 -1
  89. package/package.json +1 -1
  90. package/renovate-schema.json +2 -2
@@ -23,7 +23,7 @@ const globalConfigOptionDefaults = {
23
23
  "detectHostRulesFromEnv": false,
24
24
  "dockerChildPrefix": "renovate_",
25
25
  "dockerMaxPages": 20,
26
- "dockerSidecarImage": "ghcr.io/renovatebot/base-image:13.91.0",
26
+ "dockerSidecarImage": "ghcr.io/renovatebot/base-image:13.91.2",
27
27
  "dockerUser": "12021",
28
28
  "executionTimeout": 15,
29
29
  "exposeAllEnv": false,
@@ -1 +1 @@
1
- {"version":3,"file":"global-config-option-defaults.generated.js","names":[],"sources":["../lib/global-config-option-defaults.generated.ts"],"sourcesContent":["\nexport const globalConfigOptionDefaults: Record<string, unknown> = {\n \"allowCustomCrateRegistries\": false,\n \"allowedCommands\": [],\n \"allowedEnv\": [],\n \"allowedHeaders\": [\n \"X-*\"\n ],\n \"allowedUnsafeExecutions\": [],\n \"allowPlugins\": false,\n \"allowScripts\": false,\n \"allowShellExecutorForPostUpgradeCommands\": false,\n \"autodiscover\": false,\n \"bbUseDevelopmentBranch\": false,\n \"binarySource\": \"install\",\n \"cacheHardTtlMinutes\": 10080,\n \"cachePrivatePackages\": false,\n \"cacheTtlOverride\": {},\n \"checkedBranches\": [],\n \"configValidationError\": false,\n \"customEnvVariables\": {},\n \"deleteAdditionalConfigFile\": false,\n \"deleteConfigFile\": false,\n \"detectGlobalManagerConfig\": false,\n \"detectHostRulesFromEnv\": false,\n \"dockerChildPrefix\": \"renovate_\",\n \"dockerMaxPages\": 20,\n \"dockerSidecarImage\": \"ghcr.io/renovatebot/base-image:13.91.0\",\n \"dockerUser\": \"12021\",\n \"executionTimeout\": 15,\n \"exposeAllEnv\": false,\n \"forceCli\": true,\n \"forkCreation\": true,\n \"githubTokenWarn\": true,\n \"gitNoVerify\": [\n \"commit\",\n \"push\"\n ],\n \"gitTimeout\": 0,\n \"gitUrl\": \"default\",\n \"httpCacheTtlDays\": 90,\n \"ignorePrAuthor\": false,\n \"includeMirrors\": false,\n \"inheritConfig\": false,\n \"inheritConfigFileName\": \"org-inherited-config.json\",\n \"inheritConfigRepoName\": \"{{parentOrg}}/renovate-config\",\n \"inheritConfigStrict\": false,\n \"mergeConfidenceDatasources\": [\n \"go\",\n \"maven\",\n \"npm\",\n \"nuget\",\n \"packagist\",\n \"pypi\",\n \"rubygems\"\n ],\n \"mergeConfidenceEndpoint\": \"https://developer.mend.io/\",\n \"migratePresets\": {},\n \"onboardingBranch\": \"renovate/configure\",\n \"onboardingConfig\": {\n \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\"\n },\n \"onboardingConfigFileName\": \"renovate.json\",\n \"onboardingNoDeps\": \"auto\",\n \"onboardingPrTitle\": \"Configure Renovate\",\n \"onboardingRebaseCheckbox\": false,\n \"optimizeForDisabled\": false,\n \"persistRepoData\": false,\n \"platform\": \"github\",\n \"prCacheSyncMaxPages\": 100,\n \"prCommitsPerRunLimit\": 0,\n \"presetCachePersistence\": false,\n \"processEnv\": {},\n \"productLinks\": {\n \"documentation\": \"https://docs.renovatebot.com/\",\n \"help\": \"https://github.com/renovatebot/renovate/discussions\",\n \"homepage\": \"https://github.com/renovatebot/renovate\"\n },\n \"rebaseAllOpenBranches\": false,\n \"reportFormatting\": false,\n \"repositoryCache\": \"disabled\",\n \"repositoryCacheForceLocal\": false,\n \"repositoryCacheType\": \"local\",\n \"requireConfig\": \"required\",\n \"s3PathStyle\": false,\n \"secrets\": {},\n \"unicodeEmoji\": true,\n \"useCloudMetadataServices\": true,\n \"userAgent\": \"Renovate/{{renovateVersion}} (https://github.com/renovatebot/renovate)\",\n \"variables\": {}\n};\n"],"mappings":";AACA,MAAa,6BAAsD;CACjE,8BAA8B;CAC9B,mBAAmB,CAAC;CACpB,cAAc,CAAC;CACf,kBAAkB,CAChB,KACF;CACA,2BAA2B,CAAC;CAC5B,gBAAgB;CAChB,gBAAgB;CAChB,4CAA4C;CAC5C,gBAAgB;CAChB,0BAA0B;CAC1B,gBAAgB;CAChB,uBAAuB;CACvB,wBAAwB;CACxB,oBAAoB,CAAC;CACrB,mBAAmB,CAAC;CACpB,yBAAyB;CACzB,sBAAsB,CAAC;CACvB,8BAA8B;CAC9B,oBAAoB;CACpB,6BAA6B;CAC7B,0BAA0B;CAC1B,qBAAqB;CACrB,kBAAkB;CAClB,sBAAsB;CACtB,cAAc;CACd,oBAAoB;CACpB,gBAAgB;CAChB,YAAY;CACZ,gBAAgB;CAChB,mBAAmB;CACnB,eAAe,CACb,UACA,MACF;CACA,cAAc;CACd,UAAU;CACV,oBAAoB;CACpB,kBAAkB;CAClB,kBAAkB;CAClB,iBAAiB;CACjB,yBAAyB;CACzB,yBAAyB;CACzB,uBAAuB;CACvB,8BAA8B;EAC5B;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,2BAA2B;CAC3B,kBAAkB,CAAC;CACnB,oBAAoB;CACpB,oBAAoB,EAClB,WAAW,oDACb;CACA,4BAA4B;CAC5B,oBAAoB;CACpB,qBAAqB;CACrB,4BAA4B;CAC5B,uBAAuB;CACvB,mBAAmB;CACnB,YAAY;CACZ,uBAAuB;CACvB,wBAAwB;CACxB,0BAA0B;CAC1B,cAAc,CAAC;CACf,gBAAgB;EACd,iBAAiB;EACjB,QAAQ;EACR,YAAY;CACd;CACA,yBAAyB;CACzB,oBAAoB;CACpB,mBAAmB;CACnB,6BAA6B;CAC7B,uBAAuB;CACvB,iBAAiB;CACjB,eAAe;CACf,WAAW,CAAC;CACZ,gBAAgB;CAChB,4BAA4B;CAC5B,aAAa;CACb,aAAa,CAAC;AAChB"}
1
+ {"version":3,"file":"global-config-option-defaults.generated.js","names":[],"sources":["../lib/global-config-option-defaults.generated.ts"],"sourcesContent":["\nexport const globalConfigOptionDefaults: Record<string, unknown> = {\n \"allowCustomCrateRegistries\": false,\n \"allowedCommands\": [],\n \"allowedEnv\": [],\n \"allowedHeaders\": [\n \"X-*\"\n ],\n \"allowedUnsafeExecutions\": [],\n \"allowPlugins\": false,\n \"allowScripts\": false,\n \"allowShellExecutorForPostUpgradeCommands\": false,\n \"autodiscover\": false,\n \"bbUseDevelopmentBranch\": false,\n \"binarySource\": \"install\",\n \"cacheHardTtlMinutes\": 10080,\n \"cachePrivatePackages\": false,\n \"cacheTtlOverride\": {},\n \"checkedBranches\": [],\n \"configValidationError\": false,\n \"customEnvVariables\": {},\n \"deleteAdditionalConfigFile\": false,\n \"deleteConfigFile\": false,\n \"detectGlobalManagerConfig\": false,\n \"detectHostRulesFromEnv\": false,\n \"dockerChildPrefix\": \"renovate_\",\n \"dockerMaxPages\": 20,\n \"dockerSidecarImage\": \"ghcr.io/renovatebot/base-image:13.91.2\",\n \"dockerUser\": \"12021\",\n \"executionTimeout\": 15,\n \"exposeAllEnv\": false,\n \"forceCli\": true,\n \"forkCreation\": true,\n \"githubTokenWarn\": true,\n \"gitNoVerify\": [\n \"commit\",\n \"push\"\n ],\n \"gitTimeout\": 0,\n \"gitUrl\": \"default\",\n \"httpCacheTtlDays\": 90,\n \"ignorePrAuthor\": false,\n \"includeMirrors\": false,\n \"inheritConfig\": false,\n \"inheritConfigFileName\": \"org-inherited-config.json\",\n \"inheritConfigRepoName\": \"{{parentOrg}}/renovate-config\",\n \"inheritConfigStrict\": false,\n \"mergeConfidenceDatasources\": [\n \"go\",\n \"maven\",\n \"npm\",\n \"nuget\",\n \"packagist\",\n \"pypi\",\n \"rubygems\"\n ],\n \"mergeConfidenceEndpoint\": \"https://developer.mend.io/\",\n \"migratePresets\": {},\n \"onboardingBranch\": \"renovate/configure\",\n \"onboardingConfig\": {\n \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\"\n },\n \"onboardingConfigFileName\": \"renovate.json\",\n \"onboardingNoDeps\": \"auto\",\n \"onboardingPrTitle\": \"Configure Renovate\",\n \"onboardingRebaseCheckbox\": false,\n \"optimizeForDisabled\": false,\n \"persistRepoData\": false,\n \"platform\": \"github\",\n \"prCacheSyncMaxPages\": 100,\n \"prCommitsPerRunLimit\": 0,\n \"presetCachePersistence\": false,\n \"processEnv\": {},\n \"productLinks\": {\n \"documentation\": \"https://docs.renovatebot.com/\",\n \"help\": \"https://github.com/renovatebot/renovate/discussions\",\n \"homepage\": \"https://github.com/renovatebot/renovate\"\n },\n \"rebaseAllOpenBranches\": false,\n \"reportFormatting\": false,\n \"repositoryCache\": \"disabled\",\n \"repositoryCacheForceLocal\": false,\n \"repositoryCacheType\": \"local\",\n \"requireConfig\": \"required\",\n \"s3PathStyle\": false,\n \"secrets\": {},\n \"unicodeEmoji\": true,\n \"useCloudMetadataServices\": true,\n \"userAgent\": \"Renovate/{{renovateVersion}} (https://github.com/renovatebot/renovate)\",\n \"variables\": {}\n};\n"],"mappings":";AACA,MAAa,6BAAsD;CACjE,8BAA8B;CAC9B,mBAAmB,CAAC;CACpB,cAAc,CAAC;CACf,kBAAkB,CAChB,KACF;CACA,2BAA2B,CAAC;CAC5B,gBAAgB;CAChB,gBAAgB;CAChB,4CAA4C;CAC5C,gBAAgB;CAChB,0BAA0B;CAC1B,gBAAgB;CAChB,uBAAuB;CACvB,wBAAwB;CACxB,oBAAoB,CAAC;CACrB,mBAAmB,CAAC;CACpB,yBAAyB;CACzB,sBAAsB,CAAC;CACvB,8BAA8B;CAC9B,oBAAoB;CACpB,6BAA6B;CAC7B,0BAA0B;CAC1B,qBAAqB;CACrB,kBAAkB;CAClB,sBAAsB;CACtB,cAAc;CACd,oBAAoB;CACpB,gBAAgB;CAChB,YAAY;CACZ,gBAAgB;CAChB,mBAAmB;CACnB,eAAe,CACb,UACA,MACF;CACA,cAAc;CACd,UAAU;CACV,oBAAoB;CACpB,kBAAkB;CAClB,kBAAkB;CAClB,iBAAiB;CACjB,yBAAyB;CACzB,yBAAyB;CACzB,uBAAuB;CACvB,8BAA8B;EAC5B;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,2BAA2B;CAC3B,kBAAkB,CAAC;CACnB,oBAAoB;CACpB,oBAAoB,EAClB,WAAW,oDACb;CACA,4BAA4B;CAC5B,oBAAoB;CACpB,qBAAqB;CACrB,4BAA4B;CAC5B,uBAAuB;CACvB,mBAAmB;CACnB,YAAY;CACZ,uBAAuB;CACvB,wBAAwB;CACxB,0BAA0B;CAC1B,cAAc,CAAC;CACf,gBAAgB;EACd,iBAAiB;EACjB,QAAQ;EACR,YAAY;CACd;CACA,yBAAyB;CACzB,oBAAoB;CACpB,mBAAmB;CACnB,6BAA6B;CAC7B,uBAAuB;CACvB,iBAAiB;CACjB,eAAe;CACf,WAAW,CAAC;CACZ,gBAAgB;CAChB,4BAA4B;CAC5B,aAAa;CACb,aAAa,CAAC;AAChB"}
@@ -1 +1 @@
1
- {"version":3,"file":"dockerhub-cache.js","names":["packageCache.get","packageCache.set"],"sources":["../../../../lib/modules/datasource/docker/dockerhub-cache.ts"],"sourcesContent":["import { dequal } from 'dequal';\nimport { DateTime } from 'luxon';\nimport * as packageCache from '../../../util/cache/package/index.ts';\nimport type { DockerHubTag } from './schema.ts';\n\nexport interface DockerHubCacheData {\n items: Record<number, DockerHubTag>;\n updatedAt: string | null;\n}\n\nconst cacheNamespace = 'datasource-docker-hub-cache';\n\nexport class DockerHubCache {\n private isChanged = false;\n private reconciledIds = new Set<number>();\n private dockerRepository: string;\n private cache: DockerHubCacheData;\n\n private constructor(dockerRepository: string, cache: DockerHubCacheData) {\n this.dockerRepository = dockerRepository;\n this.cache = cache;\n }\n\n static async init(dockerRepository: string): Promise<DockerHubCache> {\n let repoCache = await packageCache.get<DockerHubCacheData>(\n cacheNamespace,\n dockerRepository,\n );\n\n repoCache ??= {\n items: {},\n updatedAt: null,\n };\n\n return new DockerHubCache(dockerRepository, repoCache);\n }\n\n reconcile(items: DockerHubTag[], expectedCount: number): boolean {\n let needNextPage = true;\n\n let earliestDate = null;\n\n let { updatedAt } = this.cache;\n let latestDate = updatedAt ? DateTime.fromISO(updatedAt) : null;\n\n for (const newItem of items) {\n const id = newItem.id;\n this.reconciledIds.add(id);\n\n const oldItem = this.cache.items[id];\n\n const itemDate = DateTime.fromISO(newItem.last_updated);\n\n if (!earliestDate || earliestDate > itemDate) {\n earliestDate = itemDate;\n }\n\n if (!latestDate || latestDate < itemDate) {\n latestDate = itemDate;\n updatedAt = newItem.last_updated;\n }\n\n if (dequal(oldItem, newItem)) {\n needNextPage = false;\n continue;\n }\n\n this.cache.items[newItem.id] = newItem;\n this.isChanged = true;\n }\n\n this.cache.updatedAt = updatedAt;\n\n if (earliestDate && latestDate) {\n for (const [key, item] of Object.entries(this.cache.items)) {\n const id = parseInt(key, 10);\n\n const itemDate = DateTime.fromISO(item.last_updated);\n\n if (\n itemDate < earliestDate ||\n itemDate > latestDate ||\n this.reconciledIds.has(id)\n ) {\n continue;\n }\n\n delete this.cache.items[id];\n this.isChanged = true;\n }\n\n if (Object.keys(this.cache.items).length > expectedCount) {\n return true;\n }\n }\n\n return needNextPage;\n }\n\n async save(): Promise<void> {\n if (this.isChanged) {\n await packageCache.set(\n cacheNamespace,\n this.dockerRepository,\n this.cache,\n 3 * 60 * 24 * 30,\n );\n }\n }\n\n getItems(): DockerHubTag[] {\n return Object.values(this.cache.items);\n }\n\n getDigestForTag(tagName: string): string | null {\n return (\n this.getItems().find((item) => item.name === tagName)?.digest ?? null\n );\n }\n\n getArchDigestForTag(tagName: string, architecture: string): string | null {\n const tag = this.getItems().find((item) => item.name === tagName);\n return (\n tag?.images.find((img) => img.architecture === architecture)?.digest ??\n null\n );\n }\n}\n"],"mappings":";;;;AAUA,MAAM,iBAAiB;AAEvB,IAAa,iBAAb,MAAa,eAAe;CAC1B,YAAoB;CACpB,gCAAwB,IAAI,IAAY;CACxC;CACA;CAEA,YAAoB,kBAA0B,OAA2B;EACvE,KAAK,mBAAmB;EACxB,KAAK,QAAQ;CACf;CAEA,aAAa,KAAK,kBAAmD;EACnE,IAAI,YAAY,MAAMA,IACpB,gBACA,gBACF;EAEA,cAAc;GACZ,OAAO,CAAC;GACR,WAAW;EACb;EAEA,OAAO,IAAI,eAAe,kBAAkB,SAAS;CACvD;CAEA,UAAU,OAAuB,eAAgC;EAC/D,IAAI,eAAe;EAEnB,IAAI,eAAe;EAEnB,IAAI,EAAE,cAAc,KAAK;EACzB,IAAI,aAAa,YAAY,SAAS,QAAQ,SAAS,IAAI;EAE3D,KAAK,MAAM,WAAW,OAAO;GAC3B,MAAM,KAAK,QAAQ;GACnB,KAAK,cAAc,IAAI,EAAE;GAEzB,MAAM,UAAU,KAAK,MAAM,MAAM;GAEjC,MAAM,WAAW,SAAS,QAAQ,QAAQ,YAAY;GAEtD,IAAI,CAAC,gBAAgB,eAAe,UAClC,eAAe;GAGjB,IAAI,CAAC,cAAc,aAAa,UAAU;IACxC,aAAa;IACb,YAAY,QAAQ;GACtB;GAEA,IAAI,OAAO,SAAS,OAAO,GAAG;IAC5B,eAAe;IACf;GACF;GAEA,KAAK,MAAM,MAAM,QAAQ,MAAM;GAC/B,KAAK,YAAY;EACnB;EAEA,KAAK,MAAM,YAAY;EAEvB,IAAI,gBAAgB,YAAY;GAC9B,KAAK,MAAM,CAAC,KAAK,SAAS,OAAO,QAAQ,KAAK,MAAM,KAAK,GAAG;IAC1D,MAAM,KAAK,SAAS,KAAK,EAAE;IAE3B,MAAM,WAAW,SAAS,QAAQ,KAAK,YAAY;IAEnD,IACE,WAAW,gBACX,WAAW,cACX,KAAK,cAAc,IAAI,EAAE,GAEzB;IAGF,OAAO,KAAK,MAAM,MAAM;IACxB,KAAK,YAAY;GACnB;GAEA,IAAI,OAAO,KAAK,KAAK,MAAM,KAAK,CAAC,CAAC,SAAS,eACzC,OAAO;EAEX;EAEA,OAAO;CACT;CAEA,MAAM,OAAsB;EAC1B,IAAI,KAAK,WACP,MAAMC,IACJ,gBACA,KAAK,kBACL,KAAK,OACL,MACF;CAEJ;CAEA,WAA2B;EACzB,OAAO,OAAO,OAAO,KAAK,MAAM,KAAK;CACvC;CAEA,gBAAgB,SAAgC;EAC9C,OACE,KAAK,SAAS,CAAC,CAAC,MAAM,SAAS,KAAK,SAAS,OAAO,CAAC,EAAE,UAAU;CAErE;CAEA,oBAAoB,SAAiB,cAAqC;EAExE,OADY,KAAK,SAAS,CAAC,CAAC,MAAM,SAAS,KAAK,SAAS,OAErD,CAAC,EAAE,OAAO,MAAM,QAAQ,IAAI,iBAAiB,YAAY,CAAC,EAAE,UAC9D;CAEJ;AACF"}
1
+ {"version":3,"file":"dockerhub-cache.js","names":["packageCache.get","packageCache.set"],"sources":["../../../../lib/modules/datasource/docker/dockerhub-cache.ts"],"sourcesContent":["import { dequal } from 'dequal';\nimport { DateTime } from 'luxon';\nimport * as packageCache from '../../../util/cache/package/index.ts';\nimport type { DockerHubTag } from './schema.ts';\nimport type { DockerHubCacheData } from './types.ts';\n\nconst cacheNamespace = 'datasource-docker-hub-cache';\n\nexport class DockerHubCache {\n private isChanged = false;\n private reconciledIds = new Set<number>();\n private dockerRepository: string;\n private cache: DockerHubCacheData;\n\n private constructor(dockerRepository: string, cache: DockerHubCacheData) {\n this.dockerRepository = dockerRepository;\n this.cache = cache;\n }\n\n static async init(dockerRepository: string): Promise<DockerHubCache> {\n let repoCache = await packageCache.get<DockerHubCacheData>(\n cacheNamespace,\n dockerRepository,\n );\n\n repoCache ??= {\n items: {},\n updatedAt: null,\n };\n\n return new DockerHubCache(dockerRepository, repoCache);\n }\n\n reconcile(items: DockerHubTag[], expectedCount: number): boolean {\n let needNextPage = true;\n\n let earliestDate = null;\n\n let { updatedAt } = this.cache;\n let latestDate = updatedAt ? DateTime.fromISO(updatedAt) : null;\n\n for (const newItem of items) {\n const id = newItem.id;\n this.reconciledIds.add(id);\n\n const oldItem = this.cache.items[id];\n\n const itemDate = DateTime.fromISO(newItem.last_updated);\n\n if (!earliestDate || earliestDate > itemDate) {\n earliestDate = itemDate;\n }\n\n if (!latestDate || latestDate < itemDate) {\n latestDate = itemDate;\n updatedAt = newItem.last_updated;\n }\n\n if (dequal(oldItem, newItem)) {\n needNextPage = false;\n continue;\n }\n\n this.cache.items[newItem.id] = newItem;\n this.isChanged = true;\n }\n\n this.cache.updatedAt = updatedAt;\n\n if (earliestDate && latestDate) {\n for (const [key, item] of Object.entries(this.cache.items)) {\n const id = parseInt(key, 10);\n\n const itemDate = DateTime.fromISO(item.last_updated);\n\n if (\n itemDate < earliestDate ||\n itemDate > latestDate ||\n this.reconciledIds.has(id)\n ) {\n continue;\n }\n\n delete this.cache.items[id];\n this.isChanged = true;\n }\n\n if (Object.keys(this.cache.items).length > expectedCount) {\n return true;\n }\n }\n\n return needNextPage;\n }\n\n async save(): Promise<void> {\n if (this.isChanged) {\n await packageCache.set(\n cacheNamespace,\n this.dockerRepository,\n this.cache,\n 3 * 60 * 24 * 30,\n );\n }\n }\n\n getItems(): DockerHubTag[] {\n return Object.values(this.cache.items);\n }\n\n getDigestForTag(tagName: string): string | null {\n return (\n this.getItems().find((item) => item.name === tagName)?.digest ?? null\n );\n }\n\n getArchDigestForTag(tagName: string, architecture: string): string | null {\n const tag = this.getItems().find((item) => item.name === tagName);\n return (\n tag?.images.find((img) => img.architecture === architecture)?.digest ??\n null\n );\n }\n}\n"],"mappings":";;;;AAMA,MAAM,iBAAiB;AAEvB,IAAa,iBAAb,MAAa,eAAe;CAC1B,YAAoB;CACpB,gCAAwB,IAAI,IAAY;CACxC;CACA;CAEA,YAAoB,kBAA0B,OAA2B;EACvE,KAAK,mBAAmB;EACxB,KAAK,QAAQ;CACf;CAEA,aAAa,KAAK,kBAAmD;EACnE,IAAI,YAAY,MAAMA,IACpB,gBACA,gBACF;EAEA,cAAc;GACZ,OAAO,CAAC;GACR,WAAW;EACb;EAEA,OAAO,IAAI,eAAe,kBAAkB,SAAS;CACvD;CAEA,UAAU,OAAuB,eAAgC;EAC/D,IAAI,eAAe;EAEnB,IAAI,eAAe;EAEnB,IAAI,EAAE,cAAc,KAAK;EACzB,IAAI,aAAa,YAAY,SAAS,QAAQ,SAAS,IAAI;EAE3D,KAAK,MAAM,WAAW,OAAO;GAC3B,MAAM,KAAK,QAAQ;GACnB,KAAK,cAAc,IAAI,EAAE;GAEzB,MAAM,UAAU,KAAK,MAAM,MAAM;GAEjC,MAAM,WAAW,SAAS,QAAQ,QAAQ,YAAY;GAEtD,IAAI,CAAC,gBAAgB,eAAe,UAClC,eAAe;GAGjB,IAAI,CAAC,cAAc,aAAa,UAAU;IACxC,aAAa;IACb,YAAY,QAAQ;GACtB;GAEA,IAAI,OAAO,SAAS,OAAO,GAAG;IAC5B,eAAe;IACf;GACF;GAEA,KAAK,MAAM,MAAM,QAAQ,MAAM;GAC/B,KAAK,YAAY;EACnB;EAEA,KAAK,MAAM,YAAY;EAEvB,IAAI,gBAAgB,YAAY;GAC9B,KAAK,MAAM,CAAC,KAAK,SAAS,OAAO,QAAQ,KAAK,MAAM,KAAK,GAAG;IAC1D,MAAM,KAAK,SAAS,KAAK,EAAE;IAE3B,MAAM,WAAW,SAAS,QAAQ,KAAK,YAAY;IAEnD,IACE,WAAW,gBACX,WAAW,cACX,KAAK,cAAc,IAAI,EAAE,GAEzB;IAGF,OAAO,KAAK,MAAM,MAAM;IACxB,KAAK,YAAY;GACnB;GAEA,IAAI,OAAO,KAAK,KAAK,MAAM,KAAK,CAAC,CAAC,SAAS,eACzC,OAAO;EAEX;EAEA,OAAO;CACT;CAEA,MAAM,OAAsB;EAC1B,IAAI,KAAK,WACP,MAAMC,IACJ,gBACA,KAAK,kBACL,KAAK,OACL,MACF;CAEJ;CAEA,WAA2B;EACzB,OAAO,OAAO,OAAO,KAAK,MAAM,KAAK;CACvC;CAEA,gBAAgB,SAAgC;EAC9C,OACE,KAAK,SAAS,CAAC,CAAC,MAAM,SAAS,KAAK,SAAS,OAAO,CAAC,EAAE,UAAU;CAErE;CAEA,oBAAoB,SAAiB,cAAqC;EAExE,OADY,KAAK,SAAS,CAAC,CAAC,MAAM,SAAS,KAAK,SAAS,OAErD,CAAC,EAAE,OAAO,MAAM,QAAQ,IAAI,iBAAiB,YAAY,CAAC,EAAE,UAC9D;CAEJ;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","names":["githubSourceUrl","gitlabSourceUrl"],"sources":["../../../../lib/modules/datasource/go/common.ts"],"sourcesContent":["import { getSourceUrl as githubSourceUrl } from '../../../util/github/url.ts';\nimport { BitbucketTagsDatasource } from '../bitbucket-tags/index.ts';\nimport { ForgejoTagsDatasource } from '../forgejo-tags/index.ts';\nimport { GiteaTagsDatasource } from '../gitea-tags/index.ts';\nimport { GithubTagsDatasource } from '../github-tags/index.ts';\nimport { GitlabTagsDatasource } from '../gitlab-tags/index.ts';\nimport { getSourceUrl as gitlabSourceUrl } from '../gitlab-tags/util.ts';\n\nimport type { DataSource } from './types.ts';\n\nexport type GoproxyFallback =\n | ',' // WhenNotFoundOrGone\n | '|'; // Always\n\nexport function getSourceUrl(\n dataSource?: DataSource | null,\n): string | undefined {\n if (dataSource) {\n const { datasource, registryUrl, packageName } = dataSource;\n\n switch (datasource) {\n case ForgejoTagsDatasource.id:\n return ForgejoTagsDatasource.getSourceUrl(packageName, registryUrl);\n case GiteaTagsDatasource.id:\n return GiteaTagsDatasource.getSourceUrl(packageName, registryUrl);\n case GithubTagsDatasource.id:\n return githubSourceUrl(packageName, registryUrl);\n case GitlabTagsDatasource.id:\n return gitlabSourceUrl(packageName, registryUrl);\n case BitbucketTagsDatasource.id:\n return BitbucketTagsDatasource.getSourceUrl(packageName, registryUrl);\n }\n }\n\n return undefined;\n}\n"],"mappings":";;;;;;;;AAcA,SAAgB,aACd,YACoB;CACpB,IAAI,YAAY;EACd,MAAM,EAAE,YAAY,aAAa,gBAAgB;EAEjD,QAAQ,YAAR;GACE,KAAK,sBAAsB,IACzB,OAAO,sBAAsB,aAAa,aAAa,WAAW;GACpE,KAAK,oBAAoB,IACvB,OAAO,oBAAoB,aAAa,aAAa,WAAW;GAClE,KAAK,qBAAqB,IACxB,OAAOA,eAAgB,aAAa,WAAW;GACjD,KAAK,qBAAqB,IACxB,OAAOC,eAAgB,aAAa,WAAW;GACjD,KAAK,wBAAwB,IAC3B,OAAO,wBAAwB,aAAa,aAAa,WAAW;EACxE;CACF;AAGF"}
1
+ {"version":3,"file":"common.js","names":["githubSourceUrl","gitlabSourceUrl"],"sources":["../../../../lib/modules/datasource/go/common.ts"],"sourcesContent":["import { getSourceUrl as githubSourceUrl } from '../../../util/github/url.ts';\nimport { BitbucketTagsDatasource } from '../bitbucket-tags/index.ts';\nimport { ForgejoTagsDatasource } from '../forgejo-tags/index.ts';\nimport { GiteaTagsDatasource } from '../gitea-tags/index.ts';\nimport { GithubTagsDatasource } from '../github-tags/index.ts';\nimport { GitlabTagsDatasource } from '../gitlab-tags/index.ts';\nimport { getSourceUrl as gitlabSourceUrl } from '../gitlab-tags/util.ts';\n\nimport type { DataSource } from './types.ts';\n\nexport function getSourceUrl(\n dataSource?: DataSource | null,\n): string | undefined {\n if (dataSource) {\n const { datasource, registryUrl, packageName } = dataSource;\n\n switch (datasource) {\n case ForgejoTagsDatasource.id:\n return ForgejoTagsDatasource.getSourceUrl(packageName, registryUrl);\n case GiteaTagsDatasource.id:\n return GiteaTagsDatasource.getSourceUrl(packageName, registryUrl);\n case GithubTagsDatasource.id:\n return githubSourceUrl(packageName, registryUrl);\n case GitlabTagsDatasource.id:\n return gitlabSourceUrl(packageName, registryUrl);\n case BitbucketTagsDatasource.id:\n return BitbucketTagsDatasource.getSourceUrl(packageName, registryUrl);\n }\n }\n\n return undefined;\n}\n"],"mappings":";;;;;;;;AAUA,SAAgB,aACd,YACoB;CACpB,IAAI,YAAY;EACd,MAAM,EAAE,YAAY,aAAa,gBAAgB;EAEjD,QAAQ,YAAR;GACE,KAAK,sBAAsB,IACzB,OAAO,sBAAsB,aAAa,aAAa,WAAW;GACpE,KAAK,oBAAoB,IACvB,OAAO,oBAAoB,aAAa,aAAa,WAAW;GAClE,KAAK,qBAAqB,IACxB,OAAOA,eAAgB,aAAa,WAAW;GACjD,KAAK,qBAAqB,IACxB,OAAOC,eAAgB,aAAa,WAAW;GACjD,KAAK,wBAAwB,IAC3B,OAAO,wBAAwB,aAAa,aAAa,WAAW;EACxE;CACF;AAGF"}
@@ -1 +1 @@
1
- {"version":3,"file":"versions-endpoint-cache.js","names":["HttpError"],"sources":["../../../../lib/modules/datasource/rubygems/versions-endpoint-cache.ts"],"sourcesContent":["import { DateTime } from 'luxon';\nimport { z } from 'zod/v4';\nimport { logger } from '../../../logger/index.ts';\nimport { getElapsedMinutes } from '../../../util/date.ts';\nimport type { Http } from '../../../util/http/index.ts';\nimport { HttpError } from '../../../util/http/index.ts';\nimport type { HttpOptions } from '../../../util/http/types.ts';\nimport { newlineRegex } from '../../../util/regex.ts';\nimport { Result } from '../../../util/result.ts';\nimport { LooseArray } from '../../../util/schema-utils/index.ts';\nimport { copystr } from '../../../util/string.ts';\nimport { parseUrl } from '../../../util/url.ts';\n\ntype PackageVersions = Map<string, string[]>;\n\ninterface VersionsEndpointData {\n packageVersions: PackageVersions;\n syncedAt: Date;\n contentLength: number;\n\n /**\n * Last 33 characters of the response (32 hex digits + newline)\n */\n contentTail: string;\n}\n\nfunction getContentTail(content: string): string {\n return content.slice(-33);\n}\n\nfunction getContentHead(content: string): string {\n return content.slice(0, 33);\n}\n\nfunction stripContentHead(content: string): string {\n return content.slice(33);\n}\n\nfunction reconcilePackageVersions(\n packageVersions: PackageVersions,\n versionLines: VersionLines,\n): PackageVersions {\n for (const line of versionLines) {\n const packageName = copystr(line.packageName);\n let versions = packageVersions.get(packageName) ?? [];\n\n const { deletedVersions, addedVersions } = line;\n\n if (deletedVersions.size > 0) {\n versions = versions.filter((v) => !deletedVersions.has(v));\n }\n\n if (addedVersions.length > 0) {\n const existingVersions = new Set(versions);\n for (const addedVersion of addedVersions) {\n if (!existingVersions.has(addedVersion)) {\n const version = copystr(addedVersion);\n versions.push(version);\n }\n }\n }\n\n packageVersions.set(packageName, versions);\n }\n\n return packageVersions;\n}\n\nfunction parseFullBody(body: string): VersionsEndpointResult {\n const packageVersions = reconcilePackageVersions(\n new Map<string, string[]>(),\n VersionLines.parse(body),\n );\n const syncedAt = DateTime.now().toJSDate();\n const contentLength = body.length;\n const contentTail = getContentTail(body);\n\n return Result.ok({\n packageVersions,\n syncedAt,\n contentLength,\n contentTail,\n });\n}\n\ntype VersionsEndpointResult = Result<VersionsEndpointData, 'unsupported-api'>;\n\nexport const memCache = new Map<string, VersionsEndpointResult>();\n\nfunction cacheResult(\n registryUrl: string,\n result: VersionsEndpointResult,\n): void {\n const registryHostname = parseUrl(registryUrl)?.hostname;\n if (registryHostname === 'rubygems.org') {\n memCache.set(registryUrl, result);\n }\n}\n\nconst VersionLines = z\n .string()\n .transform((x) => x.split(newlineRegex))\n .pipe(\n LooseArray(\n z\n .string()\n .transform((line) => line.trim())\n .refine((line) => line.length > 0)\n .refine((line) => !line.startsWith('created_at:'))\n .refine((line) => line !== '---')\n .transform((line) => line.split(' '))\n .pipe(z.tuple([z.string(), z.string()]).rest(z.string()))\n .transform(([packageName, versions]) => {\n const deletedVersions = new Set<string>();\n const addedVersions: string[] = [];\n for (const version of versions.split(',')) {\n if (version.startsWith('-')) {\n deletedVersions.add(version.slice(1));\n } else {\n addedVersions.push(version);\n }\n }\n return { packageName, deletedVersions, addedVersions };\n }),\n ),\n );\ntype VersionLines = z.infer<typeof VersionLines>;\n\nfunction isStale(regCache: VersionsEndpointData): boolean {\n return getElapsedMinutes(regCache.syncedAt) >= 15;\n}\n\nexport type VersionsResult = Result<\n string[],\n 'unsupported-api' | 'package-not-found'\n>;\n\nexport class VersionsEndpointCache {\n private readonly http: Http;\n\n constructor(http: Http) {\n this.http = http;\n }\n\n private cacheRequests = new Map<string, Promise<VersionsEndpointResult>>();\n\n /**\n * At any given time, there should only be one request for a given registryUrl.\n */\n private async getCache(registryUrl: string): Promise<VersionsEndpointResult> {\n const oldResult = memCache.get(registryUrl);\n if (!oldResult) {\n const newResult = await this.fullSync(registryUrl);\n cacheResult(registryUrl, newResult);\n return newResult;\n }\n\n const { val: data } = oldResult.unwrap();\n if (!data) {\n return oldResult;\n }\n\n if (isStale(data)) {\n memCache.delete(registryUrl); // If no error is thrown, we'll re-set the cache\n const newResult = await this.deltaSync(data, registryUrl);\n cacheResult(registryUrl, newResult);\n return newResult;\n }\n\n return oldResult;\n }\n\n async getVersions(\n registryUrl: string,\n packageName: string,\n ): Promise<VersionsResult> {\n /**\n * Ensure that only one request for a given registryUrl is in flight at a time.\n */\n let cacheRequest = this.cacheRequests.get(registryUrl);\n if (!cacheRequest) {\n cacheRequest = this.getCache(registryUrl);\n this.cacheRequests.set(registryUrl, cacheRequest);\n }\n let cachedResult: VersionsEndpointResult;\n try {\n cachedResult = await cacheRequest;\n } finally {\n this.cacheRequests.delete(registryUrl);\n }\n\n const { val: cachedData } = cachedResult.unwrap();\n if (!cachedData) {\n logger.debug(\n { packageName, registryUrl },\n 'Rubygems: endpoint not supported',\n );\n return Result.err('unsupported-api');\n }\n\n const versions = cachedData.packageVersions.get(packageName);\n if (!versions?.length) {\n logger.debug(\n { packageName, registryUrl },\n 'Rubygems: versions not found',\n );\n return Result.err('package-not-found');\n }\n\n return Result.ok(versions);\n }\n\n private async fullSync(registryUrl: string): Promise<VersionsEndpointResult> {\n try {\n const url = `${registryUrl}/versions`;\n const opts: HttpOptions = { headers: { 'Accept-Encoding': 'gzip' } };\n const { body } = await this.http.getText(url, opts);\n return parseFullBody(body);\n } catch (err) {\n if (err instanceof HttpError && err.response?.statusCode === 404) {\n return Result.err('unsupported-api');\n }\n\n throw err;\n }\n }\n\n private async deltaSync(\n oldCache: VersionsEndpointData,\n registryUrl: string,\n ): Promise<VersionsEndpointResult> {\n try {\n const url = `${registryUrl}/versions`;\n const startByte = oldCache.contentLength - oldCache.contentTail.length;\n const opts: HttpOptions = {\n headers: {\n ['Accept-Encoding']: 'deflate, compress, br', // Note: `gzip` usage breaks http client, when used with `Range` header\n ['Range']: `bytes=${startByte}-`,\n },\n };\n const { statusCode, body } = await this.http.getText(url, opts);\n\n /**\n * Rubygems will return the full body instead of `416 Range Not Satisfiable`.\n * In this case, status code will be 200 instead of 206.\n */\n if (statusCode === 200) {\n return parseFullBody(body);\n }\n\n /**\n * We request data in range that overlaps previously fetched data.\n * If the head of the response doesn't match the tail of the previous response,\n * it means that the data we have is no longer valid.\n * In this case we start over with a full sync.\n */\n const contentHead = getContentHead(body);\n if (contentHead !== oldCache.contentTail) {\n return this.fullSync(registryUrl);\n }\n\n /**\n * Update the cache with the new data.\n */\n const delta = stripContentHead(body);\n const packageVersions = reconcilePackageVersions(\n oldCache.packageVersions,\n VersionLines.parse(delta),\n );\n const syncedAt = DateTime.now().toJSDate();\n const contentLength = oldCache.contentLength + delta.length;\n const contentTail = getContentTail(body);\n\n return Result.ok({\n packageVersions,\n syncedAt,\n contentLength,\n contentTail,\n });\n } catch (err) {\n if (err instanceof HttpError) {\n const responseStatus = err.response?.statusCode;\n\n /**\n * In case of `416 Range Not Satisfiable` we do a full sync.\n * This is unlikely to happen in real life, but anyway.\n */\n if (responseStatus === 416) {\n return this.fullSync(registryUrl);\n }\n\n /**\n * If the endpoint is not supported, we stop trying.\n * This is unlikely to happen in real life, but still.\n */\n if (responseStatus === 404) {\n return Result.err('unsupported-api');\n }\n }\n\n throw err;\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"versions-endpoint-cache.js","names":["HttpError"],"sources":["../../../../lib/modules/datasource/rubygems/versions-endpoint-cache.ts"],"sourcesContent":["import { DateTime } from 'luxon';\nimport { z } from 'zod/v4';\nimport { logger } from '../../../logger/index.ts';\nimport { getElapsedMinutes } from '../../../util/date.ts';\nimport type { Http } from '../../../util/http/index.ts';\nimport { HttpError } from '../../../util/http/index.ts';\nimport type { HttpOptions } from '../../../util/http/types.ts';\nimport { newlineRegex } from '../../../util/regex.ts';\nimport { Result } from '../../../util/result.ts';\nimport { LooseArray } from '../../../util/schema-utils/index.ts';\nimport { copystr } from '../../../util/string.ts';\nimport { parseUrl } from '../../../util/url.ts';\nimport type { VersionsResult } from './types.ts';\n\ntype PackageVersions = Map<string, string[]>;\n\ninterface VersionsEndpointData {\n packageVersions: PackageVersions;\n syncedAt: Date;\n contentLength: number;\n\n /**\n * Last 33 characters of the response (32 hex digits + newline)\n */\n contentTail: string;\n}\n\nfunction getContentTail(content: string): string {\n return content.slice(-33);\n}\n\nfunction getContentHead(content: string): string {\n return content.slice(0, 33);\n}\n\nfunction stripContentHead(content: string): string {\n return content.slice(33);\n}\n\nfunction reconcilePackageVersions(\n packageVersions: PackageVersions,\n versionLines: VersionLines,\n): PackageVersions {\n for (const line of versionLines) {\n const packageName = copystr(line.packageName);\n let versions = packageVersions.get(packageName) ?? [];\n\n const { deletedVersions, addedVersions } = line;\n\n if (deletedVersions.size > 0) {\n versions = versions.filter((v) => !deletedVersions.has(v));\n }\n\n if (addedVersions.length > 0) {\n const existingVersions = new Set(versions);\n for (const addedVersion of addedVersions) {\n if (!existingVersions.has(addedVersion)) {\n const version = copystr(addedVersion);\n versions.push(version);\n }\n }\n }\n\n packageVersions.set(packageName, versions);\n }\n\n return packageVersions;\n}\n\nfunction parseFullBody(body: string): VersionsEndpointResult {\n const packageVersions = reconcilePackageVersions(\n new Map<string, string[]>(),\n VersionLines.parse(body),\n );\n const syncedAt = DateTime.now().toJSDate();\n const contentLength = body.length;\n const contentTail = getContentTail(body);\n\n return Result.ok({\n packageVersions,\n syncedAt,\n contentLength,\n contentTail,\n });\n}\n\ntype VersionsEndpointResult = Result<VersionsEndpointData, 'unsupported-api'>;\n\nexport const memCache = new Map<string, VersionsEndpointResult>();\n\nfunction cacheResult(\n registryUrl: string,\n result: VersionsEndpointResult,\n): void {\n const registryHostname = parseUrl(registryUrl)?.hostname;\n if (registryHostname === 'rubygems.org') {\n memCache.set(registryUrl, result);\n }\n}\n\nconst VersionLines = z\n .string()\n .transform((x) => x.split(newlineRegex))\n .pipe(\n LooseArray(\n z\n .string()\n .transform((line) => line.trim())\n .refine((line) => line.length > 0)\n .refine((line) => !line.startsWith('created_at:'))\n .refine((line) => line !== '---')\n .transform((line) => line.split(' '))\n .pipe(z.tuple([z.string(), z.string()]).rest(z.string()))\n .transform(([packageName, versions]) => {\n const deletedVersions = new Set<string>();\n const addedVersions: string[] = [];\n for (const version of versions.split(',')) {\n if (version.startsWith('-')) {\n deletedVersions.add(version.slice(1));\n } else {\n addedVersions.push(version);\n }\n }\n return { packageName, deletedVersions, addedVersions };\n }),\n ),\n );\ntype VersionLines = z.infer<typeof VersionLines>;\n\nfunction isStale(regCache: VersionsEndpointData): boolean {\n return getElapsedMinutes(regCache.syncedAt) >= 15;\n}\n\nexport class VersionsEndpointCache {\n private readonly http: Http;\n\n constructor(http: Http) {\n this.http = http;\n }\n\n private cacheRequests = new Map<string, Promise<VersionsEndpointResult>>();\n\n /**\n * At any given time, there should only be one request for a given registryUrl.\n */\n private async getCache(registryUrl: string): Promise<VersionsEndpointResult> {\n const oldResult = memCache.get(registryUrl);\n if (!oldResult) {\n const newResult = await this.fullSync(registryUrl);\n cacheResult(registryUrl, newResult);\n return newResult;\n }\n\n const { val: data } = oldResult.unwrap();\n if (!data) {\n return oldResult;\n }\n\n if (isStale(data)) {\n memCache.delete(registryUrl); // If no error is thrown, we'll re-set the cache\n const newResult = await this.deltaSync(data, registryUrl);\n cacheResult(registryUrl, newResult);\n return newResult;\n }\n\n return oldResult;\n }\n\n async getVersions(\n registryUrl: string,\n packageName: string,\n ): Promise<VersionsResult> {\n /**\n * Ensure that only one request for a given registryUrl is in flight at a time.\n */\n let cacheRequest = this.cacheRequests.get(registryUrl);\n if (!cacheRequest) {\n cacheRequest = this.getCache(registryUrl);\n this.cacheRequests.set(registryUrl, cacheRequest);\n }\n let cachedResult: VersionsEndpointResult;\n try {\n cachedResult = await cacheRequest;\n } finally {\n this.cacheRequests.delete(registryUrl);\n }\n\n const { val: cachedData } = cachedResult.unwrap();\n if (!cachedData) {\n logger.debug(\n { packageName, registryUrl },\n 'Rubygems: endpoint not supported',\n );\n return Result.err('unsupported-api');\n }\n\n const versions = cachedData.packageVersions.get(packageName);\n if (!versions?.length) {\n logger.debug(\n { packageName, registryUrl },\n 'Rubygems: versions not found',\n );\n return Result.err('package-not-found');\n }\n\n return Result.ok(versions);\n }\n\n private async fullSync(registryUrl: string): Promise<VersionsEndpointResult> {\n try {\n const url = `${registryUrl}/versions`;\n const opts: HttpOptions = { headers: { 'Accept-Encoding': 'gzip' } };\n const { body } = await this.http.getText(url, opts);\n return parseFullBody(body);\n } catch (err) {\n if (err instanceof HttpError && err.response?.statusCode === 404) {\n return Result.err('unsupported-api');\n }\n\n throw err;\n }\n }\n\n private async deltaSync(\n oldCache: VersionsEndpointData,\n registryUrl: string,\n ): Promise<VersionsEndpointResult> {\n try {\n const url = `${registryUrl}/versions`;\n const startByte = oldCache.contentLength - oldCache.contentTail.length;\n const opts: HttpOptions = {\n headers: {\n ['Accept-Encoding']: 'deflate, compress, br', // Note: `gzip` usage breaks http client, when used with `Range` header\n ['Range']: `bytes=${startByte}-`,\n },\n };\n const { statusCode, body } = await this.http.getText(url, opts);\n\n /**\n * Rubygems will return the full body instead of `416 Range Not Satisfiable`.\n * In this case, status code will be 200 instead of 206.\n */\n if (statusCode === 200) {\n return parseFullBody(body);\n }\n\n /**\n * We request data in range that overlaps previously fetched data.\n * If the head of the response doesn't match the tail of the previous response,\n * it means that the data we have is no longer valid.\n * In this case we start over with a full sync.\n */\n const contentHead = getContentHead(body);\n if (contentHead !== oldCache.contentTail) {\n return this.fullSync(registryUrl);\n }\n\n /**\n * Update the cache with the new data.\n */\n const delta = stripContentHead(body);\n const packageVersions = reconcilePackageVersions(\n oldCache.packageVersions,\n VersionLines.parse(delta),\n );\n const syncedAt = DateTime.now().toJSDate();\n const contentLength = oldCache.contentLength + delta.length;\n const contentTail = getContentTail(body);\n\n return Result.ok({\n packageVersions,\n syncedAt,\n contentLength,\n contentTail,\n });\n } catch (err) {\n if (err instanceof HttpError) {\n const responseStatus = err.response?.statusCode;\n\n /**\n * In case of `416 Range Not Satisfiable` we do a full sync.\n * This is unlikely to happen in real life, but anyway.\n */\n if (responseStatus === 416) {\n return this.fullSync(registryUrl);\n }\n\n /**\n * If the endpoint is not supported, we stop trying.\n * This is unlikely to happen in real life, but still.\n */\n if (responseStatus === 404) {\n return Result.err('unsupported-api');\n }\n }\n\n throw err;\n }\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["rustVersioning.id"],"sources":["../../../../lib/modules/datasource/rust-version/index.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport { withCache } from '../../../util/cache/package/with-cache.ts';\nimport { asTimestamp } from '../../../util/timestamp.ts';\nimport * as rustVersioning from '../../versioning/rust-release-channel/index.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, ReleaseResult } from '../types.ts';\nimport { type ParsedManifestUrl, parseManifestUrl } from './parse.ts';\n\nexport class RustVersionDatasource extends Datasource {\n static readonly id = 'rust-version';\n\n override readonly customRegistrySupport = false;\n\n override readonly defaultRegistryUrls = ['https://static.rust-lang.org'];\n\n override readonly defaultVersioning = rustVersioning.id;\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is parsed from the release manifest URL.';\n\n override readonly sourceUrlSupport = 'package';\n\n override readonly caching = true;\n\n constructor() {\n super(RustVersionDatasource.id);\n }\n\n private async getManifests(url: URL): Promise<ParsedManifestUrl[]> {\n const response = await this.http.getText(url);\n const lines = response.body.split('\\n');\n\n const parsedResults = [];\n for (const line of lines) {\n // skip trailing empty element from .split('\\n') upstream\n if (!line.trim()) {\n continue;\n }\n const parsed = parseManifestUrl(line);\n if (parsed) {\n parsedResults.push(parsed);\n } else {\n logger.warn({ line }, 'Failed to parse manifest URL');\n }\n }\n\n return parsedResults;\n }\n\n async _getReleases({\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n const url = new URL('manifests.txt', registryUrl);\n\n let parsedResults: ParsedManifestUrl[];\n try {\n parsedResults = await this.getManifests(url);\n } catch (err) {\n this.handleGenericErrors(err);\n }\n\n // Filter out dated stable and beta channel releases\n // (not supported by the `rust-release-channel` versioning)\n const filteredResults = parsedResults.filter(\n (result) => result.version !== 'stable' && result.version !== 'beta',\n );\n\n // Transform to version strings and deduplicate\n const versionMap = new Map<string, string>();\n for (const parsed of filteredResults) {\n const version =\n parsed.version === 'nightly'\n ? `nightly-${parsed.date}`\n : parsed.version;\n\n // Keep latest date for each version\n versionMap.set(version, parsed.date);\n }\n\n const releaseResult: ReleaseResult = {\n releases: [],\n homepage: 'https://rust-lang.org/',\n sourceUrl: 'https://github.com/rust-lang/rust',\n changelogUrl: 'https://github.com/rust-lang/rust/blob/main/RELEASES.md',\n };\n\n for (const [version, date] of versionMap.entries()) {\n const releaseTimestamp = asTimestamp(date);\n releaseResult.releases.push({ version, releaseTimestamp });\n }\n\n return releaseResult;\n }\n\n getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n return withCache(\n {\n namespace: `datasource-${RustVersionDatasource.id}`,\n key: config.registryUrl!,\n },\n () => this._getReleases(config),\n );\n }\n}\n"],"mappings":";;;;;;;AAQA,IAAa,wBAAb,MAAa,8BAA8B,WAAW;CACpD,OAAgB,KAAK;CAErB,wBAA0C;CAE1C,sBAAwC,CAAC,8BAA8B;CAEvE,oBAAsCA;CAEtC,0BAA4C;CAC5C,uBACE;CAEF,mBAAqC;CAErC,UAA4B;CAE5B,cAAc;EACZ,MAAM,sBAAsB,EAAE;CAChC;CAEA,MAAc,aAAa,KAAwC;EAEjE,MAAM,SAAQ,MADS,KAAK,KAAK,QAAQ,GAAG,EAAA,CACrB,KAAK,MAAM,IAAI;EAEtC,MAAM,gBAAgB,CAAC;EACvB,KAAK,MAAM,QAAQ,OAAO;GAExB,IAAI,CAAC,KAAK,KAAK,GACb;GAEF,MAAM,SAAS,iBAAiB,IAAI;GACpC,IAAI,QACF,cAAc,KAAK,MAAM;QAEzB,OAAO,KAAK,EAAE,KAAK,GAAG,8BAA8B;EAExD;EAEA,OAAO;CACT;CAEA,MAAM,aAAa,EACjB,eACmD;EACnD,MAAM,MAAM,IAAI,IAAI,iBAAiB,WAAW;EAEhD,IAAI;EACJ,IAAI;GACF,gBAAgB,MAAM,KAAK,aAAa,GAAG;EAC7C,SAAS,KAAK;GACZ,KAAK,oBAAoB,GAAG;EAC9B;EAIA,MAAM,kBAAkB,cAAc,QACnC,WAAW,OAAO,YAAY,YAAY,OAAO,YAAY,MAChE;EAGA,MAAM,6BAAa,IAAI,IAAoB;EAC3C,KAAK,MAAM,UAAU,iBAAiB;GACpC,MAAM,UACJ,OAAO,YAAY,YACf,WAAW,OAAO,SAClB,OAAO;GAGb,WAAW,IAAI,SAAS,OAAO,IAAI;EACrC;EAEA,MAAM,gBAA+B;GACnC,UAAU,CAAC;GACX,UAAU;GACV,WAAW;GACX,cAAc;EAChB;EAEA,KAAK,MAAM,CAAC,SAAS,SAAS,WAAW,QAAQ,GAAG;GAClD,MAAM,mBAAmB,YAAY,IAAI;GACzC,cAAc,SAAS,KAAK;IAAE;IAAS;GAAiB,CAAC;EAC3D;EAEA,OAAO;CACT;CAEA,YAAY,QAA0D;EACpE,OAAO,UACL;GACE,WAAW,cAAc,sBAAsB;GAC/C,KAAK,OAAO;EACd,SACM,KAAK,aAAa,MAAM,CAChC;CACF;AACF"}
1
+ {"version":3,"file":"index.js","names":["rustVersioning.id"],"sources":["../../../../lib/modules/datasource/rust-version/index.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport { withCache } from '../../../util/cache/package/with-cache.ts';\nimport { asTimestamp } from '../../../util/timestamp.ts';\nimport * as rustVersioning from '../../versioning/rust-release-channel/index.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, ReleaseResult } from '../types.ts';\nimport { parseManifestUrl } from './parse.ts';\nimport type { ParsedManifestUrl } from './types.ts';\n\nexport class RustVersionDatasource extends Datasource {\n static readonly id = 'rust-version';\n\n override readonly customRegistrySupport = false;\n\n override readonly defaultRegistryUrls = ['https://static.rust-lang.org'];\n\n override readonly defaultVersioning = rustVersioning.id;\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is parsed from the release manifest URL.';\n\n override readonly sourceUrlSupport = 'package';\n\n override readonly caching = true;\n\n constructor() {\n super(RustVersionDatasource.id);\n }\n\n private async getManifests(url: URL): Promise<ParsedManifestUrl[]> {\n const response = await this.http.getText(url);\n const lines = response.body.split('\\n');\n\n const parsedResults = [];\n for (const line of lines) {\n // skip trailing empty element from .split('\\n') upstream\n if (!line.trim()) {\n continue;\n }\n const parsed = parseManifestUrl(line);\n if (parsed) {\n parsedResults.push(parsed);\n } else {\n logger.warn({ line }, 'Failed to parse manifest URL');\n }\n }\n\n return parsedResults;\n }\n\n async _getReleases({\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n const url = new URL('manifests.txt', registryUrl);\n\n let parsedResults: ParsedManifestUrl[];\n try {\n parsedResults = await this.getManifests(url);\n } catch (err) {\n this.handleGenericErrors(err);\n }\n\n // Filter out dated stable and beta channel releases\n // (not supported by the `rust-release-channel` versioning)\n const filteredResults = parsedResults.filter(\n (result) => result.version !== 'stable' && result.version !== 'beta',\n );\n\n // Transform to version strings and deduplicate\n const versionMap = new Map<string, string>();\n for (const parsed of filteredResults) {\n const version =\n parsed.version === 'nightly'\n ? `nightly-${parsed.date}`\n : parsed.version;\n\n // Keep latest date for each version\n versionMap.set(version, parsed.date);\n }\n\n const releaseResult: ReleaseResult = {\n releases: [],\n homepage: 'https://rust-lang.org/',\n sourceUrl: 'https://github.com/rust-lang/rust',\n changelogUrl: 'https://github.com/rust-lang/rust/blob/main/RELEASES.md',\n };\n\n for (const [version, date] of versionMap.entries()) {\n const releaseTimestamp = asTimestamp(date);\n releaseResult.releases.push({ version, releaseTimestamp });\n }\n\n return releaseResult;\n }\n\n getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n return withCache(\n {\n namespace: `datasource-${RustVersionDatasource.id}`,\n key: config.registryUrl!,\n },\n () => this._getReleases(config),\n );\n }\n}\n"],"mappings":";;;;;;;AASA,IAAa,wBAAb,MAAa,8BAA8B,WAAW;CACpD,OAAgB,KAAK;CAErB,wBAA0C;CAE1C,sBAAwC,CAAC,8BAA8B;CAEvE,oBAAsCA;CAEtC,0BAA4C;CAC5C,uBACE;CAEF,mBAAqC;CAErC,UAA4B;CAE5B,cAAc;EACZ,MAAM,sBAAsB,EAAE;CAChC;CAEA,MAAc,aAAa,KAAwC;EAEjE,MAAM,SAAQ,MADS,KAAK,KAAK,QAAQ,GAAG,EAAA,CACrB,KAAK,MAAM,IAAI;EAEtC,MAAM,gBAAgB,CAAC;EACvB,KAAK,MAAM,QAAQ,OAAO;GAExB,IAAI,CAAC,KAAK,KAAK,GACb;GAEF,MAAM,SAAS,iBAAiB,IAAI;GACpC,IAAI,QACF,cAAc,KAAK,MAAM;QAEzB,OAAO,KAAK,EAAE,KAAK,GAAG,8BAA8B;EAExD;EAEA,OAAO;CACT;CAEA,MAAM,aAAa,EACjB,eACmD;EACnD,MAAM,MAAM,IAAI,IAAI,iBAAiB,WAAW;EAEhD,IAAI;EACJ,IAAI;GACF,gBAAgB,MAAM,KAAK,aAAa,GAAG;EAC7C,SAAS,KAAK;GACZ,KAAK,oBAAoB,GAAG;EAC9B;EAIA,MAAM,kBAAkB,cAAc,QACnC,WAAW,OAAO,YAAY,YAAY,OAAO,YAAY,MAChE;EAGA,MAAM,6BAAa,IAAI,IAAoB;EAC3C,KAAK,MAAM,UAAU,iBAAiB;GACpC,MAAM,UACJ,OAAO,YAAY,YACf,WAAW,OAAO,SAClB,OAAO;GAGb,WAAW,IAAI,SAAS,OAAO,IAAI;EACrC;EAEA,MAAM,gBAA+B;GACnC,UAAU,CAAC;GACX,UAAU;GACV,WAAW;GACX,cAAc;EAChB;EAEA,KAAK,MAAM,CAAC,SAAS,SAAS,WAAW,QAAQ,GAAG;GAClD,MAAM,mBAAmB,YAAY,IAAI;GACzC,cAAc,SAAS,KAAK;IAAE;IAAS;GAAiB,CAAC;EAC3D;EAEA,OAAO;CACT;CAEA,YAAY,QAA0D;EACpE,OAAO,UACL;GACE,WAAW,cAAc,sBAAsB;GAC/C,KAAK,OAAO;EACd,SACM,KAAK,aAAa,MAAM,CAChC;CACF;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"parse.js","names":[],"sources":["../../../../lib/modules/datasource/rust-version/parse.ts"],"sourcesContent":["import { regEx } from '../../../util/regex.ts';\n\nexport interface ParsedManifestUrl {\n date: string;\n version: string;\n}\n\n/**\n * Parse a Rust manifest URL to extract the release date and version identifier.\n *\n * Supports the format: .../YYYY-MM-DD/channel-rust-{identifier}.toml\n *\n * @param url - The manifest URL to parse\n * @returns Parsed manifest data, or null if the URL is invalid\n *\n * @example\n * parseManifestUrl('static.rust-lang.org/dist/2025-11-24/channel-rust-nightly.toml')\n * // { date: '2025-11-24', version: 'nightly' }\n *\n * parseManifestUrl('static.rust-lang.org/dist/2024-10-17/channel-rust-1.82.0.toml')\n * // { date: '2024-10-17', version: '1.82.0' }\n *\n * parseManifestUrl('invalid-url')\n * // null\n */\nexport function parseManifestUrl(url: string): ParsedManifestUrl | null {\n // Permissive regex to extract date and version from manifest URLs\n // Matches: .../YYYY-MM-DD/channel-rust-{identifier}.toml\n const pattern = regEx(\n /(?<date>\\d{4}-\\d{2}-\\d{2})\\/channel-rust-(?<version>.+?)\\.toml$/,\n );\n\n const match = pattern.exec(url);\n if (!match?.groups) {\n return null;\n }\n\n const { date, version } = match.groups;\n\n return { date, version };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAyBA,SAAgB,iBAAiB,KAAuC;CAOtE,MAAM,QAJU,MACd,iEAGkB,CAAC,CAAC,KAAK,GAAG;CAC9B,IAAI,CAAC,OAAO,QACV,OAAO;CAGT,MAAM,EAAE,MAAM,YAAY,MAAM;CAEhC,OAAO;EAAE;EAAM;CAAQ;AACzB"}
1
+ {"version":3,"file":"parse.js","names":[],"sources":["../../../../lib/modules/datasource/rust-version/parse.ts"],"sourcesContent":["import { regEx } from '../../../util/regex.ts';\nimport type { ParsedManifestUrl } from './types.ts';\n\n/**\n * Parse a Rust manifest URL to extract the release date and version identifier.\n *\n * Supports the format: .../YYYY-MM-DD/channel-rust-{identifier}.toml\n *\n * @param url - The manifest URL to parse\n * @returns Parsed manifest data, or null if the URL is invalid\n *\n * @example\n * parseManifestUrl('static.rust-lang.org/dist/2025-11-24/channel-rust-nightly.toml')\n * // { date: '2025-11-24', version: 'nightly' }\n *\n * parseManifestUrl('static.rust-lang.org/dist/2024-10-17/channel-rust-1.82.0.toml')\n * // { date: '2024-10-17', version: '1.82.0' }\n *\n * parseManifestUrl('invalid-url')\n * // null\n */\nexport function parseManifestUrl(url: string): ParsedManifestUrl | null {\n // Permissive regex to extract date and version from manifest URLs\n // Matches: .../YYYY-MM-DD/channel-rust-{identifier}.toml\n const pattern = regEx(\n /(?<date>\\d{4}-\\d{2}-\\d{2})\\/channel-rust-(?<version>.+?)\\.toml$/,\n );\n\n const match = pattern.exec(url);\n if (!match?.groups) {\n return null;\n }\n\n const { date, version } = match.groups;\n\n return { date, version };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAqBA,SAAgB,iBAAiB,KAAuC;CAOtE,MAAM,QAJU,MACd,iEAGkB,CAAC,CAAC,KAAK,GAAG;CAC9B,IAAI,CAAC,OAAO,QACV,OAAO;CAGT,MAAM,EAAE,MAAM,YAAY,MAAM;CAEhC,OAAO;EAAE;EAAM;CAAQ;AACzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/asdf/extract.ts"],"sourcesContent":["import { isFunction, isTruthy } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { isSkipComment } from '../../../util/ignore.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport type { PackageDependency, PackageFileContent } from '../types.ts';\nimport type { StaticTooling } from './upgradeable-tooling.ts';\nimport { upgradeableTooling } from './upgradeable-tooling.ts';\n\nexport function extractPackageFile(content: string): PackageFileContent | null {\n logger.trace(`asdf.extractPackageFile()`);\n\n const regex = regEx(\n /^(?<toolName>([\\w_-]+)) +(?<version>[^\\s#]+)(?: +[^\\s#]+)* *(?: #(?<comment>.*))?$/gm,\n );\n\n const deps: PackageDependency[] = [];\n\n for (const groups of [...content.matchAll(regex)]\n .map((m) => m.groups)\n .filter(isTruthy)) {\n const depName = groups.toolName.trim();\n const version = groups.version.trim();\n\n const toolConfig = upgradeableTooling[depName];\n let toolDefinition: StaticTooling | undefined;\n if (toolConfig) {\n toolDefinition = isFunction(toolConfig.config)\n ? toolConfig.config(version)\n : toolConfig.config;\n }\n\n if (toolDefinition) {\n const dep: PackageDependency = {\n currentValue: version,\n depName,\n ...toolDefinition,\n };\n if (isSkipComment((groups.comment ?? '').trim())) {\n dep.skipReason = 'ignored';\n }\n\n deps.push(dep);\n } else {\n const dep: PackageDependency = {\n depName,\n skipReason: 'unsupported-datasource',\n };\n\n deps.push(dep);\n }\n }\n\n return deps.length ? { deps } : null;\n}\n"],"mappings":";;;;;;AAQA,SAAgB,mBAAmB,SAA4C;CAC7E,OAAO,MAAM,2BAA2B;CAExC,MAAM,QAAQ,MACZ,sFACF;CAEA,MAAM,OAA4B,CAAC;CAEnC,KAAK,MAAM,UAAU,CAAC,GAAG,QAAQ,SAAS,KAAK,CAAC,CAAC,CAC9C,KAAK,MAAM,EAAE,MAAM,CAAC,CACpB,OAAO,QAAQ,GAAG;EACnB,MAAM,UAAU,OAAO,SAAS,KAAK;EACrC,MAAM,UAAU,OAAO,QAAQ,KAAK;EAEpC,MAAM,aAAa,mBAAmB;EACtC,IAAI;EACJ,IAAI,YACF,iBAAiB,WAAW,WAAW,MAAM,IACzC,WAAW,OAAO,OAAO,IACzB,WAAW;EAGjB,IAAI,gBAAgB;GAClB,MAAM,MAAyB;IAC7B,cAAc;IACd;IACA,GAAG;GACL;GACA,IAAI,eAAe,OAAO,WAAW,GAAA,CAAI,KAAK,CAAC,GAC7C,IAAI,aAAa;GAGnB,KAAK,KAAK,GAAG;EACf,OAAO;GACL,MAAM,MAAyB;IAC7B;IACA,YAAY;GACd;GAEA,KAAK,KAAK,GAAG;EACf;CACF;CAEA,OAAO,KAAK,SAAS,EAAE,KAAK,IAAI;AAClC"}
1
+ {"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/asdf/extract.ts"],"sourcesContent":["import { isFunction, isTruthy } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { isSkipComment } from '../../../util/ignore.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport type { PackageDependency, PackageFileContent } from '../types.ts';\nimport type { StaticTooling } from './types.ts';\nimport { upgradeableTooling } from './upgradeable-tooling.ts';\n\nexport function extractPackageFile(content: string): PackageFileContent | null {\n logger.trace(`asdf.extractPackageFile()`);\n\n const regex = regEx(\n /^(?<toolName>([\\w_-]+)) +(?<version>[^\\s#]+)(?: +[^\\s#]+)* *(?: #(?<comment>.*))?$/gm,\n );\n\n const deps: PackageDependency[] = [];\n\n for (const groups of [...content.matchAll(regex)]\n .map((m) => m.groups)\n .filter(isTruthy)) {\n const depName = groups.toolName.trim();\n const version = groups.version.trim();\n\n const toolConfig = upgradeableTooling[depName];\n let toolDefinition: StaticTooling | undefined;\n if (toolConfig) {\n toolDefinition = isFunction(toolConfig.config)\n ? toolConfig.config(version)\n : toolConfig.config;\n }\n\n if (toolDefinition) {\n const dep: PackageDependency = {\n currentValue: version,\n depName,\n ...toolDefinition,\n };\n if (isSkipComment((groups.comment ?? '').trim())) {\n dep.skipReason = 'ignored';\n }\n\n deps.push(dep);\n } else {\n const dep: PackageDependency = {\n depName,\n skipReason: 'unsupported-datasource',\n };\n\n deps.push(dep);\n }\n }\n\n return deps.length ? { deps } : null;\n}\n"],"mappings":";;;;;;AAQA,SAAgB,mBAAmB,SAA4C;CAC7E,OAAO,MAAM,2BAA2B;CAExC,MAAM,QAAQ,MACZ,sFACF;CAEA,MAAM,OAA4B,CAAC;CAEnC,KAAK,MAAM,UAAU,CAAC,GAAG,QAAQ,SAAS,KAAK,CAAC,CAAC,CAC9C,KAAK,MAAM,EAAE,MAAM,CAAC,CACpB,OAAO,QAAQ,GAAG;EACnB,MAAM,UAAU,OAAO,SAAS,KAAK;EACrC,MAAM,UAAU,OAAO,QAAQ,KAAK;EAEpC,MAAM,aAAa,mBAAmB;EACtC,IAAI;EACJ,IAAI,YACF,iBAAiB,WAAW,WAAW,MAAM,IACzC,WAAW,OAAO,OAAO,IACzB,WAAW;EAGjB,IAAI,gBAAgB;GAClB,MAAM,MAAyB;IAC7B,cAAc;IACd;IACA,GAAG;GACL;GACA,IAAI,eAAe,OAAO,WAAW,GAAA,CAAI,KAAK,CAAC,GAC7C,IAAI,aAAa;GAGnB,KAAK,KAAK,GAAG;EACf,OAAO;GACL,MAAM,MAAyB;IAC7B;IACA,YAAY;GACd;GAEA,KAAK,KAAK,GAAG;EACf;CACF;CAEA,OAAO,KAAK,SAAS,EAAE,KAAK,IAAI;AAClC"}
@@ -1 +1 @@
1
- {"version":3,"file":"upgradeable-tooling.js","names":["regexVersioning.id","semverVersioning.id"],"sources":["../../../../lib/modules/manager/asdf/upgradeable-tooling.ts"],"sourcesContent":["import { regEx } from '../../../util/regex.ts';\nimport { DartVersionDatasource } from '../../datasource/dart-version/index.ts';\nimport { DockerDatasource } from '../../datasource/docker/index.ts';\nimport { DotnetVersionDatasource } from '../../datasource/dotnet-version/index.ts';\nimport { FlutterVersionDatasource } from '../../datasource/flutter-version/index.ts';\nimport { GithubReleasesDatasource } from '../../datasource/github-releases/index.ts';\nimport { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';\nimport { HexpmBobDatasource } from '../../datasource/hexpm-bob/index.ts';\nimport { JavaVersionDatasource } from '../../datasource/java-version/index.ts';\nimport { NodeVersionDatasource } from '../../datasource/node-version/index.ts';\nimport { NpmDatasource } from '../../datasource/npm/index.ts';\nimport { PypiDatasource } from '../../datasource/pypi/index.ts';\nimport { RubyVersionDatasource } from '../../datasource/ruby-version/index.ts';\nimport { RustVersionDatasource } from '../../datasource/rust-version/index.ts';\nimport * as regexVersioning from '../../versioning/regex/index.ts';\nimport * as semverVersioning from '../../versioning/semver/index.ts';\nimport type { PackageDependency } from '../types.ts';\n\nexport type StaticTooling = Partial<PackageDependency> &\n Required<Pick<PackageDependency, 'datasource'>>;\n\nexport type DynamicTooling = (version: string) => StaticTooling | undefined;\n\nexport type ToolingConfig = StaticTooling | DynamicTooling;\nexport interface ToolingDefinition {\n config: ToolingConfig;\n asdfPluginUrl: string;\n}\n\nconst hugoDefinition: ToolingDefinition = {\n // This plugin supports the names `hugo` & `gohugo`\n asdfPluginUrl: 'https://github.com/NeoHsu/asdf-hugo',\n config: (version) => ({\n datasource: GithubReleasesDatasource.id,\n packageName: 'gohugoio/hugo',\n extractVersion: '^v(?<version>\\\\S+)',\n // The asdf hugo plugin supports prefixing the version with\n // `extended_`. Extended versions feature Sass support.\n currentValue: version.replace(regEx(/^extended_/), ''),\n }),\n};\n\nexport const upgradeableTooling: Record<string, ToolingDefinition> = {\n act: {\n asdfPluginUrl: 'https://github.com/grimoh/asdf-act.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'nektos/act',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n actionlint: {\n asdfPluginUrl: 'https://github.com/crazy-matt/asdf-actionlint',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'rhysd/actionlint',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'adr-tools': {\n asdfPluginUrl: 'https://gitlab.com/td7x/asdf/adr-tools.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'npryce/adr-tools',\n },\n },\n apm: {\n asdfPluginUrl: 'https://github.com/edwinhern/asdf-apm',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'microsoft/apm',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n argocd: {\n asdfPluginUrl: 'https://github.com/beardix/asdf-argocd',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'argoproj/argo-cd',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'asdf-plugin-manager': {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-plugin-manager',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'asdf-community/asdf-plugin-manager',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n atmos: {\n asdfPluginUrl: 'https://github.com/cloudposse/asdf-atmos',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'cloudposse/atmos',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n awscli: {\n asdfPluginUrl: 'https://github.com/MetricMike/asdf-awscli',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'aws/aws-cli',\n },\n },\n 'azure-cli': {\n asdfPluginUrl: 'https://github.com/sourcesense/asdf-azure-cli',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'Azure/azure-cli',\n extractVersion: '^azure-cli-(?<version>\\\\S+)',\n },\n },\n bun: {\n asdfPluginUrl: 'https://github.com/cometkim/asdf-bun',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'oven-sh/bun',\n extractVersion: '^bun-v(?<version>\\\\S+)',\n },\n },\n 'cargo-make': {\n asdfPluginUrl: 'https://github.com/mise-plugins/asdf-cargo-make',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'sagiegurari/cargo-make',\n },\n },\n checkov: {\n asdfPluginUrl: 'https://github.com/bosmak/asdf-checkov.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'bridgecrewio/checkov',\n },\n },\n clojure: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-clojure',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'clojure/brew-install',\n versioning: `${regexVersioning.id}:^(?<major>\\\\d+?)\\\\.(?<minor>\\\\d+?)\\\\.(?<patch>\\\\d+)\\\\.(?<build>\\\\d+)$`,\n },\n },\n clusterctl: {\n asdfPluginUrl: 'https://github.com/pfnet-research/asdf-clusterctl',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'kubernetes-sigs/cluster-api',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n conftest: {\n asdfPluginUrl: 'https://github.com/looztra/asdf-conftest',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'open-policy-agent/conftest',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'container-structure-test': {\n asdfPluginUrl:\n 'https://github.com/FeryET/asdf-container-structure-test.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'GoogleContainerTools/container-structure-test',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n cookiecutter: {\n asdfPluginUrl: 'https://github.com/shawon-crosen/asdf-cookiecutter',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'cookiecutter/cookiecutter',\n versioning: semverVersioning.id,\n },\n },\n cosign: {\n asdfPluginUrl: 'https://gitlab.com/wt0f/asdf-cosign',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'sigstore/cosign',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n crystal: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-crystal',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'crystal-lang/crystal',\n },\n },\n dart: {\n asdfPluginUrl: 'https://github.com/PatOConnor43/asdf-dart',\n config: {\n datasource: DartVersionDatasource.id,\n },\n },\n deno: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-deno',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'denoland/deno',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n direnv: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-direnv',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'direnv/direnv',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'dotnet-core': {\n asdfPluginUrl: 'https://github.com/emersonsoares/asdf-dotnet-core',\n config: {\n datasource: DotnetVersionDatasource.id,\n packageName: 'dotnet-sdk',\n },\n },\n dprint: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-dprint',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'dprint/dprint',\n },\n },\n ecspresso: {\n asdfPluginUrl: 'https://github.com/kayac/asdf-ecspresso',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'kayac/ecspresso',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'editorconfig-checker': {\n asdfPluginUrl: 'https://github.com/gabitchov/asdf-editorconfig-checker',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'editorconfig-checker/editorconfig-checker',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n elixir: {\n asdfPluginUrl: 'https://github.com/asdf-vm/asdf-elixir',\n config: {\n datasource: HexpmBobDatasource.id,\n },\n },\n elm: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-elm',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'elm/compiler',\n },\n },\n erlang: {\n asdfPluginUrl: 'https://github.com/asdf-vm/asdf-erlang',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'erlang/otp',\n extractVersion: '^OTP-(?<version>\\\\S+)',\n versioning: `${regexVersioning.id}:^(?<major>\\\\d+?)\\\\.(?<minor>\\\\d+?)(\\\\.(?<patch>\\\\d+))?$`,\n },\n },\n flutter: {\n asdfPluginUrl: 'https://github.com/oae/asdf-flutter',\n config: (version) => ({\n datasource: FlutterVersionDatasource.id,\n // asdf-flutter plugin supports channel on version suffix.\n currentValue: version.replace(regEx(/-(stable|beta|dev)$/), ''),\n }),\n },\n flux2: {\n asdfPluginUrl: 'https://github.com/tablexi/asdf-flux2.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'fluxcd/flux2',\n extractVersion: '^v(?<version>.+)',\n },\n },\n gauche: {\n asdfPluginUrl: 'https://github.com/sakuro/asdf-gauche',\n config: {\n datasource: DockerDatasource.id,\n packageName: 'practicalscheme/gauche',\n },\n },\n 'github-cli': {\n asdfPluginUrl: 'https://github.com/bartlomiejdanek/asdf-github-cli.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'cli/cli',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n gitleaks: {\n asdfPluginUrl: 'https://github.com/jmcvetta/asdf-gitleaks',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'gitleaks/gitleaks',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n ginkgo: {\n asdfPluginUrl: 'https://github.com/jimmidyson/asdf-ginkgo',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'onsi/ginkgo',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n gleam: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-gleam.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'gleam-lang/gleam',\n extractVersion: '^v(?<version>.+)',\n },\n },\n gohugo: hugoDefinition,\n golang: {\n asdfPluginUrl: 'https://github.com/kennyp/asdf-golang',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'golang/go',\n extractVersion: '^go(?<version>\\\\S+)',\n },\n },\n 'golangci-lint': {\n asdfPluginUrl: 'https://github.com/hypnoglow/asdf-golangci-lint.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'golangci/golangci-lint',\n extractVersion: '^v(?<version>.+)',\n },\n },\n gomplate: {\n asdfPluginUrl: 'https://github.com/sneakybeaky/asdf-gomplate',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'hairyhenderson/gomplate',\n extractVersion: '^v(?<version>.+)',\n },\n },\n gotestsum: {\n asdfPluginUrl: 'https://github.com/hpcsc/asdf-gotestsum',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'gotestyourself/gotestsum',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n hadolint: {\n asdfPluginUrl: 'https://github.com/looztra/asdf-hadolint.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'hadolint/hadolint',\n extractVersion: '^v(?<version>.+)',\n },\n },\n haskell: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-haskell',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'ghc/ghc',\n extractVersion: '^ghc-(?<version>\\\\S+?)-release',\n },\n },\n helm: {\n asdfPluginUrl: 'https://github.com/Antiarchitect/asdf-helm',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'helm/helm',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'helm-docs': {\n asdfPluginUrl: 'https://github.com/sudermanjr/asdf-helm-docs.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'norwoodj/helm-docs',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n helmfile: {\n asdfPluginUrl: 'https://github.com/feniix/asdf-helmfile',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'helmfile/helmfile',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n hugo: hugoDefinition,\n idris: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-idris',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'idris-lang/Idris-dev',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n istioctl: {\n asdfPluginUrl: 'https://github.com/virtualstaticvoid/asdf-istioctl',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'istio/istio',\n versioning: semverVersioning.id,\n },\n },\n java: {\n asdfPluginUrl: 'https://github.com/halcyon/asdf-java',\n config: (version) => {\n const adoptOpenJdkMatches = regEx(/^adoptopenjdk-(?<version>\\d\\S+)/).exec(\n version,\n )?.groups;\n if (adoptOpenJdkMatches) {\n return {\n datasource: JavaVersionDatasource.id,\n packageName: 'java-jdk',\n currentValue: adoptOpenJdkMatches.version,\n };\n }\n const adoptOpenJreMatches = regEx(\n /^adoptopenjdk-jre-(?<version>\\d\\S+)/,\n ).exec(version)?.groups;\n if (adoptOpenJreMatches) {\n return {\n datasource: JavaVersionDatasource.id,\n packageName: 'java-jre',\n currentValue: adoptOpenJreMatches.version,\n };\n }\n const temurinJdkMatches = regEx(/^temurin-(?<version>\\d\\S+)/).exec(\n version,\n )?.groups;\n if (temurinJdkMatches) {\n return {\n datasource: JavaVersionDatasource.id,\n packageName: 'java-jdk',\n currentValue: temurinJdkMatches.version,\n };\n }\n const temurinJreMatches = regEx(/^temurin-jre-(?<version>\\d\\S+)/).exec(\n version,\n )?.groups;\n if (temurinJreMatches) {\n return {\n datasource: JavaVersionDatasource.id,\n packageName: 'java-jre',\n currentValue: temurinJreMatches.version,\n };\n }\n\n return undefined;\n },\n },\n julia: {\n asdfPluginUrl: 'https://github.com/rkyleg/asdf-julia',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'JuliaLang/julia',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n just: {\n asdfPluginUrl: 'https://github.com/olofvndrhr/asdf-just',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'casey/just',\n },\n },\n k3s: {\n asdfPluginUrl: 'https://github.com/dmpe/asdf-k3s',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'k3s-io/k3s',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n kind: {\n asdfPluginUrl: 'https://github.com/johnlayton/asdf-kind',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'kubernetes-sigs/kind',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n kotlin: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-kotlin',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'JetBrains/kotlin',\n extractVersion: '^(Kotlin |v)(?<version>\\\\S+)',\n },\n },\n kubebuilder: {\n asdfPluginUrl: 'https://github.com/virtualstaticvoid/asdf-kubebuilder.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'kubernetes-sigs/kubebuilder',\n extractVersion: '^v(?<version>.+)',\n },\n },\n kubectl: {\n asdfPluginUrl: 'https://github.com/Banno/asdf-kubectl.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'kubernetes/kubernetes',\n extractVersion: '^v(?<version>.+)',\n },\n },\n kubetail: {\n asdfPluginUrl: 'https://github.com/janpieper/asdf-kubetail.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'johanhaleby/kubetail',\n },\n },\n kustomize: {\n asdfPluginUrl: 'https://github.com/Banno/asdf-kustomize',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'kubernetes-sigs/kustomize',\n extractVersion: '^kustomize/v(?<version>\\\\S+)',\n },\n },\n localstack: {\n asdfPluginUrl: 'https://github.com/Azulinho/asdf-localstack',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'localstack/localstack',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n lua: {\n asdfPluginUrl: 'https://github.com/Stratus3D/asdf-lua',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'lua/lua',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'markdownlint-cli2': {\n asdfPluginUrl:\n 'https://github.com/paulo-ferraz-oliveira/asdf-markdownlint-cli2',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'DavidAnson/markdownlint-cli2',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n maven: {\n asdfPluginUrl: 'https://github.com/halcyon/asdf-maven',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'apache/maven',\n },\n },\n mimirtool: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-mimirtool',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'grafana/mimir',\n extractVersion: '^mimir-(?<version>\\\\S+)',\n },\n },\n minikube: {\n asdfPluginUrl: 'https://github.com/alvarobp/asdf-minikube.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'kubernetes/minikube',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n mockery: {\n asdfPluginUrl: 'https://github.com/cabify/asdf-mockery.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'vektra/mockery',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n nim: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-nim',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'nim-lang/Nim',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n nodejs: {\n asdfPluginUrl: 'https://github.com/asdf-vm/asdf-nodejs',\n config: {\n depName: 'node',\n datasource: NodeVersionDatasource.id,\n },\n },\n ocaml: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-ocaml',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'ocaml/ocaml',\n },\n },\n oci: {\n asdfPluginUrl: 'https://github.com/yasn77/asdf-oci',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'oracle/oci-cli',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n opa: {\n asdfPluginUrl: 'https://github.com/tochukwuvictor/asdf-opa',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'open-policy-agent/opa',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n opentofu: {\n asdfPluginUrl: 'https://github.com/virtualroot/asdf-opentofu',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'opentofu/opentofu',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n packer: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-hashicorp',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'hashicorp/packer',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n perl: {\n asdfPluginUrl: 'https://github.com/ouest/asdf-perl',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'Perl/perl5',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n php: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-php',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'php/php-src',\n extractVersion: '^php-(?<version>\\\\S+)',\n },\n },\n pnpm: {\n asdfPluginUrl: 'https://github.com/jonathanmorley/asdf-pnpm',\n config: {\n datasource: NpmDatasource.id,\n packageName: 'pnpm',\n versioning: semverVersioning.id,\n },\n },\n poetry: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-poetry',\n config: {\n datasource: PypiDatasource.id,\n packageName: 'poetry',\n },\n },\n 'pre-commit': {\n asdfPluginUrl: 'https://github.com/jonathanmorley/asdf-pre-commit.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'pre-commit/pre-commit',\n extractVersion: '^v(?<version>.+)',\n },\n },\n protoc: {\n asdfPluginUrl: 'https://github.com/paxosglobal/asdf-protoc.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'protocolbuffers/protobuf',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n pulumi: {\n asdfPluginUrl: 'https://github.com/canha/asdf-pulumi.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'pulumi/pulumi',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n python: {\n asdfPluginUrl: 'https://github.com/danhper/asdf-python',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'python/cpython',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n rebar: {\n asdfPluginUrl: 'https://github.com/Stratus3D/asdf-rebar.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'erlang/rebar3',\n },\n },\n ruby: {\n asdfPluginUrl: 'https://github.com/asdf-vm/asdf-ruby',\n config: {\n datasource: RubyVersionDatasource.id,\n packageName: 'ruby-version',\n versioning: semverVersioning.id,\n },\n },\n rust: {\n asdfPluginUrl: 'https://github.com/code-lever/asdf-rust',\n config: {\n datasource: RustVersionDatasource.id,\n packageName: 'rust',\n },\n },\n sbt: {\n asdfPluginUrl: 'https://github.com/bram2000/asdf-sbt.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'sbt/sbt',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n scala: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-scala',\n config: (version) => {\n if (version.startsWith('2')) {\n return {\n datasource: GithubTagsDatasource.id,\n packageName: 'scala/scala',\n extractVersion: '^v(?<version>\\\\S+)',\n };\n }\n if (version.startsWith('3')) {\n return {\n datasource: GithubTagsDatasource.id,\n packageName: 'lampepfl/dotty',\n };\n }\n\n return undefined;\n },\n },\n shellcheck: {\n asdfPluginUrl: 'https://github.com/luizm/asdf-shellcheck',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'koalaman/shellcheck',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n shfmt: {\n asdfPluginUrl: 'https://github.com/luizm/asdf-shfmt',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'mvdan/sh',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n skaffold: {\n asdfPluginUrl: 'https://github.com/nklmilojevic/asdf-skaffold',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'GoogleContainerTools/skaffold',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n sops: {\n asdfPluginUrl: 'https://github.com/feniix/asdf-sops',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'mozilla/sops',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n steampipe: {\n asdfPluginUrl: 'https://github.com/carnei-ro/asdf-steampipe',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'turbot/steampipe',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n talhelper: {\n asdfPluginUrl: 'https://github.com/bjw-s/asdf-talhelper',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'budimanjojo/talhelper',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n talosctl: {\n asdfPluginUrl: 'https://github.com/bjw-s/asdf-talosctl',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'siderolabs/talos',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n terraform: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-hashicorp',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'hashicorp/terraform',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'terraform-docs': {\n asdfPluginUrl: 'https://github.com/looztra/asdf-terraform-docs.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'terraform-docs/terraform-docs',\n extractVersion: '^v(?<version>.+)',\n },\n },\n terraformer: {\n asdfPluginUrl: 'https://github.com/grimoh/asdf-terraformer',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'GoogleCloudPlatform/terraformer',\n },\n },\n terragrunt: {\n asdfPluginUrl: 'https://github.com/ohmer/asdf-terragrunt',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'gruntwork-io/terragrunt',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n terramate: {\n asdfPluginUrl: 'https://github.com/martinlindner/asdf-terramate',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'terramate-io/terramate',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n tflint: {\n asdfPluginUrl: 'https://github.com/skyzyx/asdf-tflint.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'terraform-linters/tflint',\n extractVersion: '^v(?<version>.+)',\n },\n },\n tfsec: {\n asdfPluginUrl: 'https://github.com/woneill/asdf-tfsec.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'aquasecurity/tfsec',\n extractVersion: '^v(?<version>.+)',\n },\n },\n trivy: {\n asdfPluginUrl: 'https://github.com/zufardhiyaulhaq/asdf-trivy',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'aquasecurity/trivy',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n vault: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-hashicorp',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'hashicorp/vault',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n yamllint: {\n asdfPluginUrl: 'https://github.com/ericcornelissen/asdf-yamllint',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'adrienverge/yamllint',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n yq: {\n asdfPluginUrl: 'https://github.com/sudermanjr/asdf-yq',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'mikefarah/yq',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n zig: {\n asdfPluginUrl: 'https://github.com/cheetah/asdf-zig',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'ziglang/zig',\n },\n },\n maestro: {\n asdfPluginUrl: 'https://github.com/dotanuki-labs/asdf-maestro',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'mobile-dev-inc/maestro',\n extractVersion: '^cli-(?<version>\\\\S+)',\n },\n },\n detekt: {\n asdfPluginUrl: 'https://github.com/dotanuki-labs/asdf-detekt',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'detekt/detekt',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n ktlint: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-ktlint',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'pinterest/ktlint',\n },\n },\n yamlfmt: {\n asdfPluginUrl: 'https://github.com/mise-plugins/asdf-yamlfmt',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'google/yamlfmt',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n tuist: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-tuist',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'tuist/tuist',\n },\n },\n typos: {\n asdfPluginUrl: 'https://github.com/aschiavon91/asdf-typos',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'crate-ci/typos',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n uv: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-uv',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'astral-sh/uv',\n },\n },\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"upgradeable-tooling.js","names":["regexVersioning.id","semverVersioning.id"],"sources":["../../../../lib/modules/manager/asdf/upgradeable-tooling.ts"],"sourcesContent":["import { regEx } from '../../../util/regex.ts';\nimport { DartVersionDatasource } from '../../datasource/dart-version/index.ts';\nimport { DockerDatasource } from '../../datasource/docker/index.ts';\nimport { DotnetVersionDatasource } from '../../datasource/dotnet-version/index.ts';\nimport { FlutterVersionDatasource } from '../../datasource/flutter-version/index.ts';\nimport { GithubReleasesDatasource } from '../../datasource/github-releases/index.ts';\nimport { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';\nimport { HexpmBobDatasource } from '../../datasource/hexpm-bob/index.ts';\nimport { JavaVersionDatasource } from '../../datasource/java-version/index.ts';\nimport { NodeVersionDatasource } from '../../datasource/node-version/index.ts';\nimport { NpmDatasource } from '../../datasource/npm/index.ts';\nimport { PypiDatasource } from '../../datasource/pypi/index.ts';\nimport { RubyVersionDatasource } from '../../datasource/ruby-version/index.ts';\nimport { RustVersionDatasource } from '../../datasource/rust-version/index.ts';\nimport * as regexVersioning from '../../versioning/regex/index.ts';\nimport * as semverVersioning from '../../versioning/semver/index.ts';\nimport type { ToolingDefinition } from './types.ts';\n\nconst hugoDefinition: ToolingDefinition = {\n // This plugin supports the names `hugo` & `gohugo`\n asdfPluginUrl: 'https://github.com/NeoHsu/asdf-hugo',\n config: (version) => ({\n datasource: GithubReleasesDatasource.id,\n packageName: 'gohugoio/hugo',\n extractVersion: '^v(?<version>\\\\S+)',\n // The asdf hugo plugin supports prefixing the version with\n // `extended_`. Extended versions feature Sass support.\n currentValue: version.replace(regEx(/^extended_/), ''),\n }),\n};\n\nexport const upgradeableTooling: Record<string, ToolingDefinition> = {\n act: {\n asdfPluginUrl: 'https://github.com/grimoh/asdf-act.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'nektos/act',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n actionlint: {\n asdfPluginUrl: 'https://github.com/crazy-matt/asdf-actionlint',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'rhysd/actionlint',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'adr-tools': {\n asdfPluginUrl: 'https://gitlab.com/td7x/asdf/adr-tools.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'npryce/adr-tools',\n },\n },\n apm: {\n asdfPluginUrl: 'https://github.com/edwinhern/asdf-apm',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'microsoft/apm',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n argocd: {\n asdfPluginUrl: 'https://github.com/beardix/asdf-argocd',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'argoproj/argo-cd',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'asdf-plugin-manager': {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-plugin-manager',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'asdf-community/asdf-plugin-manager',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n atmos: {\n asdfPluginUrl: 'https://github.com/cloudposse/asdf-atmos',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'cloudposse/atmos',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n awscli: {\n asdfPluginUrl: 'https://github.com/MetricMike/asdf-awscli',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'aws/aws-cli',\n },\n },\n 'azure-cli': {\n asdfPluginUrl: 'https://github.com/sourcesense/asdf-azure-cli',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'Azure/azure-cli',\n extractVersion: '^azure-cli-(?<version>\\\\S+)',\n },\n },\n bun: {\n asdfPluginUrl: 'https://github.com/cometkim/asdf-bun',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'oven-sh/bun',\n extractVersion: '^bun-v(?<version>\\\\S+)',\n },\n },\n 'cargo-make': {\n asdfPluginUrl: 'https://github.com/mise-plugins/asdf-cargo-make',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'sagiegurari/cargo-make',\n },\n },\n checkov: {\n asdfPluginUrl: 'https://github.com/bosmak/asdf-checkov.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'bridgecrewio/checkov',\n },\n },\n clojure: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-clojure',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'clojure/brew-install',\n versioning: `${regexVersioning.id}:^(?<major>\\\\d+?)\\\\.(?<minor>\\\\d+?)\\\\.(?<patch>\\\\d+)\\\\.(?<build>\\\\d+)$`,\n },\n },\n clusterctl: {\n asdfPluginUrl: 'https://github.com/pfnet-research/asdf-clusterctl',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'kubernetes-sigs/cluster-api',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n conftest: {\n asdfPluginUrl: 'https://github.com/looztra/asdf-conftest',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'open-policy-agent/conftest',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'container-structure-test': {\n asdfPluginUrl:\n 'https://github.com/FeryET/asdf-container-structure-test.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'GoogleContainerTools/container-structure-test',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n cookiecutter: {\n asdfPluginUrl: 'https://github.com/shawon-crosen/asdf-cookiecutter',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'cookiecutter/cookiecutter',\n versioning: semverVersioning.id,\n },\n },\n cosign: {\n asdfPluginUrl: 'https://gitlab.com/wt0f/asdf-cosign',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'sigstore/cosign',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n crystal: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-crystal',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'crystal-lang/crystal',\n },\n },\n dart: {\n asdfPluginUrl: 'https://github.com/PatOConnor43/asdf-dart',\n config: {\n datasource: DartVersionDatasource.id,\n },\n },\n deno: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-deno',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'denoland/deno',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n direnv: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-direnv',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'direnv/direnv',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'dotnet-core': {\n asdfPluginUrl: 'https://github.com/emersonsoares/asdf-dotnet-core',\n config: {\n datasource: DotnetVersionDatasource.id,\n packageName: 'dotnet-sdk',\n },\n },\n dprint: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-dprint',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'dprint/dprint',\n },\n },\n ecspresso: {\n asdfPluginUrl: 'https://github.com/kayac/asdf-ecspresso',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'kayac/ecspresso',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'editorconfig-checker': {\n asdfPluginUrl: 'https://github.com/gabitchov/asdf-editorconfig-checker',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'editorconfig-checker/editorconfig-checker',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n elixir: {\n asdfPluginUrl: 'https://github.com/asdf-vm/asdf-elixir',\n config: {\n datasource: HexpmBobDatasource.id,\n },\n },\n elm: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-elm',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'elm/compiler',\n },\n },\n erlang: {\n asdfPluginUrl: 'https://github.com/asdf-vm/asdf-erlang',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'erlang/otp',\n extractVersion: '^OTP-(?<version>\\\\S+)',\n versioning: `${regexVersioning.id}:^(?<major>\\\\d+?)\\\\.(?<minor>\\\\d+?)(\\\\.(?<patch>\\\\d+))?$`,\n },\n },\n flutter: {\n asdfPluginUrl: 'https://github.com/oae/asdf-flutter',\n config: (version) => ({\n datasource: FlutterVersionDatasource.id,\n // asdf-flutter plugin supports channel on version suffix.\n currentValue: version.replace(regEx(/-(stable|beta|dev)$/), ''),\n }),\n },\n flux2: {\n asdfPluginUrl: 'https://github.com/tablexi/asdf-flux2.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'fluxcd/flux2',\n extractVersion: '^v(?<version>.+)',\n },\n },\n gauche: {\n asdfPluginUrl: 'https://github.com/sakuro/asdf-gauche',\n config: {\n datasource: DockerDatasource.id,\n packageName: 'practicalscheme/gauche',\n },\n },\n 'github-cli': {\n asdfPluginUrl: 'https://github.com/bartlomiejdanek/asdf-github-cli.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'cli/cli',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n gitleaks: {\n asdfPluginUrl: 'https://github.com/jmcvetta/asdf-gitleaks',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'gitleaks/gitleaks',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n ginkgo: {\n asdfPluginUrl: 'https://github.com/jimmidyson/asdf-ginkgo',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'onsi/ginkgo',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n gleam: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-gleam.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'gleam-lang/gleam',\n extractVersion: '^v(?<version>.+)',\n },\n },\n gohugo: hugoDefinition,\n golang: {\n asdfPluginUrl: 'https://github.com/kennyp/asdf-golang',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'golang/go',\n extractVersion: '^go(?<version>\\\\S+)',\n },\n },\n 'golangci-lint': {\n asdfPluginUrl: 'https://github.com/hypnoglow/asdf-golangci-lint.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'golangci/golangci-lint',\n extractVersion: '^v(?<version>.+)',\n },\n },\n gomplate: {\n asdfPluginUrl: 'https://github.com/sneakybeaky/asdf-gomplate',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'hairyhenderson/gomplate',\n extractVersion: '^v(?<version>.+)',\n },\n },\n gotestsum: {\n asdfPluginUrl: 'https://github.com/hpcsc/asdf-gotestsum',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'gotestyourself/gotestsum',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n hadolint: {\n asdfPluginUrl: 'https://github.com/looztra/asdf-hadolint.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'hadolint/hadolint',\n extractVersion: '^v(?<version>.+)',\n },\n },\n haskell: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-haskell',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'ghc/ghc',\n extractVersion: '^ghc-(?<version>\\\\S+?)-release',\n },\n },\n helm: {\n asdfPluginUrl: 'https://github.com/Antiarchitect/asdf-helm',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'helm/helm',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'helm-docs': {\n asdfPluginUrl: 'https://github.com/sudermanjr/asdf-helm-docs.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'norwoodj/helm-docs',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n helmfile: {\n asdfPluginUrl: 'https://github.com/feniix/asdf-helmfile',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'helmfile/helmfile',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n hugo: hugoDefinition,\n idris: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-idris',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'idris-lang/Idris-dev',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n istioctl: {\n asdfPluginUrl: 'https://github.com/virtualstaticvoid/asdf-istioctl',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'istio/istio',\n versioning: semverVersioning.id,\n },\n },\n java: {\n asdfPluginUrl: 'https://github.com/halcyon/asdf-java',\n config: (version) => {\n const adoptOpenJdkMatches = regEx(/^adoptopenjdk-(?<version>\\d\\S+)/).exec(\n version,\n )?.groups;\n if (adoptOpenJdkMatches) {\n return {\n datasource: JavaVersionDatasource.id,\n packageName: 'java-jdk',\n currentValue: adoptOpenJdkMatches.version,\n };\n }\n const adoptOpenJreMatches = regEx(\n /^adoptopenjdk-jre-(?<version>\\d\\S+)/,\n ).exec(version)?.groups;\n if (adoptOpenJreMatches) {\n return {\n datasource: JavaVersionDatasource.id,\n packageName: 'java-jre',\n currentValue: adoptOpenJreMatches.version,\n };\n }\n const temurinJdkMatches = regEx(/^temurin-(?<version>\\d\\S+)/).exec(\n version,\n )?.groups;\n if (temurinJdkMatches) {\n return {\n datasource: JavaVersionDatasource.id,\n packageName: 'java-jdk',\n currentValue: temurinJdkMatches.version,\n };\n }\n const temurinJreMatches = regEx(/^temurin-jre-(?<version>\\d\\S+)/).exec(\n version,\n )?.groups;\n if (temurinJreMatches) {\n return {\n datasource: JavaVersionDatasource.id,\n packageName: 'java-jre',\n currentValue: temurinJreMatches.version,\n };\n }\n\n return undefined;\n },\n },\n julia: {\n asdfPluginUrl: 'https://github.com/rkyleg/asdf-julia',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'JuliaLang/julia',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n just: {\n asdfPluginUrl: 'https://github.com/olofvndrhr/asdf-just',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'casey/just',\n },\n },\n k3s: {\n asdfPluginUrl: 'https://github.com/dmpe/asdf-k3s',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'k3s-io/k3s',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n kind: {\n asdfPluginUrl: 'https://github.com/johnlayton/asdf-kind',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'kubernetes-sigs/kind',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n kotlin: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-kotlin',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'JetBrains/kotlin',\n extractVersion: '^(Kotlin |v)(?<version>\\\\S+)',\n },\n },\n kubebuilder: {\n asdfPluginUrl: 'https://github.com/virtualstaticvoid/asdf-kubebuilder.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'kubernetes-sigs/kubebuilder',\n extractVersion: '^v(?<version>.+)',\n },\n },\n kubectl: {\n asdfPluginUrl: 'https://github.com/Banno/asdf-kubectl.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'kubernetes/kubernetes',\n extractVersion: '^v(?<version>.+)',\n },\n },\n kubetail: {\n asdfPluginUrl: 'https://github.com/janpieper/asdf-kubetail.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'johanhaleby/kubetail',\n },\n },\n kustomize: {\n asdfPluginUrl: 'https://github.com/Banno/asdf-kustomize',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'kubernetes-sigs/kustomize',\n extractVersion: '^kustomize/v(?<version>\\\\S+)',\n },\n },\n localstack: {\n asdfPluginUrl: 'https://github.com/Azulinho/asdf-localstack',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'localstack/localstack',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n lua: {\n asdfPluginUrl: 'https://github.com/Stratus3D/asdf-lua',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'lua/lua',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'markdownlint-cli2': {\n asdfPluginUrl:\n 'https://github.com/paulo-ferraz-oliveira/asdf-markdownlint-cli2',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'DavidAnson/markdownlint-cli2',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n maven: {\n asdfPluginUrl: 'https://github.com/halcyon/asdf-maven',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'apache/maven',\n },\n },\n mimirtool: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-mimirtool',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'grafana/mimir',\n extractVersion: '^mimir-(?<version>\\\\S+)',\n },\n },\n minikube: {\n asdfPluginUrl: 'https://github.com/alvarobp/asdf-minikube.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'kubernetes/minikube',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n mockery: {\n asdfPluginUrl: 'https://github.com/cabify/asdf-mockery.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'vektra/mockery',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n nim: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-nim',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'nim-lang/Nim',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n nodejs: {\n asdfPluginUrl: 'https://github.com/asdf-vm/asdf-nodejs',\n config: {\n depName: 'node',\n datasource: NodeVersionDatasource.id,\n },\n },\n ocaml: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-ocaml',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'ocaml/ocaml',\n },\n },\n oci: {\n asdfPluginUrl: 'https://github.com/yasn77/asdf-oci',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'oracle/oci-cli',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n opa: {\n asdfPluginUrl: 'https://github.com/tochukwuvictor/asdf-opa',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'open-policy-agent/opa',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n opentofu: {\n asdfPluginUrl: 'https://github.com/virtualroot/asdf-opentofu',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'opentofu/opentofu',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n packer: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-hashicorp',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'hashicorp/packer',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n perl: {\n asdfPluginUrl: 'https://github.com/ouest/asdf-perl',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'Perl/perl5',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n php: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-php',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'php/php-src',\n extractVersion: '^php-(?<version>\\\\S+)',\n },\n },\n pnpm: {\n asdfPluginUrl: 'https://github.com/jonathanmorley/asdf-pnpm',\n config: {\n datasource: NpmDatasource.id,\n packageName: 'pnpm',\n versioning: semverVersioning.id,\n },\n },\n poetry: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-poetry',\n config: {\n datasource: PypiDatasource.id,\n packageName: 'poetry',\n },\n },\n 'pre-commit': {\n asdfPluginUrl: 'https://github.com/jonathanmorley/asdf-pre-commit.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'pre-commit/pre-commit',\n extractVersion: '^v(?<version>.+)',\n },\n },\n protoc: {\n asdfPluginUrl: 'https://github.com/paxosglobal/asdf-protoc.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'protocolbuffers/protobuf',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n pulumi: {\n asdfPluginUrl: 'https://github.com/canha/asdf-pulumi.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'pulumi/pulumi',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n python: {\n asdfPluginUrl: 'https://github.com/danhper/asdf-python',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'python/cpython',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n rebar: {\n asdfPluginUrl: 'https://github.com/Stratus3D/asdf-rebar.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'erlang/rebar3',\n },\n },\n ruby: {\n asdfPluginUrl: 'https://github.com/asdf-vm/asdf-ruby',\n config: {\n datasource: RubyVersionDatasource.id,\n packageName: 'ruby-version',\n versioning: semverVersioning.id,\n },\n },\n rust: {\n asdfPluginUrl: 'https://github.com/code-lever/asdf-rust',\n config: {\n datasource: RustVersionDatasource.id,\n packageName: 'rust',\n },\n },\n sbt: {\n asdfPluginUrl: 'https://github.com/bram2000/asdf-sbt.git',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'sbt/sbt',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n scala: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-scala',\n config: (version) => {\n if (version.startsWith('2')) {\n return {\n datasource: GithubTagsDatasource.id,\n packageName: 'scala/scala',\n extractVersion: '^v(?<version>\\\\S+)',\n };\n }\n if (version.startsWith('3')) {\n return {\n datasource: GithubTagsDatasource.id,\n packageName: 'lampepfl/dotty',\n };\n }\n\n return undefined;\n },\n },\n shellcheck: {\n asdfPluginUrl: 'https://github.com/luizm/asdf-shellcheck',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'koalaman/shellcheck',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n shfmt: {\n asdfPluginUrl: 'https://github.com/luizm/asdf-shfmt',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'mvdan/sh',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n skaffold: {\n asdfPluginUrl: 'https://github.com/nklmilojevic/asdf-skaffold',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'GoogleContainerTools/skaffold',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n sops: {\n asdfPluginUrl: 'https://github.com/feniix/asdf-sops',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'mozilla/sops',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n steampipe: {\n asdfPluginUrl: 'https://github.com/carnei-ro/asdf-steampipe',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'turbot/steampipe',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n talhelper: {\n asdfPluginUrl: 'https://github.com/bjw-s/asdf-talhelper',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'budimanjojo/talhelper',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n talosctl: {\n asdfPluginUrl: 'https://github.com/bjw-s/asdf-talosctl',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'siderolabs/talos',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n terraform: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-hashicorp',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'hashicorp/terraform',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n 'terraform-docs': {\n asdfPluginUrl: 'https://github.com/looztra/asdf-terraform-docs.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'terraform-docs/terraform-docs',\n extractVersion: '^v(?<version>.+)',\n },\n },\n terraformer: {\n asdfPluginUrl: 'https://github.com/grimoh/asdf-terraformer',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'GoogleCloudPlatform/terraformer',\n },\n },\n terragrunt: {\n asdfPluginUrl: 'https://github.com/ohmer/asdf-terragrunt',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'gruntwork-io/terragrunt',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n terramate: {\n asdfPluginUrl: 'https://github.com/martinlindner/asdf-terramate',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'terramate-io/terramate',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n tflint: {\n asdfPluginUrl: 'https://github.com/skyzyx/asdf-tflint.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'terraform-linters/tflint',\n extractVersion: '^v(?<version>.+)',\n },\n },\n tfsec: {\n asdfPluginUrl: 'https://github.com/woneill/asdf-tfsec.git',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'aquasecurity/tfsec',\n extractVersion: '^v(?<version>.+)',\n },\n },\n trivy: {\n asdfPluginUrl: 'https://github.com/zufardhiyaulhaq/asdf-trivy',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'aquasecurity/trivy',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n vault: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-hashicorp',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'hashicorp/vault',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n yamllint: {\n asdfPluginUrl: 'https://github.com/ericcornelissen/asdf-yamllint',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'adrienverge/yamllint',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n yq: {\n asdfPluginUrl: 'https://github.com/sudermanjr/asdf-yq',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'mikefarah/yq',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n zig: {\n asdfPluginUrl: 'https://github.com/cheetah/asdf-zig',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'ziglang/zig',\n },\n },\n maestro: {\n asdfPluginUrl: 'https://github.com/dotanuki-labs/asdf-maestro',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'mobile-dev-inc/maestro',\n extractVersion: '^cli-(?<version>\\\\S+)',\n },\n },\n detekt: {\n asdfPluginUrl: 'https://github.com/dotanuki-labs/asdf-detekt',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'detekt/detekt',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n ktlint: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-ktlint',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'pinterest/ktlint',\n },\n },\n yamlfmt: {\n asdfPluginUrl: 'https://github.com/mise-plugins/asdf-yamlfmt',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'google/yamlfmt',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n tuist: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-tuist',\n config: {\n datasource: GithubTagsDatasource.id,\n packageName: 'tuist/tuist',\n },\n },\n typos: {\n asdfPluginUrl: 'https://github.com/aschiavon91/asdf-typos',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'crate-ci/typos',\n extractVersion: '^v(?<version>\\\\S+)',\n },\n },\n uv: {\n asdfPluginUrl: 'https://github.com/asdf-community/asdf-uv',\n config: {\n datasource: GithubReleasesDatasource.id,\n packageName: 'astral-sh/uv',\n },\n },\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","names":["rules.toPackageDependencies","bazelrc.read"],"sources":["../../../../lib/modules/manager/bazel-module/extract.ts"],"sourcesContent":["import upath from 'upath';\nimport { logger } from '../../../logger/index.ts';\nimport { isNotNullOrUndefined } from '../../../util/array.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { LooseArray } from '../../../util/schema-utils/index.ts';\nimport { getDep } from '../dockerfile/extract.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFileContent,\n} from '../types.ts';\nimport * as bazelrc from './bazelrc.ts';\nimport { RuleToCratePackageDep } from './parser/crate.ts';\nimport type { ResultFragment } from './parser/fragments.ts';\nimport { parse } from './parser/index.ts';\nimport { RuleToMavenPackageDep, fillRegistryUrls } from './parser/maven.ts';\nimport { RuleToDockerPackageDep } from './parser/oci.ts';\nimport * as rules from './rules.ts';\nimport {\n GitRepositoryToPackageDep,\n RuleToBazelModulePackageDep,\n} from './rules.ts';\nimport { transformRulesImgCalls } from './rules-img.ts';\n\nexport async function extractPackageFile(\n content: string,\n packageFile: string,\n config?: ExtractConfig,\n): Promise<PackageFileContent | null> {\n try {\n const records = parse(content);\n const pfc = await extractBazelPfc(records, packageFile);\n const gitRepositoryDeps = extractGitRepositoryDeps(records);\n const mavenDeps = extractMavenDeps(records);\n const dockerDeps = LooseArray(RuleToDockerPackageDep)\n .transform((deps) =>\n deps.map((dep) => {\n // Reconstruct the image reference from parsed data\n const imageRef = `${dep.packageName}${dep.currentValue ? `:${dep.currentValue}` : ''}${dep.currentDigest ? `@${dep.currentDigest}` : ''}`;\n // Use getDep to handle registry aliases properly\n const processedDep = getDep(imageRef, false, config?.registryAliases);\n return {\n ...processedDep,\n depType: 'oci_pull',\n depName: dep.depName, // Keep the original name field from bazel\n replaceString: dep.replaceString, // Keep the original replace string\n };\n }),\n )\n .parse(records);\n const rulesImgDeps = transformRulesImgCalls(records);\n const crateDeps = LooseArray(RuleToCratePackageDep).parse(records);\n\n if (gitRepositoryDeps.length) {\n pfc.deps.push(...gitRepositoryDeps);\n }\n\n if (mavenDeps.length) {\n pfc.deps.push(...mavenDeps);\n }\n\n if (dockerDeps.length) {\n pfc.deps.push(...dockerDeps);\n }\n\n if (rulesImgDeps.length) {\n pfc.deps.push(...rulesImgDeps);\n }\n\n if (crateDeps.length) {\n pfc.deps.push(...crateDeps);\n }\n\n return pfc.deps.length ? pfc : null;\n } catch (err) {\n logger.debug({ err, packageFile }, 'Failed to parse bazel module file.');\n return null;\n }\n}\n\nasync function extractBazelPfc(\n records: ResultFragment[],\n packageFile: string,\n): Promise<PackageFileContent> {\n const pfc: PackageFileContent = LooseArray(RuleToBazelModulePackageDep)\n .transform(rules.toPackageDependencies)\n .transform((deps) => ({ deps }))\n .parse(records);\n\n const registryUrls = (await bazelrc.read(upath.dirname(packageFile)))\n // Ignore any entries for custom configurations\n .filter((ce) => ce.config === undefined)\n .map((ce) => ce.getOption('registry')?.value)\n .map((url) => url?.replace(regEx(/^[\"']|[\"']$/g), ''))\n .filter(isNotNullOrUndefined);\n if (registryUrls.length) {\n pfc.registryUrls = registryUrls;\n }\n\n return pfc;\n}\n\nfunction extractGitRepositoryDeps(\n records: ResultFragment[],\n): PackageDependency[] {\n return LooseArray(GitRepositoryToPackageDep).parse(records);\n}\n\nfunction extractMavenDeps(records: ResultFragment[]): PackageDependency[] {\n return LooseArray(RuleToMavenPackageDep)\n .transform(fillRegistryUrls)\n .parse(records);\n}\n"],"mappings":";;;;;;;;;;;;;;AAwBA,eAAsB,mBACpB,SACA,aACA,QACoC;CACpC,IAAI;EACF,MAAM,UAAU,MAAM,OAAO;EAC7B,MAAM,MAAM,MAAM,gBAAgB,SAAS,WAAW;EACtD,MAAM,oBAAoB,yBAAyB,OAAO;EAC1D,MAAM,YAAY,iBAAiB,OAAO;EAC1C,MAAM,aAAa,WAAW,sBAAsB,CAAC,CAClD,WAAW,SACV,KAAK,KAAK,QAAQ;GAEhB,MAAM,WAAW,GAAG,IAAI,cAAc,IAAI,eAAe,IAAI,IAAI,iBAAiB,KAAK,IAAI,gBAAgB,IAAI,IAAI,kBAAkB;GAGrI,OAAO;IACL,GAFmB,OAAO,UAAU,OAAO,QAAQ,eAErC;IACd,SAAS;IACT,SAAS,IAAI;IACb,eAAe,IAAI;GACrB;EACF,CAAC,CACH,CAAC,CACA,MAAM,OAAO;EAChB,MAAM,eAAe,uBAAuB,OAAO;EACnD,MAAM,YAAY,WAAW,qBAAqB,CAAC,CAAC,MAAM,OAAO;EAEjE,IAAI,kBAAkB,QACpB,IAAI,KAAK,KAAK,GAAG,iBAAiB;EAGpC,IAAI,UAAU,QACZ,IAAI,KAAK,KAAK,GAAG,SAAS;EAG5B,IAAI,WAAW,QACb,IAAI,KAAK,KAAK,GAAG,UAAU;EAG7B,IAAI,aAAa,QACf,IAAI,KAAK,KAAK,GAAG,YAAY;EAG/B,IAAI,UAAU,QACZ,IAAI,KAAK,KAAK,GAAG,SAAS;EAG5B,OAAO,IAAI,KAAK,SAAS,MAAM;CACjC,SAAS,KAAK;EACZ,OAAO,MAAM;GAAE;GAAK;EAAY,GAAG,oCAAoC;EACvE,OAAO;CACT;AACF;AAEA,eAAe,gBACb,SACA,aAC6B;CAC7B,MAAM,MAA0B,WAAW,2BAA2B,CAAC,CACpE,UAAUA,qBAA2B,CAAC,CACtC,WAAW,UAAU,EAAE,KAAK,EAAE,CAAC,CAC/B,MAAM,OAAO;CAEhB,MAAM,gBAAgB,MAAMC,KAAa,MAAM,QAAQ,WAAW,CAAC,EAAA,CAEhE,QAAQ,OAAO,GAAG,WAAW,KAAA,CAAS,CAAC,CACvC,KAAK,OAAO,GAAG,UAAU,UAAU,CAAC,EAAE,KAAK,CAAC,CAC5C,KAAK,QAAQ,KAAK,QAAQ,MAAM,cAAc,GAAG,EAAE,CAAC,CAAC,CACrD,OAAO,oBAAoB;CAC9B,IAAI,aAAa,QACf,IAAI,eAAe;CAGrB,OAAO;AACT;AAEA,SAAS,yBACP,SACqB;CACrB,OAAO,WAAW,yBAAyB,CAAC,CAAC,MAAM,OAAO;AAC5D;AAEA,SAAS,iBAAiB,SAAgD;CACxE,OAAO,WAAW,qBAAqB,CAAC,CACrC,UAAU,gBAAgB,CAAC,CAC3B,MAAM,OAAO;AAClB"}
1
+ {"version":3,"file":"extract.js","names":["rules.toPackageDependencies","bazelrc.read"],"sources":["../../../../lib/modules/manager/bazel-module/extract.ts"],"sourcesContent":["import upath from 'upath';\nimport { logger } from '../../../logger/index.ts';\nimport { isNotNullOrUndefined } from '../../../util/array.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { LooseArray } from '../../../util/schema-utils/index.ts';\nimport { getDep } from '../dockerfile/extract.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFileContent,\n} from '../types.ts';\nimport * as bazelrc from './bazelrc.ts';\nimport { RuleToCratePackageDep } from './parser/crate.ts';\nimport { parse } from './parser/index.ts';\nimport { RuleToMavenPackageDep, fillRegistryUrls } from './parser/maven.ts';\nimport { RuleToDockerPackageDep } from './parser/oci.ts';\nimport type { ResultFragment } from './parser/types.ts';\nimport * as rules from './rules.ts';\nimport {\n GitRepositoryToPackageDep,\n RuleToBazelModulePackageDep,\n} from './rules.ts';\nimport { transformRulesImgCalls } from './rules-img.ts';\n\nexport async function extractPackageFile(\n content: string,\n packageFile: string,\n config?: ExtractConfig,\n): Promise<PackageFileContent | null> {\n try {\n const records = parse(content);\n const pfc = await extractBazelPfc(records, packageFile);\n const gitRepositoryDeps = extractGitRepositoryDeps(records);\n const mavenDeps = extractMavenDeps(records);\n const dockerDeps = LooseArray(RuleToDockerPackageDep)\n .transform((deps) =>\n deps.map((dep) => {\n // Reconstruct the image reference from parsed data\n const imageRef = `${dep.packageName}${dep.currentValue ? `:${dep.currentValue}` : ''}${dep.currentDigest ? `@${dep.currentDigest}` : ''}`;\n // Use getDep to handle registry aliases properly\n const processedDep = getDep(imageRef, false, config?.registryAliases);\n return {\n ...processedDep,\n depType: 'oci_pull',\n depName: dep.depName, // Keep the original name field from bazel\n replaceString: dep.replaceString, // Keep the original replace string\n };\n }),\n )\n .parse(records);\n const rulesImgDeps = transformRulesImgCalls(records);\n const crateDeps = LooseArray(RuleToCratePackageDep).parse(records);\n\n if (gitRepositoryDeps.length) {\n pfc.deps.push(...gitRepositoryDeps);\n }\n\n if (mavenDeps.length) {\n pfc.deps.push(...mavenDeps);\n }\n\n if (dockerDeps.length) {\n pfc.deps.push(...dockerDeps);\n }\n\n if (rulesImgDeps.length) {\n pfc.deps.push(...rulesImgDeps);\n }\n\n if (crateDeps.length) {\n pfc.deps.push(...crateDeps);\n }\n\n return pfc.deps.length ? pfc : null;\n } catch (err) {\n logger.debug({ err, packageFile }, 'Failed to parse bazel module file.');\n return null;\n }\n}\n\nasync function extractBazelPfc(\n records: ResultFragment[],\n packageFile: string,\n): Promise<PackageFileContent> {\n const pfc: PackageFileContent = LooseArray(RuleToBazelModulePackageDep)\n .transform(rules.toPackageDependencies)\n .transform((deps) => ({ deps }))\n .parse(records);\n\n const registryUrls = (await bazelrc.read(upath.dirname(packageFile)))\n // Ignore any entries for custom configurations\n .filter((ce) => ce.config === undefined)\n .map((ce) => ce.getOption('registry')?.value)\n .map((url) => url?.replace(regEx(/^[\"']|[\"']$/g), ''))\n .filter(isNotNullOrUndefined);\n if (registryUrls.length) {\n pfc.registryUrls = registryUrls;\n }\n\n return pfc;\n}\n\nfunction extractGitRepositoryDeps(\n records: ResultFragment[],\n): PackageDependency[] {\n return LooseArray(GitRepositoryToPackageDep).parse(records);\n}\n\nfunction extractMavenDeps(records: ResultFragment[]): PackageDependency[] {\n return LooseArray(RuleToMavenPackageDep)\n .transform(fillRegistryUrls)\n .parse(records);\n}\n"],"mappings":";;;;;;;;;;;;;;AAwBA,eAAsB,mBACpB,SACA,aACA,QACoC;CACpC,IAAI;EACF,MAAM,UAAU,MAAM,OAAO;EAC7B,MAAM,MAAM,MAAM,gBAAgB,SAAS,WAAW;EACtD,MAAM,oBAAoB,yBAAyB,OAAO;EAC1D,MAAM,YAAY,iBAAiB,OAAO;EAC1C,MAAM,aAAa,WAAW,sBAAsB,CAAC,CAClD,WAAW,SACV,KAAK,KAAK,QAAQ;GAEhB,MAAM,WAAW,GAAG,IAAI,cAAc,IAAI,eAAe,IAAI,IAAI,iBAAiB,KAAK,IAAI,gBAAgB,IAAI,IAAI,kBAAkB;GAGrI,OAAO;IACL,GAFmB,OAAO,UAAU,OAAO,QAAQ,eAErC;IACd,SAAS;IACT,SAAS,IAAI;IACb,eAAe,IAAI;GACrB;EACF,CAAC,CACH,CAAC,CACA,MAAM,OAAO;EAChB,MAAM,eAAe,uBAAuB,OAAO;EACnD,MAAM,YAAY,WAAW,qBAAqB,CAAC,CAAC,MAAM,OAAO;EAEjE,IAAI,kBAAkB,QACpB,IAAI,KAAK,KAAK,GAAG,iBAAiB;EAGpC,IAAI,UAAU,QACZ,IAAI,KAAK,KAAK,GAAG,SAAS;EAG5B,IAAI,WAAW,QACb,IAAI,KAAK,KAAK,GAAG,UAAU;EAG7B,IAAI,aAAa,QACf,IAAI,KAAK,KAAK,GAAG,YAAY;EAG/B,IAAI,UAAU,QACZ,IAAI,KAAK,KAAK,GAAG,SAAS;EAG5B,OAAO,IAAI,KAAK,SAAS,MAAM;CACjC,SAAS,KAAK;EACZ,OAAO,MAAM;GAAE;GAAK;EAAY,GAAG,oCAAoC;EACvE,OAAO;CACT;AACF;AAEA,eAAe,gBACb,SACA,aAC6B;CAC7B,MAAM,MAA0B,WAAW,2BAA2B,CAAC,CACpE,UAAUA,qBAA2B,CAAC,CACtC,WAAW,UAAU,EAAE,KAAK,EAAE,CAAC,CAC/B,MAAM,OAAO;CAEhB,MAAM,gBAAgB,MAAMC,KAAa,MAAM,QAAQ,WAAW,CAAC,EAAA,CAEhE,QAAQ,OAAO,GAAG,WAAW,KAAA,CAAS,CAAC,CACvC,KAAK,OAAO,GAAG,UAAU,UAAU,CAAC,EAAE,KAAK,CAAC,CAC5C,KAAK,QAAQ,KAAK,QAAQ,MAAM,cAAc,GAAG,EAAE,CAAC,CAAC,CACrD,OAAO,oBAAoB;CAC9B,IAAI,aAAa,QACf,IAAI,eAAe;CAGrB,OAAO;AACT;AAEA,SAAS,yBACP,SACqB;CACrB,OAAO,WAAW,yBAAyB,CAAC,CAAC,MAAM,OAAO;AAC5D;AAEA,SAAS,iBAAiB,SAAgD;CACxE,OAAO,WAAW,qBAAqB,CAAC,CACrC,UAAU,gBAAgB,CAAC,CAC3B,MAAM,OAAO;AAClB"}
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":["fragments.isValue","fragments.isPrimitive","fragments.string","fragments.boolean","rule","fragments.rule","fragments.preparedExtensionTag","extensionTag","fragments.extensionTag","useRepoRule","fragments.useRepoRule","repoRuleCall","fragments.repoRuleCall","fragments.attribute","fragments.array"],"sources":["../../../../../lib/modules/manager/bazel-module/parser/context.ts"],"sourcesContent":["import type {\n AllFragments,\n ArrayFragment,\n ExtensionTagFragment,\n PreparedExtensionTagFragment,\n RepoRuleCallFragment,\n ResultFragment,\n RuleFragment,\n UseRepoRuleFragment,\n} from './fragments.ts';\nimport * as fragments from './fragments.ts';\n\n// Represents the fields that the context must have.\nexport interface CtxCompatible {\n results: ResultFragment[];\n stack: AllFragments[];\n}\n\nexport class CtxProcessingError extends Error {\n readonly current: AllFragments;\n readonly parent?: AllFragments;\n constructor(current: AllFragments, parent?: AllFragments) {\n const msg = `Invalid context state. current: ${current.type}, parent: ${\n parent?.type ?? 'none'\n }`;\n super(msg);\n this.name = 'CtxProcessingError';\n this.current = current;\n this.parent = parent;\n }\n}\n\nexport class Ctx implements CtxCompatible {\n readonly source: string;\n results: ResultFragment[];\n stack: AllFragments[];\n\n // Temporary state for use_repo_rule parsing\n _tempVariableName?: string;\n _tempStrings?: string[];\n\n constructor(source: string) {\n this.source = source;\n this.results = [];\n this.stack = [];\n }\n\n private get safeCurrent(): AllFragments | undefined {\n return this.stack.at(-1);\n }\n\n private get current(): AllFragments {\n const c = this.safeCurrent;\n if (c === undefined) {\n throw new Error('Requested current, but no value.');\n }\n return c;\n }\n\n private get currentRule(): RuleFragment {\n const current = this.current;\n if (current.type === 'rule') {\n return current;\n }\n throw new Error('Requested current rule, but does not exist.');\n }\n\n private get currentExtensionTag(): ExtensionTagFragment {\n const current = this.current;\n if (current.type === 'extensionTag') {\n return current;\n }\n throw new Error('Requested current extension tag, but does not exist.');\n }\n\n private get currentUseRepoRule(): UseRepoRuleFragment {\n const current = this.current;\n if (current.type === 'useRepoRule') {\n return current;\n }\n throw new Error('Requested current use repo rule, but does not exist.');\n }\n\n private get currentRepoRuleCall(): RepoRuleCallFragment {\n const current = this.current;\n if (current.type === 'repoRuleCall') {\n return current;\n }\n throw new Error('Requested current repo rule call, but does not exist.');\n }\n\n private get currentArray(): ArrayFragment {\n const current = this.current;\n if (current.type === 'array') {\n return current;\n }\n throw new Error('Requested current array, but does not exist.');\n }\n\n private popPreparedExtensionTag(): PreparedExtensionTagFragment {\n const c = this.stack.pop();\n if (c === undefined) {\n throw new Error('Requested current, but no value.');\n }\n if (c.type === 'preparedExtensionTag') {\n return c;\n }\n throw new Error(\n 'Requested current prepared extension tag, but does not exist.',\n );\n }\n\n private popStack(): boolean {\n const current = this.stack.pop();\n if (!current) {\n return false;\n }\n if (!current.isComplete) {\n this.stack.push(current);\n return false;\n }\n const parent = this.safeCurrent;\n\n if (parent) {\n if (parent.type === 'attribute' && fragments.isValue(current)) {\n parent.value = current;\n parent.isComplete = true;\n return true;\n }\n if (parent.type === 'array' && fragments.isPrimitive(current)) {\n parent.items.push(current);\n return true;\n }\n // v8 ignore else -- TODO: add test #40625\n if (\n (parent.type === 'rule' ||\n parent.type === 'extensionTag' ||\n parent.type === 'repoRuleCall') &&\n current.type === 'attribute' &&\n current.value !== undefined\n ) {\n parent.children[current.name] = current.value;\n return true;\n }\n } else if (\n current.type === 'rule' ||\n current.type === 'extensionTag' ||\n current.type === 'useRepoRule' ||\n current.type === 'repoRuleCall'\n ) {\n this.results.push(current);\n return true;\n }\n\n throw new CtxProcessingError(current, parent);\n }\n\n private processStack(): Ctx {\n while (this.popStack()) {\n // Nothing to do\n }\n return this;\n }\n\n addString(value: string): Ctx {\n this.stack.push(fragments.string(value));\n return this.processStack();\n }\n\n addBoolean(value: string | boolean): Ctx {\n this.stack.push(fragments.boolean(value));\n return this.processStack();\n }\n\n startRule(name: string): Ctx {\n const rule = fragments.rule(name);\n this.stack.push(rule);\n return this;\n }\n\n endRule(): Ctx {\n const rule = this.currentRule;\n rule.isComplete = true;\n return this.processStack();\n }\n\n prepareExtensionTag(\n extension: string,\n rawExtension: string,\n offset: number,\n ): Ctx {\n const preppedTag = fragments.preparedExtensionTag(\n extension,\n rawExtension,\n offset,\n );\n this.stack.push(preppedTag);\n return this;\n }\n\n startExtensionTag(tag: string): Ctx {\n const { extension, rawExtension, offset } = this.popPreparedExtensionTag();\n\n const extensionTag = fragments.extensionTag(\n extension,\n rawExtension,\n tag,\n offset,\n );\n this.stack.push(extensionTag);\n return this;\n }\n\n endExtensionTag(offset: number): Ctx {\n const tag = this.currentExtensionTag;\n tag.isComplete = true;\n tag.rawString = this.source.slice(tag.offset, offset);\n return this.processStack();\n }\n\n startUseRepoRule(\n variableName: string,\n bzlFile: string,\n ruleName: string,\n ): Ctx {\n const useRepoRule = fragments.useRepoRule(variableName, bzlFile, ruleName);\n this.stack.push(useRepoRule);\n return this;\n }\n\n endUseRepoRule(): Ctx {\n const useRepoRule = this.currentUseRepoRule;\n useRepoRule.isComplete = true;\n return this.processStack();\n }\n\n startRepoRuleCall(functionName: string, offset: number): Ctx {\n const repoRuleCall = fragments.repoRuleCall(functionName, offset);\n this.stack.push(repoRuleCall);\n return this;\n }\n\n endRepoRuleCall(offset: number): Ctx {\n const repoRuleCall = this.currentRepoRuleCall;\n repoRuleCall.isComplete = true;\n repoRuleCall.rawString = this.source.slice(repoRuleCall.offset, offset);\n return this.processStack();\n }\n\n startAttribute(name: string): Ctx {\n this.stack.push(fragments.attribute(name));\n return this.processStack();\n }\n\n startArray(): Ctx {\n this.stack.push(fragments.array());\n return this.processStack();\n }\n\n endArray(): Ctx {\n const array = this.currentArray;\n array.isComplete = true;\n return this.processStack();\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"context.js","names":["fragments.isValue","fragments.isPrimitive","fragments.string","fragments.boolean","rule","fragments.rule","fragments.preparedExtensionTag","extensionTag","fragments.extensionTag","useRepoRule","fragments.useRepoRule","repoRuleCall","fragments.repoRuleCall","fragments.attribute","fragments.array"],"sources":["../../../../../lib/modules/manager/bazel-module/parser/context.ts"],"sourcesContent":["import * as fragments from './fragments.ts';\nimport type {\n AllFragments,\n ArrayFragment,\n CtxCompatible,\n ExtensionTagFragment,\n PreparedExtensionTagFragment,\n RepoRuleCallFragment,\n ResultFragment,\n RuleFragment,\n UseRepoRuleFragment,\n} from './types.ts';\n\nexport class CtxProcessingError extends Error {\n readonly current: AllFragments;\n readonly parent?: AllFragments;\n constructor(current: AllFragments, parent?: AllFragments) {\n const msg = `Invalid context state. current: ${current.type}, parent: ${\n parent?.type ?? 'none'\n }`;\n super(msg);\n this.name = 'CtxProcessingError';\n this.current = current;\n this.parent = parent;\n }\n}\n\nexport class Ctx implements CtxCompatible {\n readonly source: string;\n results: ResultFragment[];\n stack: AllFragments[];\n\n // Temporary state for use_repo_rule parsing\n _tempVariableName?: string;\n _tempStrings?: string[];\n\n constructor(source: string) {\n this.source = source;\n this.results = [];\n this.stack = [];\n }\n\n private get safeCurrent(): AllFragments | undefined {\n return this.stack.at(-1);\n }\n\n private get current(): AllFragments {\n const c = this.safeCurrent;\n if (c === undefined) {\n throw new Error('Requested current, but no value.');\n }\n return c;\n }\n\n private get currentRule(): RuleFragment {\n const current = this.current;\n if (current.type === 'rule') {\n return current;\n }\n throw new Error('Requested current rule, but does not exist.');\n }\n\n private get currentExtensionTag(): ExtensionTagFragment {\n const current = this.current;\n if (current.type === 'extensionTag') {\n return current;\n }\n throw new Error('Requested current extension tag, but does not exist.');\n }\n\n private get currentUseRepoRule(): UseRepoRuleFragment {\n const current = this.current;\n if (current.type === 'useRepoRule') {\n return current;\n }\n throw new Error('Requested current use repo rule, but does not exist.');\n }\n\n private get currentRepoRuleCall(): RepoRuleCallFragment {\n const current = this.current;\n if (current.type === 'repoRuleCall') {\n return current;\n }\n throw new Error('Requested current repo rule call, but does not exist.');\n }\n\n private get currentArray(): ArrayFragment {\n const current = this.current;\n if (current.type === 'array') {\n return current;\n }\n throw new Error('Requested current array, but does not exist.');\n }\n\n private popPreparedExtensionTag(): PreparedExtensionTagFragment {\n const c = this.stack.pop();\n if (c === undefined) {\n throw new Error('Requested current, but no value.');\n }\n if (c.type === 'preparedExtensionTag') {\n return c;\n }\n throw new Error(\n 'Requested current prepared extension tag, but does not exist.',\n );\n }\n\n private popStack(): boolean {\n const current = this.stack.pop();\n if (!current) {\n return false;\n }\n if (!current.isComplete) {\n this.stack.push(current);\n return false;\n }\n const parent = this.safeCurrent;\n\n if (parent) {\n if (parent.type === 'attribute' && fragments.isValue(current)) {\n parent.value = current;\n parent.isComplete = true;\n return true;\n }\n if (parent.type === 'array' && fragments.isPrimitive(current)) {\n parent.items.push(current);\n return true;\n }\n // v8 ignore else -- TODO: add test #40625\n if (\n (parent.type === 'rule' ||\n parent.type === 'extensionTag' ||\n parent.type === 'repoRuleCall') &&\n current.type === 'attribute' &&\n current.value !== undefined\n ) {\n parent.children[current.name] = current.value;\n return true;\n }\n } else if (\n current.type === 'rule' ||\n current.type === 'extensionTag' ||\n current.type === 'useRepoRule' ||\n current.type === 'repoRuleCall'\n ) {\n this.results.push(current);\n return true;\n }\n\n throw new CtxProcessingError(current, parent);\n }\n\n private processStack(): Ctx {\n while (this.popStack()) {\n // Nothing to do\n }\n return this;\n }\n\n addString(value: string): Ctx {\n this.stack.push(fragments.string(value));\n return this.processStack();\n }\n\n addBoolean(value: string | boolean): Ctx {\n this.stack.push(fragments.boolean(value));\n return this.processStack();\n }\n\n startRule(name: string): Ctx {\n const rule = fragments.rule(name);\n this.stack.push(rule);\n return this;\n }\n\n endRule(): Ctx {\n const rule = this.currentRule;\n rule.isComplete = true;\n return this.processStack();\n }\n\n prepareExtensionTag(\n extension: string,\n rawExtension: string,\n offset: number,\n ): Ctx {\n const preppedTag = fragments.preparedExtensionTag(\n extension,\n rawExtension,\n offset,\n );\n this.stack.push(preppedTag);\n return this;\n }\n\n startExtensionTag(tag: string): Ctx {\n const { extension, rawExtension, offset } = this.popPreparedExtensionTag();\n\n const extensionTag = fragments.extensionTag(\n extension,\n rawExtension,\n tag,\n offset,\n );\n this.stack.push(extensionTag);\n return this;\n }\n\n endExtensionTag(offset: number): Ctx {\n const tag = this.currentExtensionTag;\n tag.isComplete = true;\n tag.rawString = this.source.slice(tag.offset, offset);\n return this.processStack();\n }\n\n startUseRepoRule(\n variableName: string,\n bzlFile: string,\n ruleName: string,\n ): Ctx {\n const useRepoRule = fragments.useRepoRule(variableName, bzlFile, ruleName);\n this.stack.push(useRepoRule);\n return this;\n }\n\n endUseRepoRule(): Ctx {\n const useRepoRule = this.currentUseRepoRule;\n useRepoRule.isComplete = true;\n return this.processStack();\n }\n\n startRepoRuleCall(functionName: string, offset: number): Ctx {\n const repoRuleCall = fragments.repoRuleCall(functionName, offset);\n this.stack.push(repoRuleCall);\n return this;\n }\n\n endRepoRuleCall(offset: number): Ctx {\n const repoRuleCall = this.currentRepoRuleCall;\n repoRuleCall.isComplete = true;\n repoRuleCall.rawString = this.source.slice(repoRuleCall.offset, offset);\n return this.processStack();\n }\n\n startAttribute(name: string): Ctx {\n this.stack.push(fragments.attribute(name));\n return this.processStack();\n }\n\n startArray(): Ctx {\n this.stack.push(fragments.array());\n return this.processStack();\n }\n\n endArray(): Ctx {\n const array = this.currentArray;\n array.isComplete = true;\n return this.processStack();\n }\n}\n"],"mappings":"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"}
@@ -168,6 +168,6 @@ function isPrimitive$1(data) {
168
168
  return PrimitiveFragments.safeParse(data).success;
169
169
  }
170
170
  //#endregion
171
- export { ArrayFragment, AttributeFragment, BooleanFragment, ExtensionTagFragment, PreparedExtensionTagFragment, RepoRuleCallFragment, RuleFragment, StringArrayFragment, StringFragment, UseRepoRuleFragment, array, attribute, boolean, extensionTag, isPrimitive$1 as isPrimitive, isValue, preparedExtensionTag, repoRuleCall, rule, string, useRepoRule };
171
+ export { ArrayFragment, AttributeFragment, BooleanFragment, ExtensionTagFragment, PreparedExtensionTagFragment, PrimitiveFragments, RepoRuleCallFragment, RuleFragment, StringArrayFragment, StringFragment, UseRepoRuleFragment, ValueFragments, array, attribute, boolean, extensionTag, isPrimitive$1 as isPrimitive, isValue, preparedExtensionTag, repoRuleCall, rule, string, useRepoRule };
172
172
 
173
173
  //# sourceMappingURL=fragments.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fragments.js","names":["starlark.asBoolean","isPrimitive"],"sources":["../../../../../lib/modules/manager/bazel-module/parser/fragments.ts"],"sourcesContent":["import { isString } from '@sindresorhus/is';\nimport { z } from 'zod/v4';\nimport {\n LooseArray,\n LooseRecord,\n} from '../../../../util/schema-utils/index.ts';\nimport * as starlark from './starlark.ts';\n\nexport const StringFragment = z.object({\n type: z.literal('string'),\n value: z.string(),\n isComplete: z.literal(true),\n});\nexport const BooleanFragment = z.object({\n type: z.literal('boolean'),\n value: z.boolean(),\n isComplete: z.literal(true),\n});\nconst PrimitiveFragments = z.discriminatedUnion('type', [\n StringFragment,\n BooleanFragment,\n]);\nexport const ArrayFragment = z.object({\n type: z.literal('array'),\n items: LooseArray(PrimitiveFragments),\n isComplete: z.boolean(),\n});\nexport const StringArrayFragment = z.object({\n type: z.literal('array'),\n items: LooseArray(StringFragment),\n isComplete: z.boolean(),\n});\nconst ValueFragments = z.discriminatedUnion('type', [\n StringFragment,\n BooleanFragment,\n ArrayFragment,\n]);\nexport const RuleFragment = z.object({\n type: z.literal('rule'),\n rule: z.string(),\n children: LooseRecord(ValueFragments),\n isComplete: z.boolean(),\n});\nexport const PreparedExtensionTagFragment = z.object({\n type: z.literal('preparedExtensionTag'),\n // See ExtensionTagFragment for documentation of the fields.\n extension: z.string(),\n rawExtension: z.string(),\n offset: z.number(), // start offset in the source string\n isComplete: z.literal(false), // never complete, parser internal type.\n});\nexport const ExtensionTagFragment = z.object({\n type: z.literal('extensionTag'),\n // The \"logical\" name of the extension (e.g. `oci` or `maven`).\n extension: z.string(),\n // The \"raw\" name of the extension as it appears in the MODULE file (e.g. `maven_01` or `maven`)\n rawExtension: z.string(),\n tag: z.string(),\n children: LooseRecord(ValueFragments),\n isComplete: z.boolean(),\n offset: z.number(), // start offset in the source string\n rawString: z.string().optional(), // raw source string\n});\nexport const UseRepoRuleFragment = z.object({\n type: z.literal('useRepoRule'),\n variableName: z.string(),\n bzlFile: z.string(),\n ruleName: z.string(),\n isComplete: z.boolean(),\n});\nexport const RepoRuleCallFragment = z.object({\n type: z.literal('repoRuleCall'),\n functionName: z.string(),\n children: LooseRecord(ValueFragments),\n isComplete: z.boolean(),\n offset: z.number(),\n rawString: z.string().optional(),\n});\nexport const AttributeFragment = z.object({\n type: z.literal('attribute'),\n name: z.string(),\n value: ValueFragments.optional(),\n isComplete: z.boolean(),\n});\nexport const AllFragments = z.discriminatedUnion('type', [\n ArrayFragment,\n AttributeFragment,\n BooleanFragment,\n RuleFragment,\n PreparedExtensionTagFragment,\n ExtensionTagFragment,\n UseRepoRuleFragment,\n RepoRuleCallFragment,\n StringFragment,\n]);\n\nexport type AllFragments = z.infer<typeof AllFragments>;\nexport type ArrayFragment = z.infer<typeof ArrayFragment>;\nexport type AttributeFragment = z.infer<typeof AttributeFragment>;\nexport type BooleanFragment = z.infer<typeof BooleanFragment>;\nexport type ChildFragments = Record<string, ValueFragments>;\nexport type PrimitiveFragments = z.infer<typeof PrimitiveFragments>;\nexport type RuleFragment = z.infer<typeof RuleFragment>;\nexport type PreparedExtensionTagFragment = z.infer<\n typeof PreparedExtensionTagFragment\n>;\nexport type ExtensionTagFragment = z.infer<typeof ExtensionTagFragment>;\nexport type UseRepoRuleFragment = z.infer<typeof UseRepoRuleFragment>;\nexport type RepoRuleCallFragment = z.infer<typeof RepoRuleCallFragment>;\nexport type StringFragment = z.infer<typeof StringFragment>;\nexport type ValueFragments = z.infer<typeof ValueFragments>;\nexport type ResultFragment =\n | RuleFragment\n | ExtensionTagFragment\n | UseRepoRuleFragment\n | RepoRuleCallFragment;\n\nexport function string(value: string): StringFragment {\n return {\n type: 'string',\n isComplete: true,\n value,\n };\n}\n\nexport function boolean(value: string | boolean): BooleanFragment {\n return {\n type: 'boolean',\n isComplete: true,\n value: isString(value) ? starlark.asBoolean(value) : value,\n };\n}\n\nexport function rule(\n rule: string,\n children: ChildFragments = {},\n isComplete = false,\n): RuleFragment {\n return {\n type: 'rule',\n rule,\n isComplete,\n children,\n };\n}\n\nexport function preparedExtensionTag(\n extension: string,\n rawExtension: string,\n offset: number,\n): PreparedExtensionTagFragment {\n return {\n type: 'preparedExtensionTag',\n extension,\n rawExtension,\n offset,\n isComplete: false, // never complete\n };\n}\n\nexport function extensionTag(\n extension: string,\n rawExtension: string,\n tag: string,\n offset: number,\n children: ChildFragments = {},\n rawString?: string,\n isComplete = false,\n): ExtensionTagFragment {\n return {\n type: 'extensionTag',\n extension,\n rawExtension,\n tag,\n offset,\n rawString,\n isComplete,\n children,\n };\n}\n\nexport function useRepoRule(\n variableName: string,\n bzlFile: string,\n ruleName: string,\n isComplete = false,\n): UseRepoRuleFragment {\n return {\n type: 'useRepoRule',\n variableName,\n bzlFile,\n ruleName,\n isComplete,\n };\n}\n\nexport function repoRuleCall(\n functionName: string,\n offset: number,\n children: ChildFragments = {},\n rawString?: string,\n isComplete = false,\n): RepoRuleCallFragment {\n return {\n type: 'repoRuleCall',\n functionName,\n offset,\n rawString,\n isComplete,\n children,\n };\n}\n\nexport function attribute(\n name: string,\n value?: ValueFragments,\n isComplete = false,\n): AttributeFragment {\n return {\n type: 'attribute',\n name,\n value,\n isComplete,\n };\n}\n\nexport function array(\n items: PrimitiveFragments[] = [],\n isComplete = false,\n): ArrayFragment {\n return {\n type: 'array',\n items,\n isComplete,\n };\n}\n\nexport function isValue(data: unknown): data is ValueFragments {\n const result = ValueFragments.safeParse(data);\n return result.success;\n}\n\nexport function isPrimitive(data: unknown): data is PrimitiveFragments {\n const result = PrimitiveFragments.safeParse(data);\n return result.success;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"fragments.js","names":["starlark.asBoolean","isPrimitive"],"sources":["../../../../../lib/modules/manager/bazel-module/parser/fragments.ts"],"sourcesContent":["import { isString } from '@sindresorhus/is';\nimport { z } from 'zod/v4';\nimport {\n LooseArray,\n LooseRecord,\n} from '../../../../util/schema-utils/index.ts';\nimport * as starlark from './starlark.ts';\nimport type { ChildFragments } from './types.ts';\n\nexport const StringFragment = z.object({\n type: z.literal('string'),\n value: z.string(),\n isComplete: z.literal(true),\n});\nexport const BooleanFragment = z.object({\n type: z.literal('boolean'),\n value: z.boolean(),\n isComplete: z.literal(true),\n});\nexport const PrimitiveFragments = z.discriminatedUnion('type', [\n StringFragment,\n BooleanFragment,\n]);\nexport const ArrayFragment = z.object({\n type: z.literal('array'),\n items: LooseArray(PrimitiveFragments),\n isComplete: z.boolean(),\n});\nexport const StringArrayFragment = z.object({\n type: z.literal('array'),\n items: LooseArray(StringFragment),\n isComplete: z.boolean(),\n});\nexport const ValueFragments = z.discriminatedUnion('type', [\n StringFragment,\n BooleanFragment,\n ArrayFragment,\n]);\nexport const RuleFragment = z.object({\n type: z.literal('rule'),\n rule: z.string(),\n children: LooseRecord(ValueFragments),\n isComplete: z.boolean(),\n});\nexport const PreparedExtensionTagFragment = z.object({\n type: z.literal('preparedExtensionTag'),\n // See ExtensionTagFragment for documentation of the fields.\n extension: z.string(),\n rawExtension: z.string(),\n offset: z.number(), // start offset in the source string\n isComplete: z.literal(false), // never complete, parser internal type.\n});\nexport const ExtensionTagFragment = z.object({\n type: z.literal('extensionTag'),\n // The \"logical\" name of the extension (e.g. `oci` or `maven`).\n extension: z.string(),\n // The \"raw\" name of the extension as it appears in the MODULE file (e.g. `maven_01` or `maven`)\n rawExtension: z.string(),\n tag: z.string(),\n children: LooseRecord(ValueFragments),\n isComplete: z.boolean(),\n offset: z.number(), // start offset in the source string\n rawString: z.string().optional(), // raw source string\n});\nexport const UseRepoRuleFragment = z.object({\n type: z.literal('useRepoRule'),\n variableName: z.string(),\n bzlFile: z.string(),\n ruleName: z.string(),\n isComplete: z.boolean(),\n});\nexport const RepoRuleCallFragment = z.object({\n type: z.literal('repoRuleCall'),\n functionName: z.string(),\n children: LooseRecord(ValueFragments),\n isComplete: z.boolean(),\n offset: z.number(),\n rawString: z.string().optional(),\n});\nexport const AttributeFragment = z.object({\n type: z.literal('attribute'),\n name: z.string(),\n value: ValueFragments.optional(),\n isComplete: z.boolean(),\n});\nexport const AllFragments = z.discriminatedUnion('type', [\n ArrayFragment,\n AttributeFragment,\n BooleanFragment,\n RuleFragment,\n PreparedExtensionTagFragment,\n ExtensionTagFragment,\n UseRepoRuleFragment,\n RepoRuleCallFragment,\n StringFragment,\n]);\n\nexport function string(value: string): z.infer<typeof StringFragment> {\n return {\n type: 'string',\n isComplete: true,\n value,\n };\n}\n\nexport function boolean(\n value: string | boolean,\n): z.infer<typeof BooleanFragment> {\n return {\n type: 'boolean',\n isComplete: true,\n value: isString(value) ? starlark.asBoolean(value) : value,\n };\n}\n\nexport function rule(\n rule: string,\n children: ChildFragments = {},\n isComplete = false,\n): z.infer<typeof RuleFragment> {\n return {\n type: 'rule',\n rule,\n isComplete,\n children,\n };\n}\n\nexport function preparedExtensionTag(\n extension: string,\n rawExtension: string,\n offset: number,\n): z.infer<typeof PreparedExtensionTagFragment> {\n return {\n type: 'preparedExtensionTag',\n extension,\n rawExtension,\n offset,\n isComplete: false, // never complete\n };\n}\n\nexport function extensionTag(\n extension: string,\n rawExtension: string,\n tag: string,\n offset: number,\n children: ChildFragments = {},\n rawString?: string,\n isComplete = false,\n): z.infer<typeof ExtensionTagFragment> {\n return {\n type: 'extensionTag',\n extension,\n rawExtension,\n tag,\n offset,\n rawString,\n isComplete,\n children,\n };\n}\n\nexport function useRepoRule(\n variableName: string,\n bzlFile: string,\n ruleName: string,\n isComplete = false,\n): z.infer<typeof UseRepoRuleFragment> {\n return {\n type: 'useRepoRule',\n variableName,\n bzlFile,\n ruleName,\n isComplete,\n };\n}\n\nexport function repoRuleCall(\n functionName: string,\n offset: number,\n children: ChildFragments = {},\n rawString?: string,\n isComplete = false,\n): z.infer<typeof RepoRuleCallFragment> {\n return {\n type: 'repoRuleCall',\n functionName,\n offset,\n rawString,\n isComplete,\n children,\n };\n}\n\nexport function attribute(\n name: string,\n value?: z.infer<typeof ValueFragments>,\n isComplete = false,\n): z.infer<typeof AttributeFragment> {\n return {\n type: 'attribute',\n name,\n value,\n isComplete,\n };\n}\n\nexport function array(\n items: z.infer<typeof PrimitiveFragments>[] = [],\n isComplete = false,\n): z.infer<typeof ArrayFragment> {\n return {\n type: 'array',\n items,\n isComplete,\n };\n}\n\nexport function isValue(data: unknown): data is z.infer<typeof ValueFragments> {\n const result = ValueFragments.safeParse(data);\n return result.success;\n}\n\nexport function isPrimitive(\n data: unknown,\n): data is z.infer<typeof PrimitiveFragments> {\n const result = PrimitiveFragments.safeParse(data);\n return result.success;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["q","query"],"sources":["../../../../../lib/modules/manager/bazel-module/parser/index.ts"],"sourcesContent":["import { lang, query as q } from '@renovatebot/good-enough-parser';\nimport { Ctx } from './context.ts';\nimport { extensionTags } from './extension-tags.ts';\nimport type { ResultFragment } from './fragments.ts';\nimport {\n clearRepoRuleVariables,\n repoRuleCall,\n useRepoRuleAssignment,\n} from './repo-rules.ts';\nimport { rules } from './rules.ts';\n\nconst rule = q.alt<Ctx>(\n rules,\n extensionTags,\n useRepoRuleAssignment,\n repoRuleCall,\n);\n\nconst query = q.tree<Ctx>({\n type: 'root-tree',\n maxDepth: 16,\n search: rule,\n});\n\nconst starlarkLang = lang.createLang('starlark');\n\nexport function parse(input: string): ResultFragment[] {\n clearRepoRuleVariables();\n\n const parsedResult = starlarkLang.query(input, query, new Ctx(input));\n return parsedResult?.results ?? [];\n}\n"],"mappings":";;;;;;AAWA,MAAM,OAAOA,MAAE,IACb,OACA,eACA,uBACA,YACF;AAEA,MAAMC,UAAQD,MAAE,KAAU;CACxB,MAAM;CACN,UAAU;CACV,QAAQ;AACV,CAAC;AAED,MAAM,eAAe,KAAK,WAAW,UAAU;AAE/C,SAAgB,MAAM,OAAiC;CACrD,uBAAuB;CAGvB,OADqB,aAAa,MAAM,OAAOC,SAAO,IAAI,IAAI,KAAK,CACjD,CAAC,EAAE,WAAW,CAAC;AACnC"}
1
+ {"version":3,"file":"index.js","names":["q","query"],"sources":["../../../../../lib/modules/manager/bazel-module/parser/index.ts"],"sourcesContent":["import { lang, query as q } from '@renovatebot/good-enough-parser';\nimport { Ctx } from './context.ts';\nimport { extensionTags } from './extension-tags.ts';\nimport {\n clearRepoRuleVariables,\n repoRuleCall,\n useRepoRuleAssignment,\n} from './repo-rules.ts';\nimport { rules } from './rules.ts';\nimport type { ResultFragment } from './types.ts';\n\nconst rule = q.alt<Ctx>(\n rules,\n extensionTags,\n useRepoRuleAssignment,\n repoRuleCall,\n);\n\nconst query = q.tree<Ctx>({\n type: 'root-tree',\n maxDepth: 16,\n search: rule,\n});\n\nconst starlarkLang = lang.createLang('starlark');\n\nexport function parse(input: string): ResultFragment[] {\n clearRepoRuleVariables();\n\n const parsedResult = starlarkLang.query(input, query, new Ctx(input));\n return parsedResult?.results ?? [];\n}\n"],"mappings":";;;;;;AAWA,MAAM,OAAOA,MAAE,IACb,OACA,eACA,uBACA,YACF;AAEA,MAAMC,UAAQD,MAAE,KAAU;CACxB,MAAM;CACN,UAAU;CACV,QAAQ;AACV,CAAC;AAED,MAAM,eAAe,KAAK,WAAW,UAAU;AAE/C,SAAgB,MAAM,OAAiC;CACrD,uBAAuB;CAGvB,OADqB,aAAa,MAAM,OAAOC,SAAO,IAAI,IAAI,KAAK,CACjD,CAAC,EAAE,WAAW,CAAC;AACnC"}