Skip to content
Snippets Groups Projects
Select Git revision
  • e4a1db75f24fc629b3ae2d162b4d0a9901b2aae9
  • main default protected
  • renovate/main-vitest-monorepo
  • next
  • fix/36615b-branch-reuse-no-cache
  • chore/punycode
  • fix/36615-branch-reuse-bug
  • renovate/main-redis-5.x
  • renovate/main-xmldoc-2.x
  • refactor/pin-new-value
  • feat/36219--git-x509-signing
  • feat/structured-logger
  • hotfix/39.264.1
  • feat/skip-dangling
  • gh-readonly-queue/next/pr-36034-7a061c4ca1024a19e2c295d773d9642625d1c2be
  • hotfix/39.238.3
  • refactor/gitlab-auto-approve
  • feat/template-strings
  • gh-readonly-queue/next/pr-35654-137d934242c784e0c45d4b957362214f0eade1d7
  • fix/32307-global-extends-merging
  • fix/32307-global-extends-repositories
  • 41.9.0
  • 41.8.0
  • 41.7.2
  • 41.7.1
  • 41.7.0
  • 41.6.4
  • 41.6.3
  • 41.6.2
  • 41.6.1
  • 41.6.0
  • 41.5.0
  • 41.4.0
  • 41.3.0
  • 41.2.0
  • 41.1.4
  • 41.1.3
  • 41.1.2
  • 41.1.1
  • 41.1.0
  • 41.0.0
41 results

common.ts

Blame
  • common.ts 6.32 KiB
    import { ReleaseType } from 'semver';
    import { GlobalConfig, UpdateType, ValidationMessage } from '../config/common';
    import { RangeStrategy, SkipReason } from '../types';
    import { File } from '../util/git';
    
    export type Result<T> = T | Promise<T>;
    
    export interface ManagerConfig {
      binarySource?: string;
      dockerUser?: string;
      localDir?: string;
      registryUrls?: string[];
    }
    
    export interface ManagerData<T> {
      managerData?: T;
    }
    
    export interface ExtractConfig extends ManagerConfig {
      endpoint?: string;
      global?: GlobalConfig;
      gradle?: { timeout?: number };
      aliases?: Record<string, string>;
      ignoreNpmrcFile?: boolean;
      yarnrc?: string;
      skipInstalls?: boolean;
      versioning?: string;
    }
    
    export interface CustomExtractConfig extends ExtractConfig {
      matchStrings: string[];
      depNameTemplate?: string;
      lookupNameTemplate?: string;
      datasourceTemplate?: string;
      versioningTemplate?: string;
    }
    
    export interface UpdateArtifactsConfig extends ManagerConfig {
      isLockFileMaintenance?: boolean;
      constraints?: Record<string, string>;
      cacheDir?: string;
      composerIgnorePlatformReqs?: boolean;
      currentValue?: string;
      postUpdateOptions?: string[];
      ignoreScripts?: boolean;
      updateType?: UpdateType;
      toVersion?: string;
    }
    
    export interface PackageUpdateConfig {
      currentValue?: string;
      rangeStrategy?: RangeStrategy;
      supportPolicy?: string[];
    }
    
    export interface RangeConfig<T = Record<string, any>> extends ManagerData<T> {
      composerJsonType?: 'composer-plugin' | 'library' | 'metapackage' | 'project';
      currentValue?: string;
      depName?: string;
      depType?: string;
      manager?: string;
      packageJsonType?: 'app' | 'library';
      rangeStrategy: RangeStrategy;
    }
    
    export interface NpmLockFiles {
      yarnLock?: string;
      packageLock?: string;
      shrinkwrapJson?: string;
      pnpmShrinkwrap?: string;
      npmLock?: string;
      lernaDir?: string;
    }
    
    export interface PackageFile<T = Record<string, any>>
      extends NpmLockFiles,
        ManagerData<T> {
      hasYarnWorkspaces?: boolean;
      internalPackages?: string[]; // TODO: remove
      constraints?: Record<string, string>;
      datasource?: string;
      registryUrls?: string[];
      deps: PackageDependency[];
      ignoreNpmrcFile?: boolean;
      lernaClient?: string;
      lernaPackages?: string[];
      manager?: string;
      mavenProps?: Record<string, any>;
      npmrc?: string;
      packageFile?: string;
      packageJsonName?: string;
      packageJsonType?: 'app' | 'library';
      packageFileVersion?: string;
      parent?: string;
      skipInstalls?: boolean;
      yarnrc?: string;
      yarnWorkspacesPackages?: string[] | string;
      matchStrings?: string[];
    }
    
    export interface Package<T> extends ManagerData<T> {
      currentValue?: string;
      currentDigest?: string;
      depName?: string;
      depNameShort?: string;
      depType?: string;
      fileReplacePosition?: number;
      groupName?: string;
      lineNumber?: number;
      lookupName?: string;
      repo?: string;
      target?: string;
      versioning?: string;
    
      // npm manager
      bumpVersion?: ReleaseType | string;
      npmPackageAlias?: boolean;
      packageFileVersion?: string;
      gitRef?: boolean;
      sourceUrl?: string;
      githubRepo?: string;
      pinDigests?: boolean;
      currentRawValue?: string;
      major?: { enabled?: boolean };
      prettyDepType?: any;
    }
    
    export interface LookupUpdate {
      blockedByPin?: boolean;
      branchName?: string;
      commitMessageAction?: string;
      displayFrom?: string;
      displayTo?: string;
      isLockfileUpdate?: boolean;
      isPin?: boolean;
      isRange?: boolean;
      isRollback?: boolean;
      isSingleVersion?: boolean;
      fromVersion?: string;
      newDigest?: string;
      newDigestShort?: string;
      newMajor?: number;
      newMinor?: number;
      newValue: string;
      newVersion?: string;
      semanticCommitType?: string;
      toVersion?: string;
      updateType?: UpdateType;
      sourceUrl?: string;
    }
    
    export interface PackageDependency<T = Record<string, any>> extends Package<T> {
      warnings?: ValidationMessage[];
      commitMessageTopic?: string;
      currentDigestShort?: string;
      datasource?: string;
      deprecationMessage?: string;
      digestOneAndOnly?: boolean;
      displayFrom?: string;
      displayTo?: string;
      fixedVersion?: string;
      fromVersion?: string;
      lockedVersion?: string;
      propSource?: string;
      registryUrls?: string[];
      rangeStrategy?: RangeStrategy;
      skipReason?: SkipReason;
      sourceLine?: number;
      toVersion?: string;
      updates?: LookupUpdate[];
      replaceString?: string;
      autoReplaceStringTemplate?: string;
      depIndex?: number;
      editFile?: string;
      separateMinorPatch?: boolean;
    }
    
    export interface Upgrade<T = Record<string, any>>
      extends Package<T>,
        NpmLockFiles {
      isLockfileUpdate?: boolean;
      currentRawValue?: any;
      currentVersion?: string;
      depGroup?: string;
      dockerRepository?: string;
      localDir?: string;
      name?: string;
      newDigest?: string;
      newFrom?: string;
      newMajor?: number;
      newValue?: string;
      newVersion?: string;
      packageFile?: string;
      rangeStrategy?: RangeStrategy;
      toVersion?: string;
      updateType?: UpdateType;
      version?: string;
      isLockFileMaintenance?: boolean;
    }
    
    export interface ArtifactError {
      lockFile?: string;
      stderr?: string;
    }
    
    export interface UpdateArtifactsResult {
      artifactError?: ArtifactError;
      file?: File;
    }
    
    export interface UpdateArtifact {
      packageFileName: string;
      updatedDeps: string[];
      newPackageFileContent: string;
      config: UpdateArtifactsConfig;
    }
    
    export interface UpdateDependencyConfig {
      fileContent: string;
      upgrade: Upgrade;
    }
    
    export interface ManagerApi {
      defaultConfig: Record<string, unknown>;
      language?: string;
      supportsLockFileMaintenance?: boolean;
    
      extractAllPackageFiles?(
        config: ExtractConfig,
        files: string[]
      ): Result<PackageFile[] | null>;
    
      extractPackageFile?(
        content: string,
        packageFile?: string,
        config?: ExtractConfig
      ): Result<PackageFile | null>;
    
      getPackageUpdates?(config: PackageUpdateConfig): Result<LookupUpdate[]>;
    
      getRangeStrategy?(config: RangeConfig): RangeStrategy;
    
      updateArtifacts?(
        updateArtifact: UpdateArtifact
      ): Result<UpdateArtifactsResult[] | null>;
    
      updateDependency?(
        updateDependencyConfig: UpdateDependencyConfig
      ): Result<string | null>;
    }
    
    // TODO: name and properties used by npm manager
    export interface PostUpdateConfig extends ManagerConfig, Record<string, any> {
      cacheDir?: string;
    
      postUpdateOptions?: string[];
      skipInstalls?: boolean;
    
      platform?: string;
      upgrades?: Upgrade[];
      npmLock?: string;
      yarnLock?: string;
      branchName?: string;
      reuseExistingBranch?: boolean;
    }