UNPKG

renovate

Version:

Automated dependency updates. Flexible so you don't need to be.

205 lines (204 loc) • 6.97 kB
import { AdditionalConstraintName, ConstraintName } from "../../util/exec/types.js"; import { Timestamp } from "../../util/timestamp.js"; import { ModuleApi } from "../../types/base.js"; import { ConstraintsFilter, CustomDatasourceConfig } from "../../config/types.js"; //#region lib/modules/datasource/types.d.ts interface GetDigestInputConfig { datasource: string; packageName: string; defaultRegistryUrls?: string[]; registryUrls?: string[] | null; registryUrl?: string; lookupName?: string; additionalRegistryUrls?: string[]; currentValue?: string; currentDigest?: string; replacementName?: string; } interface DigestConfig { packageName: string; lookupName?: string; registryUrl?: string; currentValue?: string; currentDigest?: string; } interface GetReleasesConfig { customDatasources?: Record<string, CustomDatasourceConfig>; datasource?: string; packageName: string; registryUrl?: string; currentValue?: string; constraints?: Partial<Record<ConstraintName, string>>; /** * Any specific overrides for the versioning for the `AdditionalConstraintName`s. */ constraintsVersioning?: Partial<Record<AdditionalConstraintName, string>>; constraintsFiltering?: ConstraintsFilter; } interface GetPkgReleasesConfig { customDatasources?: Record<string, CustomDatasourceConfig>; npmrc?: string; defaultRegistryUrls?: string[]; registryUrls?: string[] | null; additionalRegistryUrls?: string[]; datasource: string; packageName: string; currentValue?: string; versioning?: string; extractVersion?: string; versionCompatibility?: string; currentCompatibility?: string; constraints?: Partial<Record<ConstraintName, string>>; replacementName?: string; replacementVersion?: string; constraintsFiltering?: ConstraintsFilter; /** * Any specific overrides for the versioning for the `AdditionalConstraintName`s. */ constraintsVersioning?: Partial<Record<AdditionalConstraintName, string>>; registryStrategy?: RegistryStrategy; } interface Release { changelogContent?: string; changelogUrl?: string; checksumUrl?: string; downloadUrl?: string; gitRef?: string; isDeprecated?: boolean; isStable?: boolean; releaseTimestamp?: Timestamp | null; version: string; /** The original value to which `extractVersion` was applied */ versionOrig?: string; newDigest?: string | null; constraints?: Partial<Record<ConstraintName, string[]>>; dependencies?: Record<string, string>; devDependencies?: Record<string, string>; registryUrl?: string; sourceUrl?: string | undefined; sourceDirectory?: string; currentAge?: string; isLatest?: boolean; attestation?: boolean; } interface ReleaseTags { /** The latest release, according to the datasource **/ latest?: string; [key: string]: string | undefined; } interface ReleaseResult { deprecationMessage?: string; isPrivate?: boolean; releases: Release[]; tags?: ReleaseTags | undefined; changelogContent?: string; changelogUrl?: string; dependencyUrl?: string; homepage?: string | undefined; gitRef?: string; sourceUrl?: string | null; sourceDirectory?: string; registryUrl?: string; replacementName?: string; replacementVersion?: string; lookupName?: string; packageScope?: string; mostRecentTimestamp?: Timestamp; isAbandoned?: boolean; respectLatest?: boolean; } interface PostprocessReleaseConfig { packageName: string; registryUrl: string | null; } type PostprocessReleaseResult = Release | 'reject'; type RegistryStrategy = /** * Only the first registry URL is queried. * * If multiple URLs are configured a warning is logged and the rest are ignored. Returns whatever the first registry returns, including `null`. */ 'first' /** * Registries are tried in order, returning the first non-null result. * * `null` results and non-fatal errors (HTTP 401/403/404 and generic errors) are skipped and the next registry is tried. * An `ExternalHostError` aborts immediately (unless the cause is `HOST_DISABLED`, which returns `null`). * * Returns `null` when all registries are exhausted without a result. * * The default when `registryStrategy` is `undefined`. */ | 'hunt' /** * All registries are queried. * * Releases are merged and deduplicated by version; tags are merged with later registries' values taking precedence for duplicate keys. * * An `ExternalHostError` aborts immediately. * * Returns `null` when all registries fail. */ | 'merge'; type SourceUrlSupport = 'package' | 'release' | 'none'; interface DatasourceApi extends ModuleApi { id: string; getDigest?(config: DigestConfig, newValue?: string): Promise<string | null>; getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null>; defaultRegistryUrls?: string[] | (() => string[]); defaultVersioning?: string | undefined; defaultConfig?: Record<string, unknown> | undefined; /** * Strategy to use when multiple registryUrls are available to the datasource. * * @see RegistryStrategy */ registryStrategy?: RegistryStrategy | undefined; /** * Whether custom registryUrls are allowed. */ customRegistrySupport: boolean; /** * Whether release timestamp can be returned. */ releaseTimestampSupport: boolean; /** * Notes on how release timestamp is determined. */ releaseTimestampNote?: string; /** * Whether sourceURL can be returned. */ sourceUrlSupport: SourceUrlSupport; /** * Notes on how sourceURL is determined. */ sourceUrlNote?: string; /** * Whether to perform centralized caching in the datasource index/wrapper or not. * * - `true`: datasource index wrapper will cache all results (based on registryUrl/packageName) * - **Must be set only if datasource is able to determine and return `isPrivate` flag** * - `false`: centralized caching is not performed, implementation still could do caching internally */ caching?: boolean | undefined; /** * When the candidate for update is formed, this method could be called * to fetch additional information such as `releaseTimestamp`. * * Also, the release could be checked (and potentially rejected) * via some datasource-specific external call. * * In case of reject, the next candidate release is selected, * and `postprocessRelease` is called again. * * Rejection must happen only when the release will lead to downstream error, * e.g. the release turned out to be yanked or doesn't exist for some reason. * * In other cases, the original `Release` parameter should be returned. */ postprocessRelease(config: PostprocessReleaseConfig, release: Release): Promise<PostprocessReleaseResult>; } //#endregion export { DatasourceApi, DigestConfig, GetDigestInputConfig, GetPkgReleasesConfig, GetReleasesConfig, PostprocessReleaseConfig, PostprocessReleaseResult, RegistryStrategy, Release, ReleaseResult, ReleaseTags, SourceUrlSupport }; //# sourceMappingURL=types.d.ts.map