import { Observable } from 'rxjs'; import { ClrModal } from '@clr/angular'; import { HttpHeaders, HttpParams } from '@angular/common/http'; /** * The base interface contains the general properties * ** * interface Base */ export interface Base { id?: string | number; name?: string; creation_time?: Date; update_time?: Date; } /** * Interface for registry endpoints. * ** * interface Endpoint * extends {Base} */ export interface Endpoint extends Base { credential: { access_key?: string; access_secret?: string; type: string; }; description: string; insecure: boolean; name: string; type: string; url: string; status?: string; } export interface PingEndpoint extends Base { access_key?: string; access_secret?: string; description: string; insecure: boolean; name: string; type: string; url: string; } export interface Filter { type: string; style: string; decoration?: string; values?: string[]; } export class Filter { type: string; value?: any; constructor(type: string) { this.type = type; } } export class Trigger { type: string; trigger_settings: | any | { [key: string]: any | any[]; }; constructor(type: string, param: any | { [key: string]: any | any[] }) { this.type = type; this.trigger_settings = param; } } /** * Interface for replication tasks item. * ** * interface ReplicationTasks */ export interface ReplicationTasks extends Base { [key: string]: any | any[]; operation: string; id: number; execution_id: number; resource_type: string; src_resource: string; dst_resource: string; job_id: number; status: string; } /** * Interface for storing metadata of response. * ** * interface Metadata */ export interface Metadata { xTotalCount: number; } /** * Interface for access log. * ** * interface AccessLog */ export interface AccessLog { metadata?: Metadata; data: AccessLogItem[]; } /** * The access log data. * ** * interface AccessLogItem */ export interface AccessLogItem { [key: string]: any | any[]; log_id: number; project_id: number; repo_name: string; repo_tag: string; operation: string; op_time: string | Date; user_id: number; username: string; keywords?: string; // NOT used now guid?: string; // NOT used now } /** * Global system info. * ** * interface SystemInfo * */ export interface SystemInfo { with_trivy?: boolean; with_notary?: boolean; with_admiral?: boolean; with_chartmuseum?: boolean; admiral_endpoint?: string; auth_mode?: string; primary_auth_mode?: boolean; registry_url?: string; project_creation_restriction?: string; self_registration?: boolean; has_ca_root?: boolean; harbor_version?: string; clair_vulnerability_status?: ClairDBStatus; next_scan_all?: number; external_url?: string; } /** * Clair database status info. * ** * interface ClairDetail */ export interface ClairDetail { namespace: string; last_update: number; } export interface ClairDBStatus { overall_last_update: number; details: ClairDetail[]; } export enum VulnerabilitySeverity { _SEVERITY, NONE, UNKNOWN, LOW, MEDIUM, HIGH, } export interface VulnerabilityBase { id: string; severity: string; package: string; version: string; } export interface VulnerabilityItem extends VulnerabilityBase { links: string[]; fix_version: string; layer?: string; description?: string; preferred_cvss?: { [key: string]: string | number }; vendor_attributes?: { CVSS?: { [key: string]: any }; }; } export interface VulnerabilitySummary { report_id?: string; mime_type?: string; scan_status?: string; severity?: string; duration?: number; summary?: SeveritySummary; start_time?: Date; end_time?: Date; scanner?: ScannerVo; complete_percent?: number; } export interface ScannerVo { name?: string; vendor?: string; version?: string; } export interface SeveritySummary { total: number; fixable: number; summary: { [key: string]: number }; } export interface VulnerabilityDetail { 'application/vnd.scanner.adapter.vuln.report.harbor+json; version=1.0'?: VulnerabilityReport; } export interface VulnerabilityReport { vulnerabilities?: VulnerabilityItem[]; } export interface ScanOverview { 'application/vnd.scanner.adapter.vuln.report.harbor+json; version=1.0'?: VulnerabilitySummary; } export interface VulnerabilityComponents { total: number; summary: VulnerabilitySeverityMetrics[]; } export interface VulnerabilitySeverityMetrics { severity: VulnerabilitySeverity; count: number; } export interface ArtifactClickEvent { project_id: string | number; repository_name: string; digest: string; artifact_id: number; } export interface Label { [key: string]: any | any[]; name: string; description: string; color: string; scope: string; project_id: number; } export interface Quota { id: number; ref: { name: string; owner_name: string; id: number; } | null; creation_time: string; update_time: string; hard: { storage: number; }; used: { storage: number; }; } export interface QuotaHard { hard: QuotaStorage; } export interface QuotaStorage { storage: number; } export interface CardItemEvent { event_type: string; item: any; additional_info?: any; } export interface ScrollPosition { sH: number; sT: number; cH: number; } /** * The manifest of image. * ** * interface Manifest */ export interface Manifest { manifset: Object; config: string; } export interface RetagRequest { targetProject: string; targetRepo: string; targetTag: string; srcImage: string; override: boolean; } export interface ClrDatagridComparatorInterface { compare(a: T, b: T): number; } export interface ClrDatagridStateInterface { page?: { from?: number; to?: number; size?: number }; sort?: { by: string | ClrDatagridComparatorInterface; reverse: boolean; }; filters?: ( | { property: string; value: string } | ClrDatagridFilterInterface )[]; } export interface ClrDatagridFilterInterface { isActive(): boolean; accepts(item: T): boolean; changes: Observable; } /** @deprecated since 0.11 */ export interface Comparator extends ClrDatagridComparatorInterface {} /** @deprecated since 0.11 */ export interface ClrFilter extends ClrDatagridFilterInterface {} /** @deprecated since 0.11 */ export interface State extends ClrDatagridStateInterface {} export interface Modal extends ClrModal {} export const Modal = ClrModal; /** * The access user privilege from serve. * ** * interface UserPrivilegeServe */ export interface UserPrivilegeServeItem { [key: string]: any | any[]; resource: string; action: string; } export class OriginCron { type: string; cron: string; } export interface HttpOptionInterface { headers?: | HttpHeaders | { [header: string]: string | string[]; }; observe?: 'body'; params?: | HttpParams | { [param: string]: string | string[]; }; reportProgress?: boolean; responseType: 'json'; withCredentials?: boolean; } export interface HttpOptionTextInterface { headers?: | HttpHeaders | { [header: string]: string | string[]; }; observe?: 'body'; params?: | HttpParams | { [param: string]: string | string[]; }; reportProgress?: boolean; responseType: 'text'; withCredentials?: boolean; } export interface ProjectRootInterface { NAME: string; VALUE: number; LABEL: string; } export interface SystemCVEAllowlist { id?: number; project_id?: number; expires_at?: number; items?: Array<{ cve_id: string }>; } export interface QuotaHardInterface { storage_per_project: number; } export interface QuotaUnitInterface { UNIT: string; } export interface QuotaHardLimitInterface { storageLimit: number; storageUnit: string; id?: string; storageUsed?: string; } export interface EditQuotaQuotaInterface { editQuota: string; setQuota: string; storageQuota: string; quotaHardLimitValue: QuotaHardLimitInterface | any; isSystemDefaultQuota: boolean; }