@secustor/backstage-plugin-renovate-backend
Version:
133 lines (126 loc) • 5.11 kB
TypeScript
import express from 'express';
import { Config } from '@backstage/config';
import * as _backstage_backend_plugin_api from '@backstage/backend-plugin-api';
import { DatabaseService, LoggerService, AuthService, SchedulerService, DiscoveryService } from '@backstage/backend-plugin-api';
import { RepositoryReportResponse, RenovateReport, TargetRepo, RenovateWrapper } from '@secustor/backstage-plugin-renovate-common';
import { QueueFactory, RunOptions, Runnable, AddResult } from '@secustor/backstage-plugin-renovate-node';
import { Entity } from '@backstage/catalog-model';
declare class DatabaseHandler {
private client;
private logger;
static create(options: DatabaseCreationParameters): Promise<DatabaseHandler>;
private constructor();
addReport(options: AddReportParameters): Promise<void>;
getReports(query?: ReportQueryParameters): Promise<RepositoryReportResponse>;
getTargets(table?: 'reports' | 'dependencies'): Promise<ReportTargetQuery[]>;
deleteReportsByTarget({ host, repository }: ReportTargetQuery, options?: DeleteOptions): Promise<number>;
deleteReports(options?: DeleteOptions): Promise<number>;
private updateDependencies;
getDependencies(filters: DependenciesFilter, pagination?: Partial<PaginationOptions>): Promise<Pagination<DependencyRow[]>>;
getDependenciesCount(filters: DependenciesFilter): Promise<number>;
private applyDependencyFilters;
/**
* Gets the available values for the dependencies stored in the database.
* If filters are supplied, OTHER values are filtered accordingly, if a filter is supplied, all values are returned
* @param filters
*/
getDependenciesValues(filters?: DependencyValueFilters): Promise<DependencyValues>;
deleteDependencies(options: DeleteOptions): Promise<number>;
deleteDependenciesByTarget({ host, repository }: ReportTargetQuery, options?: DeleteOptions): Promise<number>;
}
interface RouterOptions {
auth: AuthService;
rootConfig: Config;
logger: LoggerService;
databaseHandler: DatabaseHandler;
runtimes: Map<string, RenovateWrapper>;
queueFactories: Map<string, QueueFactory<RunOptions>>;
scheduler: SchedulerService;
discovery: DiscoveryService;
}
interface DependencyRow {
id?: string;
run_id: string;
host: string;
repository: string;
extractionTimestamp: Date;
manager: string;
datasource: string;
packageFile: string;
depName: string;
packageName?: string;
depType?: string;
currentValue?: string;
currentVersion?: string;
currentVersionTimestamp?: Date;
skipReason?: string;
registryUrl?: string;
sourceUrl?: string;
currentVersionReleased?: Date;
}
interface ReportTargetQuery {
host?: string;
repository?: string;
}
interface DeleteOptions {
/**
* If falsely (0, false or undefined) delete all reports
* If keepLatest is a number keep this number of records.
* In case it is boolean true, the behaviour is identical to 1
*/
keepLatest?: boolean | number;
}
interface DatabaseCreationParameters {
database: DatabaseService;
logger: LoggerService;
}
interface ReportQueryParameters {
host?: string;
repository?: string;
}
interface AddReportParameters {
runID: string;
taskID: string;
report: RenovateReport;
target: TargetRepo;
logger?: LoggerService;
}
interface DependenciesFilter extends DependencyValueFilters {
latestOnly?: boolean;
}
declare const DependencyValueFiltersKeys: readonly ["datasource", "depName", "depType", "host", "manager", "packageFile", "repository"];
type DependencyValueFiltersKey = (typeof DependencyValueFiltersKeys)[number];
type DependencyValueFilters = Partial<Record<DependencyValueFiltersKey, string[]>>;
type DependencyValues = Record<DependencyValueFiltersKey, string[]>;
interface PaginationOptions {
page: number;
pageSize: number;
}
interface Pagination<T> {
result: T;
page: number;
pageSize: number;
pageCount: number;
total: number;
}
declare class RenovateRunner implements Runnable<RunOptions> {
private readonly databaseHandler;
private readonly rootConfig;
readonly logger: LoggerService;
private readonly runtimes;
private readonly queue;
constructor(queueFactories: Map<string, QueueFactory<RunOptions>>, databaseHandler: DatabaseHandler, rootConfig: Config, logger: LoggerService, runtimes: Map<string, RenovateWrapper>);
static from(options: RouterOptions): Promise<RenovateRunner>;
addToQueue(...targets: (string | Entity | TargetRepo)[]): Promise<AddResult[]>;
runNext(target: string | Entity | TargetRepo): Promise<AddResult>;
run(props: RunOptions): Promise<void>;
renovate({ id, target }: RunOptions, logger: LoggerService): Promise<RenovateReport>;
}
declare function createRouter(runner: RenovateRunner, options: RouterOptions): Promise<express.Router>;
/**
* Renovate backend plugin
*
* @public
*/
declare const renovatePlugin: _backstage_backend_plugin_api.BackendFeature;
export { createRouter, renovatePlugin as default };