renovate 43.45.2 → 43.46.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/dist/modules/datasource/docker/dockerhub-cache.js +1 -1
  2. package/dist/modules/datasource/docker/dockerhub-cache.js.map +1 -1
  3. package/dist/modules/datasource/go/releases-goproxy.js +1 -1
  4. package/dist/modules/datasource/go/releases-goproxy.js.map +1 -1
  5. package/dist/modules/datasource/nuget/common.js +1 -1
  6. package/dist/modules/datasource/nuget/common.js.map +1 -1
  7. package/dist/modules/manager/fingerprint.generated.js +1 -1
  8. package/dist/modules/manager/fingerprint.generated.js.map +1 -1
  9. package/dist/modules/manager/npm/extract/yarn.js +1 -1
  10. package/dist/modules/manager/npm/extract/yarn.js.map +1 -1
  11. package/dist/modules/manager/swift/artifacts.js +133 -0
  12. package/dist/modules/manager/swift/artifacts.js.map +1 -0
  13. package/dist/modules/manager/swift/index.js +2 -0
  14. package/dist/modules/manager/swift/index.js.map +1 -1
  15. package/dist/modules/manager/swift/schema.js +23 -0
  16. package/dist/modules/manager/swift/schema.js.map +1 -0
  17. package/dist/modules/platform/bitbucket-server/utils.js +1 -1
  18. package/dist/modules/platform/bitbucket-server/utils.js.map +1 -1
  19. package/dist/modules/platform/codecommit/index.js +2 -2
  20. package/dist/modules/platform/codecommit/index.js.map +1 -1
  21. package/dist/modules/platform/gerrit/utils.js +1 -1
  22. package/dist/modules/platform/gerrit/utils.js.map +1 -1
  23. package/dist/modules/platform/scm-manager/mapper.js +1 -1
  24. package/dist/modules/platform/scm-manager/mapper.js.map +1 -1
  25. package/dist/modules/versioning/azure-rest-api/index.js +1 -1
  26. package/dist/modules/versioning/azure-rest-api/index.js.map +1 -1
  27. package/dist/modules/versioning/bazel-module/bzlmod-version.js +1 -1
  28. package/dist/modules/versioning/bazel-module/bzlmod-version.js.map +1 -1
  29. package/dist/modules/versioning/conan/common.js +1 -1
  30. package/dist/modules/versioning/conan/common.js.map +1 -1
  31. package/dist/modules/versioning/deb/index.js +2 -2
  32. package/dist/modules/versioning/deb/index.js.map +1 -1
  33. package/dist/modules/versioning/glasskube/index.js +1 -1
  34. package/dist/modules/versioning/glasskube/index.js.map +1 -1
  35. package/dist/modules/versioning/gradle/compare.js +1 -1
  36. package/dist/modules/versioning/gradle/compare.js.map +1 -1
  37. package/dist/modules/versioning/hermit/index.js +10 -10
  38. package/dist/modules/versioning/hermit/index.js.map +1 -1
  39. package/dist/modules/versioning/maven/compare.js +1 -1
  40. package/dist/modules/versioning/maven/compare.js.map +1 -1
  41. package/dist/modules/versioning/nixpkgs/index.js +2 -2
  42. package/dist/modules/versioning/nixpkgs/index.js.map +1 -1
  43. package/dist/modules/versioning/nuget/parser.js +9 -9
  44. package/dist/modules/versioning/nuget/parser.js.map +1 -1
  45. package/dist/modules/versioning/nuget/version.js +1 -1
  46. package/dist/modules/versioning/nuget/version.js.map +1 -1
  47. package/dist/modules/versioning/pep440/range.js +1 -1
  48. package/dist/modules/versioning/pep440/range.js.map +1 -1
  49. package/dist/modules/versioning/perl/index.js +2 -2
  50. package/dist/modules/versioning/perl/index.js.map +1 -1
  51. package/dist/modules/versioning/poetry/transform.js +1 -1
  52. package/dist/modules/versioning/poetry/transform.js.map +1 -1
  53. package/dist/modules/versioning/pvp/util.js +1 -1
  54. package/dist/modules/versioning/pvp/util.js.map +1 -1
  55. package/dist/modules/versioning/redhat/index.js +5 -5
  56. package/dist/modules/versioning/redhat/index.js.map +1 -1
  57. package/dist/modules/versioning/regex/index.js +5 -5
  58. package/dist/modules/versioning/regex/index.js.map +1 -1
  59. package/dist/modules/versioning/rpm/index.js +2 -2
  60. package/dist/modules/versioning/rpm/index.js.map +1 -1
  61. package/dist/modules/versioning/ruby/version.js +1 -1
  62. package/dist/modules/versioning/ruby/version.js.map +1 -1
  63. package/dist/modules/versioning/rust-release-channel/parse.js +7 -7
  64. package/dist/modules/versioning/rust-release-channel/parse.js.map +1 -1
  65. package/dist/modules/versioning/ubuntu/common.js +1 -1
  66. package/dist/modules/versioning/ubuntu/common.js.map +1 -1
  67. package/dist/modules/versioning/ubuntu/index.js +3 -3
  68. package/dist/modules/versioning/ubuntu/index.js.map +1 -1
  69. package/dist/modules/versioning/unity3d/index.js +4 -4
  70. package/dist/modules/versioning/unity3d/index.js.map +1 -1
  71. package/dist/modules/versioning/unity3d-packages/index.js +3 -3
  72. package/dist/modules/versioning/unity3d-packages/index.js.map +1 -1
  73. package/dist/util/git/auth.js +1 -1
  74. package/dist/util/git/auth.js.map +1 -1
  75. package/dist/util/http/forgejo.js +2 -2
  76. package/dist/util/http/forgejo.js.map +1 -1
  77. package/dist/util/http/gitea.js +2 -2
  78. package/dist/util/http/gitea.js.map +1 -1
  79. package/dist/util/http/github.js +1 -1
  80. package/dist/util/http/github.js.map +1 -1
  81. package/dist/util/http/retry-after.js +1 -1
  82. package/dist/util/http/retry-after.js.map +1 -1
  83. package/dist/util/number.js +1 -1
  84. package/dist/util/number.js.map +1 -1
  85. package/dist/workers/global/config/parse/index.js +15 -0
  86. package/dist/workers/global/config/parse/index.js.map +1 -1
  87. package/dist/workers/repository/update/branch/bump-versions.js +2 -2
  88. package/dist/workers/repository/update/branch/bump-versions.js.map +1 -1
  89. package/package.json +9 -9
  90. package/renovate-schema.json +2 -2
@@ -46,7 +46,7 @@ var DockerHubCache = class DockerHubCache {
46
46
  this.cache.updatedAt = updatedAt;
47
47
  if (earliestDate && latestDate) {
48
48
  for (const [key, item] of Object.entries(this.cache.items)) {
49
- const id = parseInt(key);
49
+ const id = parseInt(key, 10);
50
50
  const itemDate = DateTime.fromISO(item.last_updated);
51
51
  if (itemDate < earliestDate || itemDate > latestDate || this.reconciledIds.has(id)) continue;
52
52
  delete this.cache.items[id];
@@ -1 +1 @@
1
- {"version":3,"file":"dockerhub-cache.js","names":["packageCache.get","packageCache.set"],"sources":["../../../../lib/modules/datasource/docker/dockerhub-cache.ts"],"sourcesContent":["import { dequal } from 'dequal';\nimport { DateTime } from 'luxon';\nimport * as packageCache from '../../../util/cache/package/index.ts';\nimport type { DockerHubTag } from './schema.ts';\n\nexport interface DockerHubCacheData {\n items: Record<number, DockerHubTag>;\n updatedAt: string | null;\n}\n\nconst cacheNamespace = 'datasource-docker-hub-cache';\n\nexport class DockerHubCache {\n private isChanged = false;\n private reconciledIds = new Set<number>();\n private dockerRepository: string;\n private cache: DockerHubCacheData;\n\n private constructor(dockerRepository: string, cache: DockerHubCacheData) {\n this.dockerRepository = dockerRepository;\n this.cache = cache;\n }\n\n static async init(dockerRepository: string): Promise<DockerHubCache> {\n let repoCache = await packageCache.get<DockerHubCacheData>(\n cacheNamespace,\n dockerRepository,\n );\n\n repoCache ??= {\n items: {},\n updatedAt: null,\n };\n\n return new DockerHubCache(dockerRepository, repoCache);\n }\n\n reconcile(items: DockerHubTag[], expectedCount: number): boolean {\n let needNextPage = true;\n\n let earliestDate = null;\n\n let { updatedAt } = this.cache;\n let latestDate = updatedAt ? DateTime.fromISO(updatedAt) : null;\n\n for (const newItem of items) {\n const id = newItem.id;\n this.reconciledIds.add(id);\n\n const oldItem = this.cache.items[id];\n\n const itemDate = DateTime.fromISO(newItem.last_updated);\n\n if (!earliestDate || earliestDate > itemDate) {\n earliestDate = itemDate;\n }\n\n if (!latestDate || latestDate < itemDate) {\n latestDate = itemDate;\n updatedAt = newItem.last_updated;\n }\n\n if (dequal(oldItem, newItem)) {\n needNextPage = false;\n continue;\n }\n\n this.cache.items[newItem.id] = newItem;\n this.isChanged = true;\n }\n\n this.cache.updatedAt = updatedAt;\n\n if (earliestDate && latestDate) {\n for (const [key, item] of Object.entries(this.cache.items)) {\n const id = parseInt(key);\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"],"mappings":";;;;;AAUA,MAAM,iBAAiB;AAEvB,IAAa,iBAAb,MAAa,eAAe;CAC1B,AAAQ,YAAY;CACpB,AAAQ,gCAAgB,IAAI,KAAa;CACzC,AAAQ;CACR,AAAQ;CAER,AAAQ,YAAY,kBAA0B,OAA2B;AACvE,OAAK,mBAAmB;AACxB,OAAK,QAAQ;;CAGf,aAAa,KAAK,kBAAmD;EACnE,IAAI,YAAY,MAAMA,IACpB,gBACA,iBACD;AAED,gBAAc;GACZ,OAAO,EAAE;GACT,WAAW;GACZ;AAED,SAAO,IAAI,eAAe,kBAAkB,UAAU;;CAGxD,UAAU,OAAuB,eAAgC;EAC/D,IAAI,eAAe;EAEnB,IAAI,eAAe;EAEnB,IAAI,EAAE,cAAc,KAAK;EACzB,IAAI,aAAa,YAAY,SAAS,QAAQ,UAAU,GAAG;AAE3D,OAAK,MAAM,WAAW,OAAO;GAC3B,MAAM,KAAK,QAAQ;AACnB,QAAK,cAAc,IAAI,GAAG;GAE1B,MAAM,UAAU,KAAK,MAAM,MAAM;GAEjC,MAAM,WAAW,SAAS,QAAQ,QAAQ,aAAa;AAEvD,OAAI,CAAC,gBAAgB,eAAe,SAClC,gBAAe;AAGjB,OAAI,CAAC,cAAc,aAAa,UAAU;AACxC,iBAAa;AACb,gBAAY,QAAQ;;AAGtB,OAAI,OAAO,SAAS,QAAQ,EAAE;AAC5B,mBAAe;AACf;;AAGF,QAAK,MAAM,MAAM,QAAQ,MAAM;AAC/B,QAAK,YAAY;;AAGnB,OAAK,MAAM,YAAY;AAEvB,MAAI,gBAAgB,YAAY;AAC9B,QAAK,MAAM,CAAC,KAAK,SAAS,OAAO,QAAQ,KAAK,MAAM,MAAM,EAAE;IAC1D,MAAM,KAAK,SAAS,IAAI;IAExB,MAAM,WAAW,SAAS,QAAQ,KAAK,aAAa;AAEpD,QACE,WAAW,gBACX,WAAW,cACX,KAAK,cAAc,IAAI,GAAG,CAE1B;AAGF,WAAO,KAAK,MAAM,MAAM;AACxB,SAAK,YAAY;;AAGnB,OAAI,OAAO,KAAK,KAAK,MAAM,MAAM,CAAC,SAAS,cACzC,QAAO;;AAIX,SAAO;;CAGT,MAAM,OAAsB;AAC1B,MAAI,KAAK,UACP,OAAMC,IACJ,gBACA,KAAK,kBACL,KAAK,OACL,OAAc,GACf;;CAIL,WAA2B;AACzB,SAAO,OAAO,OAAO,KAAK,MAAM,MAAM"}
1
+ {"version":3,"file":"dockerhub-cache.js","names":["packageCache.get","packageCache.set"],"sources":["../../../../lib/modules/datasource/docker/dockerhub-cache.ts"],"sourcesContent":["import { dequal } from 'dequal';\nimport { DateTime } from 'luxon';\nimport * as packageCache from '../../../util/cache/package/index.ts';\nimport type { DockerHubTag } from './schema.ts';\n\nexport interface DockerHubCacheData {\n items: Record<number, DockerHubTag>;\n updatedAt: string | null;\n}\n\nconst cacheNamespace = 'datasource-docker-hub-cache';\n\nexport class DockerHubCache {\n private isChanged = false;\n private reconciledIds = new Set<number>();\n private dockerRepository: string;\n private cache: DockerHubCacheData;\n\n private constructor(dockerRepository: string, cache: DockerHubCacheData) {\n this.dockerRepository = dockerRepository;\n this.cache = cache;\n }\n\n static async init(dockerRepository: string): Promise<DockerHubCache> {\n let repoCache = await packageCache.get<DockerHubCacheData>(\n cacheNamespace,\n dockerRepository,\n );\n\n repoCache ??= {\n items: {},\n updatedAt: null,\n };\n\n return new DockerHubCache(dockerRepository, repoCache);\n }\n\n reconcile(items: DockerHubTag[], expectedCount: number): boolean {\n let needNextPage = true;\n\n let earliestDate = null;\n\n let { updatedAt } = this.cache;\n let latestDate = updatedAt ? DateTime.fromISO(updatedAt) : null;\n\n for (const newItem of items) {\n const id = newItem.id;\n this.reconciledIds.add(id);\n\n const oldItem = this.cache.items[id];\n\n const itemDate = DateTime.fromISO(newItem.last_updated);\n\n if (!earliestDate || earliestDate > itemDate) {\n earliestDate = itemDate;\n }\n\n if (!latestDate || latestDate < itemDate) {\n latestDate = itemDate;\n updatedAt = newItem.last_updated;\n }\n\n if (dequal(oldItem, newItem)) {\n needNextPage = false;\n continue;\n }\n\n this.cache.items[newItem.id] = newItem;\n this.isChanged = true;\n }\n\n this.cache.updatedAt = updatedAt;\n\n if (earliestDate && latestDate) {\n for (const [key, item] of Object.entries(this.cache.items)) {\n const id = parseInt(key, 10);\n\n const itemDate = DateTime.fromISO(item.last_updated);\n\n if (\n itemDate < earliestDate ||\n itemDate > latestDate ||\n this.reconciledIds.has(id)\n ) {\n continue;\n }\n\n delete this.cache.items[id];\n this.isChanged = true;\n }\n\n if (Object.keys(this.cache.items).length > expectedCount) {\n return true;\n }\n }\n\n return needNextPage;\n }\n\n async save(): Promise<void> {\n if (this.isChanged) {\n await packageCache.set(\n cacheNamespace,\n this.dockerRepository,\n this.cache,\n 3 * 60 * 24 * 30,\n );\n }\n }\n\n getItems(): DockerHubTag[] {\n return Object.values(this.cache.items);\n }\n}\n"],"mappings":";;;;;AAUA,MAAM,iBAAiB;AAEvB,IAAa,iBAAb,MAAa,eAAe;CAC1B,AAAQ,YAAY;CACpB,AAAQ,gCAAgB,IAAI,KAAa;CACzC,AAAQ;CACR,AAAQ;CAER,AAAQ,YAAY,kBAA0B,OAA2B;AACvE,OAAK,mBAAmB;AACxB,OAAK,QAAQ;;CAGf,aAAa,KAAK,kBAAmD;EACnE,IAAI,YAAY,MAAMA,IACpB,gBACA,iBACD;AAED,gBAAc;GACZ,OAAO,EAAE;GACT,WAAW;GACZ;AAED,SAAO,IAAI,eAAe,kBAAkB,UAAU;;CAGxD,UAAU,OAAuB,eAAgC;EAC/D,IAAI,eAAe;EAEnB,IAAI,eAAe;EAEnB,IAAI,EAAE,cAAc,KAAK;EACzB,IAAI,aAAa,YAAY,SAAS,QAAQ,UAAU,GAAG;AAE3D,OAAK,MAAM,WAAW,OAAO;GAC3B,MAAM,KAAK,QAAQ;AACnB,QAAK,cAAc,IAAI,GAAG;GAE1B,MAAM,UAAU,KAAK,MAAM,MAAM;GAEjC,MAAM,WAAW,SAAS,QAAQ,QAAQ,aAAa;AAEvD,OAAI,CAAC,gBAAgB,eAAe,SAClC,gBAAe;AAGjB,OAAI,CAAC,cAAc,aAAa,UAAU;AACxC,iBAAa;AACb,gBAAY,QAAQ;;AAGtB,OAAI,OAAO,SAAS,QAAQ,EAAE;AAC5B,mBAAe;AACf;;AAGF,QAAK,MAAM,MAAM,QAAQ,MAAM;AAC/B,QAAK,YAAY;;AAGnB,OAAK,MAAM,YAAY;AAEvB,MAAI,gBAAgB,YAAY;AAC9B,QAAK,MAAM,CAAC,KAAK,SAAS,OAAO,QAAQ,KAAK,MAAM,MAAM,EAAE;IAC1D,MAAM,KAAK,SAAS,KAAK,GAAG;IAE5B,MAAM,WAAW,SAAS,QAAQ,KAAK,aAAa;AAEpD,QACE,WAAW,gBACX,WAAW,cACX,KAAK,cAAc,IAAI,GAAG,CAE1B;AAGF,WAAO,KAAK,MAAM,MAAM;AACxB,SAAK,YAAY;;AAGnB,OAAI,OAAO,KAAK,KAAK,MAAM,MAAM,CAAC,SAAS,cACzC,QAAO;;AAIX,SAAO;;CAGT,MAAM,OAAsB;AAC1B,MAAI,KAAK,UACP,OAAMC,IACJ,gBACA,KAAK,kBACL,KAAK,OACL,OAAc,GACf;;CAIL,WAA2B;AACzB,SAAO,OAAO,OAAO,KAAK,MAAM,MAAM"}
@@ -127,7 +127,7 @@ var GoProxyDatasource = class GoProxyDatasource extends Datasource {
127
127
  const majorSuffixSeparator = isGopkgin ? "." : "/";
128
128
  const modParts = packageName.match(modRegex)?.groups;
129
129
  const baseMod = modParts?.baseMod ?? packageName;
130
- const packageMajor = parseInt(modParts?.majorVersion ?? "0");
130
+ const packageMajor = parseInt(modParts?.majorVersion ?? "0", 10);
131
131
  const result = { releases: [] };
132
132
  for (let major = packageMajor;; major += 1) {
133
133
  let pkg = `${baseMod}${majorSuffixSeparator}v${major}`;
@@ -1 +1 @@
1
- {"version":3,"file":"releases-goproxy.js","names":["p.map","HttpError","goVersioning"],"sources":["../../../../lib/modules/datasource/go/releases-goproxy.ts"],"sourcesContent":["import { isNonEmptyStringAndNotWhitespace, isTruthy } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { ExternalHostError } from '../../../types/errors/external-host-error.ts';\nimport { withCache } from '../../../util/cache/package/with-cache.ts';\nimport { getEnv } from '../../../util/env.ts';\nimport { filterMap } from '../../../util/filter-map.ts';\nimport { HttpError } from '../../../util/http/index.ts';\nimport * as p from '../../../util/promises.ts';\nimport { newlineRegex, regEx } from '../../../util/regex.ts';\nimport { asTimestamp } from '../../../util/timestamp.ts';\nimport { joinUrlParts } from '../../../util/url.ts';\nimport goVersioning from '../../versioning/go-mod-directive/index.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types.ts';\nimport { BaseGoDatasource } from './base.ts';\nimport { getSourceUrl } from './common.ts';\nimport { parseGoproxy, parseNoproxy } from './goproxy-parser.ts';\nimport { GoDirectDatasource } from './releases-direct.ts';\nimport type { VersionInfo } from './types.ts';\n\nconst modRegex = regEx(/^(?<baseMod>.*?)(?:[./]v(?<majorVersion>\\d+))?$/);\n\n/**\n * @see https://go.dev/ref/mod#pseudo-versions\n */\nconst pseudoVersionRegex = regEx(\n /v\\d+\\.\\d+\\.\\d+-(?:\\w+\\.)?(?:0\\.)?(?<timestamp>\\d{14})-(?<digest>[a-f0-9]{12})/i,\n);\n\nexport function pseudoVersionToRelease(pseudoVersion: string): Release | null {\n const match = pseudoVersion.match(pseudoVersionRegex)?.groups;\n if (!match) {\n return null;\n }\n\n const { digest: newDigest, timestamp } = match;\n const releaseTimestamp = asTimestamp(timestamp);\n\n return {\n version: pseudoVersion,\n newDigest,\n releaseTimestamp,\n };\n}\n\nexport class GoProxyDatasource extends Datasource {\n static readonly id = 'go-proxy';\n\n constructor() {\n super(GoProxyDatasource.id);\n }\n\n readonly direct = new GoDirectDatasource();\n\n private async _getReleases(\n config: GetReleasesConfig,\n ): Promise<ReleaseResult | null> {\n const { packageName } = config;\n logger.trace(`goproxy.getReleases(${packageName})`);\n const goproxy = getEnv().GOPROXY ?? 'https://proxy.golang.org,direct';\n if (goproxy === 'direct') {\n return this.direct.getReleases(config);\n }\n const proxyList = parseGoproxy(goproxy);\n const noproxy = parseNoproxy();\n\n let result: ReleaseResult | null = null;\n\n if (noproxy?.test(packageName)) {\n logger.debug(`Fetching ${packageName} via GONOPROXY match`);\n result = await this.direct.getReleases(config);\n return result;\n }\n\n for (const { url, fallback } of proxyList) {\n try {\n if (url === 'off') {\n break;\n } else if (url === 'direct') {\n result = await this.direct.getReleases(config);\n break;\n }\n\n const res = await this.getVersionsWithInfo(url, packageName);\n if (res.releases.length) {\n result = res;\n break;\n }\n } catch (err) {\n const potentialHttpError =\n err instanceof ExternalHostError ? err.err : err;\n const statusCode = potentialHttpError?.response?.statusCode;\n const canFallback =\n fallback === '|' ? true : statusCode === 404 || statusCode === 410;\n const msg = canFallback\n ? 'Goproxy error: trying next URL provided with GOPROXY'\n : 'Goproxy error: skipping other URLs provided with GOPROXY';\n logger.debug({ err }, msg);\n if (!canFallback) {\n break;\n }\n }\n }\n\n if (result && !result.sourceUrl) {\n try {\n const datasource = await BaseGoDatasource.getDatasource(packageName);\n const sourceUrl = getSourceUrl(datasource);\n if (sourceUrl) {\n result.sourceUrl = sourceUrl;\n }\n } catch (err) {\n logger.trace({ err }, `Can't get datasource for ${packageName}`);\n }\n }\n\n return result;\n }\n\n getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n return withCache(\n {\n namespace: `datasource-${GoProxyDatasource.id}`,\n key: GoProxyDatasource.getCacheKey(config),\n fallback: true,\n },\n () => this._getReleases(config),\n );\n }\n\n /**\n * Avoid ambiguity when serving from case-insensitive file systems.\n *\n * @see https://golang.org/ref/mod#goproxy-protocol\n */\n encodeCase(input: string): string {\n return input.replace(regEx(/([A-Z])/g), (x) => `!${x.toLowerCase()}`);\n }\n\n async listVersions(baseUrl: string, packageName: string): Promise<Release[]> {\n const url = joinUrlParts(\n baseUrl,\n this.encodeCase(packageName),\n '@v',\n 'list',\n );\n const { body } = await this.http.getText(url);\n return filterMap(body.split(newlineRegex), (str) => {\n if (!isNonEmptyStringAndNotWhitespace(str)) {\n return null;\n }\n\n const [version, timestamp] = str.trim().split(regEx(/\\s+/));\n const release: Release = pseudoVersionToRelease(version) ?? { version };\n\n const releaseTimestamp = asTimestamp(timestamp);\n if (releaseTimestamp) {\n release.releaseTimestamp = releaseTimestamp;\n }\n\n return release;\n });\n }\n\n async versionInfo(\n baseUrl: string,\n packageName: string,\n version: string,\n ): Promise<Release> {\n const url = joinUrlParts(\n baseUrl,\n this.encodeCase(packageName),\n '@v',\n `${version}.info`,\n );\n const res = await this.http.getJsonUnchecked<VersionInfo>(url);\n\n const result: Release = {\n version: res.body.Version,\n };\n\n const releaseTimestamp = asTimestamp(res.body.Time);\n if (releaseTimestamp) {\n result.releaseTimestamp = releaseTimestamp;\n }\n\n return result;\n }\n\n async getLatestVersion(\n baseUrl: string,\n packageName: string,\n ): Promise<string | null> {\n try {\n const url = joinUrlParts(\n baseUrl,\n this.encodeCase(packageName),\n '@latest',\n );\n const res = await this.http.getJsonUnchecked<VersionInfo>(url);\n return res.body.Version;\n } catch (err) {\n logger.trace({ err }, 'Failed to get latest version');\n return null;\n }\n }\n\n async getVersionsWithInfo(\n baseUrl: string,\n packageName: string,\n ): Promise<ReleaseResult> {\n const isGopkgin = packageName.startsWith('gopkg.in/');\n const majorSuffixSeparator = isGopkgin ? '.' : '/';\n const modParts = packageName.match(modRegex)?.groups;\n const baseMod = modParts?.baseMod ?? /* v8 ignore next */ packageName;\n const packageMajor = parseInt(modParts?.majorVersion ?? '0');\n\n const result: ReleaseResult = { releases: [] };\n for (let major = packageMajor; ; major += 1) {\n let pkg = `${baseMod}${majorSuffixSeparator}v${major}`;\n if (!isGopkgin && major < 2) {\n pkg = baseMod;\n major += 1; // v0 and v1 are the same module\n }\n\n let releases: Release[] = [];\n\n try {\n const res = await this.listVersions(baseUrl, pkg);\n\n // Artifactory returns all versions in any major (past and future),\n // so starting from v2, we filter them in order to avoid the infinite loop\n const filteredReleases = res.filter(({ version }) => {\n if (major < 2) {\n return true;\n }\n\n return (\n version.split(regEx(/[^\\d]+/)).find(isTruthy) === major.toString()\n );\n });\n\n releases = await p.map(filteredReleases, async (versionInfo) => {\n const { version, newDigest, releaseTimestamp } = versionInfo;\n\n if (releaseTimestamp) {\n return { version, newDigest, releaseTimestamp };\n }\n\n try {\n return await this.versionInfo(baseUrl, pkg, version);\n } catch (err) {\n logger.trace({ err }, `Can't obtain data from ${baseUrl}`);\n return { version };\n }\n });\n result.releases.push(...releases);\n } catch (err) {\n const potentialHttpError =\n err instanceof ExternalHostError ? err.err : err;\n const status = potentialHttpError.response?.statusCode;\n if (\n potentialHttpError instanceof HttpError &&\n (status === 404 || status === 403) &&\n major !== packageMajor\n ) {\n break;\n }\n\n throw err;\n }\n\n const latestVersion = await this.getLatestVersion(baseUrl, pkg);\n if (latestVersion) {\n result.tags ??= {};\n result.tags.latest ??= latestVersion;\n if (goVersioning.isGreaterThan(latestVersion, result.tags.latest)) {\n result.tags.latest = latestVersion;\n }\n if (!result.releases.length) {\n const releaseFromLatest = pseudoVersionToRelease(latestVersion);\n if (releaseFromLatest) {\n result.releases.push(releaseFromLatest);\n }\n }\n }\n\n if (!releases.length) {\n break;\n }\n }\n\n return result;\n }\n\n static getCacheKey({ packageName }: GetReleasesConfig): string {\n const goproxy = getEnv().GOPROXY;\n const noproxy = parseNoproxy();\n // TODO: types (#22198)\n return `${packageName}@@${goproxy}@@${noproxy?.toString()}`;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"releases-goproxy.js","names":["p.map","HttpError","goVersioning"],"sources":["../../../../lib/modules/datasource/go/releases-goproxy.ts"],"sourcesContent":["import { isNonEmptyStringAndNotWhitespace, isTruthy } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { ExternalHostError } from '../../../types/errors/external-host-error.ts';\nimport { withCache } from '../../../util/cache/package/with-cache.ts';\nimport { getEnv } from '../../../util/env.ts';\nimport { filterMap } from '../../../util/filter-map.ts';\nimport { HttpError } from '../../../util/http/index.ts';\nimport * as p from '../../../util/promises.ts';\nimport { newlineRegex, regEx } from '../../../util/regex.ts';\nimport { asTimestamp } from '../../../util/timestamp.ts';\nimport { joinUrlParts } from '../../../util/url.ts';\nimport goVersioning from '../../versioning/go-mod-directive/index.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types.ts';\nimport { BaseGoDatasource } from './base.ts';\nimport { getSourceUrl } from './common.ts';\nimport { parseGoproxy, parseNoproxy } from './goproxy-parser.ts';\nimport { GoDirectDatasource } from './releases-direct.ts';\nimport type { VersionInfo } from './types.ts';\n\nconst modRegex = regEx(/^(?<baseMod>.*?)(?:[./]v(?<majorVersion>\\d+))?$/);\n\n/**\n * @see https://go.dev/ref/mod#pseudo-versions\n */\nconst pseudoVersionRegex = regEx(\n /v\\d+\\.\\d+\\.\\d+-(?:\\w+\\.)?(?:0\\.)?(?<timestamp>\\d{14})-(?<digest>[a-f0-9]{12})/i,\n);\n\nexport function pseudoVersionToRelease(pseudoVersion: string): Release | null {\n const match = pseudoVersion.match(pseudoVersionRegex)?.groups;\n if (!match) {\n return null;\n }\n\n const { digest: newDigest, timestamp } = match;\n const releaseTimestamp = asTimestamp(timestamp);\n\n return {\n version: pseudoVersion,\n newDigest,\n releaseTimestamp,\n };\n}\n\nexport class GoProxyDatasource extends Datasource {\n static readonly id = 'go-proxy';\n\n constructor() {\n super(GoProxyDatasource.id);\n }\n\n readonly direct = new GoDirectDatasource();\n\n private async _getReleases(\n config: GetReleasesConfig,\n ): Promise<ReleaseResult | null> {\n const { packageName } = config;\n logger.trace(`goproxy.getReleases(${packageName})`);\n const goproxy = getEnv().GOPROXY ?? 'https://proxy.golang.org,direct';\n if (goproxy === 'direct') {\n return this.direct.getReleases(config);\n }\n const proxyList = parseGoproxy(goproxy);\n const noproxy = parseNoproxy();\n\n let result: ReleaseResult | null = null;\n\n if (noproxy?.test(packageName)) {\n logger.debug(`Fetching ${packageName} via GONOPROXY match`);\n result = await this.direct.getReleases(config);\n return result;\n }\n\n for (const { url, fallback } of proxyList) {\n try {\n if (url === 'off') {\n break;\n } else if (url === 'direct') {\n result = await this.direct.getReleases(config);\n break;\n }\n\n const res = await this.getVersionsWithInfo(url, packageName);\n if (res.releases.length) {\n result = res;\n break;\n }\n } catch (err) {\n const potentialHttpError =\n err instanceof ExternalHostError ? err.err : err;\n const statusCode = potentialHttpError?.response?.statusCode;\n const canFallback =\n fallback === '|' ? true : statusCode === 404 || statusCode === 410;\n const msg = canFallback\n ? 'Goproxy error: trying next URL provided with GOPROXY'\n : 'Goproxy error: skipping other URLs provided with GOPROXY';\n logger.debug({ err }, msg);\n if (!canFallback) {\n break;\n }\n }\n }\n\n if (result && !result.sourceUrl) {\n try {\n const datasource = await BaseGoDatasource.getDatasource(packageName);\n const sourceUrl = getSourceUrl(datasource);\n if (sourceUrl) {\n result.sourceUrl = sourceUrl;\n }\n } catch (err) {\n logger.trace({ err }, `Can't get datasource for ${packageName}`);\n }\n }\n\n return result;\n }\n\n getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n return withCache(\n {\n namespace: `datasource-${GoProxyDatasource.id}`,\n key: GoProxyDatasource.getCacheKey(config),\n fallback: true,\n },\n () => this._getReleases(config),\n );\n }\n\n /**\n * Avoid ambiguity when serving from case-insensitive file systems.\n *\n * @see https://golang.org/ref/mod#goproxy-protocol\n */\n encodeCase(input: string): string {\n return input.replace(regEx(/([A-Z])/g), (x) => `!${x.toLowerCase()}`);\n }\n\n async listVersions(baseUrl: string, packageName: string): Promise<Release[]> {\n const url = joinUrlParts(\n baseUrl,\n this.encodeCase(packageName),\n '@v',\n 'list',\n );\n const { body } = await this.http.getText(url);\n return filterMap(body.split(newlineRegex), (str) => {\n if (!isNonEmptyStringAndNotWhitespace(str)) {\n return null;\n }\n\n const [version, timestamp] = str.trim().split(regEx(/\\s+/));\n const release: Release = pseudoVersionToRelease(version) ?? { version };\n\n const releaseTimestamp = asTimestamp(timestamp);\n if (releaseTimestamp) {\n release.releaseTimestamp = releaseTimestamp;\n }\n\n return release;\n });\n }\n\n async versionInfo(\n baseUrl: string,\n packageName: string,\n version: string,\n ): Promise<Release> {\n const url = joinUrlParts(\n baseUrl,\n this.encodeCase(packageName),\n '@v',\n `${version}.info`,\n );\n const res = await this.http.getJsonUnchecked<VersionInfo>(url);\n\n const result: Release = {\n version: res.body.Version,\n };\n\n const releaseTimestamp = asTimestamp(res.body.Time);\n if (releaseTimestamp) {\n result.releaseTimestamp = releaseTimestamp;\n }\n\n return result;\n }\n\n async getLatestVersion(\n baseUrl: string,\n packageName: string,\n ): Promise<string | null> {\n try {\n const url = joinUrlParts(\n baseUrl,\n this.encodeCase(packageName),\n '@latest',\n );\n const res = await this.http.getJsonUnchecked<VersionInfo>(url);\n return res.body.Version;\n } catch (err) {\n logger.trace({ err }, 'Failed to get latest version');\n return null;\n }\n }\n\n async getVersionsWithInfo(\n baseUrl: string,\n packageName: string,\n ): Promise<ReleaseResult> {\n const isGopkgin = packageName.startsWith('gopkg.in/');\n const majorSuffixSeparator = isGopkgin ? '.' : '/';\n const modParts = packageName.match(modRegex)?.groups;\n const baseMod = modParts?.baseMod ?? /* v8 ignore next */ packageName;\n const packageMajor = parseInt(modParts?.majorVersion ?? '0', 10);\n\n const result: ReleaseResult = { releases: [] };\n for (let major = packageMajor; ; major += 1) {\n let pkg = `${baseMod}${majorSuffixSeparator}v${major}`;\n if (!isGopkgin && major < 2) {\n pkg = baseMod;\n major += 1; // v0 and v1 are the same module\n }\n\n let releases: Release[] = [];\n\n try {\n const res = await this.listVersions(baseUrl, pkg);\n\n // Artifactory returns all versions in any major (past and future),\n // so starting from v2, we filter them in order to avoid the infinite loop\n const filteredReleases = res.filter(({ version }) => {\n if (major < 2) {\n return true;\n }\n\n return (\n version.split(regEx(/[^\\d]+/)).find(isTruthy) === major.toString()\n );\n });\n\n releases = await p.map(filteredReleases, async (versionInfo) => {\n const { version, newDigest, releaseTimestamp } = versionInfo;\n\n if (releaseTimestamp) {\n return { version, newDigest, releaseTimestamp };\n }\n\n try {\n return await this.versionInfo(baseUrl, pkg, version);\n } catch (err) {\n logger.trace({ err }, `Can't obtain data from ${baseUrl}`);\n return { version };\n }\n });\n result.releases.push(...releases);\n } catch (err) {\n const potentialHttpError =\n err instanceof ExternalHostError ? err.err : err;\n const status = potentialHttpError.response?.statusCode;\n if (\n potentialHttpError instanceof HttpError &&\n (status === 404 || status === 403) &&\n major !== packageMajor\n ) {\n break;\n }\n\n throw err;\n }\n\n const latestVersion = await this.getLatestVersion(baseUrl, pkg);\n if (latestVersion) {\n result.tags ??= {};\n result.tags.latest ??= latestVersion;\n if (goVersioning.isGreaterThan(latestVersion, result.tags.latest)) {\n result.tags.latest = latestVersion;\n }\n if (!result.releases.length) {\n const releaseFromLatest = pseudoVersionToRelease(latestVersion);\n if (releaseFromLatest) {\n result.releases.push(releaseFromLatest);\n }\n }\n }\n\n if (!releases.length) {\n break;\n }\n }\n\n return result;\n }\n\n static getCacheKey({ packageName }: GetReleasesConfig): string {\n const goproxy = getEnv().GOPROXY;\n const noproxy = parseNoproxy();\n // TODO: types (#22198)\n return `${packageName}@@${goproxy}@@${noproxy?.toString()}`;\n }\n}\n"],"mappings":"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"}
@@ -30,7 +30,7 @@ function parseRegistryUrl(registryUrl) {
30
30
  if (protocolVersionMatch) {
31
31
  const { protocol } = protocolVersionMatch;
32
32
  parsedUrl.hash = "";
33
- protocolVersion = Number.parseInt(protocol);
33
+ protocolVersion = Number.parseInt(protocol, 10);
34
34
  } else if (parsedUrl.pathname.endsWith(".json")) protocolVersion = 3;
35
35
  return {
36
36
  feedUrl: parsedUrl.href,
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","names":["versioning"],"sources":["../../../../lib/modules/datasource/nuget/common.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { parseUrl } from '../../../util/url.ts';\nimport { api as versioning } from '../../versioning/nuget/index.ts';\nimport type { ParsedRegistryUrl } from './types.ts';\n\nconst buildMetaRe = regEx(/\\+.+$/g);\n\nexport function removeBuildMeta(version: string): string {\n return version.replace(buildMetaRe, '');\n}\n\nconst urlWhitespaceRe = regEx(/\\s/g);\n\nexport function massageUrl(url: string | null | undefined): string | null {\n if (url === null || url === undefined) {\n return null;\n }\n\n let resultUrl = url;\n\n // During `dotnet pack` certain URLs are being URL decoded which may introduce whitespace\n // and causes Markdown link generation problems.\n resultUrl = resultUrl.replace(urlWhitespaceRe, '%20');\n\n return resultUrl;\n}\n\nconst protocolVersionRegExp = regEx(/#protocolVersion=(?<protocol>2|3)/);\n\nexport function parseRegistryUrl(registryUrl: string): ParsedRegistryUrl {\n const parsedUrl = parseUrl(registryUrl);\n if (!parsedUrl) {\n logger.debug(\n { urL: registryUrl },\n `nuget registry failure: can't parse ${registryUrl}`,\n );\n return { feedUrl: registryUrl, protocolVersion: null };\n }\n let protocolVersion = 2;\n const protocolVersionMatch = protocolVersionRegExp.exec(\n parsedUrl.hash,\n )?.groups;\n if (protocolVersionMatch) {\n const { protocol } = protocolVersionMatch;\n parsedUrl.hash = '';\n protocolVersion = Number.parseInt(protocol);\n } else if (parsedUrl.pathname.endsWith('.json')) {\n protocolVersion = 3;\n }\n\n const feedUrl = parsedUrl.href;\n return { feedUrl, protocolVersion };\n}\n\n/**\n * Compare two versions. Return:\n * - `1` if `a > b` or `b` is invalid\n * - `-1` if `a < b` or `a` is invalid\n * - `0` if `a == b` or both `a` and `b` are invalid\n */\nexport function sortNugetVersions(a: string, b: string): number {\n if (versioning.isValid(a)) {\n if (versioning.isValid(b)) {\n return versioning.sortVersions(a, b);\n } else {\n return 1;\n }\n } else if (versioning.isValid(b)) {\n return -1;\n } else {\n return 0;\n }\n}\n"],"mappings":";;;;;;AAMA,MAAM,cAAc,MAAM,SAAS;AAEnC,SAAgB,gBAAgB,SAAyB;AACvD,QAAO,QAAQ,QAAQ,aAAa,GAAG;;AAGzC,MAAM,kBAAkB,MAAM,MAAM;AAEpC,SAAgB,WAAW,KAA+C;AACxE,KAAI,QAAQ,QAAQ,QAAQ,OAC1B,QAAO;CAGT,IAAI,YAAY;AAIhB,aAAY,UAAU,QAAQ,iBAAiB,MAAM;AAErD,QAAO;;AAGT,MAAM,wBAAwB,MAAM,oCAAoC;AAExE,SAAgB,iBAAiB,aAAwC;CACvE,MAAM,YAAY,SAAS,YAAY;AACvC,KAAI,CAAC,WAAW;AACd,SAAO,MACL,EAAE,KAAK,aAAa,EACpB,uCAAuC,cACxC;AACD,SAAO;GAAE,SAAS;GAAa,iBAAiB;GAAM;;CAExD,IAAI,kBAAkB;CACtB,MAAM,uBAAuB,sBAAsB,KACjD,UAAU,KACX,EAAE;AACH,KAAI,sBAAsB;EACxB,MAAM,EAAE,aAAa;AACrB,YAAU,OAAO;AACjB,oBAAkB,OAAO,SAAS,SAAS;YAClC,UAAU,SAAS,SAAS,QAAQ,CAC7C,mBAAkB;AAIpB,QAAO;EAAE,SADO,UAAU;EACR;EAAiB;;;;;;;;AASrC,SAAgB,kBAAkB,GAAW,GAAmB;AAC9D,KAAIA,IAAW,QAAQ,EAAE,CACvB,KAAIA,IAAW,QAAQ,EAAE,CACvB,QAAOA,IAAW,aAAa,GAAG,EAAE;KAEpC,QAAO;UAEAA,IAAW,QAAQ,EAAE,CAC9B,QAAO;KAEP,QAAO"}
1
+ {"version":3,"file":"common.js","names":["versioning"],"sources":["../../../../lib/modules/datasource/nuget/common.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { parseUrl } from '../../../util/url.ts';\nimport { api as versioning } from '../../versioning/nuget/index.ts';\nimport type { ParsedRegistryUrl } from './types.ts';\n\nconst buildMetaRe = regEx(/\\+.+$/g);\n\nexport function removeBuildMeta(version: string): string {\n return version.replace(buildMetaRe, '');\n}\n\nconst urlWhitespaceRe = regEx(/\\s/g);\n\nexport function massageUrl(url: string | null | undefined): string | null {\n if (url === null || url === undefined) {\n return null;\n }\n\n let resultUrl = url;\n\n // During `dotnet pack` certain URLs are being URL decoded which may introduce whitespace\n // and causes Markdown link generation problems.\n resultUrl = resultUrl.replace(urlWhitespaceRe, '%20');\n\n return resultUrl;\n}\n\nconst protocolVersionRegExp = regEx(/#protocolVersion=(?<protocol>2|3)/);\n\nexport function parseRegistryUrl(registryUrl: string): ParsedRegistryUrl {\n const parsedUrl = parseUrl(registryUrl);\n if (!parsedUrl) {\n logger.debug(\n { urL: registryUrl },\n `nuget registry failure: can't parse ${registryUrl}`,\n );\n return { feedUrl: registryUrl, protocolVersion: null };\n }\n let protocolVersion = 2;\n const protocolVersionMatch = protocolVersionRegExp.exec(\n parsedUrl.hash,\n )?.groups;\n if (protocolVersionMatch) {\n const { protocol } = protocolVersionMatch;\n parsedUrl.hash = '';\n protocolVersion = Number.parseInt(protocol, 10);\n } else if (parsedUrl.pathname.endsWith('.json')) {\n protocolVersion = 3;\n }\n\n const feedUrl = parsedUrl.href;\n return { feedUrl, protocolVersion };\n}\n\n/**\n * Compare two versions. Return:\n * - `1` if `a > b` or `b` is invalid\n * - `-1` if `a < b` or `a` is invalid\n * - `0` if `a == b` or both `a` and `b` are invalid\n */\nexport function sortNugetVersions(a: string, b: string): number {\n if (versioning.isValid(a)) {\n if (versioning.isValid(b)) {\n return versioning.sortVersions(a, b);\n } else {\n return 1;\n }\n } else if (versioning.isValid(b)) {\n return -1;\n } else {\n return 0;\n }\n}\n"],"mappings":";;;;;;AAMA,MAAM,cAAc,MAAM,SAAS;AAEnC,SAAgB,gBAAgB,SAAyB;AACvD,QAAO,QAAQ,QAAQ,aAAa,GAAG;;AAGzC,MAAM,kBAAkB,MAAM,MAAM;AAEpC,SAAgB,WAAW,KAA+C;AACxE,KAAI,QAAQ,QAAQ,QAAQ,OAC1B,QAAO;CAGT,IAAI,YAAY;AAIhB,aAAY,UAAU,QAAQ,iBAAiB,MAAM;AAErD,QAAO;;AAGT,MAAM,wBAAwB,MAAM,oCAAoC;AAExE,SAAgB,iBAAiB,aAAwC;CACvE,MAAM,YAAY,SAAS,YAAY;AACvC,KAAI,CAAC,WAAW;AACd,SAAO,MACL,EAAE,KAAK,aAAa,EACpB,uCAAuC,cACxC;AACD,SAAO;GAAE,SAAS;GAAa,iBAAiB;GAAM;;CAExD,IAAI,kBAAkB;CACtB,MAAM,uBAAuB,sBAAsB,KACjD,UAAU,KACX,EAAE;AACH,KAAI,sBAAsB;EACxB,MAAM,EAAE,aAAa;AACrB,YAAU,OAAO;AACjB,oBAAkB,OAAO,SAAS,UAAU,GAAG;YACtC,UAAU,SAAS,SAAS,QAAQ,CAC7C,mBAAkB;AAIpB,QAAO;EAAE,SADO,UAAU;EACR;EAAiB;;;;;;;;AASrC,SAAgB,kBAAkB,GAAW,GAAmB;AAC9D,KAAIA,IAAW,QAAQ,EAAE,CACvB,KAAIA,IAAW,QAAQ,EAAE,CACvB,QAAOA,IAAW,aAAa,GAAG,EAAE;KAEpC,QAAO;UAEAA,IAAW,QAAQ,EAAE,CAC9B,QAAO;KAEP,QAAO"}
@@ -96,7 +96,7 @@ hashMap.set("sbt", "61f9323c91c45227da71d43120fa1eddc41685502be017118975f77b44fb
96
96
  hashMap.set("scalafmt", "9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f");
97
97
  hashMap.set("setup-cfg", "7dea08c5708625e753bd56918bc214df7fb4d8543a26e936926a21ab43b5f785");
98
98
  hashMap.set("sveltos", "167a5cc79098803be3b815a28cc40ef3361c455751e1d6a7a99ba91bfce26709");
99
- hashMap.set("swift", "9dd5ea9db9a7719e857cb6c07d8052e7cadaf42bcdcc422b8c567b207bc7e8e4");
99
+ hashMap.set("swift", "6da7d83fc65eb6f59fdbfe74520a4c458338eece78d5cf0adc453a6439d6425f");
100
100
  hashMap.set("tekton", "4e35c75bba4abc9c3cf49c55da6c19db4f4e9181d1fd9583288ab55ef7c944fd");
101
101
  hashMap.set("terraform", "9189cbd56cdceca57afbfb1480a28a31d78876db90e89c3bfb321701703afb52");
102
102
  hashMap.set("terraform-version", "ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa");
@@ -1 +1 @@
1
- {"version":3,"file":"fingerprint.generated.js","names":[],"sources":["../../../lib/modules/manager/fingerprint.generated.ts"],"sourcesContent":["export const hashMap = new Map<string, string>();\n\nhashMap.set('ansible','1fbc76f78daa14a8c9ab1142e9d1e05c746c0419a9f1455e4279f476590d0c04');\nhashMap.set('ansible-galaxy','8226d47128f2018825d4d6f84794e3183eb79c706045fa7e88491edd5e64106f');\nhashMap.set('argocd','5d35b1992e53130bf83b0e59a0f90ccd3a78919974c69044f306dc5d162f48ce');\nhashMap.set('asdf','1f6fcf620e9c6cd35991380cb6eafb94ec60cd77cbd13335ebe3a1d9727416c9');\nhashMap.set('azure-pipelines','4f635b0ecd388ee266d992e8281fd40e3db2f5867d86fc1cbce72dc33a66e796');\nhashMap.set('batect','fad98996bea8626525ab925f83a6ae0ce9262c53770e7aa7cb448a1e0f1ddf21');\nhashMap.set('batect-wrapper','0966c335bd865d689ef5d54b6a4fbc1a8b0883403f3284a1b85f21cbdee0e8b2');\nhashMap.set('bazel','c6e0ad88ea468664c3a33263baf7452d83d2d37ff09ba920e18f64ee81fd0acb');\nhashMap.set('bazel-module','3240f148b71c7567f784df3adc6937afbd69d7c7f8a40553bb64f5c767f26907');\nhashMap.set('bazelisk','c4c8561ff5857a14db68d70867dcc3cf63605380966b1132c295336e5cef5604');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','09eb044219d74331fea135f50121b7d4d146333eb97e4ccbfa9ddf0eb4012963');\nhashMap.set('bitrise','afdb46fe37fc0307943089e18b6724065394805e628b4b6c4430a6068c494030');\nhashMap.set('buildkite','a93effb1f1c5d65b3277c3b4709924eacde282e8efd028a8e3d8c1ce3ef69407');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','c7c917ad579dbf031294302bc05bfd5e1053e0e3208c50d9cc425fb0d7785310');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','b04522e682849d52d0389e1bae31d784b89e7aac1788bf76575bf41fc16d1ec0');\nhashMap.set('cake','288c3c36a50371b26957fa71992cc335228d53563c75597b36919ac7286e96eb');\nhashMap.set('cargo','d4c1ee00e1cb9de15fabd129329ce9d8ced0918eeee98c5387e5bcd1c6c67796');\nhashMap.set('cdnurl','d3edf6cdc38e92eb43ff5a2b4e8df6a6a13154cf83244725c39e28d7e6ea9177');\nhashMap.set('circleci','135937d4720718304adb0ba998516f8ce38c3220ccd18b00b8c70c62b45df4da');\nhashMap.set('cloudbuild','8c0c739f7e4082bbfe8e3fdffebaf43e26f70a1314d95b306e9b93e4f4297886');\nhashMap.set('cocoapods','04ad0bd9744b4a369444ac1a2c417bbc9b941d029d921e0bd8fbe1dcd0e655ad');\nhashMap.set('composer','0e9d4516e440e5bbf22e141d5e2353cdb1ae59c3be2f26abff9e5d2235779027');\nhashMap.set('conan','16b128910a5c855128f5e63f9540fa0c9c6c1a790ec651703268224264cc2234');\nhashMap.set('copier','c2243ee99dee6c667ea087a8d97ce4ff56413768f6b26d4b7699af3bb95df6fc');\nhashMap.set('cpanfile','6a1d67d9c8751123deaf0c7f3ac38a07024e960c140f8228fcbcb93954fdca01');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deps-edn','c87dd5e88587147ad1a78f047b814f3c4aa60d6de30d0c49d849391eeaf1b64c');\nhashMap.set('devbox','c853d5f943fe7bce7578063b25f8bb1597252726395fedeffc029a78f6321ed7');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','5441af5b5abf8d347e46002d47f02f85743401bda28232f49fb7b3bbb772a4fb');\nhashMap.set('dockerfile','322b95f7e55dd78d7fe71306a6f649479eca61c60d75bb10b23604a230dbdd08');\nhashMap.set('droneci','237c8de87b9bf653fb943b56e84e99c45f6d86ae27d86e599b3f3f99c35ba8ee');\nhashMap.set('fleet','fe2b132bd17f9c0a46ea5877bdaa6671c6452391219c9441e367d44deabd7a9a');\nhashMap.set('flux','bffacf477a9f1a24c7d1964cefcfcf67c34337b6966a52024396cc273e27dc17');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','a286e097a5fcc6c946e792b812871147b39ad93f9ad041b5b3216b100f972e95');\nhashMap.set('github-actions','67d6a125f4b7711a3f9a853ffd09f48fe2db9e650b3430b5501ca304f46c10b8');\nhashMap.set('gitlabci','0dec44dd398bfc5b3c19d0929bea2fef7f386c94acfd1b1d7bc2a31d81d96fd6');\nhashMap.set('gitlabci-include','354cfc4ea327c6d5cd5bee1f17763832efc7f5402e9fd22c579239fccb9c6dab');\nhashMap.set('glasskube','253d6db30bdec75ed5ab5d26f31d69bc07813ba10089a28da12c6a29eff4ec70');\nhashMap.set('gleam','e43a4427261082876bf6b648da34f76349055bee8ad09ab020ef9a5085d7b4e5');\nhashMap.set('gomod','4fe8407973497b89dd123f1c1ab263e9000ce3e5958051201ea57df252f102ea');\nhashMap.set('gradle','52345a3f8fe72bb9444d5611e8964a862fce89d515a7f92b40ea1cdf208dc880');\nhashMap.set('gradle-wrapper','ab73fff877ab01fd749ca980b1900f5965352cb59ba2efd216be049b7f6cb839');\nhashMap.set('haskell-cabal','d796ec6859e63ab4f1b7030c4016071202c3a44c7c11d4a9131d7e2ba19b396d');\nhashMap.set('helm-requirements','4d90e5e18a380876ad48e21e1ad88ea62e25d973a1ddaa3763447fc0a9f9915b');\nhashMap.set('helm-values','b5c52c6a27d805557418c585c5d3030c95ee641d53057021f3fe060f81b6e1af');\nhashMap.set('helmfile','2baa991e43f8c38e85051d12749e17c333be488b1b3af7ccb8ac3e97e134272c');\nhashMap.set('helmsman','ef9680c612f702c7f07aea9b6e5d811e91214dcfa5755c9f3803e9528090935e');\nhashMap.set('helmv3','d91b78dd3648e3acda92ba61c6b867f295176862588957635853cb4274d949a7');\nhashMap.set('hermit','0322c7489c79e76c85ebd802b11f0f55332c40fdfc82eea9ca8b300fef61dc52');\nhashMap.set('homebrew','3cd972c03dc6333a12fd26413150ffe18c0305aa61a16b490e3306fcec9f0000');\nhashMap.set('html','67c5f3c5c58e96f5dd257ba5987d900cf7fef81d667c3640e96c847b37de35a8');\nhashMap.set('jenkins','268ebfc8a1caf3edeb2192c2b1b2fa4bf18a78a3e731ba20a6c104940a5539f3');\nhashMap.set('jsonnet-bundler','0c15736494cd1e598985f0d49fc39e3cecc7ebeefa2101ccfab98605f92860e2');\nhashMap.set('kotlin-script','99ef296792a0ca575ed31d3defb514b05a58083dc01c52ea0890c69d867ba1dd');\nhashMap.set('kubernetes','87d87b2c410facdd0400691e87080a3e1ffe83158f51f52cd784442713122f30');\nhashMap.set('kustomize','1e44d6ef8622252dac6d9649fb04badd12d4827eb2a55f74792aa9de2b915775');\nhashMap.set('leiningen','133fca2c3423f53f2ccc22518153ddbcafbf0f4812376c77e952eb3d24d81f85');\nhashMap.set('maven','6faa1a3a70542bc7e84683c31b2fb86468fdf82a25c264cf2f7fc45dbc98b1d8');\nhashMap.set('maven-wrapper','ff10b7b3c33deda4e51a0904aed299522c9ab4d9deb8696faac37672419ba08c');\nhashMap.set('meteor','4a93a326b27bedfe52118e27e06f39fecd7c55bd4cd7fccec4cb120cac14cec4');\nhashMap.set('mint','b816a49c8525716454d0a2bc9127916d5b27e5cca7b2aa2030312f218942af3e');\nhashMap.set('mise','2af97573f0705892e3728ea131499d70d0353ed8a82db4cba8f66c1d7515b3fb');\nhashMap.set('mix','7c215ea50304c1269aa324f642ab9cf9a44174497cf451d8060ec09e2446b2a5');\nhashMap.set('nix','9c523d1a3e3e313aa8f278942be6556f3134d2fc979edf210f5722543e558245');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','7d874defce04a6ed616413dff24e5dac22f8b7c7bde7e1e4a8d6290fadcb6c74');\nhashMap.set('nuget','79634f60aeb99c76c76111e394ab1bc92298401b65ee13fbc9a1c91d0102cdd4');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','32233a1a8a2725699d7448ba438e3d0b78141f7799cd2b588de278d41e26ed10');\nhashMap.set('pep621','4c39cffc02e67b96d8c259f1384ea055f2cc1680f1611c1ae239bb5bb84830c7');\nhashMap.set('pep723','105cdc1674da67d48174457bea670c95d8a023e4263d1efc002f02c7f232b5eb');\nhashMap.set('pip-compile','ba65a1188370e4031c1554f4df2b32c513afe4da2f8c151ec008b2de1da3161d');\nhashMap.set('pip_requirements','e3cbe0e891deeeee05bb2f76020dc0c9f24ff4d964ba662267dd2080adfaa511');\nhashMap.set('pip_setup','0175fe550c19d9bd31c978bd83fdc088cb40fcacd5d6751f640164274ae64e61');\nhashMap.set('pipenv','a63361766d23f3688cc50903ca335854f72a951c182b39261c5ec7ea3506d55f');\nhashMap.set('pixi','0223374aadaeaff1532b77663e0c6d88a54902d4f6740ab0c6c57868d661f25c');\nhashMap.set('poetry','c7e9443739418742c5d8fc80cb0905537d0a804133bf792da21a7e6c12edc336');\nhashMap.set('pre-commit','a6a6e847fdb0f56650e66ef7d69e68de752b390913f79ac31d1a7ec5955d03da');\nhashMap.set('pub','01ac02ee8d07ede5fe93045c04176a2dcc402e28378d4b696cb069eb3dad28c4');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','e355e13e104351a8b3516a8e272fc5f7e625c9f39b0c492ba27283a36227c2d4');\nhashMap.set('renovate-config-presets','a394fe55f8b6ba356f29f76efd9f0d34b56baceb111e6d92f95b29b5ca50ac67');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('sbt','61f9323c91c45227da71d43120fa1eddc41685502be017118975f77b44fb1b8e');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','7dea08c5708625e753bd56918bc214df7fb4d8543a26e936926a21ab43b5f785');\nhashMap.set('sveltos','167a5cc79098803be3b815a28cc40ef3361c455751e1d6a7a99ba91bfce26709');\nhashMap.set('swift','9dd5ea9db9a7719e857cb6c07d8052e7cadaf42bcdcc422b8c567b207bc7e8e4');\nhashMap.set('tekton','4e35c75bba4abc9c3cf49c55da6c19db4f4e9181d1fd9583288ab55ef7c944fd');\nhashMap.set('terraform','9189cbd56cdceca57afbfb1480a28a31d78876db90e89c3bfb321701703afb52');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','b8474c65383a702602eee432cc1434f9a49a1ef886d1213de92d7a84fb98b9cd');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','4a975f0cc1aa22cd258aa835de3dc98d7a5c0d1cee0a1092324338968e08a827');\nhashMap.set('travis','bb482a0195cd009ec3896a6227bb95617f5c84bedb518c7d971e50c62235d9ca');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','379c146258e12a8cd64a6f580b4ff8a22f0fff318fe906a28a81f338b7db0317');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('jsonata','3b5f465b586993f92c8490e70885e7eecce9b6556bcc376dd9c11db8ee9e6960');\nhashMap.set('regex','7b643b49e498465cf91b25b8b840bb1fec8c8a3a59bfa8f97a39c976675325a0');"],"mappings":"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"}
1
+ {"version":3,"file":"fingerprint.generated.js","names":[],"sources":["../../../lib/modules/manager/fingerprint.generated.ts"],"sourcesContent":["export const hashMap = new Map<string, string>();\n\nhashMap.set('ansible','1fbc76f78daa14a8c9ab1142e9d1e05c746c0419a9f1455e4279f476590d0c04');\nhashMap.set('ansible-galaxy','8226d47128f2018825d4d6f84794e3183eb79c706045fa7e88491edd5e64106f');\nhashMap.set('argocd','5d35b1992e53130bf83b0e59a0f90ccd3a78919974c69044f306dc5d162f48ce');\nhashMap.set('asdf','1f6fcf620e9c6cd35991380cb6eafb94ec60cd77cbd13335ebe3a1d9727416c9');\nhashMap.set('azure-pipelines','4f635b0ecd388ee266d992e8281fd40e3db2f5867d86fc1cbce72dc33a66e796');\nhashMap.set('batect','fad98996bea8626525ab925f83a6ae0ce9262c53770e7aa7cb448a1e0f1ddf21');\nhashMap.set('batect-wrapper','0966c335bd865d689ef5d54b6a4fbc1a8b0883403f3284a1b85f21cbdee0e8b2');\nhashMap.set('bazel','c6e0ad88ea468664c3a33263baf7452d83d2d37ff09ba920e18f64ee81fd0acb');\nhashMap.set('bazel-module','3240f148b71c7567f784df3adc6937afbd69d7c7f8a40553bb64f5c767f26907');\nhashMap.set('bazelisk','c4c8561ff5857a14db68d70867dcc3cf63605380966b1132c295336e5cef5604');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','09eb044219d74331fea135f50121b7d4d146333eb97e4ccbfa9ddf0eb4012963');\nhashMap.set('bitrise','afdb46fe37fc0307943089e18b6724065394805e628b4b6c4430a6068c494030');\nhashMap.set('buildkite','a93effb1f1c5d65b3277c3b4709924eacde282e8efd028a8e3d8c1ce3ef69407');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','c7c917ad579dbf031294302bc05bfd5e1053e0e3208c50d9cc425fb0d7785310');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','b04522e682849d52d0389e1bae31d784b89e7aac1788bf76575bf41fc16d1ec0');\nhashMap.set('cake','288c3c36a50371b26957fa71992cc335228d53563c75597b36919ac7286e96eb');\nhashMap.set('cargo','d4c1ee00e1cb9de15fabd129329ce9d8ced0918eeee98c5387e5bcd1c6c67796');\nhashMap.set('cdnurl','d3edf6cdc38e92eb43ff5a2b4e8df6a6a13154cf83244725c39e28d7e6ea9177');\nhashMap.set('circleci','135937d4720718304adb0ba998516f8ce38c3220ccd18b00b8c70c62b45df4da');\nhashMap.set('cloudbuild','8c0c739f7e4082bbfe8e3fdffebaf43e26f70a1314d95b306e9b93e4f4297886');\nhashMap.set('cocoapods','04ad0bd9744b4a369444ac1a2c417bbc9b941d029d921e0bd8fbe1dcd0e655ad');\nhashMap.set('composer','0e9d4516e440e5bbf22e141d5e2353cdb1ae59c3be2f26abff9e5d2235779027');\nhashMap.set('conan','16b128910a5c855128f5e63f9540fa0c9c6c1a790ec651703268224264cc2234');\nhashMap.set('copier','c2243ee99dee6c667ea087a8d97ce4ff56413768f6b26d4b7699af3bb95df6fc');\nhashMap.set('cpanfile','6a1d67d9c8751123deaf0c7f3ac38a07024e960c140f8228fcbcb93954fdca01');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deps-edn','c87dd5e88587147ad1a78f047b814f3c4aa60d6de30d0c49d849391eeaf1b64c');\nhashMap.set('devbox','c853d5f943fe7bce7578063b25f8bb1597252726395fedeffc029a78f6321ed7');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','5441af5b5abf8d347e46002d47f02f85743401bda28232f49fb7b3bbb772a4fb');\nhashMap.set('dockerfile','322b95f7e55dd78d7fe71306a6f649479eca61c60d75bb10b23604a230dbdd08');\nhashMap.set('droneci','237c8de87b9bf653fb943b56e84e99c45f6d86ae27d86e599b3f3f99c35ba8ee');\nhashMap.set('fleet','fe2b132bd17f9c0a46ea5877bdaa6671c6452391219c9441e367d44deabd7a9a');\nhashMap.set('flux','bffacf477a9f1a24c7d1964cefcfcf67c34337b6966a52024396cc273e27dc17');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','a286e097a5fcc6c946e792b812871147b39ad93f9ad041b5b3216b100f972e95');\nhashMap.set('github-actions','67d6a125f4b7711a3f9a853ffd09f48fe2db9e650b3430b5501ca304f46c10b8');\nhashMap.set('gitlabci','0dec44dd398bfc5b3c19d0929bea2fef7f386c94acfd1b1d7bc2a31d81d96fd6');\nhashMap.set('gitlabci-include','354cfc4ea327c6d5cd5bee1f17763832efc7f5402e9fd22c579239fccb9c6dab');\nhashMap.set('glasskube','253d6db30bdec75ed5ab5d26f31d69bc07813ba10089a28da12c6a29eff4ec70');\nhashMap.set('gleam','e43a4427261082876bf6b648da34f76349055bee8ad09ab020ef9a5085d7b4e5');\nhashMap.set('gomod','4fe8407973497b89dd123f1c1ab263e9000ce3e5958051201ea57df252f102ea');\nhashMap.set('gradle','52345a3f8fe72bb9444d5611e8964a862fce89d515a7f92b40ea1cdf208dc880');\nhashMap.set('gradle-wrapper','ab73fff877ab01fd749ca980b1900f5965352cb59ba2efd216be049b7f6cb839');\nhashMap.set('haskell-cabal','d796ec6859e63ab4f1b7030c4016071202c3a44c7c11d4a9131d7e2ba19b396d');\nhashMap.set('helm-requirements','4d90e5e18a380876ad48e21e1ad88ea62e25d973a1ddaa3763447fc0a9f9915b');\nhashMap.set('helm-values','b5c52c6a27d805557418c585c5d3030c95ee641d53057021f3fe060f81b6e1af');\nhashMap.set('helmfile','2baa991e43f8c38e85051d12749e17c333be488b1b3af7ccb8ac3e97e134272c');\nhashMap.set('helmsman','ef9680c612f702c7f07aea9b6e5d811e91214dcfa5755c9f3803e9528090935e');\nhashMap.set('helmv3','d91b78dd3648e3acda92ba61c6b867f295176862588957635853cb4274d949a7');\nhashMap.set('hermit','0322c7489c79e76c85ebd802b11f0f55332c40fdfc82eea9ca8b300fef61dc52');\nhashMap.set('homebrew','3cd972c03dc6333a12fd26413150ffe18c0305aa61a16b490e3306fcec9f0000');\nhashMap.set('html','67c5f3c5c58e96f5dd257ba5987d900cf7fef81d667c3640e96c847b37de35a8');\nhashMap.set('jenkins','268ebfc8a1caf3edeb2192c2b1b2fa4bf18a78a3e731ba20a6c104940a5539f3');\nhashMap.set('jsonnet-bundler','0c15736494cd1e598985f0d49fc39e3cecc7ebeefa2101ccfab98605f92860e2');\nhashMap.set('kotlin-script','99ef296792a0ca575ed31d3defb514b05a58083dc01c52ea0890c69d867ba1dd');\nhashMap.set('kubernetes','87d87b2c410facdd0400691e87080a3e1ffe83158f51f52cd784442713122f30');\nhashMap.set('kustomize','1e44d6ef8622252dac6d9649fb04badd12d4827eb2a55f74792aa9de2b915775');\nhashMap.set('leiningen','133fca2c3423f53f2ccc22518153ddbcafbf0f4812376c77e952eb3d24d81f85');\nhashMap.set('maven','6faa1a3a70542bc7e84683c31b2fb86468fdf82a25c264cf2f7fc45dbc98b1d8');\nhashMap.set('maven-wrapper','ff10b7b3c33deda4e51a0904aed299522c9ab4d9deb8696faac37672419ba08c');\nhashMap.set('meteor','4a93a326b27bedfe52118e27e06f39fecd7c55bd4cd7fccec4cb120cac14cec4');\nhashMap.set('mint','b816a49c8525716454d0a2bc9127916d5b27e5cca7b2aa2030312f218942af3e');\nhashMap.set('mise','2af97573f0705892e3728ea131499d70d0353ed8a82db4cba8f66c1d7515b3fb');\nhashMap.set('mix','7c215ea50304c1269aa324f642ab9cf9a44174497cf451d8060ec09e2446b2a5');\nhashMap.set('nix','9c523d1a3e3e313aa8f278942be6556f3134d2fc979edf210f5722543e558245');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','7d874defce04a6ed616413dff24e5dac22f8b7c7bde7e1e4a8d6290fadcb6c74');\nhashMap.set('nuget','79634f60aeb99c76c76111e394ab1bc92298401b65ee13fbc9a1c91d0102cdd4');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','32233a1a8a2725699d7448ba438e3d0b78141f7799cd2b588de278d41e26ed10');\nhashMap.set('pep621','4c39cffc02e67b96d8c259f1384ea055f2cc1680f1611c1ae239bb5bb84830c7');\nhashMap.set('pep723','105cdc1674da67d48174457bea670c95d8a023e4263d1efc002f02c7f232b5eb');\nhashMap.set('pip-compile','ba65a1188370e4031c1554f4df2b32c513afe4da2f8c151ec008b2de1da3161d');\nhashMap.set('pip_requirements','e3cbe0e891deeeee05bb2f76020dc0c9f24ff4d964ba662267dd2080adfaa511');\nhashMap.set('pip_setup','0175fe550c19d9bd31c978bd83fdc088cb40fcacd5d6751f640164274ae64e61');\nhashMap.set('pipenv','a63361766d23f3688cc50903ca335854f72a951c182b39261c5ec7ea3506d55f');\nhashMap.set('pixi','0223374aadaeaff1532b77663e0c6d88a54902d4f6740ab0c6c57868d661f25c');\nhashMap.set('poetry','c7e9443739418742c5d8fc80cb0905537d0a804133bf792da21a7e6c12edc336');\nhashMap.set('pre-commit','a6a6e847fdb0f56650e66ef7d69e68de752b390913f79ac31d1a7ec5955d03da');\nhashMap.set('pub','01ac02ee8d07ede5fe93045c04176a2dcc402e28378d4b696cb069eb3dad28c4');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','e355e13e104351a8b3516a8e272fc5f7e625c9f39b0c492ba27283a36227c2d4');\nhashMap.set('renovate-config-presets','a394fe55f8b6ba356f29f76efd9f0d34b56baceb111e6d92f95b29b5ca50ac67');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('sbt','61f9323c91c45227da71d43120fa1eddc41685502be017118975f77b44fb1b8e');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','7dea08c5708625e753bd56918bc214df7fb4d8543a26e936926a21ab43b5f785');\nhashMap.set('sveltos','167a5cc79098803be3b815a28cc40ef3361c455751e1d6a7a99ba91bfce26709');\nhashMap.set('swift','6da7d83fc65eb6f59fdbfe74520a4c458338eece78d5cf0adc453a6439d6425f');\nhashMap.set('tekton','4e35c75bba4abc9c3cf49c55da6c19db4f4e9181d1fd9583288ab55ef7c944fd');\nhashMap.set('terraform','9189cbd56cdceca57afbfb1480a28a31d78876db90e89c3bfb321701703afb52');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','b8474c65383a702602eee432cc1434f9a49a1ef886d1213de92d7a84fb98b9cd');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','4a975f0cc1aa22cd258aa835de3dc98d7a5c0d1cee0a1092324338968e08a827');\nhashMap.set('travis','bb482a0195cd009ec3896a6227bb95617f5c84bedb518c7d971e50c62235d9ca');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','379c146258e12a8cd64a6f580b4ff8a22f0fff318fe906a28a81f338b7db0317');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('jsonata','3b5f465b586993f92c8490e70885e7eecce9b6556bcc376dd9c11db8ee9e6960');\nhashMap.set('regex','7b643b49e498465cf91b25b8b840bb1fec8c8a3a59bfa8f97a39c976675325a0');"],"mappings":"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"}
@@ -13,7 +13,7 @@ async function getYarnLock(filePath) {
13
13
  const lockedVersions = {};
14
14
  let lockfileVersion;
15
15
  for (const [key, val] of Object.entries(parsed)) if (key === "__metadata") {
16
- lockfileVersion = parseInt(val.cacheKey);
16
+ lockfileVersion = parseInt(val.cacheKey, 10);
17
17
  logger.once.debug(`yarn.lock ${filePath} has __metadata.cacheKey=${lockfileVersion}`);
18
18
  } else for (const entry of key.split(", ")) try {
19
19
  const { scope, name, range } = structUtils.parseDescriptor(entry);
@@ -1 +1 @@
1
- {"version":3,"file":"yarn.js","names":[],"sources":["../../../../../lib/modules/manager/npm/extract/yarn.ts"],"sourcesContent":["import { isString } from '@sindresorhus/is';\nimport { miscUtils, structUtils } from '@yarnpkg/core';\nimport { parseSyml } from '@yarnpkg/parsers';\nimport { logger } from '../../../../logger/index.ts';\nimport {\n getSiblingFileName,\n localPathExists,\n readLocalFile,\n} from '../../../../util/fs/index.ts';\nimport type { PackageFileContent } from '../../types.ts';\nimport type { YarnCatalogs } from '../schema.ts';\nimport type { NpmManagerData } from '../types.ts';\nimport { extractCatalogDeps } from './common/catalogs.ts';\nimport type { Catalog, LockFile } from './types.ts';\n\nexport async function getYarnLock(filePath: string): Promise<LockFile> {\n // TODO #22198\n const yarnLockRaw = (await readLocalFile(filePath, 'utf8'))!;\n try {\n const parsed = parseSyml(yarnLockRaw);\n const lockedVersions: Record<string, string> = {};\n let lockfileVersion: number | undefined;\n\n for (const [key, val] of Object.entries(parsed)) {\n if (key === '__metadata') {\n // yarn 2\n lockfileVersion = parseInt(val.cacheKey);\n logger.once.debug(\n `yarn.lock ${filePath} has __metadata.cacheKey=${lockfileVersion}`,\n );\n } else {\n for (const entry of key.split(', ')) {\n try {\n const { scope, name, range } = structUtils.parseDescriptor(entry);\n const packageName = scope ? `@${scope}/${name}` : name;\n const { selector } = structUtils.parseRange(range);\n\n logger.trace({ entry, version: val.version });\n lockedVersions[packageName + '@' + selector] = parsed[key].version;\n } catch (err) {\n logger.debug(\n { entry, err },\n 'Invalid descriptor or range found in yarn.lock',\n );\n }\n }\n }\n }\n const isYarn1 = !('__metadata' in parsed);\n if (isYarn1) {\n logger.once.debug(\n `yarn.lock ${filePath} is has no __metadata so is yarn 1`,\n );\n } else {\n logger.once.debug(\n `yarn.lock ${filePath} is has __metadata so is yarn 2+`,\n );\n }\n return {\n isYarn1,\n lockfileVersion,\n lockedVersions,\n };\n } catch (err) {\n logger.debug({ filePath, err }, 'Warning: Exception parsing yarn.lock');\n return { isYarn1: true, lockedVersions: {} };\n }\n}\n\nexport function getZeroInstallPaths(yarnrcYml: string): string[] {\n let conf: any;\n try {\n conf = parseSyml(yarnrcYml); /* v8 ignore next -- needs test */\n } catch (err) {\n logger.warn({ err }, 'Error parsing .yarnrc.yml');\n }\n const paths = [\n conf?.cacheFolder ?? './.yarn/cache',\n '.pnp.cjs',\n '.pnp.js',\n '.pnp.loader.mjs',\n ];\n if (\n conf &&\n miscUtils.tryParseOptionalBoolean(conf.pnpEnableInlining) === false\n ) {\n paths.push(conf.pnpDataPath ?? './.pnp.data.json');\n }\n return paths;\n}\n\nexport async function isZeroInstall(yarnrcYmlPath: string): Promise<boolean> {\n const yarnrcYml = await readLocalFile(yarnrcYmlPath, 'utf8');\n if (isString(yarnrcYml)) {\n const paths = getZeroInstallPaths(yarnrcYml);\n for (const p of paths) {\n if (await localPathExists(getSiblingFileName(yarnrcYmlPath, p))) {\n logger.debug(`Detected Yarn zero-install in ${p}`);\n return true;\n }\n }\n }\n return false;\n}\n\nexport function getYarnVersionFromLock(lockfile: LockFile): string {\n const { lockfileVersion, isYarn1 } = lockfile;\n if (isYarn1) {\n return '^1.22.18';\n }\n if (lockfileVersion && lockfileVersion >= 12) {\n // This will probably be v5\n return '>=4.0.0';\n }\n if (lockfileVersion && lockfileVersion >= 10) {\n return '^4.0.0';\n }\n if (lockfileVersion && lockfileVersion >= 8) {\n // https://github.com/yarnpkg/berry/commit/9bcd27ae34aee77a567dd104947407532fa179b3\n return '^3.0.0';\n } else if (lockfileVersion && lockfileVersion >= 6) {\n // https://github.com/yarnpkg/berry/commit/f753790380cbda5b55d028ea84b199445129f9ba\n return '^2.2.0';\n }\n\n return '^2.0.0';\n}\n\nexport async function extractYarnCatalogs(\n catalogs: YarnCatalogs,\n packageFile: string,\n hasPackageManager: boolean,\n): Promise<PackageFileContent<NpmManagerData>> {\n logger.trace(`yarn.extractYarnCatalogs(${packageFile})`);\n\n const yarnCatalogs = yarnCatalogsToArray(catalogs);\n\n const deps = extractCatalogDeps(yarnCatalogs, 'yarn');\n\n let yarnLock: string | undefined;\n const filePath = getSiblingFileName(packageFile, 'yarn.lock');\n\n if (await localPathExists(filePath)) {\n yarnLock = filePath;\n }\n\n return {\n deps,\n managerData: {\n yarnLock,\n hasPackageManager,\n },\n };\n}\n\nfunction yarnCatalogsToArray({\n catalog: defaultCatalogDeps,\n catalogs: namedCatalogs,\n}: YarnCatalogs): Catalog[] {\n const result: Catalog[] = [];\n\n if (defaultCatalogDeps !== undefined) {\n result.push({ name: 'default', dependencies: defaultCatalogDeps });\n }\n\n if (!namedCatalogs) {\n return result;\n }\n\n for (const [name, dependencies] of Object.entries(namedCatalogs)) {\n result.push({\n name,\n dependencies,\n });\n }\n\n return result;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"yarn.js","names":[],"sources":["../../../../../lib/modules/manager/npm/extract/yarn.ts"],"sourcesContent":["import { isString } from '@sindresorhus/is';\nimport { miscUtils, structUtils } from '@yarnpkg/core';\nimport { parseSyml } from '@yarnpkg/parsers';\nimport { logger } from '../../../../logger/index.ts';\nimport {\n getSiblingFileName,\n localPathExists,\n readLocalFile,\n} from '../../../../util/fs/index.ts';\nimport type { PackageFileContent } from '../../types.ts';\nimport type { YarnCatalogs } from '../schema.ts';\nimport type { NpmManagerData } from '../types.ts';\nimport { extractCatalogDeps } from './common/catalogs.ts';\nimport type { Catalog, LockFile } from './types.ts';\n\nexport async function getYarnLock(filePath: string): Promise<LockFile> {\n // TODO #22198\n const yarnLockRaw = (await readLocalFile(filePath, 'utf8'))!;\n try {\n const parsed = parseSyml(yarnLockRaw);\n const lockedVersions: Record<string, string> = {};\n let lockfileVersion: number | undefined;\n\n for (const [key, val] of Object.entries(parsed)) {\n if (key === '__metadata') {\n // yarn 2\n lockfileVersion = parseInt(val.cacheKey, 10);\n logger.once.debug(\n `yarn.lock ${filePath} has __metadata.cacheKey=${lockfileVersion}`,\n );\n } else {\n for (const entry of key.split(', ')) {\n try {\n const { scope, name, range } = structUtils.parseDescriptor(entry);\n const packageName = scope ? `@${scope}/${name}` : name;\n const { selector } = structUtils.parseRange(range);\n\n logger.trace({ entry, version: val.version });\n lockedVersions[packageName + '@' + selector] = parsed[key].version;\n } catch (err) {\n logger.debug(\n { entry, err },\n 'Invalid descriptor or range found in yarn.lock',\n );\n }\n }\n }\n }\n const isYarn1 = !('__metadata' in parsed);\n if (isYarn1) {\n logger.once.debug(\n `yarn.lock ${filePath} is has no __metadata so is yarn 1`,\n );\n } else {\n logger.once.debug(\n `yarn.lock ${filePath} is has __metadata so is yarn 2+`,\n );\n }\n return {\n isYarn1,\n lockfileVersion,\n lockedVersions,\n };\n } catch (err) {\n logger.debug({ filePath, err }, 'Warning: Exception parsing yarn.lock');\n return { isYarn1: true, lockedVersions: {} };\n }\n}\n\nexport function getZeroInstallPaths(yarnrcYml: string): string[] {\n let conf: any;\n try {\n conf = parseSyml(yarnrcYml); /* v8 ignore next -- needs test */\n } catch (err) {\n logger.warn({ err }, 'Error parsing .yarnrc.yml');\n }\n const paths = [\n conf?.cacheFolder ?? './.yarn/cache',\n '.pnp.cjs',\n '.pnp.js',\n '.pnp.loader.mjs',\n ];\n if (\n conf &&\n miscUtils.tryParseOptionalBoolean(conf.pnpEnableInlining) === false\n ) {\n paths.push(conf.pnpDataPath ?? './.pnp.data.json');\n }\n return paths;\n}\n\nexport async function isZeroInstall(yarnrcYmlPath: string): Promise<boolean> {\n const yarnrcYml = await readLocalFile(yarnrcYmlPath, 'utf8');\n if (isString(yarnrcYml)) {\n const paths = getZeroInstallPaths(yarnrcYml);\n for (const p of paths) {\n if (await localPathExists(getSiblingFileName(yarnrcYmlPath, p))) {\n logger.debug(`Detected Yarn zero-install in ${p}`);\n return true;\n }\n }\n }\n return false;\n}\n\nexport function getYarnVersionFromLock(lockfile: LockFile): string {\n const { lockfileVersion, isYarn1 } = lockfile;\n if (isYarn1) {\n return '^1.22.18';\n }\n if (lockfileVersion && lockfileVersion >= 12) {\n // This will probably be v5\n return '>=4.0.0';\n }\n if (lockfileVersion && lockfileVersion >= 10) {\n return '^4.0.0';\n }\n if (lockfileVersion && lockfileVersion >= 8) {\n // https://github.com/yarnpkg/berry/commit/9bcd27ae34aee77a567dd104947407532fa179b3\n return '^3.0.0';\n } else if (lockfileVersion && lockfileVersion >= 6) {\n // https://github.com/yarnpkg/berry/commit/f753790380cbda5b55d028ea84b199445129f9ba\n return '^2.2.0';\n }\n\n return '^2.0.0';\n}\n\nexport async function extractYarnCatalogs(\n catalogs: YarnCatalogs,\n packageFile: string,\n hasPackageManager: boolean,\n): Promise<PackageFileContent<NpmManagerData>> {\n logger.trace(`yarn.extractYarnCatalogs(${packageFile})`);\n\n const yarnCatalogs = yarnCatalogsToArray(catalogs);\n\n const deps = extractCatalogDeps(yarnCatalogs, 'yarn');\n\n let yarnLock: string | undefined;\n const filePath = getSiblingFileName(packageFile, 'yarn.lock');\n\n if (await localPathExists(filePath)) {\n yarnLock = filePath;\n }\n\n return {\n deps,\n managerData: {\n yarnLock,\n hasPackageManager,\n },\n };\n}\n\nfunction yarnCatalogsToArray({\n catalog: defaultCatalogDeps,\n catalogs: namedCatalogs,\n}: YarnCatalogs): Catalog[] {\n const result: Catalog[] = [];\n\n if (defaultCatalogDeps !== undefined) {\n result.push({ name: 'default', dependencies: defaultCatalogDeps });\n }\n\n if (!namedCatalogs) {\n return result;\n }\n\n for (const [name, dependencies] of Object.entries(namedCatalogs)) {\n result.push({\n name,\n dependencies,\n });\n }\n\n return result;\n}\n"],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ import { escapeRegExp, regEx } from "../../../util/regex.js";
2
+ import { logger } from "../../../logger/index.js";
3
+ import { readLocalFile } from "../../../util/fs/index.js";
4
+ import { GitTagsDatasource } from "../../datasource/git-tags/index.js";
5
+ import { getDigest } from "../../datasource/index.js";
6
+ import { scm } from "../../platform/scm.js";
7
+ import { PackageResolvedJson } from "./schema.js";
8
+
9
+ //#region lib/modules/manager/swift/artifacts.ts
10
+ async function findPackageResolvedFiles() {
11
+ return (await scm.getFileList()).filter((f) => f.endsWith("Package.resolved"));
12
+ }
13
+ function normalizeUrl(url) {
14
+ return url.replace(regEx(/\.git$/), "").replace(regEx(/\/$/), "").toLowerCase();
15
+ }
16
+ function matchPinForDep(dep, pins) {
17
+ let depUrl;
18
+ if (dep.datasource === GitTagsDatasource.id) depUrl = dep.depName ?? "";
19
+ else depUrl = `${dep.registryUrls?.[0] ?? "https://github.com"}/${dep.depName}`;
20
+ const normalizedDepUrl = normalizeUrl(depUrl);
21
+ return pins.find((pin) => normalizeUrl(pin.location) === normalizedDepUrl) ?? null;
22
+ }
23
+ async function resolveCommitSha(dep, newVersion) {
24
+ if (dep.newDigest) return dep.newDigest;
25
+ const datasource = dep.datasource;
26
+ const packageName = dep.packageName ?? dep.depName;
27
+ if (!datasource || !packageName) return null;
28
+ try {
29
+ return await getDigest({
30
+ datasource,
31
+ packageName,
32
+ registryUrls: dep.registryUrls
33
+ }, newVersion);
34
+ } catch (err) {
35
+ logger.debug({
36
+ err,
37
+ packageName,
38
+ newVersion
39
+ }, "swift: failed to resolve commit SHA");
40
+ return null;
41
+ }
42
+ }
43
+ function updatePinInJson(content, pin, newVersion, newRevision) {
44
+ let updated = content;
45
+ const identityMatch = regEx(`"identity"\\s*:\\s*"${escapeRegExp(pin.identity)}"`).exec(updated);
46
+ /* istanbul ignore if: identity always exists after JSON parse + matchPinForDep */
47
+ if (!identityMatch) return content;
48
+ const blockStart = updated.slice(0, identityMatch.index).lastIndexOf("{");
49
+ /* istanbul ignore if: valid JSON always has enclosing braces */
50
+ if (blockStart === -1) return content;
51
+ let braceDepth = 0;
52
+ let blockEnd = -1;
53
+ for (let i = blockStart; i < updated.length; i++) if (updated[i] === "{") braceDepth++;
54
+ else if (updated[i] === "}") {
55
+ braceDepth--;
56
+ if (braceDepth === 0) {
57
+ blockEnd = i + 1;
58
+ break;
59
+ }
60
+ }
61
+ /* istanbul ignore if: valid JSON always has matching braces */
62
+ if (blockEnd === -1) return content;
63
+ let pinBlock = updated.slice(blockStart, blockEnd);
64
+ const versionPattern = regEx(/("version"\s*:\s*)"[^"]*"/);
65
+ pinBlock = pinBlock.replace(versionPattern, `$1"${newVersion}"`);
66
+ if (newRevision) {
67
+ const revisionPattern = regEx(/("revision"\s*:\s*)"[^"]*"/);
68
+ pinBlock = pinBlock.replace(revisionPattern, `$1"${newRevision}"`);
69
+ }
70
+ updated = updated.slice(0, blockStart) + pinBlock + updated.slice(blockEnd);
71
+ return updated;
72
+ }
73
+ async function updateArtifacts({ updatedDeps, config }) {
74
+ if (config.isLockFileMaintenance) {
75
+ logger.debug("swift: lockFileMaintenance is not supported");
76
+ return null;
77
+ }
78
+ if (!updatedDeps.length) {
79
+ logger.debug("swift: no updatedDeps, nothing to do");
80
+ return null;
81
+ }
82
+ const resolvedFiles = await findPackageResolvedFiles();
83
+ if (!resolvedFiles.length) {
84
+ logger.debug("swift: no Package.resolved files found");
85
+ return null;
86
+ }
87
+ const results = [];
88
+ for (const resolvedFile of resolvedFiles) {
89
+ const content = await readLocalFile(resolvedFile, "utf8");
90
+ if (!content) {
91
+ logger.debug({ resolvedFile }, "swift: could not read Package.resolved");
92
+ continue;
93
+ }
94
+ const parseResult = PackageResolvedJson.safeParse(content);
95
+ if (!parseResult.success) {
96
+ logger.debug({
97
+ resolvedFile,
98
+ error: parseResult.error
99
+ }, "swift: could not parse Package.resolved");
100
+ continue;
101
+ }
102
+ const parsed = parseResult.data;
103
+ let updated = content;
104
+ for (const dep of updatedDeps) {
105
+ const newVersion = dep.newVersion;
106
+ if (!newVersion) continue;
107
+ const pin = matchPinForDep(dep, parsed.pins);
108
+ if (!pin) {
109
+ logger.debug({ depName: dep.depName }, "swift: no matching pin found in Package.resolved");
110
+ continue;
111
+ }
112
+ if (pin.state.version === newVersion) {
113
+ logger.debug({
114
+ depName: dep.depName,
115
+ newVersion
116
+ }, "swift: pin already at target version");
117
+ continue;
118
+ }
119
+ const newRevision = await resolveCommitSha(dep, newVersion);
120
+ updated = updatePinInJson(updated, pin, newVersion, newRevision);
121
+ }
122
+ if (updated !== content) results.push({ file: {
123
+ type: "addition",
124
+ path: resolvedFile,
125
+ contents: updated
126
+ } });
127
+ }
128
+ return results.length ? results : null;
129
+ }
130
+
131
+ //#endregion
132
+ export { updateArtifacts };
133
+ //# sourceMappingURL=artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifacts.js","names":[],"sources":["../../../../lib/modules/manager/swift/artifacts.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport { readLocalFile } from '../../../util/fs/index.ts';\nimport { escapeRegExp, regEx } from '../../../util/regex.ts';\nimport { GitTagsDatasource } from '../../datasource/git-tags/index.ts';\nimport { getDigest } from '../../datasource/index.ts';\nimport { scm } from '../../platform/scm.ts';\nimport type {\n PackageDependency,\n UpdateArtifact,\n UpdateArtifactsResult,\n Upgrade,\n} from '../types.ts';\nimport type { PackageResolvedPin } from './schema.ts';\nimport { PackageResolvedJson } from './schema.ts';\n\nasync function findPackageResolvedFiles(): Promise<string[]> {\n const fileList = await scm.getFileList();\n return fileList.filter((f) => f.endsWith('Package.resolved'));\n}\n\nfunction normalizeUrl(url: string): string {\n return url\n .replace(regEx(/\\.git$/), '')\n .replace(regEx(/\\/$/), '')\n .toLowerCase();\n}\n\nfunction matchPinForDep(\n dep: PackageDependency,\n pins: PackageResolvedPin[],\n): PackageResolvedPin | null {\n let depUrl: string;\n\n if (dep.datasource === GitTagsDatasource.id) {\n depUrl = dep.depName ?? '';\n } else {\n const registryUrl = dep.registryUrls?.[0] ?? 'https://github.com';\n depUrl = `${registryUrl}/${dep.depName}`;\n }\n\n const normalizedDepUrl = normalizeUrl(depUrl);\n\n return (\n pins.find((pin) => normalizeUrl(pin.location) === normalizedDepUrl) ?? null\n );\n}\n\nasync function resolveCommitSha(\n dep: Upgrade,\n newVersion: string,\n): Promise<string | null> {\n if (dep.newDigest) {\n return dep.newDigest;\n }\n\n const datasource = dep.datasource;\n const packageName = dep.packageName ?? dep.depName;\n if (!datasource || !packageName) {\n return null;\n }\n\n try {\n const digest = await getDigest(\n {\n datasource,\n packageName,\n registryUrls: dep.registryUrls,\n },\n newVersion,\n );\n return digest;\n } catch (err) {\n logger.debug(\n { err, packageName, newVersion },\n 'swift: failed to resolve commit SHA',\n );\n return null;\n }\n}\n\nfunction updatePinInJson(\n content: string,\n pin: PackageResolvedPin,\n newVersion: string,\n newRevision: string | null,\n): string {\n let updated = content;\n\n // Find the pin block by its unique identity value\n const identityPattern = regEx(\n `\"identity\"\\\\s*:\\\\s*\"${escapeRegExp(pin.identity)}\"`,\n );\n const identityMatch = identityPattern.exec(updated);\n /* istanbul ignore if: identity always exists after JSON parse + matchPinForDep */\n if (!identityMatch) {\n return content;\n }\n\n // Find the enclosing object block (search for the opening brace before identity)\n const beforeIdentity = updated.slice(0, identityMatch.index);\n const blockStart = beforeIdentity.lastIndexOf('{');\n /* istanbul ignore if: valid JSON always has enclosing braces */\n if (blockStart === -1) {\n return content;\n }\n\n // Find the closing brace of this pin block (handle nested braces)\n let braceDepth = 0;\n let blockEnd = -1;\n for (let i = blockStart; i < updated.length; i++) {\n if (updated[i] === '{') {\n braceDepth++;\n } else if (updated[i] === '}') {\n braceDepth--;\n if (braceDepth === 0) {\n blockEnd = i + 1;\n break;\n }\n }\n }\n /* istanbul ignore if: valid JSON always has matching braces */\n if (blockEnd === -1) {\n return content;\n }\n\n let pinBlock = updated.slice(blockStart, blockEnd);\n\n // Replace version within the pin block\n const versionPattern = regEx(/(\"version\"\\s*:\\s*)\"[^\"]*\"/);\n pinBlock = pinBlock.replace(versionPattern, `$1\"${newVersion}\"`);\n\n // Replace revision within the pin block if we have a new one\n if (newRevision) {\n const revisionPattern = regEx(/(\"revision\"\\s*:\\s*)\"[^\"]*\"/);\n pinBlock = pinBlock.replace(revisionPattern, `$1\"${newRevision}\"`);\n }\n\n updated = updated.slice(0, blockStart) + pinBlock + updated.slice(blockEnd);\n return updated;\n}\n\nexport async function updateArtifacts({\n updatedDeps,\n config,\n}: UpdateArtifact): Promise<UpdateArtifactsResult[] | null> {\n if (config.isLockFileMaintenance) {\n logger.debug('swift: lockFileMaintenance is not supported');\n return null;\n }\n\n if (!updatedDeps.length) {\n logger.debug('swift: no updatedDeps, nothing to do');\n return null;\n }\n\n const resolvedFiles = await findPackageResolvedFiles();\n if (!resolvedFiles.length) {\n logger.debug('swift: no Package.resolved files found');\n return null;\n }\n\n const results: UpdateArtifactsResult[] = [];\n\n for (const resolvedFile of resolvedFiles) {\n const content = await readLocalFile(resolvedFile, 'utf8');\n if (!content) {\n logger.debug({ resolvedFile }, 'swift: could not read Package.resolved');\n continue;\n }\n\n const parseResult = PackageResolvedJson.safeParse(content);\n if (!parseResult.success) {\n logger.debug(\n { resolvedFile, error: parseResult.error },\n 'swift: could not parse Package.resolved',\n );\n continue;\n }\n\n const parsed = parseResult.data;\n let updated = content;\n\n for (const dep of updatedDeps) {\n const newVersion = dep.newVersion;\n if (!newVersion) {\n continue;\n }\n\n const pin = matchPinForDep(dep, parsed.pins);\n if (!pin) {\n logger.debug(\n { depName: dep.depName },\n 'swift: no matching pin found in Package.resolved',\n );\n continue;\n }\n\n // Skip if already up-to-date\n if (pin.state.version === newVersion) {\n logger.debug(\n { depName: dep.depName, newVersion },\n 'swift: pin already at target version',\n );\n continue;\n }\n\n const newRevision = await resolveCommitSha(dep, newVersion);\n updated = updatePinInJson(updated, pin, newVersion, newRevision);\n }\n\n if (updated !== content) {\n results.push({\n file: {\n type: 'addition',\n path: resolvedFile,\n contents: updated,\n },\n });\n }\n }\n\n return results.length ? results : null;\n}\n"],"mappings":"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"}
@@ -3,6 +3,7 @@ import { GitTagsDatasource } from "../../datasource/git-tags/index.js";
3
3
  import { GithubTagsDatasource } from "../../datasource/github-tags/index.js";
4
4
  import { GitlabTagsDatasource } from "../../datasource/gitlab-tags/index.js";
5
5
  import { id } from "../../versioning/swift/index.js";
6
+ import { updateArtifacts } from "./artifacts.js";
6
7
  import { extractPackageFile } from "./extract.js";
7
8
  import { getRangeStrategy } from "./range.js";
8
9
 
@@ -14,6 +15,7 @@ var swift_exports = /* @__PURE__ */ __exportAll({
14
15
  extractPackageFile: () => extractPackageFile,
15
16
  getRangeStrategy: () => getRangeStrategy,
16
17
  supportedDatasources: () => supportedDatasources,
18
+ updateArtifacts: () => updateArtifacts,
17
19
  url: () => url
18
20
  });
19
21
  const displayName = "Swift Package Manager";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["swiftVersioning.id"],"sources":["../../../../lib/modules/manager/swift/index.ts"],"sourcesContent":["import type { Category } from '../../../constants/index.ts';\nimport { GitTagsDatasource } from '../../datasource/git-tags/index.ts';\nimport { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';\nimport { GitlabTagsDatasource } from '../../datasource/gitlab-tags/index.ts';\nimport * as swiftVersioning from '../../versioning/swift/index.ts';\n\nexport { extractPackageFile } from './extract.ts';\nexport { getRangeStrategy } from './range.ts';\n\nexport const displayName = 'Swift Package Manager';\nexport const url = 'https://www.swift.org/package-manager';\nexport const categories: Category[] = ['swift'];\n\nexport const defaultConfig = {\n managerFilePatterns: ['/(^|/)Package\\\\.swift/'],\n versioning: swiftVersioning.id,\n pinDigests: false,\n};\n\nexport const supportedDatasources = [\n GitTagsDatasource.id,\n GithubTagsDatasource.id,\n GitlabTagsDatasource.id,\n];\n"],"mappings":";;;;;;;;;;;;;;;;;;AASA,MAAa,cAAc;AAC3B,MAAa,MAAM;AACnB,MAAa,aAAyB,CAAC,QAAQ;AAE/C,MAAa,gBAAgB;CAC3B,qBAAqB,CAAC,yBAAyB;CAC/C,YAAYA;CACZ,YAAY;CACb;AAED,MAAa,uBAAuB;CAClC,kBAAkB;CAClB,qBAAqB;CACrB,qBAAqB;CACtB"}
1
+ {"version":3,"file":"index.js","names":["swiftVersioning.id"],"sources":["../../../../lib/modules/manager/swift/index.ts"],"sourcesContent":["import type { Category } from '../../../constants/index.ts';\nimport { GitTagsDatasource } from '../../datasource/git-tags/index.ts';\nimport { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';\nimport { GitlabTagsDatasource } from '../../datasource/gitlab-tags/index.ts';\nimport * as swiftVersioning from '../../versioning/swift/index.ts';\n\nexport { updateArtifacts } from './artifacts.ts';\nexport { extractPackageFile } from './extract.ts';\nexport { getRangeStrategy } from './range.ts';\n\nexport const displayName = 'Swift Package Manager';\nexport const url = 'https://www.swift.org/package-manager';\nexport const categories: Category[] = ['swift'];\n\nexport const defaultConfig = {\n managerFilePatterns: ['/(^|/)Package\\\\.swift/'],\n versioning: swiftVersioning.id,\n pinDigests: false,\n};\n\nexport const supportedDatasources = [\n GitTagsDatasource.id,\n GithubTagsDatasource.id,\n GitlabTagsDatasource.id,\n];\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAUA,MAAa,cAAc;AAC3B,MAAa,MAAM;AACnB,MAAa,aAAyB,CAAC,QAAQ;AAE/C,MAAa,gBAAgB;CAC3B,qBAAqB,CAAC,yBAAyB;CAC/C,YAAYA;CACZ,YAAY;CACb;AAED,MAAa,uBAAuB;CAClC,kBAAkB;CAClB,qBAAqB;CACrB,qBAAqB;CACtB"}
@@ -0,0 +1,23 @@
1
+ import { Json } from "../../../util/schema-utils/index.js";
2
+ import { z } from "zod/v3";
3
+
4
+ //#region lib/modules/manager/swift/schema.ts
5
+ const PackageResolvedPin = z.object({
6
+ identity: z.string(),
7
+ kind: z.string(),
8
+ location: z.string(),
9
+ state: z.object({
10
+ revision: z.string(),
11
+ version: z.string().nullable(),
12
+ branch: z.string().nullable().optional()
13
+ })
14
+ });
15
+ const PackageResolvedJson = Json.pipe(z.object({
16
+ pins: z.array(PackageResolvedPin),
17
+ version: z.number().int().min(2),
18
+ originHash: z.string().optional()
19
+ }));
20
+
21
+ //#endregion
22
+ export { PackageResolvedJson };
23
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","names":[],"sources":["../../../../lib/modules/manager/swift/schema.ts"],"sourcesContent":["import { z } from 'zod/v3';\nimport { Json } from '../../../util/schema-utils/index.ts';\n\nconst PackageResolvedPin = z.object({\n identity: z.string(),\n kind: z.string(),\n location: z.string(),\n state: z.object({\n revision: z.string(),\n version: z.string().nullable(),\n branch: z.string().nullable().optional(),\n }),\n});\n\nexport type PackageResolvedPin = z.infer<typeof PackageResolvedPin>;\n\nexport const PackageResolvedJson = Json.pipe(\n z.object({\n pins: z.array(PackageResolvedPin),\n version: z.number().int().min(2),\n originHash: z.string().optional(),\n }),\n);\n\nexport type PackageResolvedJson = z.infer<typeof PackageResolvedJson>;\n"],"mappings":";;;;AAGA,MAAM,qBAAqB,EAAE,OAAO;CAClC,UAAU,EAAE,QAAQ;CACpB,MAAM,EAAE,QAAQ;CAChB,UAAU,EAAE,QAAQ;CACpB,OAAO,EAAE,OAAO;EACd,UAAU,EAAE,QAAQ;EACpB,SAAS,EAAE,QAAQ,CAAC,UAAU;EAC9B,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU;EACzC,CAAC;CACH,CAAC;AAIF,MAAa,sBAAsB,KAAK,KACtC,EAAE,OAAO;CACP,MAAM,EAAE,MAAM,mBAAmB;CACjC,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE;CAChC,YAAY,EAAE,QAAQ,CAAC,UAAU;CAClC,CAAC,CACH"}
@@ -103,7 +103,7 @@ function splitEscapedSpaces(str) {
103
103
  function parseModifier(value) {
104
104
  const match = regEx("^random(?:\\((\\d+)\\))?$").exec(value);
105
105
  if (!match) return null;
106
- return parseInt(match[1] ?? "1");
106
+ return parseInt(match[1] ?? "1", 10);
107
107
  }
108
108
 
109
109
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["git.getUrl"],"sources":["../../../../lib/modules/platform/bitbucket-server/utils.ts"],"sourcesContent":["// SEE for the reference https://github.com/renovatebot/renovate/blob/c3e9e572b225085448d94aa121c7ec81c14d3955/lib/platform/bitbucket/utils.js\nimport { isNonEmptyString } from '@sindresorhus/is';\nimport { CONFIG_GIT_URL_UNAVAILABLE } from '../../../constants/error-messages.ts';\nimport { logger } from '../../../logger/index.ts';\nimport type { GitOptions, GitProtocol } from '../../../types/git.ts';\nimport type { HostRule } from '../../../types/index.ts';\nimport * as git from '../../../util/git/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { ensureTrailingSlash, parseUrl } from '../../../util/url.ts';\nimport { getPrBodyStruct } from '../pr-body.ts';\nimport type { GitUrlOption } from '../types.ts';\nimport type { BbsPr, BbsRestPr, BbsRestRepo, BitbucketError } from './types.ts';\n\nexport const BITBUCKET_INVALID_REVIEWERS_EXCEPTION =\n 'com.atlassian.bitbucket.pull.InvalidPullRequestReviewersException';\n\n// https://docs.atlassian.com/bitbucket-server/rest/6.0.0/bitbucket-rest.html#idp250\nconst prStateMapping: any = {\n MERGED: 'merged',\n DECLINED: 'closed',\n OPEN: 'open',\n};\n\nexport function prInfo(pr: BbsRestPr): BbsPr {\n return {\n version: pr.version,\n number: pr.id,\n bodyStruct: getPrBodyStruct(pr.description),\n sourceBranch: pr.fromRef.displayId,\n targetBranch: pr.toRef.displayId,\n title: pr.title,\n state: prStateMapping[pr.state],\n createdAt: pr.createdDate,\n };\n}\n\nexport interface BitbucketCommitStatus {\n failed: number;\n inProgress: number;\n successful: number;\n}\n\nexport type BitbucketBranchState =\n | 'SUCCESSFUL'\n | 'FAILED'\n | 'INPROGRESS'\n | 'STOPPED';\n\nexport interface BitbucketStatus {\n key: string;\n state: BitbucketBranchState;\n}\n\nexport function isInvalidReviewersResponse(err: BitbucketError): boolean {\n const errors = err?.response?.body?.errors ?? [];\n return (\n errors.length > 0 &&\n errors.every(\n (error) => error.exceptionName === BITBUCKET_INVALID_REVIEWERS_EXCEPTION,\n )\n );\n}\n\nexport function getInvalidReviewers(err: BitbucketError): string[] {\n const errors = err?.response?.body?.errors ?? [];\n let invalidReviewers: string[] = [];\n for (const error of errors) {\n // v8 ignore else -- TODO: add test #40625\n if (error.exceptionName === BITBUCKET_INVALID_REVIEWERS_EXCEPTION) {\n invalidReviewers = invalidReviewers.concat(\n error.reviewerErrors\n ?.map(({ context }) => context)\n .filter(isNonEmptyString) ?? [],\n );\n }\n }\n\n return invalidReviewers;\n}\n\nfunction generateUrlFromEndpoint(\n defaultEndpoint: string,\n opts: HostRule,\n repository: string,\n): string {\n const url = new URL(defaultEndpoint);\n const authString =\n opts.username && opts.password\n ? `${opts.username}:${opts.password}`\n : (opts.username ?? '');\n\n const generatedUrl = git.getUrl({\n protocol: url.protocol as GitProtocol,\n // TODO: types (#22198)\n auth: authString,\n host: `${url.host}${ensureTrailingSlash(url.pathname)}scm`,\n repository,\n });\n logger.debug(`Using generated endpoint URL: ${generatedUrl}`);\n return generatedUrl;\n}\n\nfunction injectAuth(url: string, opts: HostRule): string {\n const repoUrl = parseUrl(url)!;\n if (!repoUrl) {\n logger.debug(`Invalid url: ${url}`);\n throw new Error(CONFIG_GIT_URL_UNAVAILABLE);\n }\n // v8 ignore else -- TODO: add test #40625\n if (!opts.token && opts.username && opts.password) {\n repoUrl.username = opts.username;\n repoUrl.password = opts.password;\n }\n return repoUrl.toString();\n}\n\nexport function getRepoGitUrl(\n repository: string,\n defaultEndpoint: string,\n gitUrl: GitUrlOption | undefined,\n info: BbsRestRepo,\n opts: HostRule,\n): string {\n switch (gitUrl) {\n case 'endpoint': {\n const generatedUrl = generateUrlFromEndpoint(\n defaultEndpoint,\n opts,\n repository,\n );\n logger.debug(`Using endpoint URL: ${generatedUrl}`);\n return generatedUrl;\n }\n case 'ssh': {\n const sshUrl = info.links.clone?.find(({ name }) => name === 'ssh');\n if (sshUrl === undefined) {\n throw new Error(CONFIG_GIT_URL_UNAVAILABLE);\n }\n logger.debug(`Using ssh URL: ${sshUrl.href}`);\n return sshUrl.href;\n }\n case undefined:\n case 'default': {\n let cloneUrl = info.links.clone?.find(({ name }) => name === 'http');\n if (cloneUrl) {\n // Inject auth into the API provided URL\n return injectAuth(cloneUrl.href, opts);\n }\n // Http access might be disabled, try to find ssh url in this case\n cloneUrl = info.links.clone?.find(({ name }) => name === 'ssh');\n if (cloneUrl) {\n return cloneUrl.href;\n }\n // SSH urls can be used directly\n return generateUrlFromEndpoint(defaultEndpoint, opts, repository);\n }\n }\n}\n\nexport function getExtraCloneOpts(opts: HostRule): GitOptions {\n if (opts.token) {\n return {\n '-c': `http.extraHeader=Authorization: Bearer ${opts.token}`,\n };\n }\n return {};\n}\n\nexport function splitEscapedSpaces(str: string): string[] {\n const parts = str.split(' ');\n const result: string[] = [];\n let last: string | undefined;\n\n for (const part of parts) {\n if (last?.endsWith('\\\\\\\\')) {\n result[result.length - 1] = last.slice(0, -2) + ' ' + part;\n } else {\n result.push(part);\n }\n last = result.at(-1);\n }\n\n return result;\n}\n\nexport function parseModifier(value: string): number | null {\n const match = regEx('^random(?:\\\\((\\\\d+)\\\\))?$').exec(value);\n if (!match) {\n return null;\n }\n return parseInt(match[1] ?? '1');\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","names":["git.getUrl"],"sources":["../../../../lib/modules/platform/bitbucket-server/utils.ts"],"sourcesContent":["// SEE for the reference https://github.com/renovatebot/renovate/blob/c3e9e572b225085448d94aa121c7ec81c14d3955/lib/platform/bitbucket/utils.js\nimport { isNonEmptyString } from '@sindresorhus/is';\nimport { CONFIG_GIT_URL_UNAVAILABLE } from '../../../constants/error-messages.ts';\nimport { logger } from '../../../logger/index.ts';\nimport type { GitOptions, GitProtocol } from '../../../types/git.ts';\nimport type { HostRule } from '../../../types/index.ts';\nimport * as git from '../../../util/git/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { ensureTrailingSlash, parseUrl } from '../../../util/url.ts';\nimport { getPrBodyStruct } from '../pr-body.ts';\nimport type { GitUrlOption } from '../types.ts';\nimport type { BbsPr, BbsRestPr, BbsRestRepo, BitbucketError } from './types.ts';\n\nexport const BITBUCKET_INVALID_REVIEWERS_EXCEPTION =\n 'com.atlassian.bitbucket.pull.InvalidPullRequestReviewersException';\n\n// https://docs.atlassian.com/bitbucket-server/rest/6.0.0/bitbucket-rest.html#idp250\nconst prStateMapping: any = {\n MERGED: 'merged',\n DECLINED: 'closed',\n OPEN: 'open',\n};\n\nexport function prInfo(pr: BbsRestPr): BbsPr {\n return {\n version: pr.version,\n number: pr.id,\n bodyStruct: getPrBodyStruct(pr.description),\n sourceBranch: pr.fromRef.displayId,\n targetBranch: pr.toRef.displayId,\n title: pr.title,\n state: prStateMapping[pr.state],\n createdAt: pr.createdDate,\n };\n}\n\nexport interface BitbucketCommitStatus {\n failed: number;\n inProgress: number;\n successful: number;\n}\n\nexport type BitbucketBranchState =\n | 'SUCCESSFUL'\n | 'FAILED'\n | 'INPROGRESS'\n | 'STOPPED';\n\nexport interface BitbucketStatus {\n key: string;\n state: BitbucketBranchState;\n}\n\nexport function isInvalidReviewersResponse(err: BitbucketError): boolean {\n const errors = err?.response?.body?.errors ?? [];\n return (\n errors.length > 0 &&\n errors.every(\n (error) => error.exceptionName === BITBUCKET_INVALID_REVIEWERS_EXCEPTION,\n )\n );\n}\n\nexport function getInvalidReviewers(err: BitbucketError): string[] {\n const errors = err?.response?.body?.errors ?? [];\n let invalidReviewers: string[] = [];\n for (const error of errors) {\n // v8 ignore else -- TODO: add test #40625\n if (error.exceptionName === BITBUCKET_INVALID_REVIEWERS_EXCEPTION) {\n invalidReviewers = invalidReviewers.concat(\n error.reviewerErrors\n ?.map(({ context }) => context)\n .filter(isNonEmptyString) ?? [],\n );\n }\n }\n\n return invalidReviewers;\n}\n\nfunction generateUrlFromEndpoint(\n defaultEndpoint: string,\n opts: HostRule,\n repository: string,\n): string {\n const url = new URL(defaultEndpoint);\n const authString =\n opts.username && opts.password\n ? `${opts.username}:${opts.password}`\n : (opts.username ?? '');\n\n const generatedUrl = git.getUrl({\n protocol: url.protocol as GitProtocol,\n // TODO: types (#22198)\n auth: authString,\n host: `${url.host}${ensureTrailingSlash(url.pathname)}scm`,\n repository,\n });\n logger.debug(`Using generated endpoint URL: ${generatedUrl}`);\n return generatedUrl;\n}\n\nfunction injectAuth(url: string, opts: HostRule): string {\n const repoUrl = parseUrl(url)!;\n if (!repoUrl) {\n logger.debug(`Invalid url: ${url}`);\n throw new Error(CONFIG_GIT_URL_UNAVAILABLE);\n }\n // v8 ignore else -- TODO: add test #40625\n if (!opts.token && opts.username && opts.password) {\n repoUrl.username = opts.username;\n repoUrl.password = opts.password;\n }\n return repoUrl.toString();\n}\n\nexport function getRepoGitUrl(\n repository: string,\n defaultEndpoint: string,\n gitUrl: GitUrlOption | undefined,\n info: BbsRestRepo,\n opts: HostRule,\n): string {\n switch (gitUrl) {\n case 'endpoint': {\n const generatedUrl = generateUrlFromEndpoint(\n defaultEndpoint,\n opts,\n repository,\n );\n logger.debug(`Using endpoint URL: ${generatedUrl}`);\n return generatedUrl;\n }\n case 'ssh': {\n const sshUrl = info.links.clone?.find(({ name }) => name === 'ssh');\n if (sshUrl === undefined) {\n throw new Error(CONFIG_GIT_URL_UNAVAILABLE);\n }\n logger.debug(`Using ssh URL: ${sshUrl.href}`);\n return sshUrl.href;\n }\n case undefined:\n case 'default': {\n let cloneUrl = info.links.clone?.find(({ name }) => name === 'http');\n if (cloneUrl) {\n // Inject auth into the API provided URL\n return injectAuth(cloneUrl.href, opts);\n }\n // Http access might be disabled, try to find ssh url in this case\n cloneUrl = info.links.clone?.find(({ name }) => name === 'ssh');\n if (cloneUrl) {\n return cloneUrl.href;\n }\n // SSH urls can be used directly\n return generateUrlFromEndpoint(defaultEndpoint, opts, repository);\n }\n }\n}\n\nexport function getExtraCloneOpts(opts: HostRule): GitOptions {\n if (opts.token) {\n return {\n '-c': `http.extraHeader=Authorization: Bearer ${opts.token}`,\n };\n }\n return {};\n}\n\nexport function splitEscapedSpaces(str: string): string[] {\n const parts = str.split(' ');\n const result: string[] = [];\n let last: string | undefined;\n\n for (const part of parts) {\n if (last?.endsWith('\\\\\\\\')) {\n result[result.length - 1] = last.slice(0, -2) + ' ' + part;\n } else {\n result.push(part);\n }\n last = result.at(-1);\n }\n\n return result;\n}\n\nexport function parseModifier(value: string): number | null {\n const match = regEx('^random(?:\\\\((\\\\d+)\\\\))?$').exec(value);\n if (!match) {\n return null;\n }\n return parseInt(match[1] ?? '1', 10);\n}\n"],"mappings":"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"}
@@ -118,7 +118,7 @@ async function getPrList() {
118
118
  destinationCommit: prInfo.pullRequestTargets[0].destinationCommit,
119
119
  sourceCommit: prInfo.pullRequestTargets[0].sourceCommit,
120
120
  state: prInfo.pullRequestStatus === PullRequestStatusEnum.OPEN ? "open" : "closed",
121
- number: Number.parseInt(prId),
121
+ number: Number.parseInt(prId, 10),
122
122
  title: prInfo.title,
123
123
  body: prInfo.description,
124
124
  createdAt: prInfo.creationDate?.toISOString()
@@ -217,7 +217,7 @@ async function createPr({ sourceBranch, targetBranch, prTitle: title, prBody: bo
217
217
  const prCreateRes = await createPr$1(title, sanitize(description), sourceBranch, targetBranch, config.repository);
218
218
  if (!prCreateRes.pullRequest?.title || !prCreateRes.pullRequest?.pullRequestId || !prCreateRes.pullRequest?.description || !prCreateRes.pullRequest?.pullRequestTargets?.length) throw new Error("Could not create pr, missing PR info");
219
219
  return {
220
- number: Number.parseInt(prCreateRes.pullRequest.pullRequestId),
220
+ number: Number.parseInt(prCreateRes.pullRequest.pullRequestId, 10),
221
221
  state: "open",
222
222
  title: prCreateRes.pullRequest.title,
223
223
  sourceBranch,