gitverse-api-sdk 1.0.0 → 2.0.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.
- package/README.md +328 -114
- package/dist/api/actions.d.ts +506 -0
- package/dist/api/actions.js +4 -0
- package/dist/api/actions.js.map +10 -0
- package/dist/api/branches.d.ts +154 -0
- package/dist/api/branches.js +4 -0
- package/dist/api/branches.js.map +10 -0
- package/dist/api/collaborators.d.ts +224 -0
- package/dist/api/collaborators.js +4 -0
- package/dist/api/collaborators.js.map +10 -0
- package/dist/api/commits.d.ts +302 -0
- package/dist/api/commits.js +4 -0
- package/dist/api/commits.js.map +10 -0
- package/dist/api/contents.d.ts +345 -0
- package/dist/api/contents.js +4 -0
- package/dist/api/contents.js.map +10 -0
- package/dist/api/emails.d.ts +184 -0
- package/dist/api/emails.js +4 -0
- package/dist/api/emails.js.map +10 -0
- package/dist/api/forks.d.ts +325 -0
- package/dist/api/forks.js +4 -0
- package/dist/api/forks.js.map +10 -0
- package/dist/api/git.d.ts +228 -0
- package/dist/api/git.js +4 -0
- package/dist/api/git.js.map +10 -0
- package/dist/api/issues.d.ts +380 -0
- package/dist/api/issues.js +4 -0
- package/dist/api/issues.js.map +10 -0
- package/dist/api/organizations.d.ts +140 -0
- package/dist/api/organizations.js +4 -0
- package/dist/api/organizations.js.map +10 -0
- package/dist/api/pulls.d.ts +517 -0
- package/dist/api/pulls.js +4 -0
- package/dist/api/pulls.js.map +10 -0
- package/dist/api/releases.d.ts +400 -0
- package/dist/api/releases.js +4 -0
- package/dist/api/releases.js.map +10 -0
- package/dist/api/repositories.d.ts +502 -0
- package/dist/api/repositories.js +4 -0
- package/dist/api/repositories.js.map +10 -0
- package/dist/api/stars.d.ts +328 -0
- package/dist/api/stars.js +4 -0
- package/dist/api/stars.js.map +10 -0
- package/dist/api/teams.d.ts +287 -0
- package/dist/api/teams.js +4 -0
- package/dist/api/teams.js.map +10 -0
- package/dist/api/users.d.ts +244 -0
- package/dist/api/users.js +4 -0
- package/dist/api/users.js.map +10 -0
- package/dist/client.d.ts +122 -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 +4 -0
- package/dist/enums.js.map +10 -0
- package/dist/errors.d.ts +78 -0
- package/dist/errors.js +4 -0
- package/dist/errors.js.map +10 -0
- package/dist/index.d.ts +1801 -453
- package/dist/index.js +3 -1
- package/dist/index.js.map +10 -0
- package/dist/types.d.ts +1256 -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 +99 -7
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Типы пользователей в системе
|
|
3
|
+
*/
|
|
4
|
+
declare const UserType: {
|
|
5
|
+
readonly Organization: "Organization"
|
|
6
|
+
readonly User: "User"
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Тип для типов пользователей
|
|
10
|
+
*/
|
|
11
|
+
type UserType = (typeof UserType)[keyof typeof UserType];
|
|
12
|
+
/**
|
|
13
|
+
* Типы видимости для репозиториев и пользователей
|
|
14
|
+
*/
|
|
15
|
+
declare const VisibilityType: {
|
|
16
|
+
readonly Limited: "limited"
|
|
17
|
+
readonly Private: "private"
|
|
18
|
+
readonly Public: "public"
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Тип для типов видимости
|
|
22
|
+
*/
|
|
23
|
+
type VisibilityType = (typeof VisibilityType)[keyof typeof VisibilityType];
|
|
24
|
+
/**
|
|
25
|
+
* Интерфейс пользователя
|
|
26
|
+
*/
|
|
27
|
+
interface User2 {
|
|
28
|
+
/** Уникальный идентификатор пользователя */
|
|
29
|
+
id: number;
|
|
30
|
+
/** Имя пользователя */
|
|
31
|
+
name?: string;
|
|
32
|
+
/** Логин пользователя */
|
|
33
|
+
login: string;
|
|
34
|
+
/** Полное имя пользователя */
|
|
35
|
+
full_name?: string;
|
|
36
|
+
/** Тип аккаунта: пользователь или организация */
|
|
37
|
+
type: UserType;
|
|
38
|
+
/** Биография пользователя */
|
|
39
|
+
bio?: string;
|
|
40
|
+
/** Электронная почта пользователя */
|
|
41
|
+
email?: string;
|
|
42
|
+
/** URL аватара пользователя */
|
|
43
|
+
avatar_url: string;
|
|
44
|
+
/** Веб-ссылка на профиль пользователя */
|
|
45
|
+
html_url: string;
|
|
46
|
+
/** API-ссылка на профиль пользователя */
|
|
47
|
+
url?: string;
|
|
48
|
+
/** API-ссылка на список подписчиков пользователя */
|
|
49
|
+
followers_url?: string;
|
|
50
|
+
/** API-ссылка на репозитории пользователя */
|
|
51
|
+
repos_url?: string;
|
|
52
|
+
/** API-ссылка на организации пользователя */
|
|
53
|
+
organizations_url?: string;
|
|
54
|
+
/** Права администратора */
|
|
55
|
+
site_admin: boolean;
|
|
56
|
+
/** Местоположение пользователя */
|
|
57
|
+
location?: string;
|
|
58
|
+
/** Верификация аккаунта */
|
|
59
|
+
is_verified?: boolean;
|
|
60
|
+
/** Настройки приватности профиля */
|
|
61
|
+
visibility?: VisibilityType;
|
|
62
|
+
/** Персональный веб-сайт */
|
|
63
|
+
website?: string;
|
|
64
|
+
/** Количество подписчиков */
|
|
65
|
+
followers?: number;
|
|
66
|
+
/** Количество подписок */
|
|
67
|
+
following?: number;
|
|
68
|
+
/** Количество публичных репозиториев */
|
|
69
|
+
public_repos?: number;
|
|
70
|
+
/** Количество репозиториев, отмеченных звездой */
|
|
71
|
+
stars_count?: number;
|
|
72
|
+
/** Дата создания аккаунта */
|
|
73
|
+
created_at: string;
|
|
74
|
+
/** Дата последнего обновления аккаунта */
|
|
75
|
+
updated_at?: string;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Интерфейс текущего авторизованного пользователя
|
|
79
|
+
* Получается из API метода /user
|
|
80
|
+
*/
|
|
81
|
+
interface CurrentUser {
|
|
82
|
+
/** Уникальный идентификатор пользователя */
|
|
83
|
+
id: number;
|
|
84
|
+
/** Имя пользователя (может быть пустым) */
|
|
85
|
+
name?: string;
|
|
86
|
+
/** Логин пользователя */
|
|
87
|
+
login: string;
|
|
88
|
+
/** Электронная почта пользователя (может быть недоступна) */
|
|
89
|
+
email?: string;
|
|
90
|
+
/** URL аватара пользователя */
|
|
91
|
+
avatar_url: string;
|
|
92
|
+
/** Веб-ссылка на профиль пользователя */
|
|
93
|
+
html_url: string;
|
|
94
|
+
/** Количество публичных репозиториев */
|
|
95
|
+
public_repos: number;
|
|
96
|
+
/** Количество подписчиков */
|
|
97
|
+
followers: number;
|
|
98
|
+
/** Дата создания аккаунта */
|
|
99
|
+
created_at: string;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Предупреждение об устаревшей версии API
|
|
103
|
+
*/
|
|
104
|
+
declare class ApiVersionWarning {
|
|
105
|
+
/** Текущая используемая версия */
|
|
106
|
+
readonly currentVersion: string;
|
|
107
|
+
/** Последняя доступная версия */
|
|
108
|
+
readonly latestVersion: string;
|
|
109
|
+
/** Дата вывода из эксплуатации */
|
|
110
|
+
readonly decommissioning?: string;
|
|
111
|
+
constructor(currentVersion: string, latestVersion: string, decommissioning?: string);
|
|
112
|
+
/**
|
|
113
|
+
* Возвращает сообщение о предупреждении
|
|
114
|
+
*/
|
|
115
|
+
getMessage(): string;
|
|
116
|
+
}
|
|
117
|
+
declare const HTTPMethods: {
|
|
118
|
+
readonly DELETE: "DELETE"
|
|
119
|
+
readonly GET: "GET"
|
|
120
|
+
readonly PATCH: "PATCH"
|
|
121
|
+
readonly POST: "POST"
|
|
122
|
+
readonly PUT: "PUT"
|
|
123
|
+
};
|
|
124
|
+
type HTTPMethods = (typeof HTTPMethods)[keyof typeof HTTPMethods];
|
|
125
|
+
/**
|
|
126
|
+
* Параметры для конфигурации GitVerse клиента
|
|
127
|
+
*/
|
|
128
|
+
interface GitVerseClientConfig {
|
|
129
|
+
/**
|
|
130
|
+
* Базовый URL API GitVerse
|
|
131
|
+
* @default 'https://api.gitverse.ru'
|
|
132
|
+
*/
|
|
133
|
+
baseUrl?: string;
|
|
134
|
+
/**
|
|
135
|
+
* Токен доступа для авторизации в API
|
|
136
|
+
*/
|
|
137
|
+
token?: string;
|
|
138
|
+
/**
|
|
139
|
+
* Версия API
|
|
140
|
+
* @default '1'
|
|
141
|
+
*/
|
|
142
|
+
apiVersion?: string;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Основной класс для работы с GitVerse API
|
|
146
|
+
*/
|
|
147
|
+
declare class GitVerseClient {
|
|
148
|
+
private baseUrl;
|
|
149
|
+
private token?;
|
|
150
|
+
private apiVersion;
|
|
151
|
+
/**
|
|
152
|
+
* Callback для обработки предупреждений об устаревшей версии API
|
|
153
|
+
*/
|
|
154
|
+
onApiVersionWarning?: (warning: ApiVersionWarning) => void;
|
|
155
|
+
/**
|
|
156
|
+
* Создает новый экземпляр GitVerse клиента
|
|
157
|
+
* @param config Конфигурация клиента
|
|
158
|
+
*/
|
|
159
|
+
constructor(config?: GitVerseClientConfig);
|
|
160
|
+
/**
|
|
161
|
+
* Устанавливает токен авторизации
|
|
162
|
+
* @param token Токен доступа
|
|
163
|
+
*/
|
|
164
|
+
setToken(token: string): void;
|
|
165
|
+
/**
|
|
166
|
+
* Извлекает информацию о Rate Limit из заголовков ответа
|
|
167
|
+
*/
|
|
168
|
+
private extractRateLimitInfo;
|
|
169
|
+
/**
|
|
170
|
+
* Извлекает информацию о версии API из заголовков ответа
|
|
171
|
+
*/
|
|
172
|
+
private extractApiVersionInfo;
|
|
173
|
+
/**
|
|
174
|
+
* Извлекает метаданные из заголовков ответа
|
|
175
|
+
*/
|
|
176
|
+
private extractMetadata;
|
|
177
|
+
/**
|
|
178
|
+
* Выполняет API-запрос с учетом авторизации и версии API
|
|
179
|
+
* @param path Путь к API-ресурсу
|
|
180
|
+
* @param method HTTP-метод
|
|
181
|
+
* @param body Тело запроса (опционально)
|
|
182
|
+
* @returns Ответ от API
|
|
183
|
+
* @throws {RateLimitError} При превышении лимита запросов (429)
|
|
184
|
+
* @throws {GitVerseApiError} При других ошибках API
|
|
185
|
+
*/
|
|
186
|
+
request<T>(path: string, method: HTTPMethods, body?: unknown): Promise<T>;
|
|
187
|
+
/**
|
|
188
|
+
* Выполняет GET-запрос
|
|
189
|
+
* @param path Путь к API-ресурсу
|
|
190
|
+
* @returns Ответ от API
|
|
191
|
+
*/
|
|
192
|
+
get<T>(path: string): Promise<T>;
|
|
193
|
+
/**
|
|
194
|
+
* Выполняет POST-запрос
|
|
195
|
+
* @param path Путь к API-ресурсу
|
|
196
|
+
* @param body Тело запроса
|
|
197
|
+
* @returns Ответ от API
|
|
198
|
+
*/
|
|
199
|
+
post<T>(path: string, body?: unknown): Promise<T>;
|
|
200
|
+
/**
|
|
201
|
+
* Выполняет PUT-запрос
|
|
202
|
+
* @param path Путь к API-ресурсу
|
|
203
|
+
* @param body Тело запроса
|
|
204
|
+
* @returns Ответ от API
|
|
205
|
+
*/
|
|
206
|
+
put<T>(path: string, body?: unknown): Promise<T>;
|
|
207
|
+
/**
|
|
208
|
+
* Выполняет DELETE-запрос
|
|
209
|
+
* @param path Путь к API-ресурсу
|
|
210
|
+
* @param body Тело запроса (опционально)
|
|
211
|
+
* @returns Ответ от API
|
|
212
|
+
*/
|
|
213
|
+
delete<T>(path: string, body?: unknown): Promise<T>;
|
|
214
|
+
/**
|
|
215
|
+
* Выполняет PATCH-запрос
|
|
216
|
+
* @param path Путь к API-ресурсу
|
|
217
|
+
* @param body Тело запроса
|
|
218
|
+
* @returns Ответ от API
|
|
219
|
+
*/
|
|
220
|
+
patch<T>(path: string, body?: unknown): Promise<T>;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* API для работы с пользователями
|
|
224
|
+
*/
|
|
225
|
+
declare class UsersApi {
|
|
226
|
+
private client;
|
|
227
|
+
/**
|
|
228
|
+
* Создает новый экземпляр API для работы с пользователями
|
|
229
|
+
* @param client GitVerse клиент
|
|
230
|
+
*/
|
|
231
|
+
constructor(client: GitVerseClient);
|
|
232
|
+
/**
|
|
233
|
+
* Получает информацию о текущем авторизованном пользователе
|
|
234
|
+
* @returns Данные о пользователе
|
|
235
|
+
*/
|
|
236
|
+
getCurrent(): Promise<CurrentUser>;
|
|
237
|
+
/**
|
|
238
|
+
* Получает информацию о пользователе по имени пользователя
|
|
239
|
+
* @param username Имя пользователя
|
|
240
|
+
* @returns Данные о пользователе
|
|
241
|
+
*/
|
|
242
|
+
getByUsername(username: string): Promise<User2>;
|
|
243
|
+
}
|
|
244
|
+
export { UsersApi };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/api/users.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import type { GitVerseClient } from \"../client\";\nimport type { CurrentUser, User } from \"../types\";\n\n/**\n * API для работы с пользователями\n */\nexport class UsersApi {\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 * @returns Данные о пользователе\n */\n getCurrent(): Promise<CurrentUser> {\n return this.client.get<CurrentUser>(\"/user\");\n }\n\n /**\n * Получает информацию о пользователе по имени пользователя\n * @param username Имя пользователя\n * @returns Данные о пользователе\n */\n getByUsername(username: string): Promise<User> {\n return this.client.get<User>(`/users/${username}`);\n }\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "AAMO,MAAM,CAAS,CACZ,OAMR,WAAW,CAAC,EAAwB,CAClC,KAAK,OAAS,EAOhB,UAAU,EAAyB,CACjC,OAAO,KAAK,OAAO,IAAiB,OAAO,EAQ7C,aAAa,CAAC,EAAiC,CAC7C,OAAO,KAAK,OAAO,IAAU,UAAU,GAAU,EAErD",
|
|
8
|
+
"debugId": "BA5DF27C9A156B5764756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Предупреждение об устаревшей версии API
|
|
3
|
+
*/
|
|
4
|
+
declare class ApiVersionWarning {
|
|
5
|
+
/** Текущая используемая версия */
|
|
6
|
+
readonly currentVersion: string;
|
|
7
|
+
/** Последняя доступная версия */
|
|
8
|
+
readonly latestVersion: string;
|
|
9
|
+
/** Дата вывода из эксплуатации */
|
|
10
|
+
readonly decommissioning?: string;
|
|
11
|
+
constructor(currentVersion: string, latestVersion: string, decommissioning?: string);
|
|
12
|
+
/**
|
|
13
|
+
* Возвращает сообщение о предупреждении
|
|
14
|
+
*/
|
|
15
|
+
getMessage(): string;
|
|
16
|
+
}
|
|
17
|
+
declare const HTTPMethods: {
|
|
18
|
+
readonly DELETE: "DELETE"
|
|
19
|
+
readonly GET: "GET"
|
|
20
|
+
readonly PATCH: "PATCH"
|
|
21
|
+
readonly POST: "POST"
|
|
22
|
+
readonly PUT: "PUT"
|
|
23
|
+
};
|
|
24
|
+
type HTTPMethods = (typeof HTTPMethods)[keyof typeof HTTPMethods];
|
|
25
|
+
/**
|
|
26
|
+
* Параметры для конфигурации GitVerse клиента
|
|
27
|
+
*/
|
|
28
|
+
interface GitVerseClientConfig {
|
|
29
|
+
/**
|
|
30
|
+
* Базовый URL API GitVerse
|
|
31
|
+
* @default 'https://api.gitverse.ru'
|
|
32
|
+
*/
|
|
33
|
+
baseUrl?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Токен доступа для авторизации в API
|
|
36
|
+
*/
|
|
37
|
+
token?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Версия API
|
|
40
|
+
* @default '1'
|
|
41
|
+
*/
|
|
42
|
+
apiVersion?: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Основной класс для работы с GitVerse API
|
|
46
|
+
*/
|
|
47
|
+
declare class GitVerseClient {
|
|
48
|
+
private baseUrl;
|
|
49
|
+
private token?;
|
|
50
|
+
private apiVersion;
|
|
51
|
+
/**
|
|
52
|
+
* Callback для обработки предупреждений об устаревшей версии API
|
|
53
|
+
*/
|
|
54
|
+
onApiVersionWarning?: (warning: ApiVersionWarning) => void;
|
|
55
|
+
/**
|
|
56
|
+
* Создает новый экземпляр GitVerse клиента
|
|
57
|
+
* @param config Конфигурация клиента
|
|
58
|
+
*/
|
|
59
|
+
constructor(config?: GitVerseClientConfig);
|
|
60
|
+
/**
|
|
61
|
+
* Устанавливает токен авторизации
|
|
62
|
+
* @param token Токен доступа
|
|
63
|
+
*/
|
|
64
|
+
setToken(token: string): void;
|
|
65
|
+
/**
|
|
66
|
+
* Извлекает информацию о Rate Limit из заголовков ответа
|
|
67
|
+
*/
|
|
68
|
+
private extractRateLimitInfo;
|
|
69
|
+
/**
|
|
70
|
+
* Извлекает информацию о версии API из заголовков ответа
|
|
71
|
+
*/
|
|
72
|
+
private extractApiVersionInfo;
|
|
73
|
+
/**
|
|
74
|
+
* Извлекает метаданные из заголовков ответа
|
|
75
|
+
*/
|
|
76
|
+
private extractMetadata;
|
|
77
|
+
/**
|
|
78
|
+
* Выполняет API-запрос с учетом авторизации и версии API
|
|
79
|
+
* @param path Путь к API-ресурсу
|
|
80
|
+
* @param method HTTP-метод
|
|
81
|
+
* @param body Тело запроса (опционально)
|
|
82
|
+
* @returns Ответ от API
|
|
83
|
+
* @throws {RateLimitError} При превышении лимита запросов (429)
|
|
84
|
+
* @throws {GitVerseApiError} При других ошибках API
|
|
85
|
+
*/
|
|
86
|
+
request<T>(path: string, method: HTTPMethods, body?: unknown): Promise<T>;
|
|
87
|
+
/**
|
|
88
|
+
* Выполняет GET-запрос
|
|
89
|
+
* @param path Путь к API-ресурсу
|
|
90
|
+
* @returns Ответ от API
|
|
91
|
+
*/
|
|
92
|
+
get<T>(path: string): Promise<T>;
|
|
93
|
+
/**
|
|
94
|
+
* Выполняет POST-запрос
|
|
95
|
+
* @param path Путь к API-ресурсу
|
|
96
|
+
* @param body Тело запроса
|
|
97
|
+
* @returns Ответ от API
|
|
98
|
+
*/
|
|
99
|
+
post<T>(path: string, body?: unknown): Promise<T>;
|
|
100
|
+
/**
|
|
101
|
+
* Выполняет PUT-запрос
|
|
102
|
+
* @param path Путь к API-ресурсу
|
|
103
|
+
* @param body Тело запроса
|
|
104
|
+
* @returns Ответ от API
|
|
105
|
+
*/
|
|
106
|
+
put<T>(path: string, body?: unknown): Promise<T>;
|
|
107
|
+
/**
|
|
108
|
+
* Выполняет DELETE-запрос
|
|
109
|
+
* @param path Путь к API-ресурсу
|
|
110
|
+
* @param body Тело запроса (опционально)
|
|
111
|
+
* @returns Ответ от API
|
|
112
|
+
*/
|
|
113
|
+
delete<T>(path: string, body?: unknown): Promise<T>;
|
|
114
|
+
/**
|
|
115
|
+
* Выполняет PATCH-запрос
|
|
116
|
+
* @param path Путь к API-ресурсу
|
|
117
|
+
* @param body Тело запроса
|
|
118
|
+
* @returns Ответ от API
|
|
119
|
+
*/
|
|
120
|
+
patch<T>(path: string, body?: unknown): Promise<T>;
|
|
121
|
+
}
|
|
122
|
+
export { HTTPMethods, GitVerseClientConfig, GitVerseClient };
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{u as Q,v as S,w as U}from"./errors.js";var F={DELETE:"DELETE",GET:"GET",PATCH:"PATCH",POST:"POST",PUT:"PUT"};class Y{baseUrl;token;apiVersion;onApiVersionWarning;constructor(j={}){this.baseUrl=j.baseUrl||"https://api.gitverse.ru",this.token=j.token,this.apiVersion=j.apiVersion||"1"}setToken(j){this.token=j}extractRateLimitInfo(j){let q=j.get("GitVerse-RateLimit-Limit"),x=j.get("GitVerse-RateLimit-Remaining"),z=j.get("GitVerse-RateLimit-Retry-After"),B=j.get("Gitverse-Ratelimit-Reset");if(!(q&&x&&z&&B))return;return{limit:Number.parseInt(q,10),remaining:Number.parseInt(x,10),reset:Number.parseInt(B,10),retryAfter:Number.parseInt(z,10)}}extractApiVersionInfo(j){let q=j.get("Gitverse-Api-Version"),x=j.get("Gitverse-Api-Latest-Version"),z=j.get("Gitverse-Api-Deprecation")==="true",B=j.get("Gitverse-Api-Decommissioning");if(!(q&&x))return;return{decommissioning:B||void 0,deprecated:z,latestVersion:x,version:q}}extractMetadata(j){let q=this.extractRateLimitInfo(j),x=this.extractApiVersionInfo(j);if(x?.deprecated&&this.onApiVersionWarning){let z=new U(x.version,x.latestVersion,x.decommissioning);this.onApiVersionWarning(z)}return{apiVersion:x,rateLimit:q}}async request(j,q,x){let z=j.startsWith("/")?j.slice(1):j,B=`${this.baseUrl}/${z}`,J=new Headers;if(J.set("Content-Type","application/json"),J.set("Accept",`application/vnd.gitverse.object+json; version=${this.apiVersion}`),this.token)J.set("Authorization",`Bearer ${this.token}`);let X={body:x?JSON.stringify(x):void 0,headers:J,method:q},D=await fetch(B,X),K=this.extractMetadata(D.headers),N;try{N=await D.json()}catch{N=void 0}if(!D.ok){let O=N?.message||D.statusText;if(D.status===429&&K.rateLimit)throw new S(O||"Превышен лимит запросов. Попробуйте позже.",K.rateLimit,K);throw new Q(D.status,O,K)}return N}get(j){return this.request(j,F.GET)}post(j,q){return this.request(j,F.POST,q)}put(j,q){return this.request(j,F.PUT,q)}delete(j,q){return this.request(j,F.DELETE,q)}patch(j,q){return this.request(j,F.PATCH,q)}}export{F as HTTPMethods,Y as GitVerseClient};
|
|
2
|
+
export{Y as o};
|
|
3
|
+
|
|
4
|
+
//# debugId=13122ADA45B36DC764756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/client.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import { ApiVersionWarning, GitVerseApiError, RateLimitError } from \"./errors\";\nimport type { ApiError, ApiResponseMetadata, ApiVersionInfo, RateLimitInfo } from \"./types\";\n\nexport const HTTPMethods = {\n DELETE: \"DELETE\",\n GET: \"GET\",\n PATCH: \"PATCH\",\n POST: \"POST\",\n PUT: \"PUT\",\n} as const;\n\nexport type HTTPMethods = (typeof HTTPMethods)[keyof typeof HTTPMethods];\n\n/**\n * Параметры для конфигурации GitVerse клиента\n */\nexport interface GitVerseClientConfig {\n /**\n * Базовый URL API GitVerse\n * @default 'https://api.gitverse.ru'\n */\n baseUrl?: string;\n\n /**\n * Токен доступа для авторизации в API\n */\n token?: string;\n\n /**\n * Версия API\n * @default '1'\n */\n apiVersion?: string;\n}\n\n/**\n * Основной класс для работы с GitVerse API\n */\nexport class GitVerseClient {\n private baseUrl: string;\n private token?: string;\n private apiVersion: string;\n\n /**\n * Callback для обработки предупреждений об устаревшей версии API\n */\n public onApiVersionWarning?: (warning: ApiVersionWarning) => void;\n\n /**\n * Создает новый экземпляр GitVerse клиента\n * @param config Конфигурация клиента\n */\n constructor(config: GitVerseClientConfig = {}) {\n this.baseUrl = config.baseUrl || \"https://api.gitverse.ru\";\n this.token = config.token;\n this.apiVersion = config.apiVersion || \"1\";\n }\n\n /**\n * Устанавливает токен авторизации\n * @param token Токен доступа\n */\n setToken(token: string): void {\n this.token = token;\n }\n\n /**\n * Извлекает информацию о Rate Limit из заголовков ответа\n */\n private extractRateLimitInfo(headers: Headers): RateLimitInfo | undefined {\n const limit = headers.get(\"GitVerse-RateLimit-Limit\");\n const remaining = headers.get(\"GitVerse-RateLimit-Remaining\");\n const retryAfter = headers.get(\"GitVerse-RateLimit-Retry-After\");\n const reset = headers.get(\"Gitverse-Ratelimit-Reset\");\n\n if (!(limit && remaining && retryAfter && reset)) {\n return;\n }\n\n return {\n limit: Number.parseInt(limit, 10),\n remaining: Number.parseInt(remaining, 10),\n reset: Number.parseInt(reset, 10),\n retryAfter: Number.parseInt(retryAfter, 10),\n };\n }\n\n /**\n * Извлекает информацию о версии API из заголовков ответа\n */\n private extractApiVersionInfo(headers: Headers): ApiVersionInfo | undefined {\n const version = headers.get(\"Gitverse-Api-Version\");\n const latestVersion = headers.get(\"Gitverse-Api-Latest-Version\");\n const deprecated = headers.get(\"Gitverse-Api-Deprecation\") === \"true\";\n const decommissioning = headers.get(\"Gitverse-Api-Decommissioning\");\n\n if (!(version && latestVersion)) {\n return;\n }\n\n return {\n decommissioning: decommissioning || undefined,\n deprecated,\n latestVersion,\n version,\n };\n }\n\n /**\n * Извлекает метаданные из заголовков ответа\n */\n private extractMetadata(headers: Headers): ApiResponseMetadata {\n const rateLimit = this.extractRateLimitInfo(headers);\n const apiVersion = this.extractApiVersionInfo(headers);\n\n // Проверяем устаревшую версию API и вызываем callback\n if (apiVersion?.deprecated && this.onApiVersionWarning) {\n const warning = new ApiVersionWarning(apiVersion.version, apiVersion.latestVersion, apiVersion.decommissioning);\n this.onApiVersionWarning(warning);\n }\n\n return {\n apiVersion,\n rateLimit,\n };\n }\n\n /**\n * Выполняет API-запрос с учетом авторизации и версии API\n * @param path Путь к API-ресурсу\n * @param method HTTP-метод\n * @param body Тело запроса (опционально)\n * @returns Ответ от API\n * @throws {RateLimitError} При превышении лимита запросов (429)\n * @throws {GitVerseApiError} При других ошибках API\n */\n async request<T>(path: string, method: HTTPMethods, body?: unknown): Promise<T> {\n // Правильная конкатенация URL: убираем начальный / из path если он есть\n const cleanPath = path.startsWith(\"/\") ? path.slice(1) : path;\n const url = `${this.baseUrl}/${cleanPath}`;\n\n const headers = new Headers();\n\n headers.set(\"Content-Type\", \"application/json\");\n headers.set(\"Accept\", `application/vnd.gitverse.object+json; version=${this.apiVersion}`);\n\n if (this.token) {\n headers.set(\"Authorization\", `Bearer ${this.token}`);\n }\n\n const options: RequestInit = {\n body: body ? JSON.stringify(body) : undefined,\n headers,\n method,\n };\n\n const response = await fetch(url, options);\n\n // Извлекаем метаданные из заголовков\n const metadata = this.extractMetadata(response.headers);\n\n let data: unknown;\n try {\n data = await response.json();\n } catch {\n data = undefined;\n }\n\n if (!response.ok) {\n const error = data as ApiError | undefined;\n const errorMessage = error?.message || response.statusText;\n\n // Обработка ошибки превышения лимита запросов\n if (response.status === 429 && metadata.rateLimit) {\n throw new RateLimitError(\n errorMessage || \"Превышен лимит запросов. Попробуйте позже.\",\n metadata.rateLimit,\n metadata,\n );\n }\n\n // Общая ошибка API\n throw new GitVerseApiError(response.status, errorMessage, metadata);\n }\n\n return data as T;\n }\n\n /**\n * Выполняет GET-запрос\n * @param path Путь к API-ресурсу\n * @returns Ответ от API\n */\n get<T>(path: string): Promise<T> {\n return this.request<T>(path, HTTPMethods.GET);\n }\n\n /**\n * Выполняет POST-запрос\n * @param path Путь к API-ресурсу\n * @param body Тело запроса\n * @returns Ответ от API\n */\n post<T>(path: string, body?: unknown): Promise<T> {\n return this.request<T>(path, HTTPMethods.POST, body);\n }\n\n /**\n * Выполняет PUT-запрос\n * @param path Путь к API-ресурсу\n * @param body Тело запроса\n * @returns Ответ от API\n */\n put<T>(path: string, body?: unknown): Promise<T> {\n return this.request<T>(path, HTTPMethods.PUT, body);\n }\n\n /**\n * Выполняет DELETE-запрос\n * @param path Путь к API-ресурсу\n * @param body Тело запроса (опционально)\n * @returns Ответ от API\n */\n delete<T>(path: string, body?: unknown): Promise<T> {\n return this.request<T>(path, HTTPMethods.DELETE, body);\n }\n\n /**\n * Выполняет PATCH-запрос\n * @param path Путь к API-ресурсу\n * @param body Тело запроса\n * @returns Ответ от API\n */\n patch<T>(path: string, body?: unknown): Promise<T> {\n return this.request<T>(path, HTTPMethods.PATCH, body);\n }\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "8CAGO,IAAM,EAAc,CACzB,OAAQ,SACR,IAAK,MACL,MAAO,QACP,KAAM,OACN,IAAK,KACP,EA6BO,MAAM,CAAe,CAClB,QACA,MACA,WAKD,oBAMP,WAAW,CAAC,EAA+B,CAAC,EAAG,CAC7C,KAAK,QAAU,EAAO,SAAW,0BACjC,KAAK,MAAQ,EAAO,MACpB,KAAK,WAAa,EAAO,YAAc,IAOzC,QAAQ,CAAC,EAAqB,CAC5B,KAAK,MAAQ,EAMP,oBAAoB,CAAC,EAA6C,CACxE,IAAM,EAAQ,EAAQ,IAAI,0BAA0B,EAC9C,EAAY,EAAQ,IAAI,8BAA8B,EACtD,EAAa,EAAQ,IAAI,gCAAgC,EACzD,EAAQ,EAAQ,IAAI,0BAA0B,EAEpD,GAAI,EAAE,GAAS,GAAa,GAAc,GACxC,OAGF,MAAO,CACL,MAAO,OAAO,SAAS,EAAO,EAAE,EAChC,UAAW,OAAO,SAAS,EAAW,EAAE,EACxC,MAAO,OAAO,SAAS,EAAO,EAAE,EAChC,WAAY,OAAO,SAAS,EAAY,EAAE,CAC5C,EAMM,qBAAqB,CAAC,EAA8C,CAC1E,IAAM,EAAU,EAAQ,IAAI,sBAAsB,EAC5C,EAAgB,EAAQ,IAAI,6BAA6B,EACzD,EAAa,EAAQ,IAAI,0BAA0B,IAAM,OACzD,EAAkB,EAAQ,IAAI,8BAA8B,EAElE,GAAI,EAAE,GAAW,GACf,OAGF,MAAO,CACL,gBAAiB,GAAmB,OACpC,aACA,gBACA,SACF,EAMM,eAAe,CAAC,EAAuC,CAC7D,IAAM,EAAY,KAAK,qBAAqB,CAAO,EAC7C,EAAa,KAAK,sBAAsB,CAAO,EAGrD,GAAI,GAAY,YAAc,KAAK,oBAAqB,CACtD,IAAM,EAAU,IAAI,EAAkB,EAAW,QAAS,EAAW,cAAe,EAAW,eAAe,EAC9G,KAAK,oBAAoB,CAAO,EAGlC,MAAO,CACL,aACA,WACF,OAYI,QAAU,CAAC,EAAc,EAAqB,EAA4B,CAE9E,IAAM,EAAY,EAAK,WAAW,GAAG,EAAI,EAAK,MAAM,CAAC,EAAI,EACnD,EAAM,GAAG,KAAK,WAAW,IAEzB,EAAU,IAAI,QAKpB,GAHA,EAAQ,IAAI,eAAgB,kBAAkB,EAC9C,EAAQ,IAAI,SAAU,iDAAiD,KAAK,YAAY,EAEpF,KAAK,MACP,EAAQ,IAAI,gBAAiB,UAAU,KAAK,OAAO,EAGrD,IAAM,EAAuB,CAC3B,KAAM,EAAO,KAAK,UAAU,CAAI,EAAI,OACpC,UACA,QACF,EAEM,EAAW,MAAM,MAAM,EAAK,CAAO,EAGnC,EAAW,KAAK,gBAAgB,EAAS,OAAO,EAElD,EACJ,GAAI,CACF,EAAO,MAAM,EAAS,KAAK,EAC3B,KAAM,CACN,EAAO,OAGT,GAAI,CAAC,EAAS,GAAI,CAEhB,IAAM,EADQ,GACc,SAAW,EAAS,WAGhD,GAAI,EAAS,SAAW,KAAO,EAAS,UACtC,MAAM,IAAI,EACR,GAAgB,6CAChB,EAAS,UACT,CACF,EAIF,MAAM,IAAI,EAAiB,EAAS,OAAQ,EAAc,CAAQ,EAGpE,OAAO,EAQT,GAAM,CAAC,EAA0B,CAC/B,OAAO,KAAK,QAAW,EAAM,EAAY,GAAG,EAS9C,IAAO,CAAC,EAAc,EAA4B,CAChD,OAAO,KAAK,QAAW,EAAM,EAAY,KAAM,CAAI,EASrD,GAAM,CAAC,EAAc,EAA4B,CAC/C,OAAO,KAAK,QAAW,EAAM,EAAY,IAAK,CAAI,EASpD,MAAS,CAAC,EAAc,EAA4B,CAClD,OAAO,KAAK,QAAW,EAAM,EAAY,OAAQ,CAAI,EASvD,KAAQ,CAAC,EAAc,EAA4B,CACjD,OAAO,KAAK,QAAW,EAAM,EAAY,MAAO,CAAI,EAExD",
|
|
8
|
+
"debugId": "13122ADA45B36DC764756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
package/dist/enums.d.ts
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Типы пользователей в системе
|
|
3
|
+
*/
|
|
4
|
+
declare const UserType: {
|
|
5
|
+
readonly Organization: "Organization"
|
|
6
|
+
readonly User: "User"
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Тип для типов пользователей
|
|
10
|
+
*/
|
|
11
|
+
type UserType = (typeof UserType)[keyof typeof UserType];
|
|
12
|
+
/**
|
|
13
|
+
* Типы видимости для репозиториев и пользователей
|
|
14
|
+
*/
|
|
15
|
+
declare const VisibilityType: {
|
|
16
|
+
readonly Limited: "limited"
|
|
17
|
+
readonly Private: "private"
|
|
18
|
+
readonly Public: "public"
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Тип для типов видимости
|
|
22
|
+
*/
|
|
23
|
+
type VisibilityType = (typeof VisibilityType)[keyof typeof VisibilityType];
|
|
24
|
+
/**
|
|
25
|
+
* Типы содержимого в репозитории
|
|
26
|
+
*/
|
|
27
|
+
declare const ContentType: {
|
|
28
|
+
readonly Directory: "dir"
|
|
29
|
+
readonly File: "file"
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Тип для типов содержимого
|
|
33
|
+
*/
|
|
34
|
+
type ContentType = (typeof ContentType)[keyof typeof ContentType];
|
|
35
|
+
/**
|
|
36
|
+
* Состояния pull request
|
|
37
|
+
*/
|
|
38
|
+
declare const PullRequestState: {
|
|
39
|
+
readonly Closed: "closed"
|
|
40
|
+
readonly Open: "open"
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Тип для состояний pull request
|
|
44
|
+
*/
|
|
45
|
+
type PullRequestState = (typeof PullRequestState)[keyof typeof PullRequestState];
|
|
46
|
+
/**
|
|
47
|
+
* Состояния issue
|
|
48
|
+
*/
|
|
49
|
+
declare const IssueState: {
|
|
50
|
+
readonly Closed: "closed"
|
|
51
|
+
readonly Open: "open"
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Тип для состояний issue
|
|
55
|
+
*/
|
|
56
|
+
type IssueState = (typeof IssueState)[keyof typeof IssueState];
|
|
57
|
+
export { VisibilityType, UserType, PullRequestState, IssueState, ContentType };
|
package/dist/enums.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var a={Organization:"Organization",User:"User"},b={Limited:"limited",Private:"private",Public:"public"},c={Directory:"dir",File:"file"},d={Closed:"closed",Open:"open"},f={Closed:"closed",Open:"open"};export{b as VisibilityType,a as UserType,d as PullRequestState,f as IssueState,c as ContentType};
|
|
2
|
+
export{a as p,b as q,c as r,d as s,f as t};
|
|
3
|
+
|
|
4
|
+
//# debugId=EDBE5B3382E35CC664756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/enums.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * Типы пользователей в системе\n */\nexport const UserType = {\n Organization: \"Organization\",\n User: \"User\",\n} as const;\n\n/**\n * Тип для типов пользователей\n */\nexport type UserType = (typeof UserType)[keyof typeof UserType];\n\n/**\n * Типы видимости для репозиториев и пользователей\n */\nexport const VisibilityType = {\n Limited: \"limited\",\n Private: \"private\",\n Public: \"public\",\n} as const;\n\n/**\n * Тип для типов видимости\n */\nexport type VisibilityType = (typeof VisibilityType)[keyof typeof VisibilityType];\n\n/**\n * Типы содержимого в репозитории\n */\nexport const ContentType = {\n Directory: \"dir\",\n File: \"file\",\n} as const;\n\n/**\n * Тип для типов содержимого\n */\nexport type ContentType = (typeof ContentType)[keyof typeof ContentType];\n\n/**\n * Состояния pull request\n */\nexport const PullRequestState = {\n Closed: \"closed\",\n Open: \"open\",\n} as const;\n\n/**\n * Тип для состояний pull request\n */\nexport type PullRequestState = (typeof PullRequestState)[keyof typeof PullRequestState];\n\n/**\n * Состояния issue\n */\nexport const IssueState = {\n Closed: \"closed\",\n Open: \"open\",\n} as const;\n\n/**\n * Тип для состояний issue\n */\nexport type IssueState = (typeof IssueState)[keyof typeof IssueState];\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "AAGO,IAAM,EAAW,CACtB,aAAc,eACd,KAAM,MACR,EAUa,EAAiB,CAC5B,QAAS,UACT,QAAS,UACT,OAAQ,QACV,EAUa,EAAc,CACzB,UAAW,MACX,KAAM,MACR,EAUa,EAAmB,CAC9B,OAAQ,SACR,KAAM,MACR,EAUa,EAAa,CACxB,OAAQ,SACR,KAAM,MACR",
|
|
8
|
+
"debugId": "EDBE5B3382E35CC664756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Информация о лимитах запросов (Rate Limits)
|
|
3
|
+
*/
|
|
4
|
+
interface RateLimitInfo {
|
|
5
|
+
/** Максимальное количество запросов за час */
|
|
6
|
+
limit: number;
|
|
7
|
+
/** Оставшееся количество запросов */
|
|
8
|
+
remaining: number;
|
|
9
|
+
/** Количество секунд до сброса лимита */
|
|
10
|
+
retryAfter: number;
|
|
11
|
+
/** Unix timestamp когда лимит будет сброшен */
|
|
12
|
+
reset: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Информация о версии API
|
|
16
|
+
*/
|
|
17
|
+
interface ApiVersionInfo {
|
|
18
|
+
/** Текущая версия API */
|
|
19
|
+
version: string;
|
|
20
|
+
/** Последняя доступная версия API */
|
|
21
|
+
latestVersion: string;
|
|
22
|
+
/** Флаг устаревшей версии */
|
|
23
|
+
deprecated: boolean;
|
|
24
|
+
/** Дата вывода из эксплуатации (если версия устарела) */
|
|
25
|
+
decommissioning?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Метаданные ответа API
|
|
29
|
+
*/
|
|
30
|
+
interface ApiResponseMetadata {
|
|
31
|
+
/** Информация о лимитах запросов */
|
|
32
|
+
rateLimit?: RateLimitInfo;
|
|
33
|
+
/** Информация о версии API */
|
|
34
|
+
apiVersion?: ApiVersionInfo;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Базовая ошибка GitVerse API
|
|
38
|
+
*/
|
|
39
|
+
declare class GitVerseApiError extends Error {
|
|
40
|
+
/** HTTP статус код */
|
|
41
|
+
readonly status: number;
|
|
42
|
+
/** Метаданные ответа API */
|
|
43
|
+
readonly metadata?: ApiResponseMetadata;
|
|
44
|
+
constructor(status: number, message: string, metadata?: ApiResponseMetadata);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Ошибка превышения лимита запросов (429 Too Many Requests)
|
|
48
|
+
*/
|
|
49
|
+
declare class RateLimitError extends GitVerseApiError {
|
|
50
|
+
/** Информация о лимитах */
|
|
51
|
+
readonly rateLimit: RateLimitInfo;
|
|
52
|
+
constructor(message: string, rateLimit: RateLimitInfo, metadata?: ApiResponseMetadata);
|
|
53
|
+
/**
|
|
54
|
+
* Возвращает количество секунд до сброса лимита
|
|
55
|
+
*/
|
|
56
|
+
getRetryAfterSeconds(): number;
|
|
57
|
+
/**
|
|
58
|
+
* Возвращает дату/время сброса лимита
|
|
59
|
+
*/
|
|
60
|
+
getResetDate(): Date;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Предупреждение об устаревшей версии API
|
|
64
|
+
*/
|
|
65
|
+
declare class ApiVersionWarning {
|
|
66
|
+
/** Текущая используемая версия */
|
|
67
|
+
readonly currentVersion: string;
|
|
68
|
+
/** Последняя доступная версия */
|
|
69
|
+
readonly latestVersion: string;
|
|
70
|
+
/** Дата вывода из эксплуатации */
|
|
71
|
+
readonly decommissioning?: string;
|
|
72
|
+
constructor(currentVersion: string, latestVersion: string, decommissioning?: string);
|
|
73
|
+
/**
|
|
74
|
+
* Возвращает сообщение о предупреждении
|
|
75
|
+
*/
|
|
76
|
+
getMessage(): string;
|
|
77
|
+
}
|
|
78
|
+
export { RateLimitError, GitVerseApiError, ApiVersionWarning };
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
class j extends Error{status;metadata;constructor(b,f,h){super(f);this.name="GitVerseApiError",this.status=b,this.metadata=h,Object.setPrototypeOf(this,j.prototype)}}class k extends j{rateLimit;constructor(b,f,h){super(429,b,h);this.name="RateLimitError",this.rateLimit=f,Object.setPrototypeOf(this,k.prototype)}getRetryAfterSeconds(){return this.rateLimit.retryAfter}getResetDate(){return new Date(this.rateLimit.reset*1000)}}class q{currentVersion;latestVersion;decommissioning;constructor(b,f,h){this.currentVersion=b,this.latestVersion=f,this.decommissioning=h}getMessage(){let b=`Используется устаревшая версия API: ${this.currentVersion}. Последняя версия: ${this.latestVersion}.`;if(this.decommissioning)b+=` Версия будет выведена из эксплуатации: ${this.decommissioning}.`;return b}}export{k as RateLimitError,j as GitVerseApiError,q as ApiVersionWarning};
|
|
2
|
+
export{j as u,k as v,q as w};
|
|
3
|
+
|
|
4
|
+
//# debugId=FE75CA9902C3ED1B64756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/errors.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * Классы ошибок для GitVerse API\n */\n\nimport type { ApiResponseMetadata, RateLimitInfo } from \"./types\";\n\n/**\n * Базовая ошибка GitVerse API\n */\nexport class GitVerseApiError extends Error {\n /** HTTP статус код */\n public readonly status: number;\n /** Метаданные ответа API */\n public readonly metadata?: ApiResponseMetadata;\n\n constructor(status: number, message: string, metadata?: ApiResponseMetadata) {\n super(message);\n this.name = \"GitVerseApiError\";\n this.status = status;\n this.metadata = metadata;\n\n // Поддержка instanceof для расширенных классов ошибок\n Object.setPrototypeOf(this, GitVerseApiError.prototype);\n }\n}\n\n/**\n * Ошибка превышения лимита запросов (429 Too Many Requests)\n */\nexport class RateLimitError extends GitVerseApiError {\n /** Информация о лимитах */\n public readonly rateLimit: RateLimitInfo;\n\n constructor(message: string, rateLimit: RateLimitInfo, metadata?: ApiResponseMetadata) {\n super(429, message, metadata);\n this.name = \"RateLimitError\";\n this.rateLimit = rateLimit;\n\n Object.setPrototypeOf(this, RateLimitError.prototype);\n }\n\n /**\n * Возвращает количество секунд до сброса лимита\n */\n getRetryAfterSeconds(): number {\n return this.rateLimit.retryAfter;\n }\n\n /**\n * Возвращает дату/время сброса лимита\n */\n getResetDate(): Date {\n return new Date(this.rateLimit.reset * 1000);\n }\n}\n\n/**\n * Предупреждение об устаревшей версии API\n */\nexport class ApiVersionWarning {\n /** Текущая используемая версия */\n public readonly currentVersion: string;\n /** Последняя доступная версия */\n public readonly latestVersion: string;\n /** Дата вывода из эксплуатации */\n public readonly decommissioning?: string;\n\n constructor(currentVersion: string, latestVersion: string, decommissioning?: string) {\n this.currentVersion = currentVersion;\n this.latestVersion = latestVersion;\n this.decommissioning = decommissioning;\n }\n\n /**\n * Возвращает сообщение о предупреждении\n */\n getMessage(): string {\n let message = `Используется устаревшая версия API: ${this.currentVersion}. Последняя версия: ${this.latestVersion}.`;\n if (this.decommissioning) {\n message += ` Версия будет выведена из эксплуатации: ${this.decommissioning}.`;\n }\n return message;\n }\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "AASO,MAAM,UAAyB,KAAM,CAE1B,OAEA,SAEhB,WAAW,CAAC,EAAgB,EAAiB,EAAgC,CAC3E,MAAM,CAAO,EACb,KAAK,KAAO,mBACZ,KAAK,OAAS,EACd,KAAK,SAAW,EAGhB,OAAO,eAAe,KAAM,EAAiB,SAAS,EAE1D,CAKO,MAAM,UAAuB,CAAiB,CAEnC,UAEhB,WAAW,CAAC,EAAiB,EAA0B,EAAgC,CACrF,MAAM,IAAK,EAAS,CAAQ,EAC5B,KAAK,KAAO,iBACZ,KAAK,UAAY,EAEjB,OAAO,eAAe,KAAM,EAAe,SAAS,EAMtD,oBAAoB,EAAW,CAC7B,OAAO,KAAK,UAAU,WAMxB,YAAY,EAAS,CACnB,OAAO,IAAI,KAAK,KAAK,UAAU,MAAQ,IAAI,EAE/C,CAKO,MAAM,CAAkB,CAEb,eAEA,cAEA,gBAEhB,WAAW,CAAC,EAAwB,EAAuB,EAA0B,CACnF,KAAK,eAAiB,EACtB,KAAK,cAAgB,EACrB,KAAK,gBAAkB,EAMzB,UAAU,EAAW,CACnB,IAAI,EAAU,uCAAsC,KAAK,qCAAqC,KAAK,iBACnG,GAAI,KAAK,gBACP,GAAW,2CAA0C,KAAK,mBAE5D,OAAO,EAEX",
|
|
8
|
+
"debugId": "FE75CA9902C3ED1B64756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|