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.
- package/dist/config/options/index.js +1 -1
- package/dist/config/options/index.js.map +1 -1
- package/dist/global-config-option-defaults.generated.js +1 -1
- package/dist/global-config-option-defaults.generated.js.map +1 -1
- package/dist/modules/datasource/docker/dockerhub-cache.js.map +1 -1
- package/dist/modules/datasource/go/common.js.map +1 -1
- package/dist/modules/datasource/rubygems/versions-endpoint-cache.js.map +1 -1
- package/dist/modules/datasource/rust-version/index.js.map +1 -1
- package/dist/modules/datasource/rust-version/parse.js.map +1 -1
- package/dist/modules/manager/asdf/extract.js.map +1 -1
- package/dist/modules/manager/asdf/upgradeable-tooling.js.map +1 -1
- package/dist/modules/manager/bazel-module/extract.js.map +1 -1
- package/dist/modules/manager/bazel-module/parser/context.js.map +1 -1
- package/dist/modules/manager/bazel-module/parser/fragments.js +1 -1
- package/dist/modules/manager/bazel-module/parser/fragments.js.map +1 -1
- package/dist/modules/manager/bazel-module/parser/index.js.map +1 -1
- package/dist/modules/manager/bazel-module/rules.js.map +1 -1
- package/dist/modules/manager/custom/jsonata/utils.js.map +1 -1
- package/dist/modules/manager/custom/regex/utils.js.map +1 -1
- package/dist/modules/manager/custom/types.d.ts +1 -0
- package/dist/modules/manager/custom/utils.d.ts +1 -0
- package/dist/modules/manager/custom/utils.js.map +1 -1
- package/dist/modules/manager/devbox/tool-versioning.js.map +1 -1
- package/dist/modules/manager/fingerprint.generated.js +2 -2
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/github-actions/community.js.map +1 -1
- package/dist/modules/manager/github-actions/extract.js.map +1 -1
- package/dist/modules/manager/github-actions/parse.js.map +1 -1
- package/dist/modules/manager/github-actions/schema.js.map +1 -1
- package/dist/modules/manager/haskell-cabal/extract.js.map +1 -1
- package/dist/modules/manager/haskell-cabal/index.js.map +1 -1
- package/dist/modules/manager/homebrew/handlers/github.js.map +1 -1
- package/dist/modules/manager/homebrew/handlers/npm.js.map +1 -1
- package/dist/modules/manager/mise/backends.js.map +1 -1
- package/dist/modules/manager/mise/extract.js.map +1 -1
- package/dist/modules/manager/mise/lockfile.js.map +1 -1
- package/dist/modules/manager/mise/upgradeable-tooling.js.map +1 -1
- package/dist/modules/manager/npm/npmrc.js.map +1 -1
- package/dist/modules/manager/npm/post-update/node-version.js.map +1 -1
- package/dist/modules/manager/npm/post-update/npm.js.map +1 -1
- package/dist/modules/manager/npm/post-update/rules.js.map +1 -1
- package/dist/modules/manager/npm/post-update/utils.js.map +1 -1
- package/dist/modules/manager/pixi/lockfile.js.map +1 -1
- package/dist/modules/manager/proto/extract.js.map +1 -1
- package/dist/modules/manager/proto/upgradeable-tooling.js.map +1 -1
- package/dist/modules/manager/terragrunt/util.js.map +1 -1
- package/dist/modules/platform/azure/azure-helper.js.map +1 -1
- package/dist/modules/platform/azure/types.js.map +1 -1
- package/dist/modules/platform/bitbucket/comments.js.map +1 -1
- package/dist/modules/platform/bitbucket-server/index.js.map +1 -1
- package/dist/modules/platform/bitbucket-server/utils.js.map +1 -1
- package/dist/modules/platform/codecommit/index.js.map +1 -1
- package/dist/modules/versioning/apk/index.js.map +1 -1
- package/dist/modules/versioning/aws-machine-image/index.js.map +1 -1
- package/dist/modules/versioning/azure-rest-api/index.js.map +1 -1
- package/dist/modules/versioning/deb/index.js.map +1 -1
- package/dist/modules/versioning/debian/common.js.map +1 -1
- package/dist/modules/versioning/debian/index.js.map +1 -1
- package/dist/modules/versioning/devbox/index.js.map +1 -1
- package/dist/modules/versioning/distro.js.map +1 -1
- package/dist/modules/versioning/docker/index.js.map +1 -1
- package/dist/modules/versioning/generic.d.ts +2 -10
- package/dist/modules/versioning/generic.js.map +1 -1
- package/dist/modules/versioning/git/index.js.map +1 -1
- package/dist/modules/versioning/glasskube/index.js.map +1 -1
- package/dist/modules/versioning/gradle/compare.js.map +1 -1
- package/dist/modules/versioning/hermit/index.js.map +1 -1
- package/dist/modules/versioning/index.d.ts +2 -2
- package/dist/modules/versioning/ivy/parse.js.map +1 -1
- package/dist/modules/versioning/lambda-node/schedule.js.map +1 -1
- package/dist/modules/versioning/loose/index.js.map +1 -1
- package/dist/modules/versioning/maven/compare.js.map +1 -1
- package/dist/modules/versioning/nixpkgs/index.js.map +1 -1
- package/dist/modules/versioning/node/schedule.js.map +1 -1
- package/dist/modules/versioning/paket/index.js.map +1 -1
- package/dist/modules/versioning/paket/range.js.map +1 -1
- package/dist/modules/versioning/perl/index.js.map +1 -1
- package/dist/modules/versioning/redhat/index.js.map +1 -1
- package/dist/modules/versioning/regex/index.js.map +1 -1
- package/dist/modules/versioning/rpm/index.js.map +1 -1
- package/dist/modules/versioning/ruby/range.js.map +1 -1
- package/dist/modules/versioning/ruby/strategies/bump.js.map +1 -1
- package/dist/modules/versioning/ruby/strategies/replace.js.map +1 -1
- package/dist/modules/versioning/ruby/strategies/widen.js.map +1 -1
- package/dist/modules/versioning/semver/common.js.map +1 -1
- package/dist/modules/versioning/types.d.ts +25 -1
- package/dist/modules/versioning/unity3d/index.js.map +1 -1
- package/dist/modules/versioning/unity3d-packages/index.js.map +1 -1
- package/package.json +1 -1
- 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.
|
|
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.
|
|
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';\
|
|
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
|
|
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
|
|
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';\
|
|
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 './
|
|
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":";;;;;;;;;;;;;;;;;AAkBA,MAAM,iBAAoC;CAExC,eAAe;CACf,SAAS,aAAa;EACpB,YAAY,yBAAyB;EACrC,aAAa;EACb,gBAAgB;EAGhB,cAAc,QAAQ,QAAQ,MAAM,YAAY,GAAG,EAAE;CACvD;AACF;AAEA,MAAa,qBAAwD;CACnE,KAAK;EACH,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,YAAY;EACV,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,aAAa;EACX,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;EACf;CACF;CACA,KAAK;EACH,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,QAAQ;EACN,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,uBAAuB;EACrB,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,OAAO;EACL,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,QAAQ;EACN,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;EACf;CACF;CACA,aAAa;EACX,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,KAAK;EACH,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,cAAc;EACZ,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;EACf;CACF;CACA,SAAS;EACP,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;EACf;CACF;CACA,SAAS;EACP,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;GACb,YAAY,GAAGA,GAAmB;EACpC;CACF;CACA,YAAY;EACV,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,UAAU;EACR,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,4BAA4B;EAC1B,eACE;EACF,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,cAAc;EACZ,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,YAAYC;EACd;CACF;CACA,QAAQ;EACN,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,SAAS;EACP,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;EACf;CACF;CACA,MAAM;EACJ,eAAe;EACf,QAAQ,EACN,YAAY,sBAAsB,GACpC;CACF;CACA,MAAM;EACJ,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,QAAQ;EACN,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,eAAe;EACb,eAAe;EACf,QAAQ;GACN,YAAY,wBAAwB;GACpC,aAAa;EACf;CACF;CACA,QAAQ;EACN,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;EACf;CACF;CACA,WAAW;EACT,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,wBAAwB;EACtB,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,QAAQ;EACN,eAAe;EACf,QAAQ,EACN,YAAY,mBAAmB,GACjC;CACF;CACA,KAAK;EACH,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;EACf;CACF;CACA,QAAQ;EACN,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;GACb,gBAAgB;GAChB,YAAY,GAAGD,GAAmB;EACpC;CACF;CACA,SAAS;EACP,eAAe;EACf,SAAS,aAAa;GACpB,YAAY,yBAAyB;GAErC,cAAc,QAAQ,QAAQ,MAAM,qBAAqB,GAAG,EAAE;EAChE;CACF;CACA,OAAO;EACL,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,QAAQ;EACN,eAAe;EACf,QAAQ;GACN,YAAY,iBAAiB;GAC7B,aAAa;EACf;CACF;CACA,cAAc;EACZ,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,UAAU;EACR,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,QAAQ;EACN,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,OAAO;EACL,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,QAAQ;CACR,QAAQ;EACN,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,iBAAiB;EACf,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,UAAU;EACR,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,WAAW;EACT,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,UAAU;EACR,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,SAAS;EACP,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,MAAM;EACJ,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,aAAa;EACX,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,UAAU;EACR,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,MAAM;CACN,OAAO;EACL,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,UAAU;EACR,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,YAAYC;EACd;CACF;CACA,MAAM;EACJ,eAAe;EACf,SAAS,YAAY;GACnB,MAAM,sBAAsB,MAAM,iCAAiC,CAAC,CAAC,KACnE,OACF,CAAC,EAAE;GACH,IAAI,qBACF,OAAO;IACL,YAAY,sBAAsB;IAClC,aAAa;IACb,cAAc,oBAAoB;GACpC;GAEF,MAAM,sBAAsB,MAC1B,qCACF,CAAC,CAAC,KAAK,OAAO,CAAC,EAAE;GACjB,IAAI,qBACF,OAAO;IACL,YAAY,sBAAsB;IAClC,aAAa;IACb,cAAc,oBAAoB;GACpC;GAEF,MAAM,oBAAoB,MAAM,4BAA4B,CAAC,CAAC,KAC5D,OACF,CAAC,EAAE;GACH,IAAI,mBACF,OAAO;IACL,YAAY,sBAAsB;IAClC,aAAa;IACb,cAAc,kBAAkB;GAClC;GAEF,MAAM,oBAAoB,MAAM,gCAAgC,CAAC,CAAC,KAChE,OACF,CAAC,EAAE;GACH,IAAI,mBACF,OAAO;IACL,YAAY,sBAAsB;IAClC,aAAa;IACb,cAAc,kBAAkB;GAClC;EAIJ;CACF;CACA,OAAO;EACL,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,MAAM;EACJ,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;EACf;CACF;CACA,KAAK;EACH,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,MAAM;EACJ,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,QAAQ;EACN,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,aAAa;EACX,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,SAAS;EACP,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,UAAU;EACR,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;EACf;CACF;CACA,WAAW;EACT,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,YAAY;EACV,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,KAAK;EACH,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,qBAAqB;EACnB,eACE;EACF,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,OAAO;EACL,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;EACf;CACF;CACA,WAAW;EACT,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,UAAU;EACR,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,SAAS;EACP,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,KAAK;EACH,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,QAAQ;EACN,eAAe;EACf,QAAQ;GACN,SAAS;GACT,YAAY,sBAAsB;EACpC;CACF;CACA,OAAO;EACL,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;EACf;CACF;CACA,KAAK;EACH,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,KAAK;EACH,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,UAAU;EACR,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,QAAQ;EACN,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,MAAM;EACJ,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,KAAK;EACH,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,MAAM;EACJ,eAAe;EACf,QAAQ;GACN,YAAY,cAAc;GAC1B,aAAa;GACb,YAAYA;EACd;CACF;CACA,QAAQ;EACN,eAAe;EACf,QAAQ;GACN,YAAY,eAAe;GAC3B,aAAa;EACf;CACF;CACA,cAAc;EACZ,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,QAAQ;EACN,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,QAAQ;EACN,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,QAAQ;EACN,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,OAAO;EACL,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;EACf;CACF;CACA,MAAM;EACJ,eAAe;EACf,QAAQ;GACN,YAAY,sBAAsB;GAClC,aAAa;GACb,YAAYA;EACd;CACF;CACA,MAAM;EACJ,eAAe;EACf,QAAQ;GACN,YAAY,sBAAsB;GAClC,aAAa;EACf;CACF;CACA,KAAK;EACH,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,OAAO;EACL,eAAe;EACf,SAAS,YAAY;GACnB,IAAI,QAAQ,WAAW,GAAG,GACxB,OAAO;IACL,YAAY,qBAAqB;IACjC,aAAa;IACb,gBAAgB;GAClB;GAEF,IAAI,QAAQ,WAAW,GAAG,GACxB,OAAO;IACL,YAAY,qBAAqB;IACjC,aAAa;GACf;EAIJ;CACF;CACA,YAAY;EACV,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,OAAO;EACL,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,UAAU;EACR,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,MAAM;EACJ,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,WAAW;EACT,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,WAAW;EACT,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,UAAU;EACR,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,WAAW;EACT,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,kBAAkB;EAChB,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,aAAa;EACX,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;EACf;CACF;CACA,YAAY;EACV,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,WAAW;EACT,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,QAAQ;EACN,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,OAAO;EACL,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,OAAO;EACL,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,OAAO;EACL,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,UAAU;EACR,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,IAAI;EACF,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,KAAK;EACH,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;EACf;CACF;CACA,SAAS;EACP,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,QAAQ;EACN,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,QAAQ;EACN,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;EACf;CACF;CACA,SAAS;EACP,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,OAAO;EACL,eAAe;EACf,QAAQ;GACN,YAAY,qBAAqB;GACjC,aAAa;EACf;CACF;CACA,OAAO;EACL,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;GACb,gBAAgB;EAClB;CACF;CACA,IAAI;EACF,eAAe;EACf,QAAQ;GACN,YAAY,yBAAyB;GACrC,aAAa;EACf;CACF;AACF"}
|
|
@@ -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
|
|
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":";;AAaA,IAAa,qBAAb,cAAwC,MAAM;CAC5C;CACA;CACA,YAAY,SAAuB,QAAuB;EACxD,MAAM,MAAM,mCAAmC,QAAQ,KAAK,YAC1D,QAAQ,QAAQ;EAElB,MAAM,GAAG;EACT,KAAK,OAAO;EACZ,KAAK,UAAU;EACf,KAAK,SAAS;CAChB;AACF;AAEA,IAAa,MAAb,MAA0C;CACxC;CACA;CACA;CAGA;CACA;CAEA,YAAY,QAAgB;EAC1B,KAAK,SAAS;EACd,KAAK,UAAU,CAAC;EAChB,KAAK,QAAQ,CAAC;CAChB;CAEA,IAAY,cAAwC;EAClD,OAAO,KAAK,MAAM,GAAG,EAAE;CACzB;CAEA,IAAY,UAAwB;EAClC,MAAM,IAAI,KAAK;EACf,IAAI,MAAM,KAAA,GACR,MAAM,IAAI,MAAM,kCAAkC;EAEpD,OAAO;CACT;CAEA,IAAY,cAA4B;EACtC,MAAM,UAAU,KAAK;EACrB,IAAI,QAAQ,SAAS,QACnB,OAAO;EAET,MAAM,IAAI,MAAM,6CAA6C;CAC/D;CAEA,IAAY,sBAA4C;EACtD,MAAM,UAAU,KAAK;EACrB,IAAI,QAAQ,SAAS,gBACnB,OAAO;EAET,MAAM,IAAI,MAAM,sDAAsD;CACxE;CAEA,IAAY,qBAA0C;EACpD,MAAM,UAAU,KAAK;EACrB,IAAI,QAAQ,SAAS,eACnB,OAAO;EAET,MAAM,IAAI,MAAM,sDAAsD;CACxE;CAEA,IAAY,sBAA4C;EACtD,MAAM,UAAU,KAAK;EACrB,IAAI,QAAQ,SAAS,gBACnB,OAAO;EAET,MAAM,IAAI,MAAM,uDAAuD;CACzE;CAEA,IAAY,eAA8B;EACxC,MAAM,UAAU,KAAK;EACrB,IAAI,QAAQ,SAAS,SACnB,OAAO;EAET,MAAM,IAAI,MAAM,8CAA8C;CAChE;CAEA,0BAAgE;EAC9D,MAAM,IAAI,KAAK,MAAM,IAAI;EACzB,IAAI,MAAM,KAAA,GACR,MAAM,IAAI,MAAM,kCAAkC;EAEpD,IAAI,EAAE,SAAS,wBACb,OAAO;EAET,MAAM,IAAI,MACR,+DACF;CACF;CAEA,WAA4B;EAC1B,MAAM,UAAU,KAAK,MAAM,IAAI;EAC/B,IAAI,CAAC,SACH,OAAO;EAET,IAAI,CAAC,QAAQ,YAAY;GACvB,KAAK,MAAM,KAAK,OAAO;GACvB,OAAO;EACT;EACA,MAAM,SAAS,KAAK;EAEpB,IAAI,QAAQ;GACV,IAAI,OAAO,SAAS,eAAeA,QAAkB,OAAO,GAAG;IAC7D,OAAO,QAAQ;IACf,OAAO,aAAa;IACpB,OAAO;GACT;GACA,IAAI,OAAO,SAAS,WAAWC,YAAsB,OAAO,GAAG;IAC7D,OAAO,MAAM,KAAK,OAAO;IACzB,OAAO;GACT;;GAEA,KACG,OAAO,SAAS,UACf,OAAO,SAAS,kBAChB,OAAO,SAAS,mBAClB,QAAQ,SAAS,eACjB,QAAQ,UAAU,KAAA,GAClB;IACA,OAAO,SAAS,QAAQ,QAAQ,QAAQ;IACxC,OAAO;GACT;EACF,OAAO,IACL,QAAQ,SAAS,UACjB,QAAQ,SAAS,kBACjB,QAAQ,SAAS,iBACjB,QAAQ,SAAS,gBACjB;GACA,KAAK,QAAQ,KAAK,OAAO;GACzB,OAAO;EACT;EAEA,MAAM,IAAI,mBAAmB,SAAS,MAAM;CAC9C;CAEA,eAA4B;EAC1B,OAAO,KAAK,SAAS;EAGrB,OAAO;CACT;CAEA,UAAU,OAAoB;EAC5B,KAAK,MAAM,KAAKC,OAAiB,KAAK,CAAC;EACvC,OAAO,KAAK,aAAa;CAC3B;CAEA,WAAW,OAA8B;EACvC,KAAK,MAAM,KAAKC,QAAkB,KAAK,CAAC;EACxC,OAAO,KAAK,aAAa;CAC3B;CAEA,UAAU,MAAmB;EAC3B,MAAMC,SAAOC,KAAe,IAAI;EAChC,KAAK,MAAM,KAAKD,MAAI;EACpB,OAAO;CACT;CAEA,UAAe;EACb,MAAM,OAAO,KAAK;EAClB,KAAK,aAAa;EAClB,OAAO,KAAK,aAAa;CAC3B;CAEA,oBACE,WACA,cACA,QACK;EACL,MAAM,aAAaE,qBACjB,WACA,cACA,MACF;EACA,KAAK,MAAM,KAAK,UAAU;EAC1B,OAAO;CACT;CAEA,kBAAkB,KAAkB;EAClC,MAAM,EAAE,WAAW,cAAc,WAAW,KAAK,wBAAwB;EAEzE,MAAMC,iBAAeC,aACnB,WACA,cACA,KACA,MACF;EACA,KAAK,MAAM,KAAKD,cAAY;EAC5B,OAAO;CACT;CAEA,gBAAgB,QAAqB;EACnC,MAAM,MAAM,KAAK;EACjB,IAAI,aAAa;EACjB,IAAI,YAAY,KAAK,OAAO,MAAM,IAAI,QAAQ,MAAM;EACpD,OAAO,KAAK,aAAa;CAC3B;CAEA,iBACE,cACA,SACA,UACK;EACL,MAAME,gBAAcC,YAAsB,cAAc,SAAS,QAAQ;EACzE,KAAK,MAAM,KAAKD,aAAW;EAC3B,OAAO;CACT;CAEA,iBAAsB;EACpB,MAAM,cAAc,KAAK;EACzB,YAAY,aAAa;EACzB,OAAO,KAAK,aAAa;CAC3B;CAEA,kBAAkB,cAAsB,QAAqB;EAC3D,MAAME,iBAAeC,aAAuB,cAAc,MAAM;EAChE,KAAK,MAAM,KAAKD,cAAY;EAC5B,OAAO;CACT;CAEA,gBAAgB,QAAqB;EACnC,MAAM,eAAe,KAAK;EAC1B,aAAa,aAAa;EAC1B,aAAa,YAAY,KAAK,OAAO,MAAM,aAAa,QAAQ,MAAM;EACtE,OAAO,KAAK,aAAa;CAC3B;CAEA,eAAe,MAAmB;EAChC,KAAK,MAAM,KAAKE,UAAoB,IAAI,CAAC;EACzC,OAAO,KAAK,aAAa;CAC3B;CAEA,aAAkB;EAChB,KAAK,MAAM,KAAKC,MAAgB,CAAC;EACjC,OAAO,KAAK,aAAa;CAC3B;CAEA,WAAgB;EACd,MAAM,QAAQ,KAAK;EACnB,MAAM,aAAa;EACnB,OAAO,KAAK,aAAa;CAC3B;AACF"}
|
|
@@ -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});\
|
|
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
|
|
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"}
|