gitverse-api-sdk 1.0.0 → 1.1.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 +40 -19
- package/dist/api/contents.d.ts +304 -0
- package/dist/api/contents.js +4 -0
- package/dist/api/contents.js.map +10 -0
- package/dist/api/emails.d.ts +143 -0
- package/dist/api/emails.js +4 -0
- package/dist/api/emails.js.map +10 -0
- package/dist/api/forks.d.ts +291 -0
- package/dist/api/forks.js +4 -0
- package/dist/api/forks.js.map +10 -0
- package/dist/api/issues.d.ts +239 -0
- package/dist/api/issues.js +4 -0
- package/dist/api/issues.js.map +10 -0
- package/dist/api/pulls.d.ts +356 -0
- package/dist/api/pulls.js +4 -0
- package/dist/api/pulls.js.map +10 -0
- package/dist/api/repositories.d.ts +316 -0
- package/dist/api/repositories.js +4 -0
- package/dist/api/repositories.js.map +10 -0
- package/dist/api/stars.d.ts +109 -0
- package/dist/api/stars.js +4 -0
- package/dist/api/stars.js.map +10 -0
- package/dist/api/users.d.ts +203 -0
- package/dist/api/users.js +4 -0
- package/dist/api/users.js.map +10 -0
- package/dist/client.d.ts +81 -0
- package/dist/client.js +4 -0
- package/dist/client.js.map +10 -0
- package/dist/enums.d.ts +57 -0
- package/dist/enums.js +3 -0
- package/dist/enums.js.map +10 -0
- package/dist/index.d.ts +484 -450
- package/dist/index.js +3 -1
- package/dist/index.js.map +10 -0
- package/dist/types.d.ts +669 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +9 -0
- package/dist/utils.d.ts +39 -0
- package/dist/utils.js +3 -0
- package/dist/utils.js.map +10 -0
- package/package.json +52 -4
package/README.md
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|

|
|
4
4
|

|
|
5
|
-

|
|
6
6
|
|
|
7
7
|
**Легковесный TypeScript SDK для взаимодействия с GitVerse API**
|
|
8
8
|
|
|
9
|
-
> 🚀 Без внешних зависимостей
|
|
9
|
+
> 🚀 Без внешних зависимостей | 🌲 Tree-shakable
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
- [Установка](#-установка)
|
|
16
16
|
- [Быстрый старт](#-быстрый-старт)
|
|
17
17
|
- [Использование](#-использование)
|
|
18
|
+
- [Tree-Shaking](#-tree-shaking)
|
|
18
19
|
- [Особенности](#-особенности)
|
|
19
20
|
- [API](#-api)
|
|
20
21
|
- [Тестирование](#-тестирование)
|
|
@@ -28,63 +29,83 @@
|
|
|
28
29
|
|
|
29
30
|
```bash
|
|
30
31
|
# bun
|
|
31
|
-
bun add
|
|
32
|
+
bun add gitverse-api-sdk
|
|
32
33
|
# npm
|
|
33
|
-
npm install
|
|
34
|
+
npm install gitverse-api-sdk
|
|
34
35
|
# yarn
|
|
35
|
-
yarn add
|
|
36
|
+
yarn add gitverse-api-sdk
|
|
36
37
|
# pnpm
|
|
37
|
-
pnpm add
|
|
38
|
+
pnpm add gitverse-api-sdk
|
|
38
39
|
```
|
|
39
40
|
|
|
40
41
|
## 📖 Использование
|
|
41
42
|
|
|
42
43
|
```typescript
|
|
43
|
-
import GitVerse from
|
|
44
|
+
import { GitVerse } from "gitverse-api-sdk";
|
|
44
45
|
|
|
45
46
|
(async () => {
|
|
46
|
-
const sdk = new GitVerse({ token:
|
|
47
|
+
const sdk = new GitVerse({ token: "YOUR_TOKEN" });
|
|
47
48
|
|
|
48
49
|
// Получить текущего пользователя
|
|
49
50
|
const me = await sdk.users.getCurrent();
|
|
50
51
|
console.log(me);
|
|
51
52
|
|
|
52
53
|
// Получить репозиторий
|
|
53
|
-
const repo = await sdk.repos.get(
|
|
54
|
+
const repo = await sdk.repos.get("owner", "repo");
|
|
54
55
|
console.log(repo);
|
|
55
56
|
|
|
56
57
|
// Создать репозиторий
|
|
57
58
|
const newRepo = await sdk.repos.create({
|
|
58
|
-
name:
|
|
59
|
-
description:
|
|
60
|
-
private: false
|
|
59
|
+
name: "my-new-repo",
|
|
60
|
+
description: "Описание репозитория",
|
|
61
|
+
private: false,
|
|
61
62
|
});
|
|
62
63
|
|
|
63
64
|
// Управление email адресами
|
|
64
65
|
const emails = await sdk.emails.list();
|
|
65
|
-
await sdk.emails.add({ emails: [
|
|
66
|
+
await sdk.emails.add({ emails: ["new@example.com"] });
|
|
66
67
|
|
|
67
68
|
// Работа со звездами
|
|
68
|
-
await sdk.stars.add(
|
|
69
|
-
const isStarred = await sdk.stars.check(
|
|
69
|
+
await sdk.stars.add("owner", "repo");
|
|
70
|
+
const isStarred = await sdk.stars.check("owner", "repo");
|
|
70
71
|
|
|
71
72
|
// Получить issues
|
|
72
|
-
const issues = await sdk.issues.list(
|
|
73
|
+
const issues = await sdk.issues.list("owner", "repo");
|
|
73
74
|
|
|
74
75
|
// Создать файл
|
|
75
|
-
const file = await sdk.contents.createFile(
|
|
76
|
-
content: Buffer.from(
|
|
77
|
-
message:
|
|
76
|
+
const file = await sdk.contents.createFile("owner", "repo", "path.txt", {
|
|
77
|
+
content: Buffer.from("Hello").toString("base64"),
|
|
78
|
+
message: "feat: add greeting",
|
|
78
79
|
});
|
|
79
80
|
console.log(file);
|
|
80
81
|
})();
|
|
81
82
|
```
|
|
82
83
|
|
|
84
|
+
## 🌲 Tree-Shaking
|
|
85
|
+
|
|
86
|
+
SDK полностью поддерживает tree-shaking, позволяя импортировать только необходимые модули, что уменьшает размер итогового бандла:
|
|
87
|
+
|
|
88
|
+
```typescript
|
|
89
|
+
// Вместо импорта всего SDK
|
|
90
|
+
import { GitVerse } from "gitverse-api-sdk";
|
|
91
|
+
const sdk = new GitVerse();
|
|
92
|
+
|
|
93
|
+
// Можно импортировать только нужные модули
|
|
94
|
+
import { RepositoriesApi, GitVerseClient } from "gitverse-api-sdk/api/repositories";
|
|
95
|
+
const client = new GitVerseClient({ token: "YOUR_TOKEN" });
|
|
96
|
+
const reposApi = new RepositoriesApi(client);
|
|
97
|
+
|
|
98
|
+
// Или даже отдельные типы и утилиты
|
|
99
|
+
import { IssueState } from "gitverse-api-sdk/enums";
|
|
100
|
+
import type { Issue } from "gitverse-api-sdk/types";
|
|
101
|
+
```
|
|
102
|
+
|
|
83
103
|
## ✨ Особенности
|
|
84
104
|
|
|
85
105
|
- **100% покрытие** тестов (lines/functions/statements)
|
|
86
106
|
- **Нет сторонних зависимостей**
|
|
87
107
|
- Поддержка **Conventional Commits**
|
|
108
|
+
- **Tree-shakable** модули для оптимизации размера бандла
|
|
88
109
|
- Интуитивный API, единообразный интерфейс
|
|
89
110
|
- Работа через **fetch**, совместим с Bun и браузером
|
|
90
111
|
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
declare const HTTPMethods: {
|
|
2
|
+
readonly DELETE: "DELETE"
|
|
3
|
+
readonly GET: "GET"
|
|
4
|
+
readonly POST: "POST"
|
|
5
|
+
readonly PUT: "PUT"
|
|
6
|
+
};
|
|
7
|
+
type HTTPMethods = (typeof HTTPMethods)[keyof typeof HTTPMethods];
|
|
8
|
+
/**
|
|
9
|
+
* Параметры для конфигурации GitVerse клиента
|
|
10
|
+
*/
|
|
11
|
+
interface GitVerseClientConfig {
|
|
12
|
+
/**
|
|
13
|
+
* Базовый URL API GitVerse
|
|
14
|
+
* @default 'https://api.gitverse.ru'
|
|
15
|
+
*/
|
|
16
|
+
baseUrl?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Токен доступа для авторизации в API
|
|
19
|
+
*/
|
|
20
|
+
token?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Версия API
|
|
23
|
+
* @default '1'
|
|
24
|
+
*/
|
|
25
|
+
apiVersion?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Основной класс для работы с GitVerse API
|
|
29
|
+
*/
|
|
30
|
+
declare class GitVerseClient {
|
|
31
|
+
private baseUrl;
|
|
32
|
+
private token?;
|
|
33
|
+
private apiVersion;
|
|
34
|
+
/**
|
|
35
|
+
* Создает новый экземпляр GitVerse клиента
|
|
36
|
+
* @param config Конфигурация клиента
|
|
37
|
+
*/
|
|
38
|
+
constructor(config?: GitVerseClientConfig);
|
|
39
|
+
/**
|
|
40
|
+
* Устанавливает токен авторизации
|
|
41
|
+
* @param token Токен доступа
|
|
42
|
+
*/
|
|
43
|
+
setToken(token: string): void;
|
|
44
|
+
/**
|
|
45
|
+
* Выполняет API-запрос с учетом авторизации и версии API
|
|
46
|
+
* @param path Путь к API-ресурсу
|
|
47
|
+
* @param method HTTP-метод
|
|
48
|
+
* @param body Тело запроса (опционально)
|
|
49
|
+
* @returns Ответ от API
|
|
50
|
+
* @throws {Error} Если запрос завершится с ошибкой
|
|
51
|
+
*/
|
|
52
|
+
request<T>(path: string, method: HTTPMethods, body?: unknown): Promise<T>;
|
|
53
|
+
/**
|
|
54
|
+
* Выполняет GET-запрос
|
|
55
|
+
* @param path Путь к API-ресурсу
|
|
56
|
+
* @returns Ответ от API
|
|
57
|
+
*/
|
|
58
|
+
get<T>(path: string): Promise<T>;
|
|
59
|
+
/**
|
|
60
|
+
* Выполняет POST-запрос
|
|
61
|
+
* @param path Путь к API-ресурсу
|
|
62
|
+
* @param body Тело запроса
|
|
63
|
+
* @returns Ответ от API
|
|
64
|
+
*/
|
|
65
|
+
post<T>(path: string, body?: unknown): Promise<T>;
|
|
66
|
+
/**
|
|
67
|
+
* Выполняет PUT-запрос
|
|
68
|
+
* @param path Путь к API-ресурсу
|
|
69
|
+
* @param body Тело запроса
|
|
70
|
+
* @returns Ответ от API
|
|
71
|
+
*/
|
|
72
|
+
put<T>(path: string, body?: unknown): Promise<T>;
|
|
73
|
+
/**
|
|
74
|
+
* Выполняет DELETE-запрос
|
|
75
|
+
* @param path Путь к API-ресурсу
|
|
76
|
+
* @param body Тело запроса (опционально)
|
|
77
|
+
* @returns Ответ от API
|
|
78
|
+
*/
|
|
79
|
+
delete<T>(path: string, body?: unknown): Promise<T>;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Типы содержимого в репозитории
|
|
83
|
+
*/
|
|
84
|
+
declare const ContentType: {
|
|
85
|
+
readonly Directory: "dir"
|
|
86
|
+
readonly File: "file"
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Тип для типов содержимого
|
|
90
|
+
*/
|
|
91
|
+
type ContentType = (typeof ContentType)[keyof typeof ContentType];
|
|
92
|
+
/**
|
|
93
|
+
* Интерфейс информации о файле
|
|
94
|
+
*/
|
|
95
|
+
interface FileContent {
|
|
96
|
+
/** Имя файла */
|
|
97
|
+
name: string;
|
|
98
|
+
/** Путь к файлу относительно корня репозитория */
|
|
99
|
+
path: string;
|
|
100
|
+
/** SHA-хеш содержимого файла */
|
|
101
|
+
sha: string;
|
|
102
|
+
/** Размер файла в байтах */
|
|
103
|
+
size: number;
|
|
104
|
+
/** Тип объекта (всегда 'file' для файла) */
|
|
105
|
+
type: typeof ContentType.File;
|
|
106
|
+
/** Кодировка содержимого файла (например, 'base64') */
|
|
107
|
+
encoding?: string;
|
|
108
|
+
/** Содержимое файла в формате Base64 */
|
|
109
|
+
content?: string;
|
|
110
|
+
/** Определенный язык программирования файла */
|
|
111
|
+
language?: string;
|
|
112
|
+
/** API-ссылка на файл */
|
|
113
|
+
url?: string;
|
|
114
|
+
/** Веб-ссылка на файл */
|
|
115
|
+
html_url?: string;
|
|
116
|
+
/** Git-URL для файла */
|
|
117
|
+
git_url?: string;
|
|
118
|
+
/** URL для скачивания файла */
|
|
119
|
+
download_url?: string;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Интерфейс информации о директории
|
|
123
|
+
*/
|
|
124
|
+
interface DirectoryContent {
|
|
125
|
+
/** Тип объекта (всегда 'dir' для директории) */
|
|
126
|
+
type: typeof ContentType.Directory;
|
|
127
|
+
/** Размер директории (всегда 0) */
|
|
128
|
+
size: number;
|
|
129
|
+
/** Имя директории */
|
|
130
|
+
name: string;
|
|
131
|
+
/** Путь к директории относительно корня репозитория */
|
|
132
|
+
path: string;
|
|
133
|
+
/** SHA-хеш объекта директории */
|
|
134
|
+
sha: string;
|
|
135
|
+
/** Список файлов и поддиректорий внутри директории */
|
|
136
|
+
entries: Array<FileContent | DirectoryContent>;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Тип для содержимого репозитория (файл или директория)
|
|
140
|
+
*/
|
|
141
|
+
type Content = FileContent | DirectoryContent;
|
|
142
|
+
/**
|
|
143
|
+
* Интерфейс информации о коммите
|
|
144
|
+
*/
|
|
145
|
+
interface CommitInfo {
|
|
146
|
+
/** SHA-хеш коммита */
|
|
147
|
+
sha: string;
|
|
148
|
+
/** Node ID коммита */
|
|
149
|
+
node_id?: string;
|
|
150
|
+
/** API-ссылка на коммит */
|
|
151
|
+
url: string;
|
|
152
|
+
/** Веб-ссылка на коммит */
|
|
153
|
+
html_url: string;
|
|
154
|
+
/** Информация об авторе коммита */
|
|
155
|
+
author: {
|
|
156
|
+
/** Имя автора */
|
|
157
|
+
name: string
|
|
158
|
+
/** Email автора */
|
|
159
|
+
email: string
|
|
160
|
+
/** Дата создания коммита */
|
|
161
|
+
date: string
|
|
162
|
+
};
|
|
163
|
+
/** Информация о коммиттере */
|
|
164
|
+
committer: {
|
|
165
|
+
/** Имя коммиттера */
|
|
166
|
+
name: string
|
|
167
|
+
/** Email коммиттера */
|
|
168
|
+
email: string
|
|
169
|
+
/** Дата коммита */
|
|
170
|
+
date: string
|
|
171
|
+
};
|
|
172
|
+
/** Сообщение коммита */
|
|
173
|
+
message: string;
|
|
174
|
+
/** Информация о дереве коммита */
|
|
175
|
+
tree: {
|
|
176
|
+
/** SHA-хеш дерева */
|
|
177
|
+
sha: string
|
|
178
|
+
/** URL дерева */
|
|
179
|
+
url: string
|
|
180
|
+
};
|
|
181
|
+
/** Родительские коммиты */
|
|
182
|
+
parents: Array<{
|
|
183
|
+
/** SHA-хеш родительского коммита */
|
|
184
|
+
sha: string
|
|
185
|
+
/** API-ссылка на родительский коммит */
|
|
186
|
+
url: string
|
|
187
|
+
/** Веб-ссылка на родительский коммит */
|
|
188
|
+
html_url: string
|
|
189
|
+
}>;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Интерфейс ответа на создание файла
|
|
193
|
+
*/
|
|
194
|
+
interface FileCreationResponse {
|
|
195
|
+
/** Информация о созданном файле */
|
|
196
|
+
content: FileContent;
|
|
197
|
+
/** Информация о коммите */
|
|
198
|
+
commit: CommitInfo;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Интерфейс ответа на удаление файла
|
|
202
|
+
*/
|
|
203
|
+
interface FileDeletionResponse {
|
|
204
|
+
/** Информация о содержимом (null для удаленного файла) */
|
|
205
|
+
content: null;
|
|
206
|
+
/** Информация о коммите удаления */
|
|
207
|
+
commit: CommitInfo;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Интерфейс параметров для создания файла
|
|
211
|
+
*/
|
|
212
|
+
interface CreateFileParams {
|
|
213
|
+
/** Имя ветки, в которую будет добавлен файл (по умолчанию - основная ветка) */
|
|
214
|
+
branch?: string;
|
|
215
|
+
/** Содержимое файла, закодированное в Base64 */
|
|
216
|
+
content: string;
|
|
217
|
+
/** Сообщение коммита */
|
|
218
|
+
message?: string;
|
|
219
|
+
/** Имя новой ветки, которая будет создана для этого изменения */
|
|
220
|
+
new_branch?: string;
|
|
221
|
+
/** Добавлять ли подпись (Signed-off-by) в коммит */
|
|
222
|
+
signoff?: boolean;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Интерфейс параметров для обновления файла
|
|
226
|
+
*/
|
|
227
|
+
interface UpdateFileParams {
|
|
228
|
+
/** Имя ветки, в которой находится файл */
|
|
229
|
+
branch?: string;
|
|
230
|
+
/** Новое содержимое файла, закодированное в Base64 */
|
|
231
|
+
content: string;
|
|
232
|
+
/** SHA-хеш текущего содержимого файла */
|
|
233
|
+
sha: string;
|
|
234
|
+
/** Если файл переименовывается, указывает старый путь к файлу */
|
|
235
|
+
from_path?: string;
|
|
236
|
+
/** Сообщение коммита */
|
|
237
|
+
message?: string;
|
|
238
|
+
/** Имя новой ветки, которая будет создана для этого изменения */
|
|
239
|
+
new_branch?: string;
|
|
240
|
+
/** Добавлять ли подпись (Signed-off-by) в коммит */
|
|
241
|
+
signoff?: boolean;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Интерфейс параметров для удаления файла
|
|
245
|
+
*/
|
|
246
|
+
interface DeleteFileParams {
|
|
247
|
+
/** SHA-хеш текущего содержимого файла */
|
|
248
|
+
sha: string;
|
|
249
|
+
/** Имя ветки, в которой находится файл */
|
|
250
|
+
branch?: string;
|
|
251
|
+
/** Сообщение коммита */
|
|
252
|
+
message?: string;
|
|
253
|
+
/** Имя новой ветки, которая будет создана для этого изменения */
|
|
254
|
+
new_branch?: string;
|
|
255
|
+
/** Добавлять ли подпись (Signed-off-by) в коммит */
|
|
256
|
+
signoff?: boolean;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* API для работы с содержимым репозитория (файлами и папками)
|
|
260
|
+
*/
|
|
261
|
+
declare class ContentsApi {
|
|
262
|
+
private client;
|
|
263
|
+
/**
|
|
264
|
+
* Создает новый экземпляр API для работы с содержимым репозитория
|
|
265
|
+
* @param client GitVerse клиент
|
|
266
|
+
*/
|
|
267
|
+
constructor(client: GitVerseClient);
|
|
268
|
+
/**
|
|
269
|
+
* Получает содержимое файла или список файлов в директории
|
|
270
|
+
* @param owner Владелец репозитория
|
|
271
|
+
* @param repo Название репозитория
|
|
272
|
+
* @param path Путь к файлу или директории
|
|
273
|
+
* @returns Содержимое файла или директории
|
|
274
|
+
*/
|
|
275
|
+
get(owner: string, repo: string, path: string): Promise<Content>;
|
|
276
|
+
/**
|
|
277
|
+
* Создает новый файл в репозитории
|
|
278
|
+
* @param owner Владелец репозитория
|
|
279
|
+
* @param repo Название репозитория
|
|
280
|
+
* @param path Путь к файлу, который будет создан
|
|
281
|
+
* @param params Параметры создания файла
|
|
282
|
+
* @returns Информация о созданном файле и коммите
|
|
283
|
+
*/
|
|
284
|
+
createFile(owner: string, repo: string, path: string, params: CreateFileParams): Promise<FileCreationResponse>;
|
|
285
|
+
/**
|
|
286
|
+
* Обновляет существующий файл в репозитории
|
|
287
|
+
* @param owner Владелец репозитория
|
|
288
|
+
* @param repo Название репозитория
|
|
289
|
+
* @param path Путь к файлу, который будет обновлен
|
|
290
|
+
* @param params Параметры обновления файла
|
|
291
|
+
* @returns Информация об обновленном файле и коммите
|
|
292
|
+
*/
|
|
293
|
+
updateFile(owner: string, repo: string, path: string, params: UpdateFileParams): Promise<FileCreationResponse>;
|
|
294
|
+
/**
|
|
295
|
+
* Удаляет файл из репозитория
|
|
296
|
+
* @param owner Владелец репозитория
|
|
297
|
+
* @param repo Название репозитория
|
|
298
|
+
* @param path Путь к файлу, который будет удален
|
|
299
|
+
* @param params Параметры удаления файла
|
|
300
|
+
* @returns Информация об удаленном файле и коммите
|
|
301
|
+
*/
|
|
302
|
+
deleteFile(owner: string, repo: string, path: string, params: DeleteFileParams): Promise<FileDeletionResponse>;
|
|
303
|
+
}
|
|
304
|
+
export { ContentsApi };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
class j{client;constructor(b){this.client=b}get(b,d,f){return this.client.get(`/public/api/repos/${b}/${d}/contents/${f}`)}createFile(b,d,f,g){return this.client.put(`/repos/${b}/${d}/contents/${f}`,g)}updateFile(b,d,f,g){return this.client.put(`/repos/${b}/${d}/contents/${f}`,g)}deleteFile(b,d,f,g){return this.client.delete(`/public/api/repos/${b}/${d}/contents/${f}`,g)}}export{j as ContentsApi};
|
|
2
|
+
export{j as g};
|
|
3
|
+
|
|
4
|
+
//# debugId=C25F2EB1889F994E64756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/api/contents.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import type { GitVerseClient } from \"../client\";\nimport type {\n Content,\n CreateFileParams,\n DeleteFileParams,\n FileCreationResponse,\n FileDeletionResponse,\n UpdateFileParams,\n} from \"../types\";\n\n/**\n * API для работы с содержимым репозитория (файлами и папками)\n */\nexport class ContentsApi {\n private client: GitVerseClient;\n\n /**\n * Создает новый экземпляр API для работы с содержимым репозитория\n * @param client GitVerse клиент\n */\n constructor(client: GitVerseClient) {\n this.client = client;\n }\n\n /**\n * Получает содержимое файла или список файлов в директории\n * @param owner Владелец репозитория\n * @param repo Название репозитория\n * @param path Путь к файлу или директории\n * @returns Содержимое файла или директории\n */\n get(owner: string, repo: string, path: string): Promise<Content> {\n return this.client.get<Content>(`/public/api/repos/${owner}/${repo}/contents/${path}`);\n }\n\n /**\n * Создает новый файл в репозитории\n * @param owner Владелец репозитория\n * @param repo Название репозитория\n * @param path Путь к файлу, который будет создан\n * @param params Параметры создания файла\n * @returns Информация о созданном файле и коммите\n */\n createFile(owner: string, repo: string, path: string, params: CreateFileParams): Promise<FileCreationResponse> {\n return this.client.put<FileCreationResponse>(`/repos/${owner}/${repo}/contents/${path}`, params);\n }\n\n /**\n * Обновляет существующий файл в репозитории\n * @param owner Владелец репозитория\n * @param repo Название репозитория\n * @param path Путь к файлу, который будет обновлен\n * @param params Параметры обновления файла\n * @returns Информация об обновленном файле и коммите\n */\n updateFile(owner: string, repo: string, path: string, params: UpdateFileParams): Promise<FileCreationResponse> {\n return this.client.put<FileCreationResponse>(`/repos/${owner}/${repo}/contents/${path}`, params);\n }\n\n /**\n * Удаляет файл из репозитория\n * @param owner Владелец репозитория\n * @param repo Название репозитория\n * @param path Путь к файлу, который будет удален\n * @param params Параметры удаления файла\n * @returns Информация об удаленном файле и коммите\n */\n deleteFile(owner: string, repo: string, path: string, params: DeleteFileParams): Promise<FileDeletionResponse> {\n return this.client.delete<FileDeletionResponse>(`/public/api/repos/${owner}/${repo}/contents/${path}`, params);\n }\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "AAaO,MAAM,CAAY,CACf,OAMR,WAAW,CAAC,EAAwB,CAClC,KAAK,OAAS,EAUhB,GAAG,CAAC,EAAe,EAAc,EAAgC,CAC/D,OAAO,KAAK,OAAO,IAAa,qBAAqB,KAAS,cAAiB,GAAM,EAWvF,UAAU,CAAC,EAAe,EAAc,EAAc,EAAyD,CAC7G,OAAO,KAAK,OAAO,IAA0B,UAAU,KAAS,cAAiB,IAAQ,CAAM,EAWjG,UAAU,CAAC,EAAe,EAAc,EAAc,EAAyD,CAC7G,OAAO,KAAK,OAAO,IAA0B,UAAU,KAAS,cAAiB,IAAQ,CAAM,EAWjG,UAAU,CAAC,EAAe,EAAc,EAAc,EAAyD,CAC7G,OAAO,KAAK,OAAO,OAA6B,qBAAqB,KAAS,cAAiB,IAAQ,CAAM,EAEjH",
|
|
8
|
+
"debugId": "C25F2EB1889F994E64756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
declare const HTTPMethods: {
|
|
2
|
+
readonly DELETE: "DELETE"
|
|
3
|
+
readonly GET: "GET"
|
|
4
|
+
readonly POST: "POST"
|
|
5
|
+
readonly PUT: "PUT"
|
|
6
|
+
};
|
|
7
|
+
type HTTPMethods = (typeof HTTPMethods)[keyof typeof HTTPMethods];
|
|
8
|
+
/**
|
|
9
|
+
* Параметры для конфигурации GitVerse клиента
|
|
10
|
+
*/
|
|
11
|
+
interface GitVerseClientConfig {
|
|
12
|
+
/**
|
|
13
|
+
* Базовый URL API GitVerse
|
|
14
|
+
* @default 'https://api.gitverse.ru'
|
|
15
|
+
*/
|
|
16
|
+
baseUrl?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Токен доступа для авторизации в API
|
|
19
|
+
*/
|
|
20
|
+
token?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Версия API
|
|
23
|
+
* @default '1'
|
|
24
|
+
*/
|
|
25
|
+
apiVersion?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Основной класс для работы с GitVerse API
|
|
29
|
+
*/
|
|
30
|
+
declare class GitVerseClient {
|
|
31
|
+
private baseUrl;
|
|
32
|
+
private token?;
|
|
33
|
+
private apiVersion;
|
|
34
|
+
/**
|
|
35
|
+
* Создает новый экземпляр GitVerse клиента
|
|
36
|
+
* @param config Конфигурация клиента
|
|
37
|
+
*/
|
|
38
|
+
constructor(config?: GitVerseClientConfig);
|
|
39
|
+
/**
|
|
40
|
+
* Устанавливает токен авторизации
|
|
41
|
+
* @param token Токен доступа
|
|
42
|
+
*/
|
|
43
|
+
setToken(token: string): void;
|
|
44
|
+
/**
|
|
45
|
+
* Выполняет API-запрос с учетом авторизации и версии API
|
|
46
|
+
* @param path Путь к API-ресурсу
|
|
47
|
+
* @param method HTTP-метод
|
|
48
|
+
* @param body Тело запроса (опционально)
|
|
49
|
+
* @returns Ответ от API
|
|
50
|
+
* @throws {Error} Если запрос завершится с ошибкой
|
|
51
|
+
*/
|
|
52
|
+
request<T>(path: string, method: HTTPMethods, body?: unknown): Promise<T>;
|
|
53
|
+
/**
|
|
54
|
+
* Выполняет GET-запрос
|
|
55
|
+
* @param path Путь к API-ресурсу
|
|
56
|
+
* @returns Ответ от API
|
|
57
|
+
*/
|
|
58
|
+
get<T>(path: string): Promise<T>;
|
|
59
|
+
/**
|
|
60
|
+
* Выполняет POST-запрос
|
|
61
|
+
* @param path Путь к API-ресурсу
|
|
62
|
+
* @param body Тело запроса
|
|
63
|
+
* @returns Ответ от API
|
|
64
|
+
*/
|
|
65
|
+
post<T>(path: string, body?: unknown): Promise<T>;
|
|
66
|
+
/**
|
|
67
|
+
* Выполняет PUT-запрос
|
|
68
|
+
* @param path Путь к API-ресурсу
|
|
69
|
+
* @param body Тело запроса
|
|
70
|
+
* @returns Ответ от API
|
|
71
|
+
*/
|
|
72
|
+
put<T>(path: string, body?: unknown): Promise<T>;
|
|
73
|
+
/**
|
|
74
|
+
* Выполняет DELETE-запрос
|
|
75
|
+
* @param path Путь к API-ресурсу
|
|
76
|
+
* @param body Тело запроса (опционально)
|
|
77
|
+
* @returns Ответ от API
|
|
78
|
+
*/
|
|
79
|
+
delete<T>(path: string, body?: unknown): Promise<T>;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Интерфейс email адреса
|
|
83
|
+
*/
|
|
84
|
+
interface Email {
|
|
85
|
+
/** Email адрес */
|
|
86
|
+
email: string;
|
|
87
|
+
/** Подтвержден ли email */
|
|
88
|
+
verified: boolean;
|
|
89
|
+
/** Является ли основным */
|
|
90
|
+
primary: boolean;
|
|
91
|
+
/** Публичный ли email */
|
|
92
|
+
is_public: boolean;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Параметры для добавления email адресов
|
|
96
|
+
*/
|
|
97
|
+
interface AddEmailParams {
|
|
98
|
+
/** Массив email адресов для добавления */
|
|
99
|
+
emails: string[];
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Параметры для удаления email адресов
|
|
103
|
+
*/
|
|
104
|
+
interface RemoveEmailParams {
|
|
105
|
+
/** Массив email адресов для удаления */
|
|
106
|
+
emails: string[];
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Ответ на операции с email
|
|
110
|
+
*/
|
|
111
|
+
interface EmailOperationResponse {
|
|
112
|
+
/** Сообщение о результате операции */
|
|
113
|
+
message: string;
|
|
114
|
+
/** Удаленные email адреса (только для операции удаления) */
|
|
115
|
+
deleted_emails?: string[];
|
|
116
|
+
/** HTTP статус код */
|
|
117
|
+
status: number;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Класс для работы с email адресами пользователя
|
|
121
|
+
*/
|
|
122
|
+
declare class EmailsApi {
|
|
123
|
+
private client;
|
|
124
|
+
constructor(client: GitVerseClient);
|
|
125
|
+
/**
|
|
126
|
+
* Получить список email адресов текущего пользователя
|
|
127
|
+
* @returns {Promise<Email[]>} Массив email адресов
|
|
128
|
+
*/
|
|
129
|
+
list(): Promise<Email[]>;
|
|
130
|
+
/**
|
|
131
|
+
* Добавить email адреса к аккаунту пользователя
|
|
132
|
+
* @param {AddEmailParams} params - Параметры для добавления email
|
|
133
|
+
* @returns {Promise<EmailOperationResponse>} Результат операции
|
|
134
|
+
*/
|
|
135
|
+
add(params: AddEmailParams): Promise<EmailOperationResponse>;
|
|
136
|
+
/**
|
|
137
|
+
* Удалить email адреса из аккаунта пользователя
|
|
138
|
+
* @param {RemoveEmailParams} params - Параметры для удаления email
|
|
139
|
+
* @returns {Promise<EmailOperationResponse>} Результат операции
|
|
140
|
+
*/
|
|
141
|
+
remove(params: RemoveEmailParams): Promise<EmailOperationResponse>;
|
|
142
|
+
}
|
|
143
|
+
export { EmailsApi };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
class c{client;constructor(b){this.client=b}list(){return this.client.get("/user/emails")}add(b){return this.client.post("/user/emails",b)}remove(b){return this.client.delete("/user/emails",b)}}export{c as EmailsApi};
|
|
2
|
+
export{c as h};
|
|
3
|
+
|
|
4
|
+
//# debugId=949E91D93E1FC5A364756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/api/emails.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import type { GitVerseClient } from \"../client\";\nimport type { AddEmailParams, Email, EmailOperationResponse, RemoveEmailParams } from \"../types\";\n\n/**\n * Класс для работы с email адресами пользователя\n */\nexport class EmailsApi {\n constructor(private client: GitVerseClient) {}\n\n /**\n * Получить список email адресов текущего пользователя\n * @returns {Promise<Email[]>} Массив email адресов\n */\n list(): Promise<Email[]> {\n return this.client.get<Email[]>(\"/user/emails\");\n }\n\n /**\n * Добавить email адреса к аккаунту пользователя\n * @param {AddEmailParams} params - Параметры для добавления email\n * @returns {Promise<EmailOperationResponse>} Результат операции\n */\n add(params: AddEmailParams): Promise<EmailOperationResponse> {\n return this.client.post<EmailOperationResponse>(\"/user/emails\", params);\n }\n\n /**\n * Удалить email адреса из аккаунта пользователя\n * @param {RemoveEmailParams} params - Параметры для удаления email\n * @returns {Promise<EmailOperationResponse>} Результат операции\n */\n remove(params: RemoveEmailParams): Promise<EmailOperationResponse> {\n return this.client.delete<EmailOperationResponse>(\"/user/emails\", params);\n }\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "AAMO,MAAM,CAAU,CACD,OAApB,WAAW,CAAS,EAAwB,CAAxB,cAMpB,IAAI,EAAqB,CACvB,OAAO,KAAK,OAAO,IAAa,cAAc,EAQhD,GAAG,CAAC,EAAyD,CAC3D,OAAO,KAAK,OAAO,KAA6B,eAAgB,CAAM,EAQxE,MAAM,CAAC,EAA4D,CACjE,OAAO,KAAK,OAAO,OAA+B,eAAgB,CAAM,EAE5E",
|
|
8
|
+
"debugId": "949E91D93E1FC5A364756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|