renovate 44.115.0 → 44.115.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/options/index.js +1 -1
- package/dist/config/options/index.js.map +1 -1
- package/dist/global-config-option-defaults.generated.js +1 -1
- package/dist/global-config-option-defaults.generated.js.map +1 -1
- package/dist/modules/datasource/artifactory/index.js +0 -1
- package/dist/modules/datasource/artifactory/index.js.map +1 -1
- package/dist/modules/datasource/aws-eks-addon/index.js +0 -1
- package/dist/modules/datasource/aws-eks-addon/index.js.map +1 -1
- package/dist/modules/datasource/aws-machine-image/index.js +0 -1
- package/dist/modules/datasource/aws-machine-image/index.js.map +1 -1
- package/dist/modules/datasource/aws-rds/index.js +0 -1
- package/dist/modules/datasource/aws-rds/index.js.map +1 -1
- package/dist/modules/datasource/bazel/index.js +0 -1
- package/dist/modules/datasource/bazel/index.js.map +1 -1
- package/dist/modules/datasource/conan/index.js +0 -1
- package/dist/modules/datasource/conan/index.js.map +1 -1
- package/dist/modules/datasource/conda/index.js +0 -1
- package/dist/modules/datasource/conda/index.js.map +1 -1
- package/dist/modules/datasource/dotnet-version/index.js +0 -1
- package/dist/modules/datasource/dotnet-version/index.js.map +1 -1
- package/dist/modules/datasource/endoflife-date/index.js +0 -1
- package/dist/modules/datasource/endoflife-date/index.js.map +1 -1
- package/dist/modules/datasource/galaxy-collection/index.js +1 -1
- package/dist/modules/datasource/galaxy-collection/index.js.map +1 -1
- package/dist/modules/datasource/gitlab-packages/index.js +0 -1
- package/dist/modules/datasource/gitlab-packages/index.js.map +1 -1
- package/dist/modules/datasource/hexpm-bob/index.js +0 -1
- package/dist/modules/datasource/hexpm-bob/index.js.map +1 -1
- package/dist/modules/datasource/java-version/index.js +0 -1
- package/dist/modules/datasource/java-version/index.js.map +1 -1
- package/dist/modules/datasource/node-version/index.js +0 -1
- package/dist/modules/datasource/node-version/index.js.map +1 -1
- package/dist/modules/datasource/python-version/index.js +0 -1
- package/dist/modules/datasource/python-version/index.js.map +1 -1
- package/dist/modules/datasource/rust-version/index.js +0 -1
- package/dist/modules/datasource/rust-version/index.js.map +1 -1
- package/dist/modules/manager/fingerprint.generated.js +1 -1
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/helm-requirements/extract.js +12 -17
- package/dist/modules/manager/helm-requirements/extract.js.map +1 -1
- package/package.json +3 -3
- package/renovate-schema.json +2 -2
|
@@ -23,7 +23,7 @@ const globalConfigOptionDefaults = {
|
|
|
23
23
|
"detectHostRulesFromEnv": false,
|
|
24
24
|
"dockerChildPrefix": "renovate_",
|
|
25
25
|
"dockerMaxPages": 20,
|
|
26
|
-
"dockerSidecarImage": "ghcr.io/renovatebot/base-image:13.102.
|
|
26
|
+
"dockerSidecarImage": "ghcr.io/renovatebot/base-image:13.102.2",
|
|
27
27
|
"dockerUser": "12021",
|
|
28
28
|
"executionTimeout": 15,
|
|
29
29
|
"exitCodeForErrors": false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-config-option-defaults.generated.js","names":[],"sources":["../lib/global-config-option-defaults.generated.ts"],"sourcesContent":["\nexport const globalConfigOptionDefaults: Record<string, unknown> = {\n \"allowCustomCrateRegistries\": false,\n \"allowedCommands\": [],\n \"allowedEnv\": [],\n \"allowedHeaders\": [\n \"X-*\"\n ],\n \"allowedUnsafeExecutions\": [],\n \"allowPlugins\": false,\n \"allowScripts\": false,\n \"allowShellExecutorForPostUpgradeCommands\": false,\n \"autodiscover\": false,\n \"bbUseDevelopmentBranch\": false,\n \"binarySource\": \"install\",\n \"cacheHardTtlMinutes\": 10080,\n \"cachePrivatePackages\": false,\n \"cacheTtlOverride\": {},\n \"checkedBranches\": [],\n \"configValidationError\": false,\n \"customEnvVariables\": {},\n \"deleteAdditionalConfigFile\": false,\n \"deleteConfigFile\": false,\n \"detectGlobalManagerConfig\": false,\n \"detectHostRulesFromEnv\": false,\n \"dockerChildPrefix\": \"renovate_\",\n \"dockerMaxPages\": 20,\n \"dockerSidecarImage\": \"ghcr.io/renovatebot/base-image:13.102.
|
|
1
|
+
{"version":3,"file":"global-config-option-defaults.generated.js","names":[],"sources":["../lib/global-config-option-defaults.generated.ts"],"sourcesContent":["\nexport const globalConfigOptionDefaults: Record<string, unknown> = {\n \"allowCustomCrateRegistries\": false,\n \"allowedCommands\": [],\n \"allowedEnv\": [],\n \"allowedHeaders\": [\n \"X-*\"\n ],\n \"allowedUnsafeExecutions\": [],\n \"allowPlugins\": false,\n \"allowScripts\": false,\n \"allowShellExecutorForPostUpgradeCommands\": false,\n \"autodiscover\": false,\n \"bbUseDevelopmentBranch\": false,\n \"binarySource\": \"install\",\n \"cacheHardTtlMinutes\": 10080,\n \"cachePrivatePackages\": false,\n \"cacheTtlOverride\": {},\n \"checkedBranches\": [],\n \"configValidationError\": false,\n \"customEnvVariables\": {},\n \"deleteAdditionalConfigFile\": false,\n \"deleteConfigFile\": false,\n \"detectGlobalManagerConfig\": false,\n \"detectHostRulesFromEnv\": false,\n \"dockerChildPrefix\": \"renovate_\",\n \"dockerMaxPages\": 20,\n \"dockerSidecarImage\": \"ghcr.io/renovatebot/base-image:13.102.2\",\n \"dockerUser\": \"12021\",\n \"executionTimeout\": 15,\n \"exitCodeForErrors\": false,\n \"exposeAllEnv\": false,\n \"forceCli\": true,\n \"forkCreation\": true,\n \"githubTokenWarn\": true,\n \"gitNoVerify\": [\n \"commit\",\n \"push\"\n ],\n \"gitTimeout\": 0,\n \"gitUrl\": \"default\",\n \"httpCacheTtlDays\": 90,\n \"ignorePrAuthor\": false,\n \"includeMirrors\": false,\n \"inheritConfig\": false,\n \"inheritConfigFileName\": \"org-inherited-config.json\",\n \"inheritConfigRepoName\": \"{{parentOrg}}/renovate-config\",\n \"inheritConfigStrict\": false,\n \"inheritConfigTrusted\": false,\n \"internalHostAccess\": \"warn\",\n \"mergeConfidenceDatasources\": [\n \"go\",\n \"maven\",\n \"npm\",\n \"nuget\",\n \"packagist\",\n \"pypi\",\n \"rubygems\"\n ],\n \"mergeConfidenceEndpoint\": \"https://developer.mend.io/\",\n \"migratePresets\": {},\n \"onboardingBranch\": \"renovate/configure\",\n \"onboardingConfig\": {\n \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\"\n },\n \"onboardingConfigFileName\": \"renovate.json\",\n \"onboardingNoDeps\": \"auto\",\n \"onboardingPrTitle\": \"Configure Renovate\",\n \"onboardingRebaseCheckbox\": false,\n \"optimizeForDisabled\": false,\n \"persistRepoData\": false,\n \"platform\": \"github\",\n \"prCacheSyncMaxPages\": 100,\n \"prCommitsPerRunLimit\": 0,\n \"presetCachePersistence\": false,\n \"processEnv\": {},\n \"productLinks\": {\n \"documentation\": \"https://docs.renovatebot.com/\",\n \"help\": \"https://github.com/renovatebot/renovate/discussions\",\n \"homepage\": \"https://github.com/renovatebot/renovate\"\n },\n \"rebaseAllOpenBranches\": false,\n \"reportFormatting\": false,\n \"repositoryCache\": \"disabled\",\n \"repositoryCacheForceLocal\": false,\n \"repositoryCacheType\": \"local\",\n \"requireConfig\": \"required\",\n \"s3PathStyle\": false,\n \"secrets\": {},\n \"unicodeEmoji\": true,\n \"useCloudMetadataServices\": true,\n \"userAgent\": \"Renovate/{{renovateVersion}} (https://github.com/renovatebot/renovate)\",\n \"variables\": {}\n};\n"],"mappings":";AACA,MAAa,6BAAsD;CACjE,8BAA8B;CAC9B,mBAAmB,CAAC;CACpB,cAAc,CAAC;CACf,kBAAkB,CAChB,KACF;CACA,2BAA2B,CAAC;CAC5B,gBAAgB;CAChB,gBAAgB;CAChB,4CAA4C;CAC5C,gBAAgB;CAChB,0BAA0B;CAC1B,gBAAgB;CAChB,uBAAuB;CACvB,wBAAwB;CACxB,oBAAoB,CAAC;CACrB,mBAAmB,CAAC;CACpB,yBAAyB;CACzB,sBAAsB,CAAC;CACvB,8BAA8B;CAC9B,oBAAoB;CACpB,6BAA6B;CAC7B,0BAA0B;CAC1B,qBAAqB;CACrB,kBAAkB;CAClB,sBAAsB;CACtB,cAAc;CACd,oBAAoB;CACpB,qBAAqB;CACrB,gBAAgB;CAChB,YAAY;CACZ,gBAAgB;CAChB,mBAAmB;CACnB,eAAe,CACb,UACA,MACF;CACA,cAAc;CACd,UAAU;CACV,oBAAoB;CACpB,kBAAkB;CAClB,kBAAkB;CAClB,iBAAiB;CACjB,yBAAyB;CACzB,yBAAyB;CACzB,uBAAuB;CACvB,wBAAwB;CACxB,sBAAsB;CACtB,8BAA8B;EAC5B;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,2BAA2B;CAC3B,kBAAkB,CAAC;CACnB,oBAAoB;CACpB,oBAAoB,EAClB,WAAW,oDACb;CACA,4BAA4B;CAC5B,oBAAoB;CACpB,qBAAqB;CACrB,4BAA4B;CAC5B,uBAAuB;CACvB,mBAAmB;CACnB,YAAY;CACZ,uBAAuB;CACvB,wBAAwB;CACxB,0BAA0B;CAC1B,cAAc,CAAC;CACf,gBAAgB;EACd,iBAAiB;EACjB,QAAQ;EACR,YAAY;CACd;CACA,yBAAyB;CACzB,oBAAoB;CACpB,mBAAmB;CACnB,6BAA6B;CAC7B,uBAAuB;CACvB,iBAAiB;CACjB,eAAe;CACf,WAAW,CAAC;CACZ,gBAAgB;CAChB,4BAA4B;CAC5B,aAAa;CACb,aAAa,CAAC;AAChB"}
|
|
@@ -16,7 +16,6 @@ var ArtifactoryDatasource = class extends Datasource {
|
|
|
16
16
|
supportsCustomRegistry(_packageName) {
|
|
17
17
|
return true;
|
|
18
18
|
}
|
|
19
|
-
caching = true;
|
|
20
19
|
registryStrategy = "merge";
|
|
21
20
|
releaseTimestampSupport = true;
|
|
22
21
|
releaseTimestampNote = "The release timestamp is determined from the date-like text, next to the version hyperlink tag in the results.";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["HttpError"],"sources":["../../../../lib/modules/datasource/artifactory/index.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport { parse } from '../../../util/html.ts';\nimport { HttpError } from '../../../util/http/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { asTimestamp } from '../../../util/timestamp.ts';\nimport { joinUrlParts } from '../../../util/url.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types.ts';\nimport { datasource } from './common.ts';\n\nexport class ArtifactoryDatasource extends Datasource {\n static readonly id = datasource;\n\n constructor() {\n super(datasource);\n }\n\n override supportsCustomRegistry(_packageName: string): boolean {\n return true;\n }\n\n override readonly
|
|
1
|
+
{"version":3,"file":"index.js","names":["HttpError"],"sources":["../../../../lib/modules/datasource/artifactory/index.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport { parse } from '../../../util/html.ts';\nimport { HttpError } from '../../../util/http/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { asTimestamp } from '../../../util/timestamp.ts';\nimport { joinUrlParts } from '../../../util/url.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types.ts';\nimport { datasource } from './common.ts';\n\nexport class ArtifactoryDatasource extends Datasource {\n static readonly id = datasource;\n\n constructor() {\n super(datasource);\n }\n\n override supportsCustomRegistry(_packageName: string): boolean {\n return true;\n }\n\n override readonly registryStrategy = 'merge';\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the date-like text, next to the version hyperlink tag in the results.';\n\n private async fetchReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n if (!registryUrl) {\n logger.warn(\n { packageName },\n 'artifactory datasource requires custom registryUrl. Skipping datasource',\n );\n return null;\n }\n\n const url = joinUrlParts(registryUrl, packageName);\n\n const result: ReleaseResult = {\n releases: [],\n };\n try {\n const response = await this.http.getText(url);\n const body = parse(response.body, {\n blockTextElements: {\n script: true,\n noscript: true,\n style: true,\n },\n });\n const nodes = body.querySelectorAll('a');\n\n nodes\n .filter(\n // filter out hyperlink to navigate to parent folder\n (node) => node.innerHTML !== '../' && node.innerHTML !== '..',\n )\n .forEach(\n // extract version and published time for each node\n (node) => {\n const version: string = node.innerHTML.endsWith('/')\n ? node.innerHTML.slice(0, -1)\n : node.innerHTML;\n\n const releaseTimestamp = asTimestamp(\n node.nextSibling?.text?.trimStart()?.split(regEx(/\\s{2,}/))?.[0],\n );\n\n const thisRelease: Release = {\n version,\n releaseTimestamp,\n };\n\n result.releases.push(thisRelease);\n },\n );\n\n if (result.releases.length) {\n logger.trace(\n { registryUrl, packageName, versions: result.releases.length },\n 'artifactory: Found versions',\n );\n } else {\n logger.trace(\n { registryUrl, packageName },\n 'artifactory: No versions found',\n );\n }\n } catch (err) {\n if (err instanceof HttpError && err.response?.statusCode === 404) {\n logger.warn(\n { registryUrl, packageName },\n 'artifactory: `Not Found` error',\n );\n return null;\n }\n this.handleGenericErrors(err);\n }\n\n return result.releases.length ? result : null;\n }\n\n getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n return this.cached(\n {\n key: `${config.registryUrl}:${config.packageName}`,\n fallback: true,\n },\n () => this.fetchReleases(config),\n );\n }\n}\n"],"mappings":";;;;;;;;;;AAUA,IAAa,wBAAb,cAA2C,WAAW;CACpD,OAAgB,KAAK;CAErB,cAAc;EACZ,MAAM,UAAU;CAClB;CAEA,uBAAgC,cAA+B;EAC7D,OAAO;CACT;CAEA,mBAAqC;CAErC,0BAA4C;CAC5C,uBACE;CAEF,MAAc,cAAc,EAC1B,aACA,eACmD;EACnD,IAAI,CAAC,aAAa;GAChB,OAAO,KACL,EAAE,YAAY,GACd,yEACF;GACA,OAAO;EACT;EAEA,MAAM,MAAM,aAAa,aAAa,WAAW;EAEjD,MAAM,SAAwB,EAC5B,UAAU,CAAC,EACb;EACA,IAAI;GACF,MAAM,WAAW,MAAM,KAAK,KAAK,QAAQ,GAAG;GAU5C,MATmB,SAAS,MAAM,EAChC,mBAAmB;IACjB,QAAQ;IACR,UAAU;IACV,OAAO;GACT,EACF,CACiB,CAAC,CAAC,iBAAiB,GAEhC,CAAC,CACF,QAEE,SAAS,KAAK,cAAc,SAAS,KAAK,cAAc,IAC3D,CAAC,CACA,SAEE,SAAS;IASR,MAAM,cAAuB;KAC3B,SATsB,KAAK,UAAU,SAAS,GAAG,IAC/C,KAAK,UAAU,MAAM,GAAG,EAAE,IAC1B,KAAK;KAQP,kBANuB,YACvB,KAAK,aAAa,MAAM,UAAU,CAAC,EAAE,MAAM,MAAM,QAAQ,CAAC,CAAC,GAAG,EAK/C;IACjB;IAEA,OAAO,SAAS,KAAK,WAAW;GAClC,CACF;GAEF,IAAI,OAAO,SAAS,QAClB,OAAO,MACL;IAAE;IAAa;IAAa,UAAU,OAAO,SAAS;GAAO,GAC7D,6BACF;QAEA,OAAO,MACL;IAAE;IAAa;GAAY,GAC3B,gCACF;EAEJ,SAAS,KAAK;GACZ,IAAI,eAAeA,gBAAa,IAAI,UAAU,eAAe,KAAK;IAChE,OAAO,KACL;KAAE;KAAa;IAAY,GAC3B,gCACF;IACA,OAAO;GACT;GACA,KAAK,oBAAoB,GAAG;EAC9B;EAEA,OAAO,OAAO,SAAS,SAAS,SAAS;CAC3C;CAEA,YAAY,QAA0D;EACpE,OAAO,KAAK,OACV;GACE,KAAK,GAAG,OAAO,YAAY,GAAG,OAAO;GACrC,UAAU;EACZ,SACM,KAAK,cAAc,MAAM,CACjC;CACF;AACF"}
|
|
@@ -11,7 +11,6 @@ import { fromNodeProviderChain } from "@aws-sdk/credential-providers";
|
|
|
11
11
|
var AwsEKSAddonDataSource = class AwsEKSAddonDataSource extends Datasource {
|
|
12
12
|
static id = "aws-eks-addon";
|
|
13
13
|
defaultVersioning = id;
|
|
14
|
-
caching = true;
|
|
15
14
|
clients = {};
|
|
16
15
|
constructor() {
|
|
17
16
|
super(AwsEKSAddonDataSource.id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["awsEksAddonVersioning.id","hostRules.find"],"sources":["../../../../lib/modules/datasource/aws-eks-addon/index.ts"],"sourcesContent":["import { DescribeAddonVersionsCommand, EKSClient } from '@aws-sdk/client-eks';\nimport { fromNodeProviderChain } from '@aws-sdk/credential-providers';\nimport { isTruthy } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport * as hostRules from '../../../util/host-rules.ts';\nimport * as awsEksAddonVersioning from '../../versioning/aws-eks-addon/index.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, ReleaseResult } from '../types.ts';\nimport { EksAddonsFilter } from './schema.ts';\n\nexport class AwsEKSAddonDataSource extends Datasource {\n static readonly id = 'aws-eks-addon';\n\n override readonly defaultVersioning = awsEksAddonVersioning.id;\n
|
|
1
|
+
{"version":3,"file":"index.js","names":["awsEksAddonVersioning.id","hostRules.find"],"sources":["../../../../lib/modules/datasource/aws-eks-addon/index.ts"],"sourcesContent":["import { DescribeAddonVersionsCommand, EKSClient } from '@aws-sdk/client-eks';\nimport { fromNodeProviderChain } from '@aws-sdk/credential-providers';\nimport { isTruthy } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport * as hostRules from '../../../util/host-rules.ts';\nimport * as awsEksAddonVersioning from '../../versioning/aws-eks-addon/index.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, ReleaseResult } from '../types.ts';\nimport { EksAddonsFilter } from './schema.ts';\n\nexport class AwsEKSAddonDataSource extends Datasource {\n static readonly id = 'aws-eks-addon';\n\n override readonly defaultVersioning = awsEksAddonVersioning.id;\n private readonly clients: Record<string, EKSClient> = {};\n\n constructor() {\n super(AwsEKSAddonDataSource.id);\n }\n\n private async fetchReleases({\n packageName: serializedFilter,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n const res = EksAddonsFilter.safeParse(serializedFilter);\n if (!res.success) {\n logger.warn(\n { err: res.error, serializedFilter },\n 'Error parsing eks-addons config.',\n );\n return null;\n }\n\n const filter = res.data;\n\n const cmd = new DescribeAddonVersionsCommand({\n kubernetesVersion: filter.kubernetesVersion,\n addonName: filter.addonName,\n maxResults: 1,\n });\n const response = await this.getClient(filter).send(cmd);\n const addons = coerceArray(response.addons);\n return {\n releases: addons\n .flatMap((addon) => {\n return addon.addonVersions;\n })\n .filter(isTruthy)\n .map((versionInfo) => ({\n version: versionInfo.addonVersion ?? '',\n default:\n versionInfo.compatibilities?.some((comp) => comp.defaultVersion) ??\n false,\n compatibleWith: versionInfo.compatibilities?.flatMap(\n (comp) => comp.clusterVersion,\n ),\n }))\n .filter((release) => release.version && release.version !== '')\n .filter((release) => {\n if (filter.default) {\n return release.default && release.default === filter.default;\n }\n return true;\n }),\n };\n }\n\n getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n return this.cached(\n {\n key: `getReleases:${config.packageName}`,\n fallback: true,\n },\n () => this.fetchReleases(config),\n );\n }\n\n private getClient({ region, profile }: EksAddonsFilter): EKSClient {\n const cacheKey = `${region ?? 'default'}#${profile ?? 'default'}`;\n if (!(cacheKey in this.clients)) {\n const { password, token, username } = hostRules.find({\n hostType: AwsEKSAddonDataSource.id,\n });\n this.clients[cacheKey] = new EKSClient({\n ...(region && { region }),\n credentials:\n username && password\n ? {\n accessKeyId: username,\n secretAccessKey: password,\n sessionToken: token,\n }\n : fromNodeProviderChain(profile ? { profile } : undefined),\n });\n }\n return this.clients[cacheKey];\n }\n}\n"],"mappings":";;;;;;;;;;AAWA,IAAa,wBAAb,MAAa,8BAA8B,WAAW;CACpD,OAAgB,KAAK;CAErB,oBAAsCA;CACtC,UAAsD,CAAC;CAEvD,cAAc;EACZ,MAAM,sBAAsB,EAAE;CAChC;CAEA,MAAc,cAAc,EAC1B,aAAa,oBACsC;EACnD,MAAM,MAAM,gBAAgB,UAAU,gBAAgB;EACtD,IAAI,CAAC,IAAI,SAAS;GAChB,OAAO,KACL;IAAE,KAAK,IAAI;IAAO;GAAiB,GACnC,kCACF;GACA,OAAO;EACT;EAEA,MAAM,SAAS,IAAI;EAEnB,MAAM,MAAM,IAAI,6BAA6B;GAC3C,mBAAmB,OAAO;GAC1B,WAAW,OAAO;GAClB,YAAY;EACd,CAAC;EACD,MAAM,WAAW,MAAM,KAAK,UAAU,MAAM,CAAC,CAAC,KAAK,GAAG;EAEtD,OAAO,EACL,UAFa,YAAY,SAAS,MAEnB,CAAC,CACb,SAAS,UAAU;GAClB,OAAO,MAAM;EACf,CAAC,CAAC,CACD,OAAO,QAAQ,CAAC,CAChB,KAAK,iBAAiB;GACrB,SAAS,YAAY,gBAAgB;GACrC,SACE,YAAY,iBAAiB,MAAM,SAAS,KAAK,cAAc,KAC/D;GACF,gBAAgB,YAAY,iBAAiB,SAC1C,SAAS,KAAK,cACjB;EACF,EAAE,CAAC,CACF,QAAQ,YAAY,QAAQ,WAAW,QAAQ,YAAY,EAAE,CAAC,CAC9D,QAAQ,YAAY;GACnB,IAAI,OAAO,SACT,OAAO,QAAQ,WAAW,QAAQ,YAAY,OAAO;GAEvD,OAAO;EACT,CAAC,EACL;CACF;CAEA,YAAY,QAA0D;EACpE,OAAO,KAAK,OACV;GACE,KAAK,eAAe,OAAO;GAC3B,UAAU;EACZ,SACM,KAAK,cAAc,MAAM,CACjC;CACF;CAEA,UAAkB,EAAE,QAAQ,WAAuC;EACjE,MAAM,WAAW,GAAG,UAAU,UAAU,GAAG,WAAW;EACtD,IAAI,EAAE,YAAY,KAAK,UAAU;GAC/B,MAAM,EAAE,UAAU,OAAO,aAAaC,KAAe,EACnD,UAAU,sBAAsB,GAClC,CAAC;GACD,KAAK,QAAQ,YAAY,IAAI,UAAU;IACrC,GAAI,UAAU,EAAE,OAAO;IACvB,aACE,YAAY,WACR;KACE,aAAa;KACb,iBAAiB;KACjB,cAAc;IAChB,IACA,sBAAsB,UAAU,EAAE,QAAQ,IAAI,KAAA,CAAS;GAC/D,CAAC;EACH;EACA,OAAO,KAAK,QAAQ;CACtB;AACF"}
|
|
@@ -9,7 +9,6 @@ import { DescribeImagesCommand, EC2Client } from "@aws-sdk/client-ec2";
|
|
|
9
9
|
var AwsMachineImageDatasource = class AwsMachineImageDatasource extends Datasource {
|
|
10
10
|
static id = "aws-machine-image";
|
|
11
11
|
defaultVersioning = id;
|
|
12
|
-
caching = true;
|
|
13
12
|
releaseTimestampSupport = true;
|
|
14
13
|
releaseTimestampNote = "The release timestamp is determined from the `CreationDate` field in the results.";
|
|
15
14
|
defaultConfig = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["amazonMachineImageVersioning.id","hostRules.find"],"sources":["../../../../lib/modules/datasource/aws-machine-image/index.ts"],"sourcesContent":["import type { Filter, Image } from '@aws-sdk/client-ec2';\nimport { DescribeImagesCommand, EC2Client } from '@aws-sdk/client-ec2';\nimport { fromNodeProviderChain } from '@aws-sdk/credential-providers';\nimport { coerceArray } from '../../../util/array.ts';\nimport * as hostRules from '../../../util/host-rules.ts';\nimport { asTimestamp } from '../../../util/timestamp.ts';\nimport * as amazonMachineImageVersioning from '../../versioning/aws-machine-image/index.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, ReleaseResult } from '../types.ts';\nimport type { AwsClientConfig, ParsedConfig } from './types.ts';\n\nexport class AwsMachineImageDatasource extends Datasource {\n static readonly id = 'aws-machine-image';\n\n override readonly defaultVersioning = amazonMachineImageVersioning.id;\n\n override readonly
|
|
1
|
+
{"version":3,"file":"index.js","names":["amazonMachineImageVersioning.id","hostRules.find"],"sources":["../../../../lib/modules/datasource/aws-machine-image/index.ts"],"sourcesContent":["import type { Filter, Image } from '@aws-sdk/client-ec2';\nimport { DescribeImagesCommand, EC2Client } from '@aws-sdk/client-ec2';\nimport { fromNodeProviderChain } from '@aws-sdk/credential-providers';\nimport { coerceArray } from '../../../util/array.ts';\nimport * as hostRules from '../../../util/host-rules.ts';\nimport { asTimestamp } from '../../../util/timestamp.ts';\nimport * as amazonMachineImageVersioning from '../../versioning/aws-machine-image/index.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, ReleaseResult } from '../types.ts';\nimport type { AwsClientConfig, ParsedConfig } from './types.ts';\n\nexport class AwsMachineImageDatasource extends Datasource {\n static readonly id = 'aws-machine-image';\n\n override readonly defaultVersioning = amazonMachineImageVersioning.id;\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `CreationDate` field in the results.';\n\n override readonly defaultConfig = {\n // Because AMIs don't follow any versioning scheme, we override commitMessageExtra to remove the 'v'\n commitMessageExtra: 'to {{{newVersion}}}',\n prBodyColumns: ['Change', 'Image'],\n prBodyDefinitions: {\n Image: '```{{{newDigest}}}```',\n },\n digest: {\n // Because newDigestShort will allways be 'amazon-' we override to print the name of the AMI\n commitMessageExtra: 'to {{{newDigest}}}',\n prBodyColumns: ['Image'],\n prBodyDefinitions: {\n Image: '```{{{newDigest}}}```',\n },\n },\n };\n\n private readonly now: number;\n\n constructor() {\n super(AwsMachineImageDatasource.id);\n this.now = Date.now();\n }\n\n private isAmiFilter(config: Filter | AwsClientConfig): config is Filter {\n return 'Name' in config && 'Values' in config;\n }\n\n private getEC2Client(config: AwsClientConfig): EC2Client {\n const { profile, region } = config;\n const { password, token, username } = hostRules.find({\n hostType: AwsMachineImageDatasource.id,\n });\n return new EC2Client({\n region,\n credentials:\n username && password\n ? {\n accessKeyId: username,\n secretAccessKey: password,\n sessionToken: token,\n }\n : fromNodeProviderChain({ profile }),\n });\n }\n\n private getAmiFilterCommand(filter: Filter[]): DescribeImagesCommand {\n return new DescribeImagesCommand({\n Filters: filter,\n });\n }\n\n loadConfig(serializedAmiFilter: string): [Filter[], AwsClientConfig] {\n const parsedConfig: ParsedConfig = JSON.parse(serializedAmiFilter);\n const filters = [];\n let config = {};\n for (const elem of parsedConfig) {\n if (this.isAmiFilter(elem)) {\n // Separate actual AMI filters from aws client config\n filters.push(elem);\n } else {\n // merge config objects if there are multiple\n config = Object.assign(config, elem);\n }\n }\n return [filters, config];\n }\n\n private async fetchSortedAwsMachineImages(\n serializedAmiFilter: string,\n ): Promise<Image[]> {\n const [amiFilter, clientConfig] = this.loadConfig(serializedAmiFilter);\n const amiFilterCmd = this.getAmiFilterCommand(amiFilter);\n const ec2Client = this.getEC2Client(clientConfig);\n const matchingImages = await ec2Client.send(amiFilterCmd);\n matchingImages.Images = coerceArray(matchingImages.Images);\n return matchingImages.Images.sort((image1, image2) => {\n const ts1 = image1.CreationDate\n ? Date.parse(image1.CreationDate)\n : /* v8 ignore next -- AWS SDK types CreationDate as optional, but EC2 always returns it for images */ 0; // TODO: add date coersion util\n\n const ts2 = image2.CreationDate\n ? Date.parse(image2.CreationDate)\n : /* v8 ignore next -- AWS SDK types CreationDate as optional, but EC2 always returns it for images */ 0; // TODO: add date coersion util\n return ts1 - ts2;\n });\n }\n\n getSortedAwsMachineImages(serializedAmiFilter: string): Promise<Image[]> {\n return this.cached(\n {\n key: `getSortedAwsMachineImages:${serializedAmiFilter}`,\n },\n () => this.fetchSortedAwsMachineImages(serializedAmiFilter),\n );\n }\n\n private async fetchDigest(\n { packageName: serializedAmiFilter }: GetReleasesConfig,\n newValue?: string,\n ): Promise<string | null> {\n const images = await this.getSortedAwsMachineImages(serializedAmiFilter);\n if (images.length < 1) {\n return null;\n }\n\n if (newValue) {\n const newValueMatchingImages = images.filter(\n (image) => image.ImageId === newValue,\n );\n if (\n newValueMatchingImages.length === 1 &&\n newValueMatchingImages[0].Name\n ) {\n return newValueMatchingImages[0].Name;\n }\n return null;\n }\n\n return images.at(-1)!.Name ?? null;\n }\n\n override getDigest(\n config: GetReleasesConfig,\n newValue?: string,\n ): Promise<string | null> {\n return this.cached(\n {\n key: `getDigest:${config.packageName}:${newValue ?? ''}`,\n fallback: true,\n },\n () => this.fetchDigest(config, newValue),\n );\n }\n\n private async fetchReleases({\n packageName: serializedAmiFilter,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n const images = await this.getSortedAwsMachineImages(serializedAmiFilter);\n if (!images.length || !images.at(-1)!.ImageId) {\n return null;\n }\n return {\n releases: images.map((image) => ({\n version: image.ImageId!,\n releaseTimestamp: asTimestamp(image.CreationDate),\n isDeprecated:\n Date.parse(image.DeprecationTime ?? this.now.toString()) < this.now,\n newDigest: image.Name,\n })),\n };\n }\n\n getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n return this.cached(\n {\n key: `getReleases:${config.packageName}`,\n fallback: true,\n },\n () => this.fetchReleases(config),\n );\n }\n}\n"],"mappings":"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"}
|
|
@@ -5,7 +5,6 @@ import { DescribeDBEngineVersionsCommand, RDSClient } from "@aws-sdk/client-rds"
|
|
|
5
5
|
//#region lib/modules/datasource/aws-rds/index.ts
|
|
6
6
|
var AwsRdsDatasource = class AwsRdsDatasource extends Datasource {
|
|
7
7
|
static id = "aws-rds";
|
|
8
|
-
caching = true;
|
|
9
8
|
rds;
|
|
10
9
|
constructor() {
|
|
11
10
|
super(AwsRdsDatasource.id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../lib/modules/datasource/aws-rds/index.ts"],"sourcesContent":["import {\n DescribeDBEngineVersionsCommand,\n RDSClient,\n} from '@aws-sdk/client-rds';\nimport { coerceArray } from '../../../util/array.ts';\nimport { Lazy } from '../../../util/lazy.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, ReleaseResult } from '../types.ts';\n\nexport class AwsRdsDatasource extends Datasource {\n static readonly id = 'aws-rds';\n\n
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../lib/modules/datasource/aws-rds/index.ts"],"sourcesContent":["import {\n DescribeDBEngineVersionsCommand,\n RDSClient,\n} from '@aws-sdk/client-rds';\nimport { coerceArray } from '../../../util/array.ts';\nimport { Lazy } from '../../../util/lazy.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, ReleaseResult } from '../types.ts';\n\nexport class AwsRdsDatasource extends Datasource {\n static readonly id = 'aws-rds';\n\n private readonly rds: Lazy<RDSClient>;\n\n constructor() {\n super(AwsRdsDatasource.id);\n this.rds = new Lazy(() => new RDSClient({}));\n }\n\n private async fetchReleases({\n packageName: serializedFilter,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n const cmd = new DescribeDBEngineVersionsCommand({\n Filters: JSON.parse(serializedFilter),\n });\n const response = await this.rds.getValue().send(cmd);\n const versions = coerceArray(response.DBEngineVersions);\n return {\n releases: versions\n .filter((version) => version.EngineVersion)\n .map((version) => ({\n version: version.EngineVersion!,\n isDeprecated: version.Status === 'deprecated',\n })),\n };\n }\n\n getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n return this.cached(\n {\n key: `getReleases:${config.packageName}`,\n fallback: true,\n },\n () => this.fetchReleases(config),\n );\n }\n}\n"],"mappings":";;;;;AASA,IAAa,mBAAb,MAAa,yBAAyB,WAAW;CAC/C,OAAgB,KAAK;CAErB;CAEA,cAAc;EACZ,MAAM,iBAAiB,EAAE;EACzB,KAAK,MAAM,IAAI,WAAW,IAAI,UAAU,CAAC,CAAC,CAAC;CAC7C;CAEA,MAAc,cAAc,EAC1B,aAAa,oBACsC;EACnD,MAAM,MAAM,IAAI,gCAAgC,EAC9C,SAAS,KAAK,MAAM,gBAAgB,EACtC,CAAC;EACD,MAAM,WAAW,MAAM,KAAK,IAAI,SAAS,CAAC,CAAC,KAAK,GAAG;EAEnD,OAAO,EACL,UAFe,YAAY,SAAS,gBAEnB,CAAC,CACf,QAAQ,YAAY,QAAQ,aAAa,CAAC,CAC1C,KAAK,aAAa;GACjB,SAAS,QAAQ;GACjB,cAAc,QAAQ,WAAW;EACnC,EAAE,EACN;CACF;CAEA,YAAY,QAA0D;EACpE,OAAO,KAAK,OACV;GACE,KAAK,eAAe,OAAO;GAC3B,UAAU;EACZ,SACM,KAAK,cAAc,MAAM,CACjC;CACF;AACF"}
|
|
@@ -20,7 +20,6 @@ var BazelDatasource = class BazelDatasource extends Datasource {
|
|
|
20
20
|
supportsCustomRegistry(_packageName) {
|
|
21
21
|
return true;
|
|
22
22
|
}
|
|
23
|
-
caching = true;
|
|
24
23
|
defaultVersioning = id;
|
|
25
24
|
static packageMetadataPath(packageName) {
|
|
26
25
|
return `/modules/${packageName}/metadata.json`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["bazelVersioningId","HttpError"],"sources":["../../../../lib/modules/datasource/bazel/index.ts"],"sourcesContent":["import { isTruthy } from '@sindresorhus/is';\nimport { ExternalHostError } from '../../../types/errors/external-host-error.ts';\nimport { isValidLocalPath, readLocalFile } from '../../../util/fs/index.ts';\nimport { HttpError } from '../../../util/http/index.ts';\nimport { Json } from '../../../util/schema-utils/index.ts';\nimport { joinUrlParts } from '../../../util/url.ts';\nimport { BzlmodVersion } from '../../versioning/bazel-module/bzlmod-version.ts';\nimport { id as bazelVersioningId } from '../../versioning/bazel-module/index.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types.ts';\nimport { BazelModuleMetadata } from './schema.ts';\n\nexport class BazelDatasource extends Datasource {\n static readonly id = 'bazel';\n\n static readonly bazelCentralRepoUrl =\n 'https://raw.githubusercontent.com/bazelbuild/bazel-central-registry/main';\n\n override getDefaultRegistryUrls(_packageName: string): string[] {\n return [BazelDatasource.bazelCentralRepoUrl];\n }\n override readonly registryStrategy = 'hunt';\n override supportsCustomRegistry(_packageName: string): boolean {\n return true;\n }\n override readonly
|
|
1
|
+
{"version":3,"file":"index.js","names":["bazelVersioningId","HttpError"],"sources":["../../../../lib/modules/datasource/bazel/index.ts"],"sourcesContent":["import { isTruthy } from '@sindresorhus/is';\nimport { ExternalHostError } from '../../../types/errors/external-host-error.ts';\nimport { isValidLocalPath, readLocalFile } from '../../../util/fs/index.ts';\nimport { HttpError } from '../../../util/http/index.ts';\nimport { Json } from '../../../util/schema-utils/index.ts';\nimport { joinUrlParts } from '../../../util/url.ts';\nimport { BzlmodVersion } from '../../versioning/bazel-module/bzlmod-version.ts';\nimport { id as bazelVersioningId } from '../../versioning/bazel-module/index.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types.ts';\nimport { BazelModuleMetadata } from './schema.ts';\n\nexport class BazelDatasource extends Datasource {\n static readonly id = 'bazel';\n\n static readonly bazelCentralRepoUrl =\n 'https://raw.githubusercontent.com/bazelbuild/bazel-central-registry/main';\n\n override getDefaultRegistryUrls(_packageName: string): string[] {\n return [BazelDatasource.bazelCentralRepoUrl];\n }\n override readonly registryStrategy = 'hunt';\n override supportsCustomRegistry(_packageName: string): boolean {\n return true;\n }\n override readonly defaultVersioning = bazelVersioningId;\n\n static packageMetadataPath(packageName: string): string {\n return `/modules/${packageName}/metadata.json`;\n }\n\n constructor() {\n super(BazelDatasource.id);\n }\n\n private async fetchReleases({\n registryUrl,\n packageName,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n const path = BazelDatasource.packageMetadataPath(packageName);\n const url = joinUrlParts(registryUrl!, path);\n const result: ReleaseResult = { releases: [] };\n try {\n let metadata: BazelModuleMetadata;\n const FILE_PREFIX = 'file://';\n if (url.startsWith(FILE_PREFIX)) {\n const filePath = url.slice(FILE_PREFIX.length);\n if (!isValidLocalPath(filePath)) {\n return null;\n }\n const fileContent = await readLocalFile(filePath, 'utf8');\n if (!fileContent) {\n return null;\n }\n metadata = Json.pipe(BazelModuleMetadata).parse(fileContent);\n } else {\n const response = await this.http.getJson(url, BazelModuleMetadata);\n metadata = response.body;\n }\n\n result.releases = metadata.versions\n .map((v) => new BzlmodVersion(v))\n .sort(BzlmodVersion.defaultCompare)\n .map((bv) => {\n const release: Release = { version: bv.original };\n if (isTruthy(metadata.yanked_versions?.[bv.original])) {\n release.isDeprecated = true;\n }\n return release;\n });\n if (metadata.homepage) {\n result.homepage = metadata.homepage;\n }\n } catch (err) {\n if (err instanceof HttpError) {\n if (err.response?.statusCode === 404) {\n return null;\n }\n throw new ExternalHostError(err);\n }\n this.handleGenericErrors(err);\n }\n\n return result.releases.length ? result : null;\n }\n\n getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n return this.cached(\n {\n key: `${config.registryUrl!}:${config.packageName}`,\n fallback: true,\n },\n () => this.fetchReleases(config),\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;AAYA,IAAa,kBAAb,MAAa,wBAAwB,WAAW;CAC9C,OAAgB,KAAK;CAErB,OAAgB,sBACd;CAEF,uBAAgC,cAAgC;EAC9D,OAAO,CAAC,gBAAgB,mBAAmB;CAC7C;CACA,mBAAqC;CACrC,uBAAgC,cAA+B;EAC7D,OAAO;CACT;CACA,oBAAsCA;CAEtC,OAAO,oBAAoB,aAA6B;EACtD,OAAO,YAAY,YAAY;CACjC;CAEA,cAAc;EACZ,MAAM,gBAAgB,EAAE;CAC1B;CAEA,MAAc,cAAc,EAC1B,aACA,eACmD;EACnD,MAAM,OAAO,gBAAgB,oBAAoB,WAAW;EAC5D,MAAM,MAAM,aAAa,aAAc,IAAI;EAC3C,MAAM,SAAwB,EAAE,UAAU,CAAC,EAAE;EAC7C,IAAI;GACF,IAAI;GAEJ,IAAI,IAAI,WAAW,SAAW,GAAG;IAC/B,MAAM,WAAW,IAAI,MAAM,CAAkB;IAC7C,IAAI,CAAC,iBAAiB,QAAQ,GAC5B,OAAO;IAET,MAAM,cAAc,MAAM,cAAc,UAAU,MAAM;IACxD,IAAI,CAAC,aACH,OAAO;IAET,WAAW,KAAK,KAAK,mBAAmB,CAAC,CAAC,MAAM,WAAW;GAC7D,OAEE,YAAW,MADY,KAAK,KAAK,QAAQ,KAAK,mBAAmB,EAAA,CAC7C;GAGtB,OAAO,WAAW,SAAS,SACxB,KAAK,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC,CAChC,KAAK,cAAc,cAAc,CAAC,CAClC,KAAK,OAAO;IACX,MAAM,UAAmB,EAAE,SAAS,GAAG,SAAS;IAChD,IAAI,SAAS,SAAS,kBAAkB,GAAG,SAAS,GAClD,QAAQ,eAAe;IAEzB,OAAO;GACT,CAAC;GACH,IAAI,SAAS,UACX,OAAO,WAAW,SAAS;EAE/B,SAAS,KAAK;GACZ,IAAI,eAAeC,cAAW;IAC5B,IAAI,IAAI,UAAU,eAAe,KAC/B,OAAO;IAET,MAAM,IAAI,kBAAkB,GAAG;GACjC;GACA,KAAK,oBAAoB,GAAG;EAC9B;EAEA,OAAO,OAAO,SAAS,SAAS,SAAS;CAC3C;CAEA,YAAY,QAA0D;EACpE,OAAO,KAAK,OACV;GACE,KAAK,GAAG,OAAO,YAAa,GAAG,OAAO;GACtC,UAAU;EACZ,SACM,KAAK,cAAc,MAAM,CACjC;CACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["allVersioning.get"],"sources":["../../../../lib/modules/datasource/conan/index.ts"],"sourcesContent":["import { isString, isUndefined } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { GithubHttp } from '../../../util/http/github.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { ensureTrailingSlash, joinUrlParts } from '../../../util/url.ts';\nimport * as allVersioning from '../../versioning/index.ts';\nimport { Datasource } from '../datasource.ts';\nimport type {\n DigestConfig,\n GetReleasesConfig,\n Release,\n ReleaseResult,\n} from '../types.ts';\nimport { isArtifactoryServer } from '../util.ts';\nimport { datasource, defaultRegistryUrl, getConanPackage } from './common.ts';\nimport {\n ConanCenterReleases,\n ConanJSON,\n ConanLatestRevision,\n ConanProperties,\n ConanRevisionJSON,\n} from './schema.ts';\n\nexport class ConanDatasource extends Datasource {\n static readonly id = datasource;\n\n override getDefaultRegistryUrls(_packageName: string): string[] {\n return [defaultRegistryUrl];\n }\n\n override readonly
|
|
1
|
+
{"version":3,"file":"index.js","names":["allVersioning.get"],"sources":["../../../../lib/modules/datasource/conan/index.ts"],"sourcesContent":["import { isString, isUndefined } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { GithubHttp } from '../../../util/http/github.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { ensureTrailingSlash, joinUrlParts } from '../../../util/url.ts';\nimport * as allVersioning from '../../versioning/index.ts';\nimport { Datasource } from '../datasource.ts';\nimport type {\n DigestConfig,\n GetReleasesConfig,\n Release,\n ReleaseResult,\n} from '../types.ts';\nimport { isArtifactoryServer } from '../util.ts';\nimport { datasource, defaultRegistryUrl, getConanPackage } from './common.ts';\nimport {\n ConanCenterReleases,\n ConanJSON,\n ConanLatestRevision,\n ConanProperties,\n ConanRevisionJSON,\n} from './schema.ts';\n\nexport class ConanDatasource extends Datasource {\n static readonly id = datasource;\n\n override getDefaultRegistryUrls(_packageName: string): string[] {\n return [defaultRegistryUrl];\n }\n\n override readonly registryStrategy = 'merge';\n\n githubHttp: GithubHttp;\n\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'The source URL is supported only if the package is served from the Artifactory servers. In which case we determine it from the `properties[conan.package.url]` field in the results.';\n\n constructor(id = ConanDatasource.id) {\n super(id);\n this.githubHttp = new GithubHttp(id);\n }\n\n async getConanCenterReleases(\n conanName: string,\n userAndChannel: string,\n ): Promise<ReleaseResult | null> {\n if (userAndChannel && userAndChannel !== '@_/_') {\n logger.debug(\n { conanName, userAndChannel },\n 'User/channel not supported for Conan Center lookups',\n );\n return null;\n }\n const url = `https://api.github.com/repos/conan-io/conan-center-index/contents/recipes/${conanName}/config.yml`;\n const { body: result } = await this.githubHttp.getYaml(\n url,\n { headers: { accept: 'application/vnd.github.v3.raw' } },\n ConanCenterReleases,\n );\n return result;\n }\n\n private async fetchDigest(\n { registryUrl, packageName }: DigestConfig,\n newValue?: string,\n ): Promise<string | null> {\n if (isUndefined(newValue) || isUndefined(registryUrl)) {\n return null;\n }\n const url = ensureTrailingSlash(registryUrl);\n const conanPackage = getConanPackage(packageName);\n const revisionLookUp = joinUrlParts(\n url,\n 'v2/conans/',\n conanPackage.conanName,\n newValue,\n conanPackage.userAndChannel,\n '/revisions',\n );\n const { body: digest } = await this.http.getJson(\n revisionLookUp,\n ConanLatestRevision,\n );\n return digest;\n }\n\n override getDigest(\n config: DigestConfig,\n newValue?: string,\n ): Promise<string | null> {\n return this.cached(\n {\n // TODO: types (#22198)\n key: `getDigest:${config.registryUrl!}:${config.packageName}:${newValue!}`,\n fallback: true,\n },\n () => this.fetchDigest(config, newValue),\n );\n }\n\n private async fetchReleases({\n registryUrl,\n packageName,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n const conanPackage = getConanPackage(packageName);\n const userAndChannel = `@${conanPackage.userAndChannel}`;\n if (\n isString(registryUrl) &&\n ensureTrailingSlash(registryUrl) === defaultRegistryUrl\n ) {\n return this.getConanCenterReleases(\n conanPackage.conanName,\n userAndChannel,\n );\n }\n\n logger.trace(\n { packageName, registryUrl },\n 'Looking up conan api dependency',\n );\n\n // v8 ignore else -- the datasource layer always supplies a registry url\n if (registryUrl) {\n const url = ensureTrailingSlash(registryUrl);\n const lookupUrl = joinUrlParts(\n url,\n `v2/conans/search?q=${conanPackage.conanName}`,\n );\n\n try {\n const rep = await this.http.getJson(lookupUrl, ConanJSON);\n const conanJson = rep.body;\n if (conanJson) {\n logger.trace({ lookupUrl }, 'Got conan api result');\n const dep: ReleaseResult = { releases: [] };\n\n const conanJsonReleases: Release[] = conanJson\n .filter(({ userChannel }) => userChannel === userAndChannel)\n .map(({ version }) => ({ version }));\n dep.releases.push(...conanJsonReleases);\n\n try {\n if (isArtifactoryServer(rep)) {\n const conanApiRegexp = regEx(\n /(?<host>.*)\\/artifactory\\/api\\/conan\\/(?<repo>[^/]+)/,\n );\n const groups = conanApiRegexp.exec(url)?.groups;\n if (!groups) {\n return dep;\n }\n const semver = allVersioning.get('semver');\n\n const sortedReleases = dep.releases\n .filter((release) => semver.isVersion(release.version))\n .sort((a, b) => semver.sortVersions(a.version, b.version));\n\n const latestVersion = sortedReleases.at(-1)?.version;\n\n if (!latestVersion) {\n return dep;\n }\n logger.debug(\n `Conan package ${packageName} has latest version ${latestVersion}`,\n );\n\n const latestRevisionUrl = joinUrlParts(\n url,\n `v2/conans/${conanPackage.conanName}/${latestVersion}/${conanPackage.userAndChannel}/latest`,\n );\n const {\n body: { revision: packageRev },\n } = await this.http.getJson(latestRevisionUrl, ConanRevisionJSON);\n\n const [user, channel] = conanPackage.userAndChannel.split('/');\n const packageUrl = joinUrlParts(\n `${groups.host}/artifactory/api/storage/${groups.repo}`,\n `${user}/${conanPackage.conanName}/${latestVersion}/${channel}/${packageRev}/export/conanfile.py?properties=conan.package.url`,\n );\n const { body: conanProperties } = await this.http.getJson(\n packageUrl,\n ConanProperties,\n );\n const { sourceUrl } = conanProperties;\n // v8 ignore else -- needs a full artifactory properties fixture\n if (sourceUrl) {\n dep.sourceUrl = sourceUrl;\n }\n }\n } catch (err) {\n logger.debug({ err }, \"Couldn't determine Conan package url\");\n }\n return dep;\n }\n } catch (err) {\n this.handleGenericErrors(err);\n }\n }\n\n return null;\n }\n\n getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n return this.cached(\n {\n // TODO: types (#22198)\n key: `getReleases:${config.registryUrl}:${config.packageName}`,\n fallback: true,\n },\n () => this.fetchReleases(config),\n );\n }\n}\n"],"mappings":"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"}
|
|
@@ -22,7 +22,6 @@ var CondaDatasource = class extends Datasource {
|
|
|
22
22
|
getDefaultRegistryUrls(_packageName) {
|
|
23
23
|
return [defaultRegistryUrl];
|
|
24
24
|
}
|
|
25
|
-
caching = true;
|
|
26
25
|
releaseTimestampSupport = true;
|
|
27
26
|
releaseTimestampNote = "The release timestamp is determined from the `upload_time` field of the files of a version when using the Anaconda.org API, or from the `createdAt` field of the variants of a version when using prefix.dev. All files of a version are assumed to be published at roughly the same time.";
|
|
28
27
|
sourceUrlSupport = "package";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["prefixDev.getReleases","HttpError"],"sources":["../../../../lib/modules/datasource/conda/index.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport { ExternalHostError } from '../../../types/errors/external-host-error.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport { HttpError } from '../../../util/http/index.ts';\nimport { Timestamp } from '../../../util/timestamp.ts';\nimport { ensureTrailingSlash, joinUrlParts } from '../../../util/url.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types.ts';\nimport { datasource, defaultRegistryUrl } from './common.ts';\nimport * as prefixDev from './prefix-dev.ts';\nimport { CondaPackage } from './schema.ts';\n\nexport class CondaDatasource extends Datasource {\n static readonly id = datasource;\n\n constructor() {\n super(datasource);\n }\n\n override supportsCustomRegistry(_packageName: string): boolean {\n return true;\n }\n\n override readonly registryStrategy = 'hunt';\n\n override getDefaultRegistryUrls(_packageName: string): string[] {\n return [defaultRegistryUrl];\n }\n\n override readonly
|
|
1
|
+
{"version":3,"file":"index.js","names":["prefixDev.getReleases","HttpError"],"sources":["../../../../lib/modules/datasource/conda/index.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport { ExternalHostError } from '../../../types/errors/external-host-error.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport { HttpError } from '../../../util/http/index.ts';\nimport { Timestamp } from '../../../util/timestamp.ts';\nimport { ensureTrailingSlash, joinUrlParts } from '../../../util/url.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types.ts';\nimport { datasource, defaultRegistryUrl } from './common.ts';\nimport * as prefixDev from './prefix-dev.ts';\nimport { CondaPackage } from './schema.ts';\n\nexport class CondaDatasource extends Datasource {\n static readonly id = datasource;\n\n constructor() {\n super(datasource);\n }\n\n override supportsCustomRegistry(_packageName: string): boolean {\n return true;\n }\n\n override readonly registryStrategy = 'hunt';\n\n override getDefaultRegistryUrls(_packageName: string): string[] {\n return [defaultRegistryUrl];\n }\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `upload_time` field of the files of a version when using the Anaconda.org API, or from the `createdAt` field of the variants of a version when using prefix.dev. All files of a version are assumed to be published at roughly the same time.';\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'The source URL is determined from the `dev_url` field in the results.';\n\n private async fetchReleases({\n registryUrl,\n packageName,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n logger.trace({ registryUrl, packageName }, 'fetching conda package');\n\n if (!registryUrl) {\n return null;\n }\n\n // fast.prefix.dev is a alias, deprecated, but still running.\n // We expect registryUrl to be `https://prefix.dev/${channel}` here.\n if (\n registryUrl.startsWith('https://prefix.dev/') ||\n registryUrl.startsWith('https://fast.prefix.dev/')\n ) {\n // Since the registryUrl contains at least 3 `/` ,\n // the channel varitable won't be undefined in any case.\n const channel = ensureTrailingSlash(registryUrl).split('/').at(-2)!;\n\n return prefixDev.getReleases(this.http, channel, packageName);\n }\n\n const url = joinUrlParts(registryUrl, packageName);\n\n const result: ReleaseResult = {\n releases: [],\n };\n\n try {\n const response = await this.http.getJson(url, CondaPackage);\n\n result.homepage = response.body.html_url;\n result.sourceUrl = response.body.dev_url;\n\n const releaseDate: Record<string, Timestamp> = {};\n // we assume all packages are roughly released on the same time\n for (const file of coerceArray(response.body.files)) {\n releaseDate[file.version] ??= Timestamp.parse(file.upload_time);\n }\n\n coerceArray(response.body.versions).forEach((version: string) => {\n const thisRelease: Release = {\n version,\n releaseTimestamp: releaseDate[version],\n };\n result.releases.push(thisRelease);\n });\n } catch (err) {\n if (err instanceof HttpError && err.response?.statusCode !== 404) {\n throw new ExternalHostError(err);\n }\n this.handleGenericErrors(err);\n }\n\n return result.releases.length ? result : null;\n }\n\n getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n return this.cached(\n {\n // TODO: types (#22198)\n key: `${config.registryUrl}:${config.packageName}`,\n fallback: true,\n },\n () => this.fetchReleases(config),\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;AAYA,IAAa,kBAAb,cAAqC,WAAW;CAC9C,OAAgB,KAAK;CAErB,cAAc;EACZ,MAAM,UAAU;CAClB;CAEA,uBAAgC,cAA+B;EAC7D,OAAO;CACT;CAEA,mBAAqC;CAErC,uBAAgC,cAAgC;EAC9D,OAAO,CAAC,kBAAkB;CAC5B;CAEA,0BAA4C;CAC5C,uBACE;CACF,mBAAqC;CACrC,gBACE;CAEF,MAAc,cAAc,EAC1B,aACA,eACmD;EACnD,OAAO,MAAM;GAAE;GAAa;EAAY,GAAG,wBAAwB;EAEnE,IAAI,CAAC,aACH,OAAO;EAKT,IACE,YAAY,WAAW,qBAAqB,KAC5C,YAAY,WAAW,0BAA0B,GACjD;GAGA,MAAM,UAAU,oBAAoB,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE;GAEjE,OAAOA,YAAsB,KAAK,MAAM,SAAS,WAAW;EAC9D;EAEA,MAAM,MAAM,aAAa,aAAa,WAAW;EAEjD,MAAM,SAAwB,EAC5B,UAAU,CAAC,EACb;EAEA,IAAI;GACF,MAAM,WAAW,MAAM,KAAK,KAAK,QAAQ,KAAK,YAAY;GAE1D,OAAO,WAAW,SAAS,KAAK;GAChC,OAAO,YAAY,SAAS,KAAK;GAEjC,MAAM,cAAyC,CAAC;GAEhD,KAAK,MAAM,QAAQ,YAAY,SAAS,KAAK,KAAK,GAChD,YAAY,KAAK,aAAa,UAAU,MAAM,KAAK,WAAW;GAGhE,YAAY,SAAS,KAAK,QAAQ,CAAC,CAAC,SAAS,YAAoB;IAC/D,MAAM,cAAuB;KAC3B;KACA,kBAAkB,YAAY;IAChC;IACA,OAAO,SAAS,KAAK,WAAW;GAClC,CAAC;EACH,SAAS,KAAK;GACZ,IAAI,eAAeC,gBAAa,IAAI,UAAU,eAAe,KAC3D,MAAM,IAAI,kBAAkB,GAAG;GAEjC,KAAK,oBAAoB,GAAG;EAC9B;EAEA,OAAO,OAAO,SAAS,SAAS,SAAS;CAC3C;CAEA,YAAY,QAA0D;EACpE,OAAO,KAAK,OACV;GAEE,KAAK,GAAG,OAAO,YAAY,GAAG,OAAO;GACrC,UAAU;EACZ,SACM,KAAK,cAAc,MAAM,CACjC;CACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["p.map"],"sources":["../../../../lib/modules/datasource/dotnet-version/index.ts"],"sourcesContent":["import * as p from '../../../util/promises.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types.ts';\nimport {\n DotnetRuntimeReleases,\n DotnetSdkReleases,\n ReleasesIndex,\n} from './schema.ts';\n\nexport class DotnetVersionDatasource extends Datasource {\n static readonly id = 'dotnet-version';\n\n constructor() {\n super(DotnetVersionDatasource.id);\n }\n\n override
|
|
1
|
+
{"version":3,"file":"index.js","names":["p.map"],"sources":["../../../../lib/modules/datasource/dotnet-version/index.ts"],"sourcesContent":["import * as p from '../../../util/promises.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types.ts';\nimport {\n DotnetRuntimeReleases,\n DotnetSdkReleases,\n ReleasesIndex,\n} from './schema.ts';\n\nexport class DotnetVersionDatasource extends Datasource {\n static readonly id = 'dotnet-version';\n\n constructor() {\n super(DotnetVersionDatasource.id);\n }\n\n override supportsCustomRegistry(_packageName: string): boolean {\n return false;\n }\n\n override getDefaultRegistryUrls(_packageName: string): string[] {\n return [\n 'https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json',\n ];\n }\n\n override releaseTimestampSupport = true;\n override releaseTimestampNote =\n 'The release timestamp is determined from the `release-date` field in the results.';\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'We use the URL https://github.com/dotnet/sdk for the `dotnet-sdk` package and, the https://github.com/dotnet/runtime URL for the `dotnet-runtime` package.';\n\n private async fetchReleases({\n packageName,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n if (!(packageName === 'dotnet-sdk' || packageName === 'dotnet-runtime')) {\n return null;\n }\n\n try {\n const registryUrl = this.getDefaultRegistryUrls('')[0];\n const { body: urls } = await this.http.getJson(\n registryUrl,\n ReleasesIndex,\n );\n\n const channelReleases = await p.map(\n urls,\n (url) => this.getChannelReleases(url, packageName),\n { concurrency: 1, stopOnError: true },\n );\n const releases = channelReleases.flat();\n\n const sourceUrl =\n packageName === 'dotnet-sdk'\n ? 'https://github.com/dotnet/sdk'\n : 'https://github.com/dotnet/runtime';\n\n return { releases, sourceUrl };\n } catch (err) {\n this.handleGenericErrors(err);\n }\n }\n\n getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n return this.cached(\n {\n key: config.packageName,\n ttlMinutes: 1440,\n fallback: true,\n cacheable: true,\n },\n () => this.fetchReleases(config),\n );\n }\n\n private async fetchChannelReleases(\n releaseUrl: string,\n packageName: string,\n ): Promise<Release[]> {\n const schema =\n packageName === 'dotnet-sdk' ? DotnetSdkReleases : DotnetRuntimeReleases;\n try {\n const { body } = await this.http.getJson(releaseUrl, schema);\n return body;\n } catch (err) {\n this.handleGenericErrors(err);\n }\n }\n\n getChannelReleases(\n releaseUrl: string,\n packageName: string,\n ): Promise<Release[]> {\n return this.cached(\n {\n key: `${releaseUrl}:${packageName}`,\n ttlMinutes: 1440,\n cacheable: true,\n },\n () => this.fetchChannelReleases(releaseUrl, packageName),\n );\n }\n}\n"],"mappings":";;;;AASA,IAAa,0BAAb,MAAa,gCAAgC,WAAW;CACtD,OAAgB,KAAK;CAErB,cAAc;EACZ,MAAM,wBAAwB,EAAE;CAClC;CAEA,uBAAgC,cAA+B;EAC7D,OAAO;CACT;CAEA,uBAAgC,cAAgC;EAC9D,OAAO,CACL,qFACF;CACF;CAEA,0BAAmC;CACnC,uBACE;CACF,mBAAqC;CACrC,gBACE;CAEF,MAAc,cAAc,EAC1B,eACmD;EACnD,IAAI,EAAE,gBAAgB,gBAAgB,gBAAgB,mBACpD,OAAO;EAGT,IAAI;GACF,MAAM,cAAc,KAAK,uBAAuB,EAAE,CAAC,CAAC;GACpD,MAAM,EAAE,MAAM,SAAS,MAAM,KAAK,KAAK,QACrC,aACA,aACF;GAcA,OAAO;IAAE,WAPQ,MALaA,IAC5B,OACC,QAAQ,KAAK,mBAAmB,KAAK,WAAW,GACjD;KAAE,aAAa;KAAG,aAAa;IAAK,CACtC,EAAA,CACiC,KAOjB;IAAG,WAJjB,gBAAgB,eACZ,kCACA;GAEuB;EAC/B,SAAS,KAAK;GACZ,KAAK,oBAAoB,GAAG;EAC9B;CACF;CAEA,YAAY,QAA0D;EACpE,OAAO,KAAK,OACV;GACE,KAAK,OAAO;GACZ,YAAY;GACZ,UAAU;GACV,WAAW;EACb,SACM,KAAK,cAAc,MAAM,CACjC;CACF;CAEA,MAAc,qBACZ,YACA,aACoB;EACpB,MAAM,SACJ,gBAAgB,eAAe,oBAAoB;EACrD,IAAI;GACF,MAAM,EAAE,SAAS,MAAM,KAAK,KAAK,QAAQ,YAAY,MAAM;GAC3D,OAAO;EACT,SAAS,KAAK;GACZ,KAAK,oBAAoB,GAAG;EAC9B;CACF;CAEA,mBACE,YACA,aACoB;EACpB,OAAO,KAAK,OACV;GACE,KAAK,GAAG,WAAW,GAAG;GACtB,YAAY;GACZ,WAAW;EACb,SACM,KAAK,qBAAqB,YAAY,WAAW,CACzD;CACF;AACF"}
|
|
@@ -10,7 +10,6 @@ var EndoflifeDateDatasource = class EndoflifeDateDatasource extends Datasource {
|
|
|
10
10
|
getDefaultRegistryUrls(_packageName) {
|
|
11
11
|
return [registryUrl];
|
|
12
12
|
}
|
|
13
|
-
caching = true;
|
|
14
13
|
defaultVersioning = "loose";
|
|
15
14
|
releaseTimestampSupport = true;
|
|
16
15
|
releaseTimestampNote = "The release timestamp is determined from the `releaseDate` field in the results.";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../lib/modules/datasource/endoflife-date/index.ts"],"sourcesContent":["import { isNonEmptyString } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { joinUrlParts } from '../../../util/url.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, ReleaseResult } from '../types.ts';\nimport { datasource, registryUrl } from './common.ts';\nimport { EndoflifeDateVersions } from './schema.ts';\n\nexport class EndoflifeDateDatasource extends Datasource {\n static readonly id = datasource;\n\n override getDefaultRegistryUrls(_packageName: string): string[] {\n return [registryUrl];\n }\n override readonly
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../lib/modules/datasource/endoflife-date/index.ts"],"sourcesContent":["import { isNonEmptyString } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { joinUrlParts } from '../../../util/url.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, ReleaseResult } from '../types.ts';\nimport { datasource, registryUrl } from './common.ts';\nimport { EndoflifeDateVersions } from './schema.ts';\n\nexport class EndoflifeDateDatasource extends Datasource {\n static readonly id = datasource;\n\n override getDefaultRegistryUrls(_packageName: string): string[] {\n return [registryUrl];\n }\n override readonly defaultVersioning = 'loose';\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `releaseDate` field in the results.';\n\n constructor() {\n super(EndoflifeDateDatasource.id);\n }\n\n private async fetchReleases({\n registryUrl,\n packageName,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n if (!isNonEmptyString(registryUrl)) {\n return null;\n }\n\n logger.trace(`${datasource}.getReleases(${registryUrl}, ${packageName})`);\n\n const result: ReleaseResult = {\n releases: [],\n };\n\n const url = joinUrlParts(registryUrl, `${packageName}.json`);\n\n try {\n const response = await this.http.getJson(url, EndoflifeDateVersions);\n\n result.releases.push(...response.body);\n\n return result.releases.length ? result : null;\n } catch (err) {\n this.handleGenericErrors(err);\n }\n }\n\n getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n return this.cached(\n {\n // TODO: types (#22198)\n key: `${config.registryUrl!}:${config.packageName}`,\n fallback: true,\n },\n () => this.fetchReleases(config),\n );\n }\n}\n"],"mappings":";;;;;;;AAQA,IAAa,0BAAb,MAAa,gCAAgC,WAAW;CACtD,OAAgB,KAAK;CAErB,uBAAgC,cAAgC;EAC9D,OAAO,CAAC,WAAW;CACrB;CACA,oBAAsC;CAEtC,0BAA4C;CAC5C,uBACE;CAEF,cAAc;EACZ,MAAM,wBAAwB,EAAE;CAClC;CAEA,MAAc,cAAc,EAC1B,aACA,eACmD;EACnD,IAAI,CAAC,iBAAiB,WAAW,GAC/B,OAAO;EAGT,OAAO,MAAM,GAAG,WAAW,eAAe,YAAY,IAAI,YAAY,EAAE;EAExE,MAAM,SAAwB,EAC5B,UAAU,CAAC,EACb;EAEA,MAAM,MAAM,aAAa,aAAa,GAAG,YAAY,MAAM;EAE3D,IAAI;GACF,MAAM,WAAW,MAAM,KAAK,KAAK,QAAQ,KAAK,qBAAqB;GAEnE,OAAO,SAAS,KAAK,GAAG,SAAS,IAAI;GAErC,OAAO,OAAO,SAAS,SAAS,SAAS;EAC3C,SAAS,KAAK;GACZ,KAAK,oBAAoB,GAAG;EAC9B;CACF;CAEA,YAAY,QAA0D;EACpE,OAAO,KAAK,OACV;GAEE,KAAK,GAAG,OAAO,YAAa,GAAG,OAAO;GACtC,UAAU;EACZ,SACM,KAAK,cAAc,MAAM,CACjC;CACF;AACF"}
|
|
@@ -63,7 +63,7 @@ var GalaxyCollectionDatasource = class GalaxyCollectionDatasource extends Dataso
|
|
|
63
63
|
}
|
|
64
64
|
getReleases(config) {
|
|
65
65
|
return this.cached({
|
|
66
|
-
key: `getReleases:${config.packageName}`,
|
|
66
|
+
key: `getReleases:${config.registryUrl}:${config.packageName}`,
|
|
67
67
|
fallback: true
|
|
68
68
|
}, () => this.fetchReleases(config));
|
|
69
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["pep440Versioning.id","HttpError","p.map"],"sources":["../../../../lib/modules/datasource/galaxy-collection/index.ts"],"sourcesContent":["import { isTruthy } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { HttpError } from '../../../util/http/index.ts';\nimport * as p from '../../../util/promises.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { ensureTrailingSlash, joinUrlParts } from '../../../util/url.ts';\nimport * as pep440Versioning from '../../versioning/pep440/index.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types.ts';\nimport {\n GalaxyV3,\n GalaxyV3DetailedVersion,\n GalaxyV3Versions,\n} from './schema.ts';\n\nconst ansibleProtocolRegex = regEx(/^\\S+\\/api\\/ansible\\/.+/);\nconst repositoryRegex = regEx(\n /^\\S+\\/api\\/galaxy\\/content\\/(?<repository>[^/]+)/,\n);\n\nexport class GalaxyCollectionDatasource extends Datasource {\n static readonly id = 'galaxy-collection';\n\n constructor() {\n super(GalaxyCollectionDatasource.id);\n }\n\n override supportsCustomRegistry(_packageName: string): boolean {\n return true;\n }\n\n override readonly registryStrategy = 'hunt';\n\n override getDefaultRegistryUrls(_packageName: string): string[] {\n return ['https://galaxy.ansible.com/api/'];\n }\n\n override readonly defaultVersioning = pep440Versioning.id;\n\n override readonly releaseTimestampSupport = true;\n override releaseTimestampNote =\n 'The release timestamp is determined from the `created_at` field in the results.';\n // sourceUrl is returned in each release as well as the ReleaseResult\n // the one present in release result is the sourceUrl of the latest release\n override readonly sourceUrlSupport = 'release';\n override readonly sourceUrlNote =\n 'The `sourceUrl` is determined from the `repository` field in the results.';\n\n private async fetchReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n const baseUrl = this.constructBaseUrl(registryUrl!, packageName);\n\n const { val: baseProject, err: baseErr } = await this.http\n .getJsonSafe(baseUrl, GalaxyV3)\n .onError((err) => {\n if (!(err instanceof HttpError && err.response?.statusCode === 404)) {\n logger.warn(\n { url: baseUrl, datasource: this.id, packageName, err },\n 'Error fetching from url',\n );\n }\n })\n .unwrap();\n if (baseErr) {\n this.handleGenericErrors(baseErr);\n }\n\n const versionsUrl = ensureTrailingSlash(joinUrlParts(baseUrl, 'versions'));\n\n const { val: rawReleases, err: versionsErr } = await this.http\n .getJsonSafe(versionsUrl, GalaxyV3Versions)\n .onError((err) => {\n logger.warn(\n { url: versionsUrl, datasource: this.id, packageName, err },\n 'Error fetching from url',\n );\n })\n .unwrap();\n if (versionsErr) {\n this.handleGenericErrors(versionsErr);\n }\n\n const releases = rawReleases.map((value) => {\n return {\n ...value,\n isDeprecated: baseProject.deprecated,\n };\n });\n\n // asynchronously get release details\n const enrichedReleases = await p.map(\n releases,\n (release) => this.getVersionDetails(packageName, versionsUrl, release),\n { concurrency: 4 },\n );\n\n // filter failed versions\n const filteredReleases = enrichedReleases.filter(isTruthy);\n // extract base information which are only provided on the release from the newest release\n\n // Find the source URL of the highest version release\n const sourceUrlOfHighestRelease = enrichedReleases.find(\n (release) => baseProject.highest_version.version === release.version,\n )?.sourceUrl;\n\n return {\n releases: filteredReleases,\n sourceUrl: sourceUrlOfHighestRelease,\n };\n }\n\n getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n return this.cached(\n {\n key: `getReleases:${config.packageName}`,\n fallback: true,\n },\n () => this.fetchReleases(config),\n );\n }\n\n constructBaseUrl(registryUrl: string, packageName: string): string {\n const [namespace, projectName] = packageName.split('.');\n if (ansibleProtocolRegex.test(registryUrl)) {\n return ensureTrailingSlash(\n joinUrlParts(registryUrl, 'api/v3/collections', namespace, projectName),\n );\n }\n const repository =\n repositoryRegex.exec(registryUrl)?.groups?.repository ?? 'published';\n return ensureTrailingSlash(\n joinUrlParts(\n registryUrl,\n 'v3/plugin/ansible/content',\n repository,\n 'collections/index',\n namespace,\n projectName,\n ),\n );\n }\n\n private async fetchVersionDetails(\n packageName: string,\n versionsUrl: string,\n basicRelease: Release,\n ): Promise<Release> {\n const detailedVersionUrl = ensureTrailingSlash(\n joinUrlParts(versionsUrl, basicRelease.version),\n );\n const { val: rawDetailedVersion, err: versionsErr } = await this.http\n .getJsonSafe(detailedVersionUrl, GalaxyV3DetailedVersion)\n .onError((err) => {\n logger.warn(\n { url: versionsUrl, datasource: this.id, packageName, err },\n 'Error fetching from url',\n );\n })\n .unwrap();\n if (versionsErr) {\n this.handleGenericErrors(versionsErr);\n }\n\n return {\n ...rawDetailedVersion,\n isDeprecated: basicRelease.isDeprecated,\n releaseTimestamp: basicRelease.releaseTimestamp,\n };\n }\n\n getVersionDetails(\n packageName: string,\n versionsUrl: string,\n basicRelease: Release,\n ): Promise<Release> {\n return this.cached(\n {\n key: `getVersionDetails:${versionsUrl}:${basicRelease.version}`,\n ttlMinutes: 10080, // 1 week\n },\n () => this.fetchVersionDetails(packageName, versionsUrl, basicRelease),\n );\n }\n}\n"],"mappings":";;;;;;;;;;;AAeA,MAAM,uBAAuB,MAAM,wBAAwB;AAC3D,MAAM,kBAAkB,MACtB,kDACF;AAEA,IAAa,6BAAb,MAAa,mCAAmC,WAAW;CACzD,OAAgB,KAAK;CAErB,cAAc;EACZ,MAAM,2BAA2B,EAAE;CACrC;CAEA,uBAAgC,cAA+B;EAC7D,OAAO;CACT;CAEA,mBAAqC;CAErC,uBAAgC,cAAgC;EAC9D,OAAO,CAAC,iCAAiC;CAC3C;CAEA,oBAAsCA;CAEtC,0BAA4C;CAC5C,uBACE;CAGF,mBAAqC;CACrC,gBACE;CAEF,MAAc,cAAc,EAC1B,aACA,eACmD;EACnD,MAAM,UAAU,KAAK,iBAAiB,aAAc,WAAW;EAE/D,MAAM,EAAE,KAAK,aAAa,KAAK,YAAY,MAAM,KAAK,KACnD,YAAY,SAAS,QAAQ,CAAC,CAC9B,SAAS,QAAQ;GAChB,IAAI,EAAE,eAAeC,gBAAa,IAAI,UAAU,eAAe,MAC7D,OAAO,KACL;IAAE,KAAK;IAAS,YAAY,KAAK;IAAI;IAAa;GAAI,GACtD,yBACF;EAEJ,CAAC,CAAC,CACD,OAAO;EACV,IAAI,SACF,KAAK,oBAAoB,OAAO;EAGlC,MAAM,cAAc,oBAAoB,aAAa,SAAS,UAAU,CAAC;EAEzE,MAAM,EAAE,KAAK,aAAa,KAAK,gBAAgB,MAAM,KAAK,KACvD,YAAY,aAAa,gBAAgB,CAAC,CAC1C,SAAS,QAAQ;GAChB,OAAO,KACL;IAAE,KAAK;IAAa,YAAY,KAAK;IAAI;IAAa;GAAI,GAC1D,yBACF;EACF,CAAC,CAAC,CACD,OAAO;EACV,IAAI,aACF,KAAK,oBAAoB,WAAW;EAGtC,MAAM,WAAW,YAAY,KAAK,UAAU;GAC1C,OAAO;IACL,GAAG;IACH,cAAc,YAAY;GAC5B;EACF,CAAC;EAGD,MAAM,mBAAmB,MAAMC,IAC7B,WACC,YAAY,KAAK,kBAAkB,aAAa,aAAa,OAAO,GACrE,EAAE,aAAa,EAAE,CACnB;EAWA,OAAO;GACL,UATuB,iBAAiB,OAAO,QAStB;GACzB,WANgC,iBAAiB,MAChD,YAAY,YAAY,gBAAgB,YAAY,QAAQ,OAC/D,CAAC,EAAE;EAKH;CACF;CAEA,YAAY,QAA0D;EACpE,OAAO,KAAK,OACV;GACE,KAAK,eAAe,OAAO;
|
|
1
|
+
{"version":3,"file":"index.js","names":["pep440Versioning.id","HttpError","p.map"],"sources":["../../../../lib/modules/datasource/galaxy-collection/index.ts"],"sourcesContent":["import { isTruthy } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { HttpError } from '../../../util/http/index.ts';\nimport * as p from '../../../util/promises.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { ensureTrailingSlash, joinUrlParts } from '../../../util/url.ts';\nimport * as pep440Versioning from '../../versioning/pep440/index.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types.ts';\nimport {\n GalaxyV3,\n GalaxyV3DetailedVersion,\n GalaxyV3Versions,\n} from './schema.ts';\n\nconst ansibleProtocolRegex = regEx(/^\\S+\\/api\\/ansible\\/.+/);\nconst repositoryRegex = regEx(\n /^\\S+\\/api\\/galaxy\\/content\\/(?<repository>[^/]+)/,\n);\n\nexport class GalaxyCollectionDatasource extends Datasource {\n static readonly id = 'galaxy-collection';\n\n constructor() {\n super(GalaxyCollectionDatasource.id);\n }\n\n override supportsCustomRegistry(_packageName: string): boolean {\n return true;\n }\n\n override readonly registryStrategy = 'hunt';\n\n override getDefaultRegistryUrls(_packageName: string): string[] {\n return ['https://galaxy.ansible.com/api/'];\n }\n\n override readonly defaultVersioning = pep440Versioning.id;\n\n override readonly releaseTimestampSupport = true;\n override releaseTimestampNote =\n 'The release timestamp is determined from the `created_at` field in the results.';\n // sourceUrl is returned in each release as well as the ReleaseResult\n // the one present in release result is the sourceUrl of the latest release\n override readonly sourceUrlSupport = 'release';\n override readonly sourceUrlNote =\n 'The `sourceUrl` is determined from the `repository` field in the results.';\n\n private async fetchReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n const baseUrl = this.constructBaseUrl(registryUrl!, packageName);\n\n const { val: baseProject, err: baseErr } = await this.http\n .getJsonSafe(baseUrl, GalaxyV3)\n .onError((err) => {\n if (!(err instanceof HttpError && err.response?.statusCode === 404)) {\n logger.warn(\n { url: baseUrl, datasource: this.id, packageName, err },\n 'Error fetching from url',\n );\n }\n })\n .unwrap();\n if (baseErr) {\n this.handleGenericErrors(baseErr);\n }\n\n const versionsUrl = ensureTrailingSlash(joinUrlParts(baseUrl, 'versions'));\n\n const { val: rawReleases, err: versionsErr } = await this.http\n .getJsonSafe(versionsUrl, GalaxyV3Versions)\n .onError((err) => {\n logger.warn(\n { url: versionsUrl, datasource: this.id, packageName, err },\n 'Error fetching from url',\n );\n })\n .unwrap();\n if (versionsErr) {\n this.handleGenericErrors(versionsErr);\n }\n\n const releases = rawReleases.map((value) => {\n return {\n ...value,\n isDeprecated: baseProject.deprecated,\n };\n });\n\n // asynchronously get release details\n const enrichedReleases = await p.map(\n releases,\n (release) => this.getVersionDetails(packageName, versionsUrl, release),\n { concurrency: 4 },\n );\n\n // filter failed versions\n const filteredReleases = enrichedReleases.filter(isTruthy);\n // extract base information which are only provided on the release from the newest release\n\n // Find the source URL of the highest version release\n const sourceUrlOfHighestRelease = enrichedReleases.find(\n (release) => baseProject.highest_version.version === release.version,\n )?.sourceUrl;\n\n return {\n releases: filteredReleases,\n sourceUrl: sourceUrlOfHighestRelease,\n };\n }\n\n getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n return this.cached(\n {\n key: `getReleases:${config.registryUrl}:${config.packageName}`,\n fallback: true,\n },\n () => this.fetchReleases(config),\n );\n }\n\n constructBaseUrl(registryUrl: string, packageName: string): string {\n const [namespace, projectName] = packageName.split('.');\n if (ansibleProtocolRegex.test(registryUrl)) {\n return ensureTrailingSlash(\n joinUrlParts(registryUrl, 'api/v3/collections', namespace, projectName),\n );\n }\n const repository =\n repositoryRegex.exec(registryUrl)?.groups?.repository ?? 'published';\n return ensureTrailingSlash(\n joinUrlParts(\n registryUrl,\n 'v3/plugin/ansible/content',\n repository,\n 'collections/index',\n namespace,\n projectName,\n ),\n );\n }\n\n private async fetchVersionDetails(\n packageName: string,\n versionsUrl: string,\n basicRelease: Release,\n ): Promise<Release> {\n const detailedVersionUrl = ensureTrailingSlash(\n joinUrlParts(versionsUrl, basicRelease.version),\n );\n const { val: rawDetailedVersion, err: versionsErr } = await this.http\n .getJsonSafe(detailedVersionUrl, GalaxyV3DetailedVersion)\n .onError((err) => {\n logger.warn(\n { url: versionsUrl, datasource: this.id, packageName, err },\n 'Error fetching from url',\n );\n })\n .unwrap();\n if (versionsErr) {\n this.handleGenericErrors(versionsErr);\n }\n\n return {\n ...rawDetailedVersion,\n isDeprecated: basicRelease.isDeprecated,\n releaseTimestamp: basicRelease.releaseTimestamp,\n };\n }\n\n getVersionDetails(\n packageName: string,\n versionsUrl: string,\n basicRelease: Release,\n ): Promise<Release> {\n return this.cached(\n {\n key: `getVersionDetails:${versionsUrl}:${basicRelease.version}`,\n ttlMinutes: 10080, // 1 week\n },\n () => this.fetchVersionDetails(packageName, versionsUrl, basicRelease),\n );\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../lib/modules/datasource/gitlab-packages/index.ts"],"sourcesContent":["import { GitlabHttp } from '../../../util/http/gitlab.ts';\nimport { asTimestamp } from '../../../util/timestamp.ts';\nimport { joinUrlParts } from '../../../util/url.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, ReleaseResult } from '../types.ts';\nimport { datasource } from './common.ts';\nimport type { GitlabPackage } from './types.ts';\n\n// Gitlab Packages API: https://docs.gitlab.com/ee/api/packages.html\n\nexport class GitlabPackagesDatasource extends Datasource {\n static readonly id = datasource;\n\n protected override http: GitlabHttp;\n\n override
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../lib/modules/datasource/gitlab-packages/index.ts"],"sourcesContent":["import { GitlabHttp } from '../../../util/http/gitlab.ts';\nimport { asTimestamp } from '../../../util/timestamp.ts';\nimport { joinUrlParts } from '../../../util/url.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, ReleaseResult } from '../types.ts';\nimport { datasource } from './common.ts';\nimport type { GitlabPackage } from './types.ts';\n\n// Gitlab Packages API: https://docs.gitlab.com/ee/api/packages.html\n\nexport class GitlabPackagesDatasource extends Datasource {\n static readonly id = datasource;\n\n protected override http: GitlabHttp;\n\n override supportsCustomRegistry(_packageName: string): boolean {\n return true;\n }\n\n override getDefaultRegistryUrls(_packageName: string): string[] {\n return ['https://gitlab.com'];\n }\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `created_at` field in the results.';\n\n constructor() {\n super(datasource);\n this.http = new GitlabHttp(datasource);\n }\n\n static getGitlabPackageApiUrl(\n registryUrl: string,\n projectName: string,\n packageName: string,\n ): string {\n const projectNameEncoded = encodeURIComponent(projectName);\n const packageNameEncoded = encodeURIComponent(packageName);\n\n return joinUrlParts(\n registryUrl,\n `api/v4/projects`,\n projectNameEncoded,\n `packages?package_name=${packageNameEncoded}&per_page=100`,\n );\n }\n\n private async fetchReleases({\n registryUrl,\n packageName,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n /* v8 ignore next -- should never happen */\n if (!registryUrl) {\n return null;\n }\n\n const [projectPart, packagePart] = packageName.split(':', 2);\n\n const apiUrl = GitlabPackagesDatasource.getGitlabPackageApiUrl(\n registryUrl,\n projectPart,\n packagePart,\n );\n\n const result: ReleaseResult = {\n releases: [],\n };\n\n let response: GitlabPackage[];\n try {\n response = (\n await this.http.getJsonUnchecked<GitlabPackage[]>(apiUrl, {\n paginate: true,\n })\n ).body;\n\n result.releases = response\n // Setting the package_name option when calling the GitLab API isn't enough to filter information about other packages\n // because this option is only implemented on GitLab > 12.9 and it only does a fuzzy search.\n .filter((r) => (r.conan_package_name ?? r.name) === packagePart)\n .map(({ version, created_at }) => ({\n version,\n releaseTimestamp: asTimestamp(created_at),\n }));\n } catch (err) {\n this.handleGenericErrors(err);\n }\n\n return result.releases?.length ? result : null;\n }\n\n getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n return this.cached(\n {\n // TODO: types (#22198)\n key: `${config.registryUrl}-${config.packageName}`,\n fallback: true,\n },\n () => this.fetchReleases(config),\n );\n }\n}\n"],"mappings":";;;;;;AAUA,IAAa,2BAAb,MAAa,iCAAiC,WAAW;CACvD,OAAgB,KAAK;CAErB;CAEA,uBAAgC,cAA+B;EAC7D,OAAO;CACT;CAEA,uBAAgC,cAAgC;EAC9D,OAAO,CAAC,oBAAoB;CAC9B;CAEA,0BAA4C;CAC5C,uBACE;CAEF,cAAc;EACZ,MAAM,UAAU;EAChB,KAAK,OAAO,IAAI,WAAW,UAAU;CACvC;CAEA,OAAO,uBACL,aACA,aACA,aACQ;EAIR,OAAO,aACL,aACA,mBALyB,mBAAmB,WAM3B,GACjB,yBANyB,mBAAmB,WAMF,EAAE,cAC9C;CACF;CAEA,MAAc,cAAc,EAC1B,aACA,eACmD;;EAEnD,IAAI,CAAC,aACH,OAAO;EAGT,MAAM,CAAC,aAAa,eAAe,YAAY,MAAM,KAAK,CAAC;EAE3D,MAAM,SAAS,yBAAyB,uBACtC,aACA,aACA,WACF;EAEA,MAAM,SAAwB,EAC5B,UAAU,CAAC,EACb;EAEA,IAAI;EACJ,IAAI;GACF,YACE,MAAM,KAAK,KAAK,iBAAkC,QAAQ,EACxD,UAAU,KACZ,CAAC,EAAA,CACD;GAEF,OAAO,WAAW,SAGf,QAAQ,OAAO,EAAE,sBAAsB,EAAE,UAAU,WAAW,CAAC,CAC/D,KAAK,EAAE,SAAS,kBAAkB;IACjC;IACA,kBAAkB,YAAY,UAAU;GAC1C,EAAE;EACN,SAAS,KAAK;GACZ,KAAK,oBAAoB,GAAG;EAC9B;EAEA,OAAO,OAAO,UAAU,SAAS,SAAS;CAC5C;CAEA,YAAY,QAA0D;EACpE,OAAO,KAAK,OACV;GAEE,KAAK,GAAG,OAAO,YAAY,GAAG,OAAO;GACrC,UAAU;EACZ,SACM,KAAK,cAAc,MAAM,CACjC;CACF;AACF"}
|
|
@@ -20,7 +20,6 @@ var HexpmBobDatasource = class HexpmBobDatasource extends Datasource {
|
|
|
20
20
|
getDefaultRegistryUrls(_packageName) {
|
|
21
21
|
return [defaultRegistryUrl];
|
|
22
22
|
}
|
|
23
|
-
caching = true;
|
|
24
23
|
defaultVersioning = id;
|
|
25
24
|
releaseTimestampSupport = true;
|
|
26
25
|
releaseTimestampNote = "The release timestamp is determined from the `buildDate` field in the results.";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["semverId","HttpError"],"sources":["../../../../lib/modules/datasource/hexpm-bob/index.ts"],"sourcesContent":["import { isNonEmptyString } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { ExternalHostError } from '../../../types/errors/external-host-error.ts';\nimport { HttpError } from '../../../util/http/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { asTimestamp } from '../../../util/timestamp.ts';\nimport { id as semverId } from '../../versioning/semver/index.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, ReleaseResult } from '../types.ts';\nimport { datasource, defaultRegistryUrl } from './common.ts';\nimport type { PackageType } from './types.ts';\n\nexport class HexpmBobDatasource extends Datasource {\n static readonly id = datasource;\n\n constructor() {\n super(datasource);\n }\n\n override supportsCustomRegistry(_packageName: string): boolean {\n return true;\n }\n\n override getDefaultRegistryUrls(_packageName: string): string[] {\n return [defaultRegistryUrl];\n }\n\n override readonly
|
|
1
|
+
{"version":3,"file":"index.js","names":["semverId","HttpError"],"sources":["../../../../lib/modules/datasource/hexpm-bob/index.ts"],"sourcesContent":["import { isNonEmptyString } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { ExternalHostError } from '../../../types/errors/external-host-error.ts';\nimport { HttpError } from '../../../util/http/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { asTimestamp } from '../../../util/timestamp.ts';\nimport { id as semverId } from '../../versioning/semver/index.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, ReleaseResult } from '../types.ts';\nimport { datasource, defaultRegistryUrl } from './common.ts';\nimport type { PackageType } from './types.ts';\n\nexport class HexpmBobDatasource extends Datasource {\n static readonly id = datasource;\n\n constructor() {\n super(datasource);\n }\n\n override supportsCustomRegistry(_packageName: string): boolean {\n return true;\n }\n\n override getDefaultRegistryUrls(_packageName: string): string[] {\n return [defaultRegistryUrl];\n }\n\n override readonly defaultVersioning = semverId;\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `buildDate` field in the results.';\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'We use the URL https://github.com/elixir-lang/elixir.git for the `elixir` package and the https://github.com/erlang/otp.git URL for the `erlang` package.';\n\n private async fetchReleases({\n registryUrl,\n packageName,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n const packageType = HexpmBobDatasource.getPackageType(packageName);\n\n if (!packageType) {\n return null;\n }\n\n logger.trace(\n { registryUrl, packageName },\n `fetching hex.pm bob ${packageName} release`,\n );\n\n const url = `${registryUrl!}/builds/${packageName}/builds.txt`;\n\n const result: ReleaseResult = {\n releases: [],\n ...HexpmBobDatasource.getPackageDetails(packageType),\n };\n try {\n const { body } = await this.http.getText(url);\n result.releases = body\n .split('\\n')\n .map((line) => line.trim())\n .filter(isNonEmptyString)\n .map((line) => {\n const [version, gitRef, buildDate] = line.split(' ');\n\n return {\n gitRef,\n isStable: HexpmBobDatasource.isStable(version, packageType),\n releaseTimestamp: asTimestamp(buildDate),\n version: HexpmBobDatasource.cleanVersion(version, packageType),\n };\n });\n } catch (err) {\n if (err instanceof HttpError && err.response?.statusCode !== 404) {\n throw new ExternalHostError(err);\n }\n this.handleGenericErrors(err);\n }\n\n return result.releases.length > 0 ? result : null;\n }\n\n getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n return this.cached(\n {\n key: `${config.registryUrl}:${config.packageName}`,\n fallback: true,\n },\n () => this.fetchReleases(config),\n );\n }\n\n private static getPackageType(packageName: string): PackageType | null {\n if (packageName === 'elixir') {\n return 'elixir';\n }\n if (regEx(/^otp\\/\\w+-\\d+\\.\\d+$/).test(packageName)) {\n return 'erlang';\n }\n return null;\n }\n\n private static cleanVersion(\n version: string,\n packageType: PackageType,\n ): string {\n switch (packageType) {\n case 'elixir':\n return version.replace(regEx(/^v/), '');\n case 'erlang':\n return version.replace(regEx(/^OTP-/), '');\n }\n }\n\n private static isStable(version: string, packageType: PackageType): boolean {\n switch (packageType) {\n case 'elixir':\n return regEx(/^v\\d+\\.\\d+\\.\\d+(?:$|-otp)/).test(version);\n case 'erlang':\n return version.startsWith('OTP-');\n }\n }\n\n private static getPackageDetails(\n packageType: PackageType,\n ): Omit<ReleaseResult, 'releases'> {\n switch (packageType) {\n case 'elixir':\n return {\n homepage: 'https://elixir-lang.org/',\n sourceUrl: 'https://github.com/elixir-lang/elixir.git',\n };\n case 'erlang':\n return {\n homepage: 'https://www.erlang.org/',\n sourceUrl: 'https://github.com/erlang/otp.git',\n };\n }\n }\n}\n"],"mappings":";;;;;;;;;;;AAYA,IAAa,qBAAb,MAAa,2BAA2B,WAAW;CACjD,OAAgB,KAAK;CAErB,cAAc;EACZ,MAAM,UAAU;CAClB;CAEA,uBAAgC,cAA+B;EAC7D,OAAO;CACT;CAEA,uBAAgC,cAAgC;EAC9D,OAAO,CAAC,kBAAkB;CAC5B;CAEA,oBAAsCA;CAEtC,0BAA4C;CAC5C,uBACE;CACF,mBAAqC;CACrC,gBACE;CAEF,MAAc,cAAc,EAC1B,aACA,eACmD;EACnD,MAAM,cAAc,mBAAmB,eAAe,WAAW;EAEjE,IAAI,CAAC,aACH,OAAO;EAGT,OAAO,MACL;GAAE;GAAa;EAAY,GAC3B,uBAAuB,YAAY,SACrC;EAEA,MAAM,MAAM,GAAG,YAAa,UAAU,YAAY;EAElD,MAAM,SAAwB;GAC5B,UAAU,CAAC;GACX,GAAG,mBAAmB,kBAAkB,WAAW;EACrD;EACA,IAAI;GACF,MAAM,EAAE,SAAS,MAAM,KAAK,KAAK,QAAQ,GAAG;GAC5C,OAAO,WAAW,KACf,MAAM,IAAI,CAAC,CACX,KAAK,SAAS,KAAK,KAAK,CAAC,CAAC,CAC1B,OAAO,gBAAgB,CAAC,CACxB,KAAK,SAAS;IACb,MAAM,CAAC,SAAS,QAAQ,aAAa,KAAK,MAAM,GAAG;IAEnD,OAAO;KACL;KACA,UAAU,mBAAmB,SAAS,SAAS,WAAW;KAC1D,kBAAkB,YAAY,SAAS;KACvC,SAAS,mBAAmB,aAAa,SAAS,WAAW;IAC/D;GACF,CAAC;EACL,SAAS,KAAK;GACZ,IAAI,eAAeC,gBAAa,IAAI,UAAU,eAAe,KAC3D,MAAM,IAAI,kBAAkB,GAAG;GAEjC,KAAK,oBAAoB,GAAG;EAC9B;EAEA,OAAO,OAAO,SAAS,SAAS,IAAI,SAAS;CAC/C;CAEA,YAAY,QAA0D;EACpE,OAAO,KAAK,OACV;GACE,KAAK,GAAG,OAAO,YAAY,GAAG,OAAO;GACrC,UAAU;EACZ,SACM,KAAK,cAAc,MAAM,CACjC;CACF;CAEA,OAAe,eAAe,aAAyC;EACrE,IAAI,gBAAgB,UAClB,OAAO;EAET,IAAI,MAAM,qBAAqB,CAAC,CAAC,KAAK,WAAW,GAC/C,OAAO;EAET,OAAO;CACT;CAEA,OAAe,aACb,SACA,aACQ;EACR,QAAQ,aAAR;GACE,KAAK,UACH,OAAO,QAAQ,QAAQ,MAAM,IAAI,GAAG,EAAE;GACxC,KAAK,UACH,OAAO,QAAQ,QAAQ,MAAM,OAAO,GAAG,EAAE;EAC7C;CACF;CAEA,OAAe,SAAS,SAAiB,aAAmC;EAC1E,QAAQ,aAAR;GACE,KAAK,UACH,OAAO,MAAM,2BAA2B,CAAC,CAAC,KAAK,OAAO;GACxD,KAAK,UACH,OAAO,QAAQ,WAAW,MAAM;EACpC;CACF;CAEA,OAAe,kBACb,aACiC;EACjC,QAAQ,aAAR;GACE,KAAK,UACH,OAAO;IACL,UAAU;IACV,WAAW;GACb;GACF,KAAK,UACH,OAAO;IACL,UAAU;IACV,WAAW;GACb;EACJ;CACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../lib/modules/datasource/java-version/index.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, ReleaseResult } from '../types.ts';\nimport { adoptiumRegistryUrl, getAdoptiumReleases } from './adoptium.ts';\nimport { datasource, parsePackage } from './common.ts';\nimport { getGraalvmReleases, graalvmRegistryUrl } from './graalvm.ts';\n\nexport class JavaVersionDatasource extends Datasource {\n static readonly id = datasource;\n\n constructor() {\n super(datasource);\n }\n\n override
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../lib/modules/datasource/java-version/index.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, ReleaseResult } from '../types.ts';\nimport { adoptiumRegistryUrl, getAdoptiumReleases } from './adoptium.ts';\nimport { datasource, parsePackage } from './common.ts';\nimport { getGraalvmReleases, graalvmRegistryUrl } from './graalvm.ts';\n\nexport class JavaVersionDatasource extends Datasource {\n static readonly id = datasource;\n\n constructor() {\n super(datasource);\n }\n\n override getDefaultRegistryUrls(packageName: string): string[] {\n return packageName.includes('oracle-graalvm')\n ? [graalvmRegistryUrl]\n : [adoptiumRegistryUrl];\n }\n\n override supportsCustomRegistry(packageName: string): boolean {\n return packageName.includes('oracle-graalvm');\n }\n\n private async fetchReleases({\n registryUrl,\n packageName,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n const pkgConfig = parsePackage(packageName);\n logger.trace(\n { registryUrl, packageName, pkgConfig },\n 'fetching java release',\n );\n\n try {\n if (pkgConfig.vendor === 'oracle-graalvm') {\n const effectiveRegistryUrl = registryUrl ?? graalvmRegistryUrl;\n return await getGraalvmReleases(\n this.http,\n pkgConfig,\n effectiveRegistryUrl,\n );\n }\n\n // Default to Adoptium\n return await getAdoptiumReleases(this.http, pkgConfig);\n } catch (err) {\n this.handleGenericErrors(err);\n }\n }\n\n getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n return this.cached(\n {\n key: `${config.registryUrl}:${config.packageName}`,\n cacheable: true,\n fallback: true,\n },\n () => this.fetchReleases(config),\n );\n }\n}\n"],"mappings":";;;;;;AAOA,IAAa,wBAAb,cAA2C,WAAW;CACpD,OAAgB,KAAK;CAErB,cAAc;EACZ,MAAM,UAAU;CAClB;CAEA,uBAAgC,aAA+B;EAC7D,OAAO,YAAY,SAAS,gBAAgB,IACxC,CAAC,kBAAkB,IACnB,CAAC,mBAAmB;CAC1B;CAEA,uBAAgC,aAA8B;EAC5D,OAAO,YAAY,SAAS,gBAAgB;CAC9C;CAEA,MAAc,cAAc,EAC1B,aACA,eACmD;EACnD,MAAM,YAAY,aAAa,WAAW;EAC1C,OAAO,MACL;GAAE;GAAa;GAAa;EAAU,GACtC,uBACF;EAEA,IAAI;GACF,IAAI,UAAU,WAAW,kBAAkB;IACzC,MAAM,uBAAuB,eAAA;IAC7B,OAAO,MAAM,mBACX,KAAK,MACL,WACA,oBACF;GACF;GAGA,OAAO,MAAM,oBAAoB,KAAK,MAAM,SAAS;EACvD,SAAS,KAAK;GACZ,KAAK,oBAAoB,GAAG;EAC9B;CACF;CAEA,YAAY,QAA0D;EACpE,OAAO,KAAK,OACV;GACE,KAAK,GAAG,OAAO,YAAY,GAAG,OAAO;GACrC,WAAW;GACX,UAAU;EACZ,SACM,KAAK,cAAc,MAAM,CACjC;CACF;AACF"}
|
|
@@ -14,7 +14,6 @@ var NodeVersionDatasource = class extends Datasource {
|
|
|
14
14
|
return [defaultRegistryUrl];
|
|
15
15
|
}
|
|
16
16
|
defaultVersioning = id;
|
|
17
|
-
caching = true;
|
|
18
17
|
releaseTimestampSupport = true;
|
|
19
18
|
releaseTimestampNote = "The release timestamp is determined from the `date` field.";
|
|
20
19
|
sourceUrlSupport = "package";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["versioning"],"sources":["../../../../lib/modules/datasource/node-version/index.ts"],"sourcesContent":["import { asTimestamp } from '../../../util/timestamp.ts';\nimport { joinUrlParts } from '../../../util/url.ts';\nimport { id as versioning } from '../../versioning/node/index.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, ReleaseResult } from '../types.ts';\nimport { datasource, defaultRegistryUrl } from './common.ts';\nimport { NodeReleases } from './schema.ts';\n\nexport class NodeVersionDatasource extends Datasource {\n static readonly id = datasource;\n\n constructor() {\n super(datasource);\n }\n\n override getDefaultRegistryUrls(_packageName: string): string[] {\n return [defaultRegistryUrl];\n }\n\n override readonly defaultVersioning = versioning;\n\n override readonly
|
|
1
|
+
{"version":3,"file":"index.js","names":["versioning"],"sources":["../../../../lib/modules/datasource/node-version/index.ts"],"sourcesContent":["import { asTimestamp } from '../../../util/timestamp.ts';\nimport { joinUrlParts } from '../../../util/url.ts';\nimport { id as versioning } from '../../versioning/node/index.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, ReleaseResult } from '../types.ts';\nimport { datasource, defaultRegistryUrl } from './common.ts';\nimport { NodeReleases } from './schema.ts';\n\nexport class NodeVersionDatasource extends Datasource {\n static readonly id = datasource;\n\n constructor() {\n super(datasource);\n }\n\n override getDefaultRegistryUrls(_packageName: string): string[] {\n return [defaultRegistryUrl];\n }\n\n override readonly defaultVersioning = versioning;\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `date` field.';\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'We use the URL: https://github.com/nodejs/node';\n\n private async fetchReleases({\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n /* v8 ignore next -- should never happen */\n if (!registryUrl) {\n return null;\n }\n const result: ReleaseResult = {\n homepage: 'https://nodejs.org',\n sourceUrl: 'https://github.com/nodejs/node',\n registryUrl,\n releases: [],\n };\n try {\n const resp = await this.http.getJson(\n joinUrlParts(registryUrl, 'index.json'),\n NodeReleases,\n );\n result.releases.push(\n ...resp.body.map(({ version, date, lts }) => ({\n version,\n releaseTimestamp: asTimestamp(date),\n isStable: lts !== false,\n })),\n );\n } catch (err) {\n this.handleGenericErrors(err);\n }\n\n return result.releases.length ? result : null;\n }\n\n getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n return this.cached(\n {\n // TODO: types (#22198)\n key: `${config.registryUrl}`,\n fallback: true,\n },\n () => this.fetchReleases(config),\n );\n }\n}\n"],"mappings":";;;;;;;AAQA,IAAa,wBAAb,cAA2C,WAAW;CACpD,OAAgB,KAAK;CAErB,cAAc;EACZ,MAAM,UAAU;CAClB;CAEA,uBAAgC,cAAgC;EAC9D,OAAO,CAAC,kBAAkB;CAC5B;CAEA,oBAAsCA;CAEtC,0BAA4C;CAC5C,uBACE;CACF,mBAAqC;CACrC,gBACE;CAEF,MAAc,cAAc,EAC1B,eACmD;;EAEnD,IAAI,CAAC,aACH,OAAO;EAET,MAAM,SAAwB;GAC5B,UAAU;GACV,WAAW;GACX;GACA,UAAU,CAAC;EACb;EACA,IAAI;GACF,MAAM,OAAO,MAAM,KAAK,KAAK,QAC3B,aAAa,aAAa,YAAY,GACtC,YACF;GACA,OAAO,SAAS,KACd,GAAG,KAAK,KAAK,KAAK,EAAE,SAAS,MAAM,WAAW;IAC5C;IACA,kBAAkB,YAAY,IAAI;IAClC,UAAU,QAAQ;GACpB,EAAE,CACJ;EACF,SAAS,KAAK;GACZ,KAAK,oBAAoB,GAAG;EAC9B;EAEA,OAAO,OAAO,SAAS,SAAS,SAAS;CAC3C;CAEA,YAAY,QAA0D;EACpE,OAAO,KAAK,OACV;GAEE,KAAK,GAAG,OAAO;GACf,UAAU;EACZ,SACM,KAAK,cAAc,MAAM,CACjC;CACF;AACF"}
|
|
@@ -26,7 +26,6 @@ var PythonVersionDatasource = class extends Datasource {
|
|
|
26
26
|
return [defaultRegistryUrl];
|
|
27
27
|
}
|
|
28
28
|
defaultVersioning = id;
|
|
29
|
-
caching = true;
|
|
30
29
|
async getPrebuildReleases() {
|
|
31
30
|
return await this.pythonPrebuildDatasource.getReleases({
|
|
32
31
|
registryUrl: githubBaseUrl,
|