-
-
Notifications
You must be signed in to change notification settings - Fork 301
/
Copy pathPackages.ts
122 lines (111 loc) · 3.5 KB
/
Packages.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
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<string, unknown> {
id: number;
name: string;
version: string;
package_type: string;
created_at: string;
}
export interface ExpandedPackageSchema extends PackageSchema {
_links: Record<string, string>;
pipelines: PipelineSchema[];
versions: MappedOmit<ExpandedPackageSchema, '_links'>;
}
export interface PackageFileSchema extends Record<string, unknown> {
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<C extends boolean = false> extends BaseResource<C> {
all<E extends boolean = false, P extends PaginationTypes = 'offset'>(
{
projectId,
groupId,
...options
}: OneOf<{ projectId: string | number; groupId: string | number }> &
AllPackageOptions &
Sudo &
ShowExpanded<E> &
PaginationRequestOptions<P> = {} as any,
): Promise<GitlabAPIResponse<PackageSchema[], C, E, P>> {
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<PackageSchema[]>()(this, url, options as Sudo & ShowExpanded<E>);
}
allFiles<E extends boolean = false>(
projectId: string | number,
packageId: number,
options?: Sudo & ShowExpanded<E>,
): Promise<GitlabAPIResponse<PackageFileSchema[], C, E, void>> {
return RequestHelper.get<PackageFileSchema[]>()(
this,
endpoint`projects/${projectId}/packages/${packageId}/package_files`,
options,
);
}
remove<E extends boolean = false>(
projectId: string | number,
packageId: number,
options?: Sudo & ShowExpanded<E>,
): Promise<GitlabAPIResponse<void, C, E, void>> {
return RequestHelper.del()(
this,
endpoint`projects/${projectId}/packages/${packageId}`,
options,
);
}
removeFile<E extends boolean = false>(
projectId: string | number,
packageId: number,
projectFileId: number,
options?: Sudo & ShowExpanded<E>,
): Promise<GitlabAPIResponse<void, C, E, void>> {
return RequestHelper.del()(
this,
endpoint`projects/${projectId}/packages/${packageId}/package_files/${projectFileId}`,
options,
);
}
show<E extends boolean = false>(
projectId: string | number,
packageId: number,
options?: Sudo & ShowExpanded<E>,
): Promise<GitlabAPIResponse<ExpandedPackageSchema, C, E, void>> {
return RequestHelper.get<ExpandedPackageSchema>()(
this,
endpoint`projects/${projectId}/packages/${packageId}`,
options,
);
}
}