renovate 43.285.6 → 43.285.7

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.
@@ -1,5 +1,5 @@
1
1
  import { logger } from "../../../logger/index.js";
2
- import { replaceUrlPath, resolveBaseUrl } from "../../../util/url.js";
2
+ import { parseUrl, replaceUrlPath, resolveBaseUrl } from "../../../util/url.js";
3
3
  import { find } from "../../../util/host-rules.js";
4
4
  import { ExternalHostError } from "../../../types/errors/external-host-error.js";
5
5
  import { id } from "../../versioning/composer/index.js";
@@ -7,9 +7,22 @@ import { withCache } from "../../../util/cache/package/with-cache.js";
7
7
  import { Datasource } from "../datasource.js";
8
8
  import { map } from "../../../util/promises.js";
9
9
  import { PackagesResponse, PackagistFile, RegistryMeta, extractDepReleases, parsePackagesResponses } from "./schema.js";
10
- import { isObject } from "@sindresorhus/is";
10
+ import { isNumber, isObject } from "@sindresorhus/is";
11
11
  import { z } from "zod/v4";
12
12
  //#region lib/modules/datasource/packagist/index.ts
13
+ function isDefaultPackagistHost(registryUrl) {
14
+ const url = parseUrl(registryUrl);
15
+ /* v8 ignore if -- typescript strict null check */
16
+ if (!url) return false;
17
+ return ["repo.packagist.org", "packagist.org"].includes(url.host);
18
+ }
19
+ function isTransientPackagistError(err) {
20
+ const { code: errCode, statusCode } = err;
21
+ if (errCode && ["ECONNRESET", "ETIMEDOUT"].includes(errCode)) return true;
22
+ if (!isNumber(statusCode)) return false;
23
+ if (statusCode === 429 || statusCode >= 500 && statusCode < 600) return true;
24
+ return false;
25
+ }
13
26
  var PackagistDatasource = class PackagistDatasource extends Datasource {
14
27
  static id = "packagist";
15
28
  constructor() {
@@ -120,10 +133,7 @@ var PackagistDatasource = class PackagistDatasource extends Datasource {
120
133
  logger.trace({ dep }, "dep");
121
134
  return dep;
122
135
  } catch (err) /* istanbul ignore next */ {
123
- if (err.host === "packagist.org") {
124
- if (err.code === "ECONNRESET" || err.code === "ETIMEDOUT") throw new ExternalHostError(err);
125
- if (err.statusCode && err.statusCode >= 500 && err.statusCode < 600) throw new ExternalHostError(err);
126
- }
136
+ if (isDefaultPackagistHost(registryUrl) && isTransientPackagistError(err)) throw new ExternalHostError(err);
127
137
  throw err;
128
138
  }
129
139
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["composerVersioning.id","hostRules.find","p.map"],"sources":["../../../../lib/modules/datasource/packagist/index.ts"],"sourcesContent":["import { isObject } from '@sindresorhus/is';\nimport { z } from 'zod/v4';\nimport { logger } from '../../../logger/index.ts';\nimport { ExternalHostError } from '../../../types/errors/external-host-error.ts';\nimport { withCache } from '../../../util/cache/package/with-cache.ts';\nimport * as hostRules from '../../../util/host-rules.ts';\nimport type { HttpOptions } from '../../../util/http/types.ts';\nimport * as p from '../../../util/promises.ts';\nimport { replaceUrlPath, resolveBaseUrl } from '../../../util/url.ts';\nimport * as composerVersioning from '../../versioning/composer/index.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, ReleaseResult } from '../types.ts';\nimport type { RegistryFile } from './schema.ts';\nimport {\n PackagesResponse,\n PackagistFile,\n RegistryMeta,\n extractDepReleases,\n parsePackagesResponses,\n} from './schema.ts';\n\nexport class PackagistDatasource extends Datasource {\n static readonly id = 'packagist';\n\n constructor() {\n super(PackagistDatasource.id);\n }\n\n override readonly defaultRegistryUrls = ['https://repo.packagist.org'];\n\n override readonly defaultVersioning = composerVersioning.id;\n\n override readonly registryStrategy = 'hunt';\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `time` field in the results.';\n // Note: this can be changed to 'release', as the source is present in each release but we remove it while processing\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'The source URL is determined from `source` field in the results.';\n\n // We calculate auth at this datasource layer so that we can know whether it's safe to cache or not\n private static getHostOpts(url: string): HttpOptions {\n const { username, password } = hostRules.find({\n hostType: PackagistDatasource.id,\n url,\n });\n return username && password ? { username, password } : {};\n }\n\n private async getJson<Schema extends z.ZodType<any, any, any>>(\n url: string,\n schema: Schema,\n ): Promise<z.infer<Schema>> {\n const opts = PackagistDatasource.getHostOpts(url);\n const { body } = await this.http.getJson(url, opts, schema);\n return body;\n }\n\n private async _getRegistryMeta(regUrl: string): Promise<RegistryMeta> {\n const url = resolveBaseUrl(regUrl, 'packages.json');\n const result = await this.getJson(url, RegistryMeta);\n return result;\n }\n\n getRegistryMeta(regUrl: string): Promise<RegistryMeta> {\n return withCache(\n {\n namespace: `datasource-${PackagistDatasource.id}`,\n key: `getRegistryMeta:${regUrl}`,\n },\n () => this._getRegistryMeta(regUrl),\n );\n }\n\n private static isPrivatePackage(regUrl: string): boolean {\n const opts = PackagistDatasource.getHostOpts(regUrl);\n return !!opts.password;\n }\n\n private static getPackagistFileUrl(\n regUrl: string,\n regFile: RegistryFile,\n ): string {\n const { key, hash } = regFile;\n const fileName = hash\n ? key.replace('%hash%', hash)\n : /* istanbul ignore next: hard to test */ key;\n const url = resolveBaseUrl(regUrl, fileName);\n return url;\n }\n\n private async _getPackagistFile(\n regUrl: string,\n regFile: RegistryFile,\n ): Promise<PackagistFile> {\n const url = PackagistDatasource.getPackagistFileUrl(regUrl, regFile);\n const packagistFile = await this.getJson(url, PackagistFile);\n return packagistFile;\n }\n\n getPackagistFile(\n regUrl: string,\n regFile: RegistryFile,\n ): Promise<PackagistFile> {\n return withCache(\n {\n namespace: `datasource-${PackagistDatasource.id}`,\n key: `getPackagistFile:${PackagistDatasource.getPackagistFileUrl(regUrl, regFile)}`,\n ttlMinutes: 1440,\n cacheable: !PackagistDatasource.isPrivatePackage(regUrl),\n },\n () => this._getPackagistFile(regUrl, regFile),\n );\n }\n\n async fetchProviderPackages(\n regUrl: string,\n meta: RegistryMeta,\n ): Promise<void> {\n await p.map(meta.files, async (file) => {\n const res = await this.getPackagistFile(regUrl, file);\n Object.assign(meta.providerPackages, res.providers);\n });\n }\n\n async fetchIncludesPackages(\n regUrl: string,\n meta: RegistryMeta,\n ): Promise<void> {\n await p.map(meta.includesFiles, async (file) => {\n const res = await this.getPackagistFile(regUrl, file);\n for (const [key, val] of Object.entries(res.packages)) {\n meta.includesPackages[key] = extractDepReleases(val);\n }\n });\n }\n\n private async _packagistV2Lookup(\n registryUrl: string,\n metadataUrl: string,\n packageName: string,\n ): Promise<ReleaseResult | null> {\n const pkgUrl = replaceUrlPath(\n registryUrl,\n metadataUrl.replace('%package%', packageName),\n );\n const pkgPromise = this.getJson(pkgUrl, z.unknown());\n\n const devUrl = replaceUrlPath(\n registryUrl,\n metadataUrl.replace('%package%', `${packageName}~dev`),\n );\n const devPromise = this.getJson(devUrl, z.unknown()).then(\n (x) => x,\n () => null,\n );\n\n const responses: NonNullable<unknown>[] = await Promise.all([\n pkgPromise,\n devPromise,\n ]).then((responses) => responses.filter(isObject));\n return parsePackagesResponses(packageName, responses);\n }\n\n packagistV2Lookup(\n registryUrl: string,\n metadataUrl: string,\n packageName: string,\n ): Promise<ReleaseResult | null> {\n return withCache(\n {\n namespace: `datasource-${PackagistDatasource.id}`,\n key: `packagistV2Lookup:${registryUrl}:${metadataUrl}:${packageName}`,\n ttlMinutes: 10,\n },\n () => this._packagistV2Lookup(registryUrl, metadataUrl, packageName),\n );\n }\n\n public getPkgUrl(\n packageName: string,\n registryUrl: string,\n registryMeta: RegistryMeta,\n ): string | null {\n if (\n registryMeta.providersUrl &&\n packageName in registryMeta.providerPackages\n ) {\n let url = registryMeta.providersUrl.replace('%package%', packageName);\n const hash = registryMeta.providerPackages[packageName];\n if (hash) {\n url = url.replace('%hash%', hash);\n }\n return replaceUrlPath(registryUrl, url);\n }\n\n if (registryMeta.providersLazyUrl) {\n return replaceUrlPath(\n registryUrl,\n registryMeta.providersLazyUrl.replace('%package%', packageName),\n );\n }\n\n return null;\n }\n\n public override async getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n logger.trace(`getReleases(${packageName})`);\n\n /* v8 ignore next 3 -- should never happen */\n if (!registryUrl) {\n return null;\n }\n\n try {\n const meta = await this.getRegistryMeta(registryUrl);\n\n if (\n meta.availablePackages &&\n !meta.availablePackages.includes(packageName)\n ) {\n return null;\n }\n\n if (meta.metadataUrl) {\n const packagistResult = await this.packagistV2Lookup(\n registryUrl,\n meta.metadataUrl,\n packageName,\n );\n return packagistResult;\n }\n\n if (meta.packages[packageName]) {\n const result = extractDepReleases(meta.packages[packageName]);\n return result;\n }\n\n await this.fetchIncludesPackages(registryUrl, meta);\n if (meta.includesPackages[packageName]) {\n return meta.includesPackages[packageName];\n }\n\n await this.fetchProviderPackages(registryUrl, meta);\n const pkgUrl = this.getPkgUrl(packageName, registryUrl, meta);\n if (!pkgUrl) {\n return null;\n }\n\n const pkgRes = await this.getJson(pkgUrl, PackagesResponse);\n const dep = extractDepReleases(pkgRes.packages[packageName]);\n logger.trace({ dep }, 'dep');\n return dep;\n } catch (err) /* istanbul ignore next */ {\n if (err.host === 'packagist.org') {\n if (err.code === 'ECONNRESET' || err.code === 'ETIMEDOUT') {\n throw new ExternalHostError(err);\n }\n if (err.statusCode && err.statusCode >= 500 && err.statusCode < 600) {\n throw new ExternalHostError(err);\n }\n }\n throw err;\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["composerVersioning.id","hostRules.find","p.map"],"sources":["../../../../lib/modules/datasource/packagist/index.ts"],"sourcesContent":["import { isNumber, isObject } from '@sindresorhus/is';\nimport { z } from 'zod/v4';\nimport { logger } from '../../../logger/index.ts';\nimport { ExternalHostError } from '../../../types/errors/external-host-error.ts';\nimport { withCache } from '../../../util/cache/package/with-cache.ts';\nimport * as hostRules from '../../../util/host-rules.ts';\nimport type { HttpOptions } from '../../../util/http/types.ts';\nimport * as p from '../../../util/promises.ts';\nimport { parseUrl, replaceUrlPath, resolveBaseUrl } from '../../../util/url.ts';\nimport * as composerVersioning from '../../versioning/composer/index.ts';\nimport { Datasource } from '../datasource.ts';\nimport type { GetReleasesConfig, ReleaseResult } from '../types.ts';\nimport type { RegistryFile } from './schema.ts';\nimport {\n PackagesResponse,\n PackagistFile,\n RegistryMeta,\n extractDepReleases,\n parsePackagesResponses,\n} from './schema.ts';\n\ninterface PackagistLookupError {\n code?: string;\n statusCode?: number;\n}\n\nfunction isDefaultPackagistHost(registryUrl: string): boolean {\n const url = parseUrl(registryUrl);\n\n /* v8 ignore if -- typescript strict null check */\n if (!url) {\n return false;\n }\n\n return ['repo.packagist.org', 'packagist.org'].includes(url.host);\n}\n\nfunction isTransientPackagistError(err: PackagistLookupError): boolean {\n const { code: errCode, statusCode } = err;\n\n if (errCode && ['ECONNRESET', 'ETIMEDOUT'].includes(errCode)) {\n return true;\n }\n\n if (!isNumber(statusCode)) {\n return false;\n }\n\n if (statusCode === 429 || (statusCode >= 500 && statusCode < 600)) {\n return true;\n }\n\n return false;\n}\n\nexport class PackagistDatasource extends Datasource {\n static readonly id = 'packagist';\n\n constructor() {\n super(PackagistDatasource.id);\n }\n\n override readonly defaultRegistryUrls = ['https://repo.packagist.org'];\n\n override readonly defaultVersioning = composerVersioning.id;\n\n override readonly registryStrategy = 'hunt';\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `time` field in the results.';\n // Note: this can be changed to 'release', as the source is present in each release but we remove it while processing\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'The source URL is determined from `source` field in the results.';\n\n // We calculate auth at this datasource layer so that we can know whether it's safe to cache or not\n private static getHostOpts(url: string): HttpOptions {\n const { username, password } = hostRules.find({\n hostType: PackagistDatasource.id,\n url,\n });\n return username && password ? { username, password } : {};\n }\n\n private async getJson<Schema extends z.ZodType<any, any, any>>(\n url: string,\n schema: Schema,\n ): Promise<z.infer<Schema>> {\n const opts = PackagistDatasource.getHostOpts(url);\n const { body } = await this.http.getJson(url, opts, schema);\n return body;\n }\n\n private async _getRegistryMeta(regUrl: string): Promise<RegistryMeta> {\n const url = resolveBaseUrl(regUrl, 'packages.json');\n const result = await this.getJson(url, RegistryMeta);\n return result;\n }\n\n getRegistryMeta(regUrl: string): Promise<RegistryMeta> {\n return withCache(\n {\n namespace: `datasource-${PackagistDatasource.id}`,\n key: `getRegistryMeta:${regUrl}`,\n },\n () => this._getRegistryMeta(regUrl),\n );\n }\n\n private static isPrivatePackage(regUrl: string): boolean {\n const opts = PackagistDatasource.getHostOpts(regUrl);\n return !!opts.password;\n }\n\n private static getPackagistFileUrl(\n regUrl: string,\n regFile: RegistryFile,\n ): string {\n const { key, hash } = regFile;\n const fileName = hash\n ? key.replace('%hash%', hash)\n : /* istanbul ignore next: hard to test */ key;\n const url = resolveBaseUrl(regUrl, fileName);\n return url;\n }\n\n private async _getPackagistFile(\n regUrl: string,\n regFile: RegistryFile,\n ): Promise<PackagistFile> {\n const url = PackagistDatasource.getPackagistFileUrl(regUrl, regFile);\n const packagistFile = await this.getJson(url, PackagistFile);\n return packagistFile;\n }\n\n getPackagistFile(\n regUrl: string,\n regFile: RegistryFile,\n ): Promise<PackagistFile> {\n return withCache(\n {\n namespace: `datasource-${PackagistDatasource.id}`,\n key: `getPackagistFile:${PackagistDatasource.getPackagistFileUrl(regUrl, regFile)}`,\n ttlMinutes: 1440,\n cacheable: !PackagistDatasource.isPrivatePackage(regUrl),\n },\n () => this._getPackagistFile(regUrl, regFile),\n );\n }\n\n async fetchProviderPackages(\n regUrl: string,\n meta: RegistryMeta,\n ): Promise<void> {\n await p.map(meta.files, async (file) => {\n const res = await this.getPackagistFile(regUrl, file);\n Object.assign(meta.providerPackages, res.providers);\n });\n }\n\n async fetchIncludesPackages(\n regUrl: string,\n meta: RegistryMeta,\n ): Promise<void> {\n await p.map(meta.includesFiles, async (file) => {\n const res = await this.getPackagistFile(regUrl, file);\n for (const [key, val] of Object.entries(res.packages)) {\n meta.includesPackages[key] = extractDepReleases(val);\n }\n });\n }\n\n private async _packagistV2Lookup(\n registryUrl: string,\n metadataUrl: string,\n packageName: string,\n ): Promise<ReleaseResult | null> {\n const pkgUrl = replaceUrlPath(\n registryUrl,\n metadataUrl.replace('%package%', packageName),\n );\n const pkgPromise = this.getJson(pkgUrl, z.unknown());\n\n const devUrl = replaceUrlPath(\n registryUrl,\n metadataUrl.replace('%package%', `${packageName}~dev`),\n );\n const devPromise = this.getJson(devUrl, z.unknown()).then(\n (x) => x,\n () => null,\n );\n\n const responses: NonNullable<unknown>[] = await Promise.all([\n pkgPromise,\n devPromise,\n ]).then((responses) => responses.filter(isObject));\n return parsePackagesResponses(packageName, responses);\n }\n\n packagistV2Lookup(\n registryUrl: string,\n metadataUrl: string,\n packageName: string,\n ): Promise<ReleaseResult | null> {\n return withCache(\n {\n namespace: `datasource-${PackagistDatasource.id}`,\n key: `packagistV2Lookup:${registryUrl}:${metadataUrl}:${packageName}`,\n ttlMinutes: 10,\n },\n () => this._packagistV2Lookup(registryUrl, metadataUrl, packageName),\n );\n }\n\n public getPkgUrl(\n packageName: string,\n registryUrl: string,\n registryMeta: RegistryMeta,\n ): string | null {\n if (\n registryMeta.providersUrl &&\n packageName in registryMeta.providerPackages\n ) {\n let url = registryMeta.providersUrl.replace('%package%', packageName);\n const hash = registryMeta.providerPackages[packageName];\n if (hash) {\n url = url.replace('%hash%', hash);\n }\n return replaceUrlPath(registryUrl, url);\n }\n\n if (registryMeta.providersLazyUrl) {\n return replaceUrlPath(\n registryUrl,\n registryMeta.providersLazyUrl.replace('%package%', packageName),\n );\n }\n\n return null;\n }\n\n public override async getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n logger.trace(`getReleases(${packageName})`);\n\n /* v8 ignore next 3 -- should never happen */\n if (!registryUrl) {\n return null;\n }\n\n try {\n const meta = await this.getRegistryMeta(registryUrl);\n\n if (\n meta.availablePackages &&\n !meta.availablePackages.includes(packageName)\n ) {\n return null;\n }\n\n if (meta.metadataUrl) {\n const packagistResult = await this.packagistV2Lookup(\n registryUrl,\n meta.metadataUrl,\n packageName,\n );\n return packagistResult;\n }\n\n if (meta.packages[packageName]) {\n const result = extractDepReleases(meta.packages[packageName]);\n return result;\n }\n\n await this.fetchIncludesPackages(registryUrl, meta);\n if (meta.includesPackages[packageName]) {\n return meta.includesPackages[packageName];\n }\n\n await this.fetchProviderPackages(registryUrl, meta);\n const pkgUrl = this.getPkgUrl(packageName, registryUrl, meta);\n if (!pkgUrl) {\n return null;\n }\n\n const pkgRes = await this.getJson(pkgUrl, PackagesResponse);\n const dep = extractDepReleases(pkgRes.packages[packageName]);\n logger.trace({ dep }, 'dep');\n return dep;\n } catch (err) /* istanbul ignore next */ {\n if (\n isDefaultPackagistHost(registryUrl) &&\n isTransientPackagistError(err)\n ) {\n throw new ExternalHostError(err);\n }\n throw err;\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;AA0BA,SAAS,uBAAuB,aAA8B;CAC5D,MAAM,MAAM,SAAS,WAAW;;CAGhC,IAAI,CAAC,KACH,OAAO;CAGT,OAAO,CAAC,sBAAsB,eAAe,CAAC,CAAC,SAAS,IAAI,IAAI;AAClE;AAEA,SAAS,0BAA0B,KAAoC;CACrE,MAAM,EAAE,MAAM,SAAS,eAAe;CAEtC,IAAI,WAAW,CAAC,cAAc,WAAW,CAAC,CAAC,SAAS,OAAO,GACzD,OAAO;CAGT,IAAI,CAAC,SAAS,UAAU,GACtB,OAAO;CAGT,IAAI,eAAe,OAAQ,cAAc,OAAO,aAAa,KAC3D,OAAO;CAGT,OAAO;AACT;AAEA,IAAa,sBAAb,MAAa,4BAA4B,WAAW;CAClD,OAAgB,KAAK;CAErB,cAAc;EACZ,MAAM,oBAAoB,EAAE;CAC9B;CAEA,sBAAwC,CAAC,4BAA4B;CAErE,oBAAsCA;CAEtC,mBAAqC;CAErC,0BAA4C;CAC5C,uBACE;CAEF,mBAAqC;CACrC,gBACE;CAGF,OAAe,YAAY,KAA0B;EACnD,MAAM,EAAE,UAAU,aAAaC,KAAe;GAC5C,UAAU,oBAAoB;GAC9B;EACF,CAAC;EACD,OAAO,YAAY,WAAW;GAAE;GAAU;EAAS,IAAI,CAAC;CAC1D;CAEA,MAAc,QACZ,KACA,QAC0B;EAC1B,MAAM,OAAO,oBAAoB,YAAY,GAAG;EAChD,MAAM,EAAE,SAAS,MAAM,KAAK,KAAK,QAAQ,KAAK,MAAM,MAAM;EAC1D,OAAO;CACT;CAEA,MAAc,iBAAiB,QAAuC;EACpE,MAAM,MAAM,eAAe,QAAQ,eAAe;EAElD,OAAO,MADc,KAAK,QAAQ,KAAK,YAAY;CAErD;CAEA,gBAAgB,QAAuC;EACrD,OAAO,UACL;GACE,WAAW,cAAc,oBAAoB;GAC7C,KAAK,mBAAmB;EAC1B,SACM,KAAK,iBAAiB,MAAM,CACpC;CACF;CAEA,OAAe,iBAAiB,QAAyB;EAEvD,OAAO,CAAC,CADK,oBAAoB,YAAY,MACjC,CAAC,CAAC;CAChB;CAEA,OAAe,oBACb,QACA,SACQ;EACR,MAAM,EAAE,KAAK,SAAS;EAKtB,OADY,eAAe,QAHV,OACb,IAAI,QAAQ,UAAU,IAAI,+CACe,GAEpC;CACX;CAEA,MAAc,kBACZ,QACA,SACwB;EACxB,MAAM,MAAM,oBAAoB,oBAAoB,QAAQ,OAAO;EAEnE,OAAO,MADqB,KAAK,QAAQ,KAAK,aAAa;CAE7D;CAEA,iBACE,QACA,SACwB;EACxB,OAAO,UACL;GACE,WAAW,cAAc,oBAAoB;GAC7C,KAAK,oBAAoB,oBAAoB,oBAAoB,QAAQ,OAAO;GAChF,YAAY;GACZ,WAAW,CAAC,oBAAoB,iBAAiB,MAAM;EACzD,SACM,KAAK,kBAAkB,QAAQ,OAAO,CAC9C;CACF;CAEA,MAAM,sBACJ,QACA,MACe;EACf,MAAMC,IAAM,KAAK,OAAO,OAAO,SAAS;GACtC,MAAM,MAAM,MAAM,KAAK,iBAAiB,QAAQ,IAAI;GACpD,OAAO,OAAO,KAAK,kBAAkB,IAAI,SAAS;EACpD,CAAC;CACH;CAEA,MAAM,sBACJ,QACA,MACe;EACf,MAAMA,IAAM,KAAK,eAAe,OAAO,SAAS;GAC9C,MAAM,MAAM,MAAM,KAAK,iBAAiB,QAAQ,IAAI;GACpD,KAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,IAAI,QAAQ,GAClD,KAAK,iBAAiB,OAAO,mBAAmB,GAAG;EAEvD,CAAC;CACH;CAEA,MAAc,mBACZ,aACA,aACA,aAC+B;EAC/B,MAAM,SAAS,eACb,aACA,YAAY,QAAQ,aAAa,WAAW,CAC9C;EACA,MAAM,aAAa,KAAK,QAAQ,QAAQ,EAAE,QAAQ,CAAC;EAEnD,MAAM,SAAS,eACb,aACA,YAAY,QAAQ,aAAa,GAAG,YAAY,KAAK,CACvD;EACA,MAAM,aAAa,KAAK,QAAQ,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,MAClD,MAAM,SACD,IACR;EAMA,OAAO,uBAAuB,aAAa,MAJK,QAAQ,IAAI,CAC1D,YACA,UACF,CAAC,CAAC,CAAC,MAAM,cAAc,UAAU,OAAO,QAAQ,CAAC,CACG;CACtD;CAEA,kBACE,aACA,aACA,aAC+B;EAC/B,OAAO,UACL;GACE,WAAW,cAAc,oBAAoB;GAC7C,KAAK,qBAAqB,YAAY,GAAG,YAAY,GAAG;GACxD,YAAY;EACd,SACM,KAAK,mBAAmB,aAAa,aAAa,WAAW,CACrE;CACF;CAEA,UACE,aACA,aACA,cACe;EACf,IACE,aAAa,gBACb,eAAe,aAAa,kBAC5B;GACA,IAAI,MAAM,aAAa,aAAa,QAAQ,aAAa,WAAW;GACpE,MAAM,OAAO,aAAa,iBAAiB;GAC3C,IAAI,MACF,MAAM,IAAI,QAAQ,UAAU,IAAI;GAElC,OAAO,eAAe,aAAa,GAAG;EACxC;EAEA,IAAI,aAAa,kBACf,OAAO,eACL,aACA,aAAa,iBAAiB,QAAQ,aAAa,WAAW,CAChE;EAGF,OAAO;CACT;CAEA,MAAsB,YAAY,EAChC,aACA,eACmD;EACnD,OAAO,MAAM,eAAe,YAAY,EAAE;;EAG1C,IAAI,CAAC,aACH,OAAO;EAGT,IAAI;GACF,MAAM,OAAO,MAAM,KAAK,gBAAgB,WAAW;GAEnD,IACE,KAAK,qBACL,CAAC,KAAK,kBAAkB,SAAS,WAAW,GAE5C,OAAO;GAGT,IAAI,KAAK,aAMP,OAAO,MALuB,KAAK,kBACjC,aACA,KAAK,aACL,WACF;GAIF,IAAI,KAAK,SAAS,cAEhB,OADe,mBAAmB,KAAK,SAAS,YACpC;GAGd,MAAM,KAAK,sBAAsB,aAAa,IAAI;GAClD,IAAI,KAAK,iBAAiB,cACxB,OAAO,KAAK,iBAAiB;GAG/B,MAAM,KAAK,sBAAsB,aAAa,IAAI;GAClD,MAAM,SAAS,KAAK,UAAU,aAAa,aAAa,IAAI;GAC5D,IAAI,CAAC,QACH,OAAO;GAIT,MAAM,MAAM,oBAAmB,MADV,KAAK,QAAQ,QAAQ,gBAAgB,EAAA,CACpB,SAAS,YAAY;GAC3D,OAAO,MAAM,EAAE,IAAI,GAAG,KAAK;GAC3B,OAAO;EACT,SAAS,kCAAgC;GACvC,IACE,uBAAuB,WAAW,KAClC,0BAA0B,GAAG,GAE7B,MAAM,IAAI,kBAAkB,GAAG;GAEjC,MAAM;EACR;CACF;AACF"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "renovate",
3
3
  "description": "Automated dependency updates. Flexible so you don't need to be.",
4
- "version": "43.285.6",
4
+ "version": "43.285.7",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "renovate": "dist/renovate.js",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$id": "https://docs.renovatebot.com/renovate-schema.json",
3
- "title": "JSON schema for Renovate 43.285.6 config files (https://renovatebot.com/)",
3
+ "title": "JSON schema for Renovate 43.285.7 config files (https://renovatebot.com/)",
4
4
  "$schema": "http://json-schema.org/draft-07/schema#",
5
- "x-renovate-version": "43.285.6",
5
+ "x-renovate-version": "43.285.7",
6
6
  "allowComments": true,
7
7
  "type": "object",
8
8
  "definitions": {