import { BaseResource } from '@gitbeaker/requester-utils'; import { RequestHelper, endpoint } from '../infrastructure'; import type { GitlabAPIResponse, MappedOmit, OneOf, PaginationRequestOptions, PaginationTypes, ShowExpanded, Sudo, } from '../infrastructure'; import type { PipelineSchema } from './Pipelines'; export interface PackageSchema extends Record { id: number; name: string; version: string; package_type: string; created_at: string; } export interface ExpandedPackageSchema extends PackageSchema { _links: Record; pipelines: PipelineSchema[]; versions: MappedOmit; } export interface PackageFileSchema extends Record { id: number; package_id: number; created_at: string; file_name: string; size: number; file_md5: string; file_sha1: string; pipelines?: PipelineSchema[]; } export type AllPackageOptions = { excludeSubgroups?: boolean; orderBy?: 'created_at' | 'name' | 'version' | 'type' | 'project_path'; sort?: 'asc' | 'desc'; packageType?: 'conan' | 'maven' | 'npm' | 'pypi' | 'composer' | 'nuget' | 'helm' | 'golang'; packageName?: string; includeVersionless?: boolean; status?: 'default' | 'hidden' | 'processing' | 'error' | 'pending_destruction'; }; export class Packages extends BaseResource { all( { projectId, groupId, ...options }: OneOf<{ projectId: string | number; groupId: string | number }> & AllPackageOptions & Sudo & ShowExpanded & PaginationRequestOptions

= {} as any, ): Promise> { let url: string; if (projectId) url = endpoint`projects/${projectId}/packages`; else if (groupId) url = endpoint`groups/${groupId}/packages`; else { throw new Error( 'Missing required argument. Please supply a projectId or a groupId in the options parameter.', ); } return RequestHelper.get()(this, url, options as Sudo & ShowExpanded); } allFiles( projectId: string | number, packageId: number, options?: Sudo & ShowExpanded, ): Promise> { return RequestHelper.get()( this, endpoint`projects/${projectId}/packages/${packageId}/package_files`, options, ); } remove( projectId: string | number, packageId: number, options?: Sudo & ShowExpanded, ): Promise> { return RequestHelper.del()( this, endpoint`projects/${projectId}/packages/${packageId}`, options, ); } removeFile( projectId: string | number, packageId: number, projectFileId: number, options?: Sudo & ShowExpanded, ): Promise> { return RequestHelper.del()( this, endpoint`projects/${projectId}/packages/${packageId}/package_files/${projectFileId}`, options, ); } show( projectId: string | number, packageId: number, options?: Sudo & ShowExpanded, ): Promise> { return RequestHelper.get()( this, endpoint`projects/${projectId}/packages/${packageId}`, options, ); } }