gitverse-api-sdk 4.0.2 → 5.0.1
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.
- package/README.md +106 -270
- package/dist/api/actions.d.ts +360 -363
- package/dist/api/actions.js +3 -3
- package/dist/api/actions.js.map +3 -3
- package/dist/api/emails.d.ts +56 -51
- package/dist/api/emails.js +3 -3
- package/dist/api/emails.js.map +3 -3
- package/dist/api/issues.d.ts +297 -214
- package/dist/api/issues.js +3 -3
- package/dist/api/issues.js.map +3 -3
- package/dist/api/organizations.d.ts +78 -7
- package/dist/api/organizations.js +3 -3
- package/dist/api/organizations.js.map +3 -3
- package/dist/api/pulls.d.ts +338 -427
- package/dist/api/pulls.js +3 -3
- package/dist/api/pulls.js.map +3 -3
- package/dist/api/releases.d.ts +198 -231
- package/dist/api/releases.js +3 -3
- package/dist/api/releases.js.map +3 -3
- package/dist/api/repositories.d.ts +878 -330
- package/dist/api/repositories.js +3 -3
- package/dist/api/repositories.js.map +3 -3
- package/dist/api/stars.d.ts +109 -182
- package/dist/api/stars.js +3 -3
- package/dist/api/stars.js.map +3 -3
- package/dist/api/teams.d.ts +118 -134
- package/dist/api/teams.js +3 -3
- package/dist/api/teams.js.map +3 -3
- package/dist/api/users.d.ts +99 -97
- package/dist/api/users.js +3 -3
- package/dist/api/users.js.map +3 -3
- package/dist/client.d.ts +14 -0
- package/dist/client.js +3 -3
- package/dist/client.js.map +3 -3
- package/dist/enums.d.ts +27 -71
- package/dist/enums.js +3 -3
- package/dist/enums.js.map +3 -3
- package/dist/errors.d.ts +12 -10
- package/dist/errors.js +2 -2
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +2042 -2130
- package/dist/index.js +2 -2
- package/dist/index.js.map +3 -3
- package/dist/types.d.ts +779 -1223
- package/dist/utils.js +1 -2
- package/dist/utils.js.map +1 -1
- package/package.json +2 -2
- package/dist/api/branches.d.ts +0 -173
- package/dist/api/branches.js +0 -4
- package/dist/api/branches.js.map +0 -10
- package/dist/api/collaborators.d.ts +0 -243
- package/dist/api/collaborators.js +0 -4
- package/dist/api/collaborators.js.map +0 -10
- package/dist/api/commits.d.ts +0 -321
- package/dist/api/commits.js +0 -4
- package/dist/api/commits.js.map +0 -10
- package/dist/api/contents.d.ts +0 -364
- package/dist/api/contents.js +0 -4
- package/dist/api/contents.js.map +0 -10
- package/dist/api/forks.d.ts +0 -344
- package/dist/api/forks.js +0 -4
- package/dist/api/forks.js.map +0 -10
- package/dist/api/git.d.ts +0 -247
- package/dist/api/git.js +0 -4
- package/dist/api/git.js.map +0 -10
package/README.md
CHANGED
|
@@ -3,21 +3,21 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/gitverse-api-sdk)
|
|
4
4
|
[](https://opensource.org/licenses/MIT)
|
|
5
5
|
[](https://gitverse.ru/rainypixel/gitverse-sdk)
|
|
6
|
-
[](https://gitverse.ru)
|
|
7
7
|
|
|
8
8
|
Полнофункциональный TypeScript SDK для GitVerse API с поддержкой всех эндпоинтов, обработкой Rate Limits и версионирования.
|
|
9
9
|
|
|
10
|
-
> **Совместимость:** SDK синхронизирован с GitVerse
|
|
10
|
+
> **Совместимость:** SDK синхронизирован с GitVerse OpenAPI v1.1 от 15.01.2026
|
|
11
11
|
|
|
12
12
|
## Ключевые особенности
|
|
13
13
|
|
|
14
|
-
- ✅
|
|
15
|
-
- ✅ **Rate Limits** — Автоматическая обработка лимитов запросов
|
|
16
|
-
- ✅ **Версионирование API** — Предупреждения об устаревших версиях
|
|
17
|
-
- ✅ **Специализированные ошибки** — `RateLimitError`, `ApiVersionWarning`
|
|
14
|
+
- ✅ **Полное покрытие API** — Все эндпоинты GitVerse OpenAPI v1.1
|
|
15
|
+
- ✅ **Rate Limits** — Автоматическая обработка лимитов запросов
|
|
16
|
+
- ✅ **Версионирование API** — Предупреждения об устаревших версиях
|
|
17
|
+
- ✅ **Специализированные ошибки** — `RateLimitError`, `ApiVersionWarning`
|
|
18
18
|
- ✅ **100% покрытие тестами** — Полное тестирование всех методов
|
|
19
19
|
- ✅ **Нет зависимостей** — Только нативный `fetch` API и `Buffer`
|
|
20
|
-
- ✅ **Tree-shakable** — Модульная архитектура
|
|
20
|
+
- ✅ **Tree-shakable** — Модульная архитектура
|
|
21
21
|
- ✅ **TypeScript** — Полная типизация из коробки
|
|
22
22
|
|
|
23
23
|
## Установка
|
|
@@ -41,11 +41,10 @@ bun add gitverse-api-sdk
|
|
|
41
41
|
```typescript
|
|
42
42
|
import { GitVerse } from 'gitverse-api-sdk';
|
|
43
43
|
|
|
44
|
-
// Создание клиента с токеном
|
|
45
44
|
const client = new GitVerse({ token: 'your-token-here' });
|
|
46
45
|
|
|
47
46
|
// Получение информации о текущем пользователе
|
|
48
|
-
const user = await client.users.
|
|
47
|
+
const user = await client.users.getAuthenticated();
|
|
49
48
|
console.log(user.login);
|
|
50
49
|
|
|
51
50
|
// Получение репозитория
|
|
@@ -63,8 +62,6 @@ const pr = await client.pulls.create('owner', 'repo', {
|
|
|
63
62
|
|
|
64
63
|
## Обработка Rate Limits
|
|
65
64
|
|
|
66
|
-
SDK автоматически отслеживает лимиты запросов и предоставляет подробную информацию при их превышении:
|
|
67
|
-
|
|
68
65
|
```typescript
|
|
69
66
|
import { GitVerse, RateLimitError } from 'gitverse-api-sdk';
|
|
70
67
|
|
|
@@ -77,169 +74,99 @@ try {
|
|
|
77
74
|
console.log(`Rate limit exceeded!`);
|
|
78
75
|
console.log(`Limit: ${error.rateLimit.limit}`);
|
|
79
76
|
console.log(`Remaining: ${error.rateLimit.remaining}`);
|
|
80
|
-
console.log(`
|
|
81
|
-
|
|
82
|
-
// Ожидание сброса лимита
|
|
83
|
-
const waitTime = error.rateLimit.reset * 1000 - Date.now();
|
|
84
|
-
await new Promise(resolve => setTimeout(resolve, waitTime));
|
|
77
|
+
console.log(`Retry after: ${error.rateLimit.retryAfter}s`);
|
|
85
78
|
}
|
|
86
79
|
}
|
|
87
80
|
```
|
|
88
81
|
|
|
89
|
-
## Обработка версионирования API
|
|
90
|
-
|
|
91
|
-
SDK предупреждает об использовании устаревших версий API:
|
|
92
|
-
|
|
93
|
-
```typescript
|
|
94
|
-
import { GitVerse } from 'gitverse-api-sdk';
|
|
95
|
-
|
|
96
|
-
const client = new GitVerse({
|
|
97
|
-
token: 'your-token',
|
|
98
|
-
apiVersion: '2022-11-28', // Указание версии API
|
|
99
|
-
onApiVersionWarning: (warning) => {
|
|
100
|
-
console.warn(`API Warning: ${warning.message}`);
|
|
101
|
-
console.warn(`Current version: ${warning.currentVersion}`);
|
|
102
|
-
console.warn(`Sunset date: ${warning.sunsetDate}`);
|
|
103
|
-
}
|
|
104
|
-
});
|
|
105
|
-
```
|
|
106
|
-
|
|
107
82
|
## Отмена запросов (AbortSignal)
|
|
108
83
|
|
|
109
|
-
SDK поддерживает отмену HTTP-запросов через стандартный Web API `AbortController`:
|
|
110
|
-
|
|
111
84
|
```typescript
|
|
112
|
-
import { GitVerse } from 'gitverse-api-sdk';
|
|
113
|
-
|
|
114
|
-
const client = new GitVerse({ token: 'your-token' });
|
|
115
|
-
|
|
116
|
-
// Создание контроллера для управления отменой запроса
|
|
117
85
|
const controller = new AbortController();
|
|
118
86
|
|
|
119
|
-
//
|
|
87
|
+
// Запрос с возможностью отмены
|
|
120
88
|
const promise = client.repos.get('owner', 'repo', { signal: controller.signal });
|
|
121
89
|
|
|
122
|
-
// Отмена запроса
|
|
90
|
+
// Отмена запроса
|
|
123
91
|
controller.abort();
|
|
124
92
|
|
|
125
93
|
try {
|
|
126
|
-
|
|
94
|
+
await promise;
|
|
127
95
|
} catch (error) {
|
|
128
96
|
if (error.name === 'AbortError') {
|
|
129
|
-
console.log('Запрос
|
|
97
|
+
console.log('Запрос отменён');
|
|
130
98
|
}
|
|
131
99
|
}
|
|
132
100
|
```
|
|
133
101
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
```typescript
|
|
137
|
-
// Автоматическая отмена запроса через 5 секунд
|
|
138
|
-
const controller = new AbortController();
|
|
139
|
-
const timeoutId = setTimeout(() => controller.abort(), 5000);
|
|
140
|
-
|
|
141
|
-
try {
|
|
142
|
-
const repo = await client.repos.get('owner', 'repo', { signal: controller.signal });
|
|
143
|
-
clearTimeout(timeoutId);
|
|
144
|
-
console.log('Репозиторий получен:', repo.name);
|
|
145
|
-
} catch (error) {
|
|
146
|
-
if (error.name === 'AbortError') {
|
|
147
|
-
console.log('Запрос превысил таймаут');
|
|
148
|
-
}
|
|
149
|
-
throw error;
|
|
150
|
-
}
|
|
151
|
-
```
|
|
102
|
+
## API Модули
|
|
152
103
|
|
|
153
|
-
###
|
|
104
|
+
### 👤 Users (4 метода)
|
|
154
105
|
|
|
155
106
|
```typescript
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
const [data, setData] = useState(null);
|
|
161
|
-
|
|
162
|
-
useEffect(() => {
|
|
163
|
-
const controller = new AbortController();
|
|
164
|
-
const client = new GitVerse({ token: 'your-token' });
|
|
165
|
-
|
|
166
|
-
client.repos.get(owner, repo, { signal: controller.signal })
|
|
167
|
-
.then(setData)
|
|
168
|
-
.catch(error => {
|
|
169
|
-
if (error.name !== 'AbortError') {
|
|
170
|
-
console.error('Ошибка загрузки:', error);
|
|
171
|
-
}
|
|
172
|
-
});
|
|
173
|
-
|
|
174
|
-
// Отмена запроса при размонтировании компонента
|
|
175
|
-
return () => controller.abort();
|
|
176
|
-
}, [owner, repo]);
|
|
177
|
-
|
|
178
|
-
return <div>{data ? data.name : 'Загрузка...'}</div>;
|
|
179
|
-
}
|
|
107
|
+
await client.users.getAuthenticated();
|
|
108
|
+
await client.users.get('username');
|
|
109
|
+
await client.users.listEmails();
|
|
110
|
+
await client.users.listFollowers('username');
|
|
180
111
|
```
|
|
181
112
|
|
|
182
|
-
###
|
|
183
|
-
|
|
184
|
-
AbortSignal поддерживается во **всех 102 методах API** — просто передайте опциональный параметр `{ signal }`:
|
|
113
|
+
### 📦 Repositories (27 методов)
|
|
185
114
|
|
|
186
115
|
```typescript
|
|
187
|
-
//
|
|
188
|
-
await client.
|
|
189
|
-
await client.repos.
|
|
116
|
+
// Основные операции
|
|
117
|
+
await client.repos.get('owner', 'repo');
|
|
118
|
+
await client.repos.update('owner', 'repo', { description: 'Updated' });
|
|
119
|
+
await client.repos.delete('owner', 'repo');
|
|
120
|
+
await client.repos.listForAuthenticatedUser();
|
|
121
|
+
await client.repos.createForAuthenticatedUser({ name: 'new-repo' });
|
|
190
122
|
|
|
191
|
-
//
|
|
192
|
-
await client.repos.
|
|
193
|
-
await client.pulls.create('owner', 'repo', params, { signal: controller.signal });
|
|
123
|
+
// Ветки
|
|
124
|
+
await client.repos.listBranches('owner', 'repo');
|
|
194
125
|
|
|
195
|
-
//
|
|
196
|
-
await client.
|
|
197
|
-
await client.repos.
|
|
198
|
-
```
|
|
126
|
+
// Коллабораторы
|
|
127
|
+
await client.repos.listCollaborators('owner', 'repo');
|
|
128
|
+
await client.repos.addCollaborator('owner', 'repo', 'username', { permission: 'push' });
|
|
199
129
|
|
|
200
|
-
|
|
130
|
+
// Коммиты
|
|
131
|
+
await client.repos.listCommits('owner', 'repo');
|
|
132
|
+
await client.repos.getCommit('owner', 'repo', 'sha');
|
|
133
|
+
await client.repos.compareCommits('owner', 'repo', 'base...head');
|
|
134
|
+
await client.repos.createCommit('owner', 'repo', { message: 'msg', tree: 'sha' });
|
|
201
135
|
|
|
202
|
-
|
|
136
|
+
// Контент
|
|
137
|
+
await client.repos.getContent('owner', 'repo', 'path/to/file');
|
|
138
|
+
await client.repos.createOrUpdateFile('owner', 'repo', 'path', { message: 'Add', content: 'base64' });
|
|
139
|
+
await client.repos.deleteFile('owner', 'repo', 'path', { message: 'Delete', sha: 'sha' });
|
|
203
140
|
|
|
204
|
-
|
|
141
|
+
// Форки
|
|
142
|
+
await client.repos.createFork('owner', 'repo');
|
|
205
143
|
|
|
206
|
-
|
|
207
|
-
await client.
|
|
208
|
-
await client.
|
|
209
|
-
|
|
144
|
+
// Git объекты
|
|
145
|
+
await client.repos.getTree('owner', 'repo', 'sha');
|
|
146
|
+
await client.repos.createTree('owner', 'repo', { tree: [...] });
|
|
147
|
+
await client.repos.createRef('owner', 'repo', { ref: 'refs/heads/new', sha: 'sha' });
|
|
210
148
|
|
|
211
|
-
|
|
149
|
+
// Pull Requests (через repos)
|
|
150
|
+
await client.repos.listPulls('owner', 'repo');
|
|
151
|
+
await client.repos.getPull('owner', 'repo', 123);
|
|
152
|
+
await client.repos.updatePull('owner', 'repo', 123, { title: 'New title' });
|
|
212
153
|
|
|
213
|
-
|
|
214
|
-
await client.repos.
|
|
215
|
-
await client.repos.
|
|
216
|
-
await client.repos.update('owner', 'repo', { description: 'Updated' });
|
|
217
|
-
await client.repos.delete('owner', 'repo');
|
|
218
|
-
await client.repos.compare('owner', 'repo', 'main...dev');
|
|
219
|
-
await client.repos.getLanguages('owner', 'repo');
|
|
220
|
-
await client.repos.listForAuthenticatedUser();
|
|
221
|
-
```
|
|
154
|
+
// Секреты репозитория
|
|
155
|
+
await client.repos.listRepoSecrets('owner', 'repo');
|
|
156
|
+
await client.repos.createOrUpdateRepoSecret('owner', 'repo', 'SECRET', { encrypted_value: '...' });
|
|
222
157
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
```typescript
|
|
226
|
-
await client.contents.get('owner', 'repo', 'path/to/file');
|
|
227
|
-
await client.contents.create('owner', 'repo', 'path', { message: 'Add file', content: 'base64' });
|
|
228
|
-
await client.contents.update('owner', 'repo', 'path', { message: 'Update', content: 'base64', sha: 'sha' });
|
|
229
|
-
await client.contents.delete('owner', 'repo', 'path', { message: 'Delete', sha: 'sha' });
|
|
158
|
+
// Прочее
|
|
159
|
+
await client.repos.listLanguages('owner', 'repo');
|
|
230
160
|
```
|
|
231
161
|
|
|
232
|
-
### 🔀 Pull Requests (
|
|
162
|
+
### 🔀 Pull Requests (5 методов)
|
|
233
163
|
|
|
234
164
|
```typescript
|
|
235
165
|
await client.pulls.list('owner', 'repo');
|
|
236
|
-
await client.pulls.create('owner', 'repo', { title: '
|
|
166
|
+
await client.pulls.create('owner', 'repo', { title: 'PR', head: 'feature', base: 'main' });
|
|
237
167
|
await client.pulls.get('owner', 'repo', 123);
|
|
238
|
-
await client.pulls.update('owner', 'repo', 123, { title: 'Updated
|
|
168
|
+
await client.pulls.update('owner', 'repo', 123, { title: 'Updated' });
|
|
239
169
|
await client.pulls.merge('owner', 'repo', 123);
|
|
240
|
-
await client.pulls.getFiles('owner', 'repo', 123);
|
|
241
|
-
await client.pulls.updateBranch('owner', 'repo', 123);
|
|
242
|
-
await client.pulls.checkIfMerged('owner', 'repo', 123); // Проверка: был ли PR влит
|
|
243
170
|
```
|
|
244
171
|
|
|
245
172
|
### 🐛 Issues (6 методов)
|
|
@@ -248,15 +175,24 @@ await client.pulls.checkIfMerged('owner', 'repo', 123); // Проверка: б
|
|
|
248
175
|
await client.issues.list('owner', 'repo');
|
|
249
176
|
await client.issues.create('owner', 'repo', { title: 'Bug report' });
|
|
250
177
|
await client.issues.get('owner', 'repo', 123);
|
|
178
|
+
await client.issues.listComments('owner', 'repo', 123);
|
|
251
179
|
await client.issues.getComment('owner', 'repo', 456);
|
|
252
|
-
await client.issues.
|
|
253
|
-
await client.issues.getLabels('owner', 'repo', 123);
|
|
180
|
+
await client.issues.listLabels('owner', 'repo');
|
|
254
181
|
```
|
|
255
182
|
|
|
256
|
-
###
|
|
183
|
+
### 🚀 Releases (10 методов)
|
|
257
184
|
|
|
258
185
|
```typescript
|
|
259
|
-
await client.
|
|
186
|
+
await client.releases.list('owner', 'repo');
|
|
187
|
+
await client.releases.create('owner', 'repo', { tag_name: 'v1.0.0', name: 'Release' });
|
|
188
|
+
await client.releases.get('owner', 'repo', 123);
|
|
189
|
+
await client.releases.getByTag('owner', 'repo', 'v1.0.0');
|
|
190
|
+
await client.releases.update('owner', 'repo', 123, { name: 'Updated' });
|
|
191
|
+
await client.releases.delete('owner', 'repo', 123);
|
|
192
|
+
await client.releases.deleteByTag('owner', 'repo', 'v1.0.0');
|
|
193
|
+
await client.releases.listAssets('owner', 'repo', 123);
|
|
194
|
+
await client.releases.uploadAsset('owner', 'repo', 123, { name: 'asset.zip' });
|
|
195
|
+
await client.releases.deleteAsset('owner', 'repo', 123, 456);
|
|
260
196
|
```
|
|
261
197
|
|
|
262
198
|
### ⭐ Stars (4 метода)
|
|
@@ -276,206 +212,106 @@ await client.emails.add(['email@example.com']);
|
|
|
276
212
|
await client.emails.delete(['email@example.com']);
|
|
277
213
|
```
|
|
278
214
|
|
|
279
|
-
###
|
|
280
|
-
|
|
281
|
-
```typescript
|
|
282
|
-
await client.branches.list('owner', 'repo');
|
|
283
|
-
```
|
|
284
|
-
|
|
285
|
-
### 📝 Commits (3 метода)
|
|
286
|
-
|
|
287
|
-
```typescript
|
|
288
|
-
await client.commits.list('owner', 'repo');
|
|
289
|
-
await client.commits.get('owner', 'repo', 'sha');
|
|
290
|
-
await client.commits.getCommits('owner', 'repo', 123);
|
|
291
|
-
```
|
|
292
|
-
|
|
293
|
-
### 👥 Collaborators (2 метода)
|
|
294
|
-
|
|
295
|
-
```typescript
|
|
296
|
-
await client.collaborators.list('owner', 'repo');
|
|
297
|
-
await client.collaborators.add('owner', 'repo', 'username');
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
### 🏢 Organizations (1 метод)
|
|
215
|
+
### 🏢 Organizations (5 методов)
|
|
301
216
|
|
|
302
217
|
```typescript
|
|
303
|
-
await client.
|
|
218
|
+
await client.orgs.listOrgSecrets('org');
|
|
219
|
+
await client.orgs.getOrgSecret('org', 'SECRET');
|
|
220
|
+
await client.orgs.createOrUpdateOrgSecret('org', 'SECRET', { encrypted_value: '...' });
|
|
221
|
+
await client.orgs.deleteOrgSecret('org', 'SECRET');
|
|
222
|
+
await client.orgs.isMember('org', 'username');
|
|
304
223
|
```
|
|
305
224
|
|
|
306
|
-
### 👨👩👧👦 Teams (
|
|
225
|
+
### 👨👩👧👦 Teams (3 метода)
|
|
307
226
|
|
|
308
227
|
```typescript
|
|
309
228
|
await client.teams.list('org');
|
|
310
|
-
await client.teams.get('org', 'team-slug');
|
|
311
229
|
await client.teams.listMembers('org', 'team-slug');
|
|
312
230
|
await client.teams.getMembershipForUser('org', 'team-slug', 'username');
|
|
313
231
|
```
|
|
314
232
|
|
|
315
|
-
###
|
|
316
|
-
|
|
317
|
-
```typescript
|
|
318
|
-
await client.releases.list('owner', 'repo');
|
|
319
|
-
await client.releases.create('owner', 'repo', { tag_name: 'v1.0.0' });
|
|
320
|
-
await client.releases.get('owner', 'repo', 123);
|
|
321
|
-
await client.releases.getByTag('owner', 'repo', 'v1.0.0');
|
|
322
|
-
await client.releases.update('owner', 'repo', 123, { name: 'New name' });
|
|
323
|
-
await client.releases.delete('owner', 'repo', 123);
|
|
324
|
-
await client.releases.deleteByTag('owner', 'repo', 'v1.0.0');
|
|
325
|
-
await client.releases.getAssets('owner', 'repo', 123);
|
|
326
|
-
await client.releases.uploadAsset('owner', 'repo', 123, { name: 'asset.zip' });
|
|
327
|
-
await client.releases.deleteAsset('owner', 'repo', 123, 456);
|
|
328
|
-
```
|
|
329
|
-
|
|
330
|
-
### 🔧 Git Objects (3 метода)
|
|
331
|
-
|
|
332
|
-
```typescript
|
|
333
|
-
await client.git.getTree('owner', 'repo', 'sha');
|
|
334
|
-
await client.git.getBlob('owner', 'repo', 'sha');
|
|
335
|
-
await client.git.getRef('owner', 'repo', 'heads/main');
|
|
336
|
-
```
|
|
337
|
-
|
|
338
|
-
### ⚡ Actions (33 метода)
|
|
339
|
-
|
|
340
|
-
Полная поддержка GitHub Actions API, включая:
|
|
233
|
+
### ⚡ Actions (25 методов)
|
|
341
234
|
|
|
342
|
-
**Runners
|
|
235
|
+
**Runners**
|
|
343
236
|
```typescript
|
|
344
237
|
await client.actions.listOrgRunners('org');
|
|
345
|
-
await client.actions.createOrgRegistrationToken('org');
|
|
346
238
|
await client.actions.getOrgRunner('org', 123);
|
|
347
239
|
await client.actions.deleteOrgRunner('org', 123);
|
|
240
|
+
await client.actions.createOrgRegistrationToken('org');
|
|
348
241
|
await client.actions.listRepoRunners('owner', 'repo');
|
|
349
|
-
await client.actions.createRepoRegistrationToken('owner', 'repo');
|
|
350
242
|
await client.actions.getRepoRunner('owner', 'repo', 123);
|
|
351
243
|
await client.actions.deleteRepoRunner('owner', 'repo', 123);
|
|
244
|
+
await client.actions.createRepoRegistrationToken('owner', 'repo');
|
|
352
245
|
```
|
|
353
246
|
|
|
354
|
-
**Secrets
|
|
247
|
+
**Secrets**
|
|
355
248
|
```typescript
|
|
356
249
|
await client.actions.listOrgSecrets('org');
|
|
357
|
-
await client.actions.getOrgSecret('org', '
|
|
358
|
-
await client.actions.createOrUpdateOrgSecret('org', '
|
|
359
|
-
await client.actions.deleteOrgSecret('org', '
|
|
250
|
+
await client.actions.getOrgSecret('org', 'SECRET');
|
|
251
|
+
await client.actions.createOrUpdateOrgSecret('org', 'SECRET', { encrypted_value: '...' });
|
|
252
|
+
await client.actions.deleteOrgSecret('org', 'SECRET');
|
|
360
253
|
await client.actions.listRepoSecrets('owner', 'repo');
|
|
361
|
-
await client.actions.getRepoSecret('owner', 'repo', '
|
|
362
|
-
await client.actions.createOrUpdateRepoSecret('owner', 'repo', '
|
|
363
|
-
await client.actions.deleteRepoSecret('owner', 'repo', '
|
|
254
|
+
await client.actions.getRepoSecret('owner', 'repo', 'SECRET');
|
|
255
|
+
await client.actions.createOrUpdateRepoSecret('owner', 'repo', 'SECRET', { encrypted_value: '...' });
|
|
256
|
+
await client.actions.deleteRepoSecret('owner', 'repo', 'SECRET');
|
|
364
257
|
```
|
|
365
258
|
|
|
366
|
-
**Variables
|
|
259
|
+
**Variables**
|
|
367
260
|
```typescript
|
|
368
261
|
await client.actions.listOrgVariables('org');
|
|
369
|
-
await client.actions.createOrgVariable('org', { name: 'VAR', value: 'value' });
|
|
370
262
|
await client.actions.getOrgVariable('org', 'VAR');
|
|
371
|
-
await client.actions.
|
|
263
|
+
await client.actions.createOrgVariable('org', { name: 'VAR', value: 'value' });
|
|
264
|
+
await client.actions.updateOrgVariable('org', 'VAR', { value: 'new' });
|
|
372
265
|
await client.actions.deleteOrgVariable('org', 'VAR');
|
|
373
266
|
await client.actions.listRepoVariables('owner', 'repo');
|
|
374
|
-
await client.actions.createRepoVariable('owner', 'repo', { name: 'VAR', value: 'value' });
|
|
375
267
|
await client.actions.getRepoVariable('owner', 'repo', 'VAR');
|
|
268
|
+
await client.actions.createRepoVariable('owner', 'repo', { name: 'VAR', value: 'value' });
|
|
376
269
|
await client.actions.updateRepoVariable('owner', 'repo', 'VAR', { value: 'new' });
|
|
377
270
|
await client.actions.deleteRepoVariable('owner', 'repo', 'VAR');
|
|
378
271
|
```
|
|
379
272
|
|
|
380
|
-
|
|
381
|
-
```typescript
|
|
382
|
-
await client.actions.listArtifacts('owner', 'repo');
|
|
383
|
-
await client.actions.getArtifact('owner', 'repo', 123);
|
|
384
|
-
await client.actions.deleteArtifact('owner', 'repo', 123);
|
|
385
|
-
await client.actions.downloadArtifact('owner', 'repo', 123);
|
|
386
|
-
await client.actions.downloadArtifactRaw('owner', 'repo', 123);
|
|
387
|
-
```
|
|
388
|
-
|
|
389
|
-
**Workflows (2 метода)**
|
|
390
|
-
```typescript
|
|
391
|
-
await client.actions.getWorkflowDispatchInputs('owner', 'repo', 'workflow.yml');
|
|
392
|
-
await client.actions.dispatchWorkflow('owner', 'repo', 'workflow.yml', { ref: 'main' });
|
|
393
|
-
```
|
|
394
|
-
|
|
395
|
-
## Продвинутое использование
|
|
396
|
-
|
|
397
|
-
### Tree-shaking
|
|
398
|
-
|
|
399
|
-
Для минимального размера бандла импортируйте только нужные модули:
|
|
400
|
-
|
|
401
|
-
```typescript
|
|
402
|
-
import { RepositoriesApi, GitVerseClient } from 'gitverse-api-sdk/api/repositories';
|
|
403
|
-
import { PullsApi } from 'gitverse-api-sdk/api/pulls';
|
|
404
|
-
|
|
405
|
-
const client = new GitVerseClient({ token: 'your-token' });
|
|
406
|
-
const repos = new RepositoriesApi(client);
|
|
407
|
-
const pulls = new PullsApi(client);
|
|
408
|
-
|
|
409
|
-
const repo = await repos.get('owner', 'repo');
|
|
410
|
-
const prList = await pulls.list('owner', 'repo');
|
|
411
|
-
```
|
|
412
|
-
|
|
413
|
-
### Обработка ошибок
|
|
273
|
+
## Обработка ошибок
|
|
414
274
|
|
|
415
275
|
```typescript
|
|
416
276
|
import { GitVerse, GitVerseApiError, RateLimitError } from 'gitverse-api-sdk';
|
|
417
277
|
|
|
418
|
-
const client = new GitVerse({ token: 'your-token' });
|
|
419
|
-
|
|
420
278
|
try {
|
|
421
279
|
await client.repos.get('owner', 'repo');
|
|
422
280
|
} catch (error) {
|
|
423
281
|
if (error instanceof RateLimitError) {
|
|
424
|
-
console.error('Rate limit
|
|
282
|
+
console.error('Rate limit:', error.rateLimit);
|
|
425
283
|
} else if (error instanceof GitVerseApiError) {
|
|
426
284
|
console.error(`API Error ${error.status}:`, error.message);
|
|
427
|
-
} else {
|
|
428
|
-
console.error('Unexpected error:', error);
|
|
429
285
|
}
|
|
430
286
|
}
|
|
431
287
|
```
|
|
432
288
|
|
|
433
|
-
|
|
289
|
+
## Конфигурация
|
|
434
290
|
|
|
435
291
|
```typescript
|
|
436
|
-
import { GitVerse } from 'gitverse-api-sdk';
|
|
437
|
-
|
|
438
292
|
const client = new GitVerse({
|
|
439
293
|
token: 'your-token',
|
|
440
|
-
baseUrl: 'https://gitverse.ru/api/v1',
|
|
441
|
-
apiVersion: '2022-11-28',
|
|
294
|
+
baseUrl: 'https://gitverse.ru/api/v1',
|
|
295
|
+
apiVersion: '2022-11-28',
|
|
442
296
|
onApiVersionWarning: (warning) => {
|
|
443
297
|
console.warn('API version warning:', warning);
|
|
444
298
|
}
|
|
445
299
|
});
|
|
300
|
+
|
|
301
|
+
// Динамическое обновление токена
|
|
302
|
+
client.setToken('new-token');
|
|
446
303
|
```
|
|
447
304
|
|
|
448
305
|
## Разработка
|
|
449
306
|
|
|
450
307
|
```bash
|
|
451
|
-
# Установка зависимостей
|
|
452
|
-
bun
|
|
453
|
-
|
|
454
|
-
#
|
|
455
|
-
bun
|
|
456
|
-
|
|
457
|
-
# Проверка покрытия (требуется 100%)
|
|
458
|
-
bun test:coverage
|
|
459
|
-
|
|
460
|
-
# Сборка проекта
|
|
461
|
-
bun run build
|
|
462
|
-
|
|
463
|
-
# Линтинг
|
|
464
|
-
bun run lint
|
|
465
|
-
bun run lint:fix
|
|
308
|
+
bun install # Установка зависимостей
|
|
309
|
+
bun test # Запуск тестов
|
|
310
|
+
bun test:coverage # Проверка покрытия (требуется 100%)
|
|
311
|
+
bun run build # Сборка
|
|
312
|
+
bun run lint # Линтинг
|
|
466
313
|
```
|
|
467
314
|
|
|
468
315
|
## Лицензия
|
|
469
316
|
|
|
470
317
|
MIT © [RainyPixel](https://gitverse.ru/RainyPixel)
|
|
471
|
-
|
|
472
|
-
## Полезные ссылки
|
|
473
|
-
|
|
474
|
-
- [GitVerse SDK](https://gitverse.ru/RainyPixel/gitverse-sdk) - Основной репозиторий
|
|
475
|
-
- [GitVerse API Docs](https://gitverse.ru/gitverse/rest-api-description/content/master/v1/openapi-1.0.json) - Документация API
|
|
476
|
-
- [Issues](https://gitverse.ru/RainyPixel/gitverse-sdk/tasktracker) - Сообщить об ошибке
|
|
477
|
-
- [npm пакет](https://www.npmjs.com/package/gitverse-api-sdk)
|
|
478
|
-
|
|
479
|
-
---
|
|
480
|
-
|
|
481
|
-
Сделано с ❤️ для GitVerse
|