@apiclient.xyz/gitlab 2.0.2 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@apiclient.xyz/gitlab',
|
|
6
|
-
version: '2.0
|
|
6
|
+
version: '2.1.0',
|
|
7
7
|
description: 'A TypeScript client for the GitLab API, providing easy access to projects, groups, CI/CD variables, and pipelines.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx1QkFBdUI7SUFDN0IsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLG9IQUFvSDtDQUNsSSxDQUFBIn0=
|
|
@@ -6,6 +6,31 @@ export declare class GitLabClient {
|
|
|
6
6
|
private request;
|
|
7
7
|
private requestText;
|
|
8
8
|
testConnection(): Promise<ITestConnectionResult>;
|
|
9
|
+
/**
|
|
10
|
+
* Get a single group by its full path (e.g. "foss.global" or "foss.global/push.rocks")
|
|
11
|
+
*/
|
|
12
|
+
getGroupByPath(fullPath: string): Promise<IGitLabGroup>;
|
|
13
|
+
/**
|
|
14
|
+
* List projects within a group (includes subgroups when include_subgroups=true)
|
|
15
|
+
*/
|
|
16
|
+
getGroupProjects(groupId: number | string, opts?: IListOptions): Promise<IGitLabProject[]>;
|
|
17
|
+
/**
|
|
18
|
+
* List all descendant groups (recursive subgroups) within a group
|
|
19
|
+
*/
|
|
20
|
+
getDescendantGroups(groupId: number | string, opts?: IListOptions): Promise<IGitLabGroup[]>;
|
|
21
|
+
/**
|
|
22
|
+
* Create a new group. Optionally nested under a parent group.
|
|
23
|
+
*/
|
|
24
|
+
createGroup(name: string, path: string, parentId?: number): Promise<IGitLabGroup>;
|
|
25
|
+
/**
|
|
26
|
+
* Create a new project (repository).
|
|
27
|
+
*/
|
|
28
|
+
createProject(name: string, opts?: {
|
|
29
|
+
path?: string;
|
|
30
|
+
namespaceId?: number;
|
|
31
|
+
visibility?: string;
|
|
32
|
+
description?: string;
|
|
33
|
+
}): Promise<IGitLabProject>;
|
|
9
34
|
getProjects(opts?: IListOptions): Promise<IGitLabProject[]>;
|
|
10
35
|
getGroups(opts?: IListOptions): Promise<IGitLabGroup[]>;
|
|
11
36
|
getProjectVariables(projectId: number | string): Promise<IGitLabVariable[]>;
|
|
@@ -89,6 +89,60 @@ export class GitLabClient {
|
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
// ---------------------------------------------------------------------------
|
|
92
|
+
// Groups — scoped queries
|
|
93
|
+
// ---------------------------------------------------------------------------
|
|
94
|
+
/**
|
|
95
|
+
* Get a single group by its full path (e.g. "foss.global" or "foss.global/push.rocks")
|
|
96
|
+
*/
|
|
97
|
+
async getGroupByPath(fullPath) {
|
|
98
|
+
return this.request('GET', `/api/v4/groups/${encodeURIComponent(fullPath)}`);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* List projects within a group (includes subgroups when include_subgroups=true)
|
|
102
|
+
*/
|
|
103
|
+
async getGroupProjects(groupId, opts) {
|
|
104
|
+
const page = opts?.page || 1;
|
|
105
|
+
const perPage = opts?.perPage || 50;
|
|
106
|
+
let url = `/api/v4/groups/${encodeURIComponent(groupId)}/projects?include_subgroups=true&order_by=updated_at&sort=desc&page=${page}&per_page=${perPage}`;
|
|
107
|
+
if (opts?.search) {
|
|
108
|
+
url += `&search=${encodeURIComponent(opts.search)}`;
|
|
109
|
+
}
|
|
110
|
+
return this.request('GET', url);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* List all descendant groups (recursive subgroups) within a group
|
|
114
|
+
*/
|
|
115
|
+
async getDescendantGroups(groupId, opts) {
|
|
116
|
+
const page = opts?.page || 1;
|
|
117
|
+
const perPage = opts?.perPage || 50;
|
|
118
|
+
let url = `/api/v4/groups/${encodeURIComponent(groupId)}/descendant_groups?order_by=name&sort=asc&page=${page}&per_page=${perPage}`;
|
|
119
|
+
if (opts?.search) {
|
|
120
|
+
url += `&search=${encodeURIComponent(opts.search)}`;
|
|
121
|
+
}
|
|
122
|
+
return this.request('GET', url);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Create a new group. Optionally nested under a parent group.
|
|
126
|
+
*/
|
|
127
|
+
async createGroup(name, path, parentId) {
|
|
128
|
+
const body = { name, path, visibility: 'private' };
|
|
129
|
+
if (parentId)
|
|
130
|
+
body.parent_id = parentId;
|
|
131
|
+
return this.request('POST', '/api/v4/groups', body);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Create a new project (repository).
|
|
135
|
+
*/
|
|
136
|
+
async createProject(name, opts) {
|
|
137
|
+
return this.request('POST', '/api/v4/projects', {
|
|
138
|
+
name,
|
|
139
|
+
path: opts?.path || name,
|
|
140
|
+
namespace_id: opts?.namespaceId,
|
|
141
|
+
visibility: opts?.visibility || 'private',
|
|
142
|
+
description: opts?.description || '',
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
// ---------------------------------------------------------------------------
|
|
92
146
|
// Projects
|
|
93
147
|
// ---------------------------------------------------------------------------
|
|
94
148
|
async getProjects(opts) {
|
|
@@ -189,4 +243,4 @@ export class GitLabClient {
|
|
|
189
243
|
await this.request('POST', `/api/v4/projects/${encodeURIComponent(projectId)}/pipelines/${pipelineId}/cancel`);
|
|
190
244
|
}
|
|
191
245
|
}
|
|
192
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0bGFiLmNsYXNzZXMuZ2l0bGFiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvZ2l0bGFiLmNsYXNzZXMuZ2l0bGFiY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBYTdDLE1BQU0sT0FBTyxZQUFZO0lBSXZCLFlBQVksT0FBZSxFQUFFLEtBQWE7UUFDeEMsbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxlQUFlO0lBQ2YsOEVBQThFO0lBRXRFLEtBQUssQ0FBQyxPQUFPLENBQ25CLE1BQXlDLEVBQ3pDLElBQVksRUFDWixJQUFVLEVBQ1YsYUFBc0M7UUFFdEMsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksRUFBRSxDQUFDO1FBRXJDLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTthQUNyRCxHQUFHLENBQUMsR0FBRyxDQUFDO2FBQ1IsTUFBTSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDO2FBQ25DLE1BQU0sQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUU5QyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7Z0JBQ25ELE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFD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
|
|
246
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0bGFiLmNsYXNzZXMuZ2l0bGFiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvZ2l0bGFiLmNsYXNzZXMuZ2l0bGFiY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBYTdDLE1BQU0sT0FBTyxZQUFZO0lBSXZCLFlBQVksT0FBZSxFQUFFLEtBQWE7UUFDeEMsbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxlQUFlO0lBQ2YsOEVBQThFO0lBRXRFLEtBQUssQ0FBQyxPQUFPLENBQ25CLE1BQXlDLEVBQ3pDLElBQVksRUFDWixJQUFVLEVBQ1YsYUFBc0M7UUFFdEMsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksRUFBRSxDQUFDO1FBRXJDLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTthQUNyRCxHQUFHLENBQUMsR0FBRyxDQUFDO2FBQ1IsTUFBTSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDO2FBQ25DLE1BQU0sQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUU5QyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7Z0JBQ25ELE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFD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
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -4,25 +4,291 @@ A TypeScript client for the GitLab API, providing easy access to projects, group
|
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
7
|
-
```
|
|
7
|
+
```bash
|
|
8
8
|
npm install @apiclient.xyz/gitlab
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
## Usage
|
|
12
12
|
|
|
13
|
+
All examples below use ESM imports and async/await.
|
|
14
|
+
|
|
15
|
+
### Creating a Client
|
|
16
|
+
|
|
13
17
|
```typescript
|
|
14
18
|
import { GitLabClient } from '@apiclient.xyz/gitlab';
|
|
15
19
|
|
|
16
|
-
const client = new GitLabClient('https://gitlab.com', 'your-private-token');
|
|
20
|
+
const client = new GitLabClient('https://gitlab.example.com', 'your-private-token');
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
The constructor accepts the base URL of your GitLab instance and a personal access token (or project/group token) used for authentication via the `PRIVATE-TOKEN` header.
|
|
24
|
+
|
|
25
|
+
### Testing the Connection
|
|
17
26
|
|
|
18
|
-
|
|
27
|
+
```typescript
|
|
19
28
|
const result = await client.testConnection();
|
|
20
29
|
|
|
21
|
-
|
|
30
|
+
if (result.ok) {
|
|
31
|
+
console.log('Connected successfully.');
|
|
32
|
+
} else {
|
|
33
|
+
console.error('Connection failed:', result.error);
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Listing Projects
|
|
38
|
+
|
|
39
|
+
Retrieve projects you are a member of, ordered by most recently updated.
|
|
40
|
+
|
|
41
|
+
```typescript
|
|
42
|
+
// First page, default 50 per page
|
|
22
43
|
const projects = await client.getProjects();
|
|
23
44
|
|
|
24
|
-
//
|
|
25
|
-
await client.
|
|
45
|
+
// Search with pagination
|
|
46
|
+
const filtered = await client.getProjects({
|
|
47
|
+
search: 'my-service',
|
|
48
|
+
page: 1,
|
|
49
|
+
perPage: 20,
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
for (const project of filtered) {
|
|
53
|
+
console.log(`${project.id} - ${project.path_with_namespace}`);
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Listing Groups
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
const groups = await client.getGroups();
|
|
61
|
+
|
|
62
|
+
// Search groups by name
|
|
63
|
+
const matchingGroups = await client.getGroups({ search: 'platform' });
|
|
64
|
+
|
|
65
|
+
for (const group of matchingGroups) {
|
|
66
|
+
console.log(`${group.id} - ${group.full_path}`);
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Managing Project Variables
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
const projectId = 42;
|
|
74
|
+
|
|
75
|
+
// List all variables
|
|
76
|
+
const vars = await client.getProjectVariables(projectId);
|
|
77
|
+
|
|
78
|
+
// Create a variable
|
|
79
|
+
await client.createProjectVariable(projectId, 'DATABASE_URL', 'postgres://...', {
|
|
80
|
+
protected: true,
|
|
81
|
+
masked: true,
|
|
82
|
+
environment_scope: 'production',
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
// Update a variable
|
|
86
|
+
await client.updateProjectVariable(projectId, 'DATABASE_URL', 'postgres://new-host/...', {
|
|
87
|
+
protected: true,
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
// Delete a variable
|
|
91
|
+
await client.deleteProjectVariable(projectId, 'DATABASE_URL');
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Managing Group Variables
|
|
95
|
+
|
|
96
|
+
The group variable API mirrors the project variable API.
|
|
97
|
+
|
|
98
|
+
```typescript
|
|
99
|
+
const groupId = 7;
|
|
100
|
+
|
|
101
|
+
// List all variables
|
|
102
|
+
const groupVars = await client.getGroupVariables(groupId);
|
|
103
|
+
|
|
104
|
+
// Create a variable
|
|
105
|
+
await client.createGroupVariable(groupId, 'NPM_TOKEN', 'tok-xxx', {
|
|
106
|
+
protected: false,
|
|
107
|
+
masked: true,
|
|
108
|
+
environment_scope: '*',
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
// Update a variable
|
|
112
|
+
await client.updateGroupVariable(groupId, 'NPM_TOKEN', 'tok-yyy', {
|
|
113
|
+
masked: true,
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
// Delete a variable
|
|
117
|
+
await client.deleteGroupVariable(groupId, 'NPM_TOKEN');
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Working with Pipelines
|
|
121
|
+
|
|
122
|
+
```typescript
|
|
123
|
+
const projectId = 42;
|
|
124
|
+
|
|
125
|
+
// List recent pipelines
|
|
126
|
+
const pipelines = await client.getPipelines(projectId, { page: 1, perPage: 10 });
|
|
127
|
+
|
|
128
|
+
for (const pipeline of pipelines) {
|
|
129
|
+
console.log(`Pipeline #${pipeline.id} [${pipeline.status}] on ${pipeline.ref}`);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// Get jobs for a specific pipeline
|
|
133
|
+
const jobs = await client.getPipelineJobs(projectId, pipelines[0].id);
|
|
134
|
+
for (const job of jobs) {
|
|
135
|
+
console.log(` Job "${job.name}" (${job.stage}): ${job.status}`);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Read the raw log output of a job
|
|
139
|
+
const log = await client.getJobLog(projectId, jobs[0].id);
|
|
140
|
+
console.log(log);
|
|
141
|
+
|
|
142
|
+
// Retry a failed pipeline
|
|
143
|
+
await client.retryPipeline(projectId, pipelines[0].id);
|
|
144
|
+
|
|
145
|
+
// Cancel a running pipeline
|
|
146
|
+
await client.cancelPipeline(projectId, pipelines[0].id);
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## API Reference
|
|
150
|
+
|
|
151
|
+
### `GitLabClient`
|
|
152
|
+
|
|
153
|
+
| Method | Signature | Returns | Description |
|
|
154
|
+
|---|---|---|---|
|
|
155
|
+
| `constructor` | `(baseUrl: string, token: string)` | `GitLabClient` | Create a new client instance. |
|
|
156
|
+
| `testConnection` | `()` | `Promise<ITestConnectionResult>` | Verify the token and connectivity. |
|
|
157
|
+
| `getProjects` | `(opts?: IListOptions)` | `Promise<IGitLabProject[]>` | List projects you are a member of. |
|
|
158
|
+
| `getGroups` | `(opts?: IListOptions)` | `Promise<IGitLabGroup[]>` | List accessible groups. |
|
|
159
|
+
| `getProjectVariables` | `(projectId: number \| string)` | `Promise<IGitLabVariable[]>` | List all CI/CD variables for a project. |
|
|
160
|
+
| `createProjectVariable` | `(projectId: number \| string, key: string, value: string, opts?: IVariableOptions)` | `Promise<IGitLabVariable>` | Create a CI/CD variable on a project. |
|
|
161
|
+
| `updateProjectVariable` | `(projectId: number \| string, key: string, value: string, opts?: IVariableOptions)` | `Promise<IGitLabVariable>` | Update an existing project variable. |
|
|
162
|
+
| `deleteProjectVariable` | `(projectId: number \| string, key: string)` | `Promise<void>` | Delete a project variable. |
|
|
163
|
+
| `getGroupVariables` | `(groupId: number \| string)` | `Promise<IGitLabVariable[]>` | List all CI/CD variables for a group. |
|
|
164
|
+
| `createGroupVariable` | `(groupId: number \| string, key: string, value: string, opts?: IVariableOptions)` | `Promise<IGitLabVariable>` | Create a CI/CD variable on a group. |
|
|
165
|
+
| `updateGroupVariable` | `(groupId: number \| string, key: string, value: string, opts?: IVariableOptions)` | `Promise<IGitLabVariable>` | Update an existing group variable. |
|
|
166
|
+
| `deleteGroupVariable` | `(groupId: number \| string, key: string)` | `Promise<void>` | Delete a group variable. |
|
|
167
|
+
| `getPipelines` | `(projectId: number \| string, opts?: IListOptions)` | `Promise<IGitLabPipeline[]>` | List pipelines for a project, newest first. |
|
|
168
|
+
| `getPipelineJobs` | `(projectId: number \| string, pipelineId: number)` | `Promise<IGitLabJob[]>` | Get all jobs for a pipeline. |
|
|
169
|
+
| `getJobLog` | `(projectId: number \| string, jobId: number)` | `Promise<string>` | Retrieve the raw trace/log of a job. |
|
|
170
|
+
| `retryPipeline` | `(projectId: number \| string, pipelineId: number)` | `Promise<void>` | Retry all failed jobs in a pipeline. |
|
|
171
|
+
| `cancelPipeline` | `(projectId: number \| string, pipelineId: number)` | `Promise<void>` | Cancel a running pipeline. |
|
|
172
|
+
|
|
173
|
+
## Types
|
|
174
|
+
|
|
175
|
+
### `IListOptions`
|
|
176
|
+
|
|
177
|
+
Pagination and search options used by `getProjects`, `getGroups`, and `getPipelines`.
|
|
178
|
+
|
|
179
|
+
```typescript
|
|
180
|
+
interface IListOptions {
|
|
181
|
+
search?: string; // Filter results by keyword
|
|
182
|
+
page?: number; // Page number (default: 1)
|
|
183
|
+
perPage?: number; // Items per page (default: 50 for projects/groups, 30 for pipelines)
|
|
184
|
+
}
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### `IVariableOptions`
|
|
188
|
+
|
|
189
|
+
Options when creating or updating CI/CD variables.
|
|
190
|
+
|
|
191
|
+
```typescript
|
|
192
|
+
interface IVariableOptions {
|
|
193
|
+
protected?: boolean; // Only expose to protected branches/tags (default: false)
|
|
194
|
+
masked?: boolean; // Mask the value in job logs (default: false)
|
|
195
|
+
environment_scope?: string; // Environment scope (default: '*' for all environments)
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### `ITestConnectionResult`
|
|
200
|
+
|
|
201
|
+
```typescript
|
|
202
|
+
interface ITestConnectionResult {
|
|
203
|
+
ok: boolean;
|
|
204
|
+
error?: string; // Present when ok is false
|
|
205
|
+
}
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### `IGitLabProject`
|
|
209
|
+
|
|
210
|
+
```typescript
|
|
211
|
+
interface IGitLabProject {
|
|
212
|
+
id: number;
|
|
213
|
+
name: string;
|
|
214
|
+
path_with_namespace: string;
|
|
215
|
+
description: string;
|
|
216
|
+
default_branch: string;
|
|
217
|
+
web_url: string;
|
|
218
|
+
visibility: string;
|
|
219
|
+
topics: string[];
|
|
220
|
+
last_activity_at: string;
|
|
221
|
+
}
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### `IGitLabGroup`
|
|
225
|
+
|
|
226
|
+
```typescript
|
|
227
|
+
interface IGitLabGroup {
|
|
228
|
+
id: number;
|
|
229
|
+
name: string;
|
|
230
|
+
full_path: string;
|
|
231
|
+
description: string;
|
|
232
|
+
web_url: string;
|
|
233
|
+
visibility: string;
|
|
234
|
+
}
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### `IGitLabVariable`
|
|
238
|
+
|
|
239
|
+
```typescript
|
|
240
|
+
interface IGitLabVariable {
|
|
241
|
+
key: string;
|
|
242
|
+
value: string;
|
|
243
|
+
variable_type: string;
|
|
244
|
+
protected: boolean;
|
|
245
|
+
masked: boolean;
|
|
246
|
+
environment_scope: string;
|
|
247
|
+
}
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### `IGitLabPipeline`
|
|
251
|
+
|
|
252
|
+
```typescript
|
|
253
|
+
interface IGitLabPipeline {
|
|
254
|
+
id: number;
|
|
255
|
+
project_id: number;
|
|
256
|
+
status: string;
|
|
257
|
+
ref: string;
|
|
258
|
+
sha: string;
|
|
259
|
+
web_url: string;
|
|
260
|
+
duration: number;
|
|
261
|
+
created_at: string;
|
|
262
|
+
source: string;
|
|
263
|
+
}
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### `IGitLabJob`
|
|
267
|
+
|
|
268
|
+
```typescript
|
|
269
|
+
interface IGitLabJob {
|
|
270
|
+
id: number;
|
|
271
|
+
name: string;
|
|
272
|
+
stage: string;
|
|
273
|
+
status: string;
|
|
274
|
+
duration: number;
|
|
275
|
+
}
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### `IGitLabUser`
|
|
279
|
+
|
|
280
|
+
Returned internally by `testConnection` to verify credentials.
|
|
281
|
+
|
|
282
|
+
```typescript
|
|
283
|
+
interface IGitLabUser {
|
|
284
|
+
id: number;
|
|
285
|
+
username: string;
|
|
286
|
+
name: string;
|
|
287
|
+
email: string;
|
|
288
|
+
avatar_url: string;
|
|
289
|
+
web_url: string;
|
|
290
|
+
state: string;
|
|
291
|
+
}
|
|
26
292
|
```
|
|
27
293
|
|
|
28
294
|
## License
|
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -125,6 +125,73 @@ export class GitLabClient {
|
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
127
|
|
|
128
|
+
// ---------------------------------------------------------------------------
|
|
129
|
+
// Groups — scoped queries
|
|
130
|
+
// ---------------------------------------------------------------------------
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Get a single group by its full path (e.g. "foss.global" or "foss.global/push.rocks")
|
|
134
|
+
*/
|
|
135
|
+
public async getGroupByPath(fullPath: string): Promise<IGitLabGroup> {
|
|
136
|
+
return this.request<IGitLabGroup>(
|
|
137
|
+
'GET',
|
|
138
|
+
`/api/v4/groups/${encodeURIComponent(fullPath)}`,
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* List projects within a group (includes subgroups when include_subgroups=true)
|
|
144
|
+
*/
|
|
145
|
+
public async getGroupProjects(groupId: number | string, opts?: IListOptions): Promise<IGitLabProject[]> {
|
|
146
|
+
const page = opts?.page || 1;
|
|
147
|
+
const perPage = opts?.perPage || 50;
|
|
148
|
+
let url = `/api/v4/groups/${encodeURIComponent(groupId)}/projects?include_subgroups=true&order_by=updated_at&sort=desc&page=${page}&per_page=${perPage}`;
|
|
149
|
+
if (opts?.search) {
|
|
150
|
+
url += `&search=${encodeURIComponent(opts.search)}`;
|
|
151
|
+
}
|
|
152
|
+
return this.request<IGitLabProject[]>('GET', url);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* List all descendant groups (recursive subgroups) within a group
|
|
157
|
+
*/
|
|
158
|
+
public async getDescendantGroups(groupId: number | string, opts?: IListOptions): Promise<IGitLabGroup[]> {
|
|
159
|
+
const page = opts?.page || 1;
|
|
160
|
+
const perPage = opts?.perPage || 50;
|
|
161
|
+
let url = `/api/v4/groups/${encodeURIComponent(groupId)}/descendant_groups?order_by=name&sort=asc&page=${page}&per_page=${perPage}`;
|
|
162
|
+
if (opts?.search) {
|
|
163
|
+
url += `&search=${encodeURIComponent(opts.search)}`;
|
|
164
|
+
}
|
|
165
|
+
return this.request<IGitLabGroup[]>('GET', url);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Create a new group. Optionally nested under a parent group.
|
|
170
|
+
*/
|
|
171
|
+
public async createGroup(name: string, path: string, parentId?: number): Promise<IGitLabGroup> {
|
|
172
|
+
const body: any = { name, path, visibility: 'private' };
|
|
173
|
+
if (parentId) body.parent_id = parentId;
|
|
174
|
+
return this.request<IGitLabGroup>('POST', '/api/v4/groups', body);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Create a new project (repository).
|
|
179
|
+
*/
|
|
180
|
+
public async createProject(name: string, opts?: {
|
|
181
|
+
path?: string;
|
|
182
|
+
namespaceId?: number;
|
|
183
|
+
visibility?: string;
|
|
184
|
+
description?: string;
|
|
185
|
+
}): Promise<IGitLabProject> {
|
|
186
|
+
return this.request<IGitLabProject>('POST', '/api/v4/projects', {
|
|
187
|
+
name,
|
|
188
|
+
path: opts?.path || name,
|
|
189
|
+
namespace_id: opts?.namespaceId,
|
|
190
|
+
visibility: opts?.visibility || 'private',
|
|
191
|
+
description: opts?.description || '',
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
|
|
128
195
|
// ---------------------------------------------------------------------------
|
|
129
196
|
// Projects
|
|
130
197
|
// ---------------------------------------------------------------------------
|