gitverse-api-sdk 4.0.2 → 5.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.
Files changed (59) hide show
  1. package/README.md +126 -270
  2. package/dist/api/actions.d.ts +116 -43
  3. package/dist/api/actions.js +3 -3
  4. package/dist/api/actions.js.map +3 -3
  5. package/dist/api/branches.d.ts +33 -1
  6. package/dist/api/branches.js +3 -3
  7. package/dist/api/branches.js.map +3 -3
  8. package/dist/api/collaborators.d.ts +200 -3
  9. package/dist/api/collaborators.js +3 -3
  10. package/dist/api/collaborators.js.map +3 -3
  11. package/dist/api/commits.d.ts +88 -3
  12. package/dist/api/commits.js +3 -3
  13. package/dist/api/commits.js.map +3 -3
  14. package/dist/api/contents.d.ts +26 -1
  15. package/dist/api/contents.js +3 -3
  16. package/dist/api/contents.js.map +3 -3
  17. package/dist/api/emails.d.ts +28 -18
  18. package/dist/api/emails.js +3 -3
  19. package/dist/api/emails.js.map +3 -3
  20. package/dist/api/forks.d.ts +44 -1
  21. package/dist/api/forks.js +3 -3
  22. package/dist/api/forks.js.map +1 -1
  23. package/dist/api/git.d.ts +34 -4
  24. package/dist/api/git.js +3 -3
  25. package/dist/api/git.js.map +3 -3
  26. package/dist/api/issues.d.ts +252 -42
  27. package/dist/api/issues.js +3 -3
  28. package/dist/api/issues.js.map +3 -3
  29. package/dist/api/organizations.d.ts +10 -0
  30. package/dist/api/organizations.js +2 -2
  31. package/dist/api/organizations.js.map +1 -1
  32. package/dist/api/pulls.d.ts +145 -17
  33. package/dist/api/pulls.js +3 -3
  34. package/dist/api/pulls.js.map +3 -3
  35. package/dist/api/releases.d.ts +44 -16
  36. package/dist/api/releases.js +3 -3
  37. package/dist/api/releases.js.map +3 -3
  38. package/dist/api/repositories.d.ts +129 -45
  39. package/dist/api/repositories.js +3 -3
  40. package/dist/api/repositories.js.map +3 -3
  41. package/dist/api/stars.d.ts +65 -2
  42. package/dist/api/stars.js +3 -3
  43. package/dist/api/stars.js.map +3 -3
  44. package/dist/api/teams.d.ts +54 -44
  45. package/dist/api/teams.js +3 -3
  46. package/dist/api/teams.js.map +3 -3
  47. package/dist/api/users.d.ts +94 -0
  48. package/dist/api/users.js +3 -3
  49. package/dist/api/users.js.map +3 -3
  50. package/dist/client.d.ts +10 -0
  51. package/dist/client.js +3 -3
  52. package/dist/client.js.map +3 -3
  53. package/dist/index.d.ts +718 -180
  54. package/dist/index.js +2 -2
  55. package/dist/index.js.map +2 -2
  56. package/dist/types.d.ts +583 -85
  57. package/dist/utils.js +2 -2
  58. package/dist/utils.js.map +1 -1
  59. package/package.json +2 -2
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/api/teams.ts"],
4
4
  "sourcesContent": [
5
- "import type { GitVerseClient } from \"../client\";\nimport type { Invitation, RequestOptions, Team, User } from \"../types\";\n\n/**\n * API для работы с командами организации\n */\nexport class TeamsApi {\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 org Название организации\n * @returns Список команд\n */\n list(org: string, options?: RequestOptions): Promise<Team[]> {\n return this.client.get<Team[]>(`/orgs/${org}/teams`, options);\n }\n\n /**\n * Получает список приглашений команды\n * @param org Название организации\n * @param team Название команды\n * @returns Список приглашений\n */\n getInvitations(org: string, team: string, options?: RequestOptions): Promise<Invitation[]> {\n return this.client.get<Invitation[]>(`/orgs/${org}/teams/${team}/invitations`, options);\n }\n\n /**\n * Получает список членов команды\n * @param org Название организации\n * @param team Название команды\n * @returns Список членов команды\n */\n getMembers(org: string, team: string, options?: RequestOptions): Promise<User[]> {\n return this.client.get<User[]>(`/orgs/${org}/teams/${team}/members`, options);\n }\n\n /**\n * Добавляет репозиторий к команде\n * @param org Название организации\n * @param team Название команды\n * @param owner Владелец репозитория\n * @param repo Название репозитория\n * @returns Результат операции\n */\n addRepository(org: string, team: string, owner: string, repo: string, options?: RequestOptions): Promise<void> {\n return this.client.put<void>(`/orgs/${org}/teams/${team}/repos/${owner}/${repo}`, {}, options);\n }\n}\n"
5
+ "import type { GitVerseClient } from \"../client\";\nimport type { AddTeamRepositoryParams, PaginationParams, RequestOptions, Team, User } from \"../types\";\n\n/**\n * API для работы с командами организации\n */\nexport class TeamsApi {\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 org Название организации\n * @param params Параметры пагинации\n * @param options Опции запроса\n * @returns Список команд\n */\n list(org: string, params?: PaginationParams, options?: RequestOptions): Promise<Team[]> {\n const searchParams = new URLSearchParams();\n if (params?.page) searchParams.append(\"page\", String(params.page));\n if (params?.per_page) searchParams.append(\"per_page\", String(params.per_page));\n\n const queryString = searchParams.toString();\n const url = `/orgs/${org}/teams${queryString ? `?${queryString}` : \"\"}`;\n\n return this.client.get<Team[]>(url, options);\n }\n\n /**\n * Получает список членов команды\n * @param org Название организации\n * @param team Название команды\n * @param params Параметры пагинации\n * @param options Опции запроса\n * @returns Список членов команды\n */\n getMembers(org: string, team: string, params?: PaginationParams, options?: RequestOptions): Promise<User[]> {\n const searchParams = new URLSearchParams();\n if (params?.page) searchParams.append(\"page\", String(params.page));\n if (params?.per_page) searchParams.append(\"per_page\", String(params.per_page));\n\n const queryString = searchParams.toString();\n const url = `/orgs/${org}/teams/${team}/members${queryString ? `?${queryString}` : \"\"}`;\n\n return this.client.get<User[]>(url, options);\n }\n\n /**\n * Добавляет репозиторий к команде\n * @param org Название организации\n * @param team Название команды\n * @param owner Владелец репозитория\n * @param repo Название репозитория\n * @param params Параметры добавления (permission обязателен)\n * @param options Опции запроса\n * @returns Результат операции\n */\n addRepository(\n org: string,\n team: string,\n owner: string,\n repo: string,\n params: AddTeamRepositoryParams,\n options?: RequestOptions,\n ): Promise<void> {\n return this.client.put<void>(`/orgs/${org}/teams/${team}/repos/${owner}/${repo}`, params, options);\n }\n}\n"
6
6
  ],
7
- "mappings": "AAMO,MAAM,CAAS,CACZ,OAMR,WAAW,CAAC,EAAwB,CAClC,KAAK,OAAS,EAQhB,IAAI,CAAC,EAAa,EAA2C,CAC3D,OAAO,KAAK,OAAO,IAAY,SAAS,UAAa,CAAO,EAS9D,cAAc,CAAC,EAAa,EAAc,EAAiD,CACzF,OAAO,KAAK,OAAO,IAAkB,SAAS,WAAa,gBAAoB,CAAO,EASxF,UAAU,CAAC,EAAa,EAAc,EAA2C,CAC/E,OAAO,KAAK,OAAO,IAAY,SAAS,WAAa,YAAgB,CAAO,EAW9E,aAAa,CAAC,EAAa,EAAc,EAAe,EAAc,EAAyC,CAC7G,OAAO,KAAK,OAAO,IAAU,SAAS,WAAa,WAAc,KAAS,IAAQ,CAAC,EAAG,CAAO,EAEjG",
8
- "debugId": "D51ED66717DDEF6064756E2164756E21",
7
+ "mappings": "AAMO,MAAM,CAAS,CACZ,OAMR,WAAW,CAAC,EAAwB,CAClC,KAAK,OAAS,EAUhB,IAAI,CAAC,EAAa,EAA2B,EAA2C,CACtF,IAAM,EAAe,IAAI,gBACzB,GAAI,GAAQ,KAAM,EAAa,OAAO,OAAQ,OAAO,EAAO,IAAI,CAAC,EACjE,GAAI,GAAQ,SAAU,EAAa,OAAO,WAAY,OAAO,EAAO,QAAQ,CAAC,EAE7E,IAAM,EAAc,EAAa,SAAS,EACpC,EAAM,SAAS,UAAY,EAAc,IAAI,IAAgB,KAEnE,OAAO,KAAK,OAAO,IAAY,EAAK,CAAO,EAW7C,UAAU,CAAC,EAAa,EAAc,EAA2B,EAA2C,CAC1G,IAAM,EAAe,IAAI,gBACzB,GAAI,GAAQ,KAAM,EAAa,OAAO,OAAQ,OAAO,EAAO,IAAI,CAAC,EACjE,GAAI,GAAQ,SAAU,EAAa,OAAO,WAAY,OAAO,EAAO,QAAQ,CAAC,EAE7E,IAAM,EAAc,EAAa,SAAS,EACpC,EAAM,SAAS,WAAa,YAAe,EAAc,IAAI,IAAgB,KAEnF,OAAO,KAAK,OAAO,IAAY,EAAK,CAAO,EAa7C,aAAa,CACX,EACA,EACA,EACA,EACA,EACA,EACe,CACf,OAAO,KAAK,OAAO,IAAU,SAAS,WAAa,WAAc,KAAS,IAAQ,EAAQ,CAAO,EAErG",
8
+ "debugId": "6FE5E67CFD3C7F1364756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -35,6 +35,35 @@ interface RequestOptions {
35
35
  signal?: AbortSignal;
36
36
  }
37
37
  /**
38
+ * Базовые параметры пагинации
39
+ */
40
+ interface PaginationParams {
41
+ /** Номер страницы (начиная с 1) */
42
+ page?: number;
43
+ /** Количество элементов на странице */
44
+ per_page?: number;
45
+ }
46
+ /**
47
+ * Параметры для поиска пользователей
48
+ */
49
+ interface SearchUsersParams extends PaginationParams {
50
+ /** Критерий сортировки */
51
+ sort?: "best_match" | string;
52
+ /** Направление сортировки */
53
+ order?: "asc" | "desc";
54
+ }
55
+ /**
56
+ * Ответ на поиск пользователей
57
+ */
58
+ interface UserSearchResult {
59
+ /** Общее количество найденных пользователей */
60
+ total_count: number;
61
+ /** Неполные результаты (если true, результаты могут быть неполными) */
62
+ incomplete_results?: boolean;
63
+ /** Список найденных пользователей */
64
+ items: User2[];
65
+ }
66
+ /**
38
67
  * Интерфейс пользователя
39
68
  */
40
69
  interface User2 {
@@ -82,6 +111,12 @@ interface User2 {
82
111
  public_repos?: number;
83
112
  /** Количество репозиториев, отмеченных звездой */
84
113
  stars_count?: number;
114
+ /** API-ссылка на подписки пользователя */
115
+ following_url?: string;
116
+ /** API-ссылка на избранные репозитории */
117
+ starred_url?: string;
118
+ /** API-ссылка на подписки на уведомления */
119
+ subscriptions_url?: string;
85
120
  /** Дата создания аккаунта */
86
121
  created_at: string;
87
122
  /** Дата последнего обновления аккаунта */
@@ -96,6 +131,8 @@ interface CurrentUser {
96
131
  id: number;
97
132
  /** Имя пользователя (может быть пустым) */
98
133
  name?: string;
134
+ /** Полное имя пользователя */
135
+ full_name?: string;
99
136
  /** Логин пользователя */
100
137
  login: string;
101
138
  /** Электронная почта пользователя (может быть недоступна) */
@@ -104,12 +141,44 @@ interface CurrentUser {
104
141
  avatar_url: string;
105
142
  /** Веб-ссылка на профиль пользователя */
106
143
  html_url: string;
144
+ /** URL API пользователя */
145
+ url?: string;
107
146
  /** Количество публичных репозиториев */
108
147
  public_repos: number;
109
148
  /** Количество подписчиков */
110
149
  followers: number;
150
+ /** URL подписчиков */
151
+ followers_url?: string;
152
+ /** Количество подписок */
153
+ following?: number;
154
+ /** URL подписок */
155
+ following_url?: string;
156
+ /** URL репозиториев */
157
+ repos_url?: string;
158
+ /** URL организаций */
159
+ organizations_url?: string;
160
+ /** URL starred репозиториев */
161
+ starred_url?: string;
162
+ /** Количество starred репозиториев */
163
+ stars_count?: number;
164
+ /** URL подписок на репозитории */
165
+ subscriptions_url?: string;
166
+ /** Биография пользователя */
167
+ bio?: string;
168
+ /** Тип аккаунта */
169
+ type?: string;
170
+ /** Является ли администратором сайта */
171
+ site_admin?: boolean;
172
+ /** Местоположение */
173
+ location?: string;
174
+ /** Подтверждён ли аккаунт */
175
+ is_verified?: boolean;
176
+ /** Веб-сайт пользователя */
177
+ website?: string;
111
178
  /** Дата создания аккаунта */
112
179
  created_at: string;
180
+ /** Дата последнего обновления */
181
+ updated_at?: string;
113
182
  }
114
183
  /**
115
184
  * Предупреждение об устаревшей версии API
@@ -237,6 +306,16 @@ declare class GitVerseClient {
237
306
  * @returns Ответ от API
238
307
  */
239
308
  patch<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T>;
309
+ /**
310
+ * Выполняет загрузку файла через multipart/form-data
311
+ * @param path Путь к API-ресурсу
312
+ * @param fieldName Имя поля для файла
313
+ * @param file Файл для загрузки (Blob или ArrayBuffer)
314
+ * @param fileName Имя файла
315
+ * @param options Опции запроса (опционально)
316
+ * @returns Ответ от API
317
+ */
318
+ uploadFile<T>(path: string, fieldName: string, file: Blob | ArrayBuffer, fileName: string, options?: RequestOptions): Promise<T>;
240
319
  }
241
320
  /**
242
321
  * API для работы с пользователями
@@ -259,5 +338,20 @@ declare class UsersApi {
259
338
  * @returns Данные о пользователе
260
339
  */
261
340
  getByUsername(username: string, options?: RequestOptions): Promise<User2>;
341
+ /**
342
+ * Получает информацию о пользователе по ID аккаунта
343
+ * @param accountId ID аккаунта пользователя
344
+ * @param options Опции запроса
345
+ * @returns Данные о пользователе
346
+ */
347
+ getById(accountId: number, options?: RequestOptions): Promise<User2>;
348
+ /**
349
+ * Поиск пользователей по запросу
350
+ * @param query Поисковый запрос (по логину или имени)
351
+ * @param params Параметры поиска и пагинации
352
+ * @param options Опции запроса
353
+ * @returns Результаты поиска пользователей
354
+ */
355
+ search(query: string, params?: SearchUsersParams, options?: RequestOptions): Promise<UserSearchResult>;
262
356
  }
263
357
  export { UsersApi };
package/dist/api/users.js CHANGED
@@ -1,4 +1,4 @@
1
- class f{client;constructor(b){this.client=b}getCurrent(b){return this.client.get("/user",b)}getByUsername(b,d){return this.client.get(`/users/${b}`,d)}}export{f as UsersApi};
2
- export{f as m};
1
+ class v{client;constructor(f){this.client=f}getCurrent(f){return this.client.get("/user",f)}getByUsername(f,b){return this.client.get(`/users/${f}`,b)}getById(f,b){return this.client.get(`/user/${f}`,b)}search(f,b,j){let g=new URLSearchParams;if(g.append("q",f),b?.sort)g.append("sort",b.sort);if(b?.order)g.append("order",b.order);if(b?.page)g.append("page",String(b.page));if(b?.per_page)g.append("per_page",String(b.per_page));let k=`/search/users?${g.toString()}`;return this.client.get(k,j)}}export{v as UsersApi};
2
+ export{v as g};
3
3
 
4
- //# debugId=1D7A90B6197B27CE64756E2164756E21
4
+ //# debugId=B771B9A7D37FF3DE64756E2164756E21
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/api/users.ts"],
4
4
  "sourcesContent": [
5
- "import type { GitVerseClient } from \"../client\";\nimport type { CurrentUser, RequestOptions, 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(options?: RequestOptions): Promise<CurrentUser> {\n return this.client.get<CurrentUser>(\"/user\", options);\n }\n\n /**\n * Получает информацию о пользователе по имени пользователя\n * @param username Имя пользователя\n * @returns Данные о пользователе\n */\n getByUsername(username: string, options?: RequestOptions): Promise<User> {\n return this.client.get<User>(`/users/${username}`, options);\n }\n}\n"
5
+ "import type { GitVerseClient } from \"../client\";\nimport type { CurrentUser, RequestOptions, SearchUsersParams, User, UserSearchResult } 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(options?: RequestOptions): Promise<CurrentUser> {\n return this.client.get<CurrentUser>(\"/user\", options);\n }\n\n /**\n * Получает информацию о пользователе по имени пользователя\n * @param username Имя пользователя\n * @returns Данные о пользователе\n */\n getByUsername(username: string, options?: RequestOptions): Promise<User> {\n return this.client.get<User>(`/users/${username}`, options);\n }\n\n /**\n * Получает информацию о пользователе по ID аккаунта\n * @param accountId ID аккаунта пользователя\n * @param options Опции запроса\n * @returns Данные о пользователе\n */\n getById(accountId: number, options?: RequestOptions): Promise<User> {\n return this.client.get<User>(`/user/${accountId}`, options);\n }\n\n /**\n * Поиск пользователей по запросу\n * @param query Поисковый запрос (по логину или имени)\n * @param params Параметры поиска и пагинации\n * @param options Опции запроса\n * @returns Результаты поиска пользователей\n */\n search(query: string, params?: SearchUsersParams, options?: RequestOptions): Promise<UserSearchResult> {\n const searchParams = new URLSearchParams();\n searchParams.append(\"q\", query);\n if (params?.sort) searchParams.append(\"sort\", params.sort);\n if (params?.order) searchParams.append(\"order\", params.order);\n if (params?.page) searchParams.append(\"page\", String(params.page));\n if (params?.per_page) searchParams.append(\"per_page\", String(params.per_page));\n\n const queryString = searchParams.toString();\n const url = `/search/users?${queryString}`;\n\n return this.client.get<UserSearchResult>(url, options);\n }\n}\n"
6
6
  ],
7
- "mappings": "AAMO,MAAM,CAAS,CACZ,OAMR,WAAW,CAAC,EAAwB,CAClC,KAAK,OAAS,EAOhB,UAAU,CAAC,EAAgD,CACzD,OAAO,KAAK,OAAO,IAAiB,QAAS,CAAO,EAQtD,aAAa,CAAC,EAAkB,EAAyC,CACvE,OAAO,KAAK,OAAO,IAAU,UAAU,IAAY,CAAO,EAE9D",
8
- "debugId": "1D7A90B6197B27CE64756E2164756E21",
7
+ "mappings": "AAMO,MAAM,CAAS,CACZ,OAMR,WAAW,CAAC,EAAwB,CAClC,KAAK,OAAS,EAOhB,UAAU,CAAC,EAAgD,CACzD,OAAO,KAAK,OAAO,IAAiB,QAAS,CAAO,EAQtD,aAAa,CAAC,EAAkB,EAAyC,CACvE,OAAO,KAAK,OAAO,IAAU,UAAU,IAAY,CAAO,EAS5D,OAAO,CAAC,EAAmB,EAAyC,CAClE,OAAO,KAAK,OAAO,IAAU,SAAS,IAAa,CAAO,EAU5D,MAAM,CAAC,EAAe,EAA4B,EAAqD,CACrG,IAAM,EAAe,IAAI,gBAEzB,GADA,EAAa,OAAO,IAAK,CAAK,EAC1B,GAAQ,KAAM,EAAa,OAAO,OAAQ,EAAO,IAAI,EACzD,GAAI,GAAQ,MAAO,EAAa,OAAO,QAAS,EAAO,KAAK,EAC5D,GAAI,GAAQ,KAAM,EAAa,OAAO,OAAQ,OAAO,EAAO,IAAI,CAAC,EACjE,GAAI,GAAQ,SAAU,EAAa,OAAO,WAAY,OAAO,EAAO,QAAQ,CAAC,EAG7E,IAAM,EAAM,iBADQ,EAAa,SAAS,IAG1C,OAAO,KAAK,OAAO,IAAsB,EAAK,CAAO,EAEzD",
8
+ "debugId": "B771B9A7D37FF3DE64756E2164756E21",
9
9
  "names": []
10
10
  }
package/dist/client.d.ts CHANGED
@@ -137,5 +137,15 @@ declare class GitVerseClient {
137
137
  * @returns Ответ от API
138
138
  */
139
139
  patch<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T>;
140
+ /**
141
+ * Выполняет загрузку файла через multipart/form-data
142
+ * @param path Путь к API-ресурсу
143
+ * @param fieldName Имя поля для файла
144
+ * @param file Файл для загрузки (Blob или ArrayBuffer)
145
+ * @param fileName Имя файла
146
+ * @param options Опции запроса (опционально)
147
+ * @returns Ответ от API
148
+ */
149
+ uploadFile<T>(path: string, fieldName: string, file: Blob | ArrayBuffer, fileName: string, options?: RequestOptions): Promise<T>;
140
150
  }
141
151
  export { HTTPMethods, GitVerseClientConfig, GitVerseClient };
package/dist/client.js CHANGED
@@ -1,4 +1,4 @@
1
- import{x as S,y as U,z as X}from"./errors.js";var F={DELETE:"DELETE",GET:"GET",PATCH:"PATCH",POST:"POST",PUT:"PUT"};class _{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 x=j.get("GitVerse-RateLimit-Limit"),q=j.get("GitVerse-RateLimit-Remaining"),z=j.get("GitVerse-RateLimit-Retry-After"),B=j.get("Gitverse-Ratelimit-Reset");if(!(x&&q&&z&&B))return;return{limit:Number.parseInt(x,10),remaining:Number.parseInt(q,10),reset:Number.parseInt(B,10),retryAfter:Number.parseInt(z,10)}}extractApiVersionInfo(j){let x=j.get("Gitverse-Api-Version"),q=j.get("Gitverse-Api-Latest-Version"),z=j.get("Gitverse-Api-Deprecation")==="true",B=j.get("Gitverse-Api-Decommissioning");if(!(x&&q))return;return{decommissioning:B||void 0,deprecated:z,latestVersion:q,version:x}}extractMetadata(j){let x=this.extractRateLimitInfo(j),q=this.extractApiVersionInfo(j);if(q?.deprecated&&this.onApiVersionWarning){let z=new X(q.version,q.latestVersion,q.decommissioning);this.onApiVersionWarning(z)}return{apiVersion:q,rateLimit:x}}async request(j,x,q,z){let B=j.startsWith("/")?j.slice(1):j,Y=`${this.baseUrl}/${B}`,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 Z={body:q?JSON.stringify(q):void 0,headers:J,method:x,signal:z?.signal},D=await fetch(Y,Z),K=this.extractMetadata(D.headers),N;try{N=await D.json()}catch{N=void 0}if(!D.ok){let Q=N?.message||D.statusText;if(D.status===429&&K.rateLimit)throw new U(Q||"Превышен лимит запросов. Попробуйте позже.",K.rateLimit,K);throw new S(D.status,Q,K)}return N}get(j,x){return this.request(j,F.GET,void 0,x)}post(j,x,q){return this.request(j,F.POST,x,q)}put(j,x,q){return this.request(j,F.PUT,x,q)}delete(j,x,q){return this.request(j,F.DELETE,x,q)}patch(j,x,q){return this.request(j,F.PATCH,x,q)}}export{F as HTTPMethods,_ as GitVerseClient};
2
- export{_ as w};
1
+ import{x as $,y as w,z as k}from"./errors.js";var Z={DELETE:"DELETE",GET:"GET",PATCH:"PATCH",POST:"POST",PUT:"PUT"};class v{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 x=j.get("GitVerse-RateLimit-Limit"),q=j.get("GitVerse-RateLimit-User-Remaining")||j.get("GitVerse-RateLimit-Remaining"),z=j.get("GitVerse-RateLimit-Retry-After"),F=j.get("Gitverse-Ratelimit-Reset");if(!(x&&z))return;let U=Number.parseInt(z,10),J=F?Number.parseInt(F,10):Math.floor(Date.now()/1000)+U,K=q?Number.parseInt(q,10):0;return{limit:Number.parseInt(x,10),remaining:K,reset:J,retryAfter:U}}extractApiVersionInfo(j){let x=j.get("Gitverse-Api-Version"),q=j.get("Gitverse-Api-Latest-Version"),z=j.get("Gitverse-Api-Deprecation")==="true",F=j.get("Gitverse-Api-Decommissioning");if(!(x&&q))return;return{decommissioning:F||void 0,deprecated:z,latestVersion:q,version:x}}extractMetadata(j){let x=this.extractRateLimitInfo(j),q=this.extractApiVersionInfo(j);if(q?.deprecated&&this.onApiVersionWarning){let z=new k(q.version,q.latestVersion,q.decommissioning);this.onApiVersionWarning(z)}return{apiVersion:q,rateLimit:x}}async request(j,x,q,z){let F=j.startsWith("/")?j.slice(1):j,U=`${this.baseUrl}/${F}`,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 K={body:q?JSON.stringify(q):void 0,headers:J,method:x,signal:z?.signal},C=await fetch(U,K),X=this.extractMetadata(C.headers),Y;try{Y=await C.json()}catch{Y=void 0}if(!C.ok){let S=Y?.message||C.statusText;if(C.status===429&&X.rateLimit)throw new w(S||"Превышен лимит запросов. Попробуйте позже.",X.rateLimit,X);throw new $(C.status,S,X)}return Y}get(j,x){return this.request(j,Z.GET,void 0,x)}post(j,x,q){return this.request(j,Z.POST,x,q)}put(j,x,q){return this.request(j,Z.PUT,x,q)}delete(j,x,q){return this.request(j,Z.DELETE,x,q)}patch(j,x,q){return this.request(j,Z.PATCH,x,q)}async uploadFile(j,x,q,z,F){let U=j.startsWith("/")?j.slice(1):j,J=`${this.baseUrl}/${U}`,K=new Headers;if(K.set("Accept",`application/vnd.gitverse.object+json; version=${this.apiVersion}`),this.token)K.set("Authorization",`Bearer ${this.token}`);let C=new FormData,X=q instanceof ArrayBuffer?new Blob([q]):q;C.append(x,X,z);let Y={body:C,headers:K,method:Z.POST,signal:F?.signal},Q=await fetch(J,Y),S=this.extractMetadata(Q.headers),_;try{_=await Q.json()}catch{_=void 0}if(!Q.ok){let W=_?.message||Q.statusText;if(Q.status===429&&S.rateLimit)throw new w(W||"Превышен лимит запросов. Попробуйте позже.",S.rateLimit,S);throw new $(Q.status,W,S)}return _}}export{Z as HTTPMethods,v as GitVerseClient};
2
+ export{v as w};
3
3
 
4
- //# debugId=0E13183CD0E75AD764756E2164756E21
4
+ //# debugId=E35C8522B6655D0264756E2164756E21
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/client.ts"],
4
4
  "sourcesContent": [
5
- "import { ApiVersionWarning, GitVerseApiError, RateLimitError } from \"./errors\";\nimport type { ApiError, ApiResponseMetadata, ApiVersionInfo, RateLimitInfo, RequestOptions } from \"./types\";\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 * @param options Опции запроса (опционально)\n * @returns Ответ от API\n * @throws {RateLimitError} При превышении лимита запросов (429)\n * @throws {GitVerseApiError} При других ошибках API\n */\n async request<T>(path: string, method: HTTPMethods, body?: unknown, options?: RequestOptions): 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 fetchOptions: RequestInit = {\n body: body ? JSON.stringify(body) : undefined,\n headers,\n method,\n signal: options?.signal,\n };\n\n const response = await fetch(url, fetchOptions);\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 * @param options Опции запроса (опционально)\n * @returns Ответ от API\n */\n get<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>(path, HTTPMethods.GET, undefined, options);\n }\n\n /**\n * Выполняет POST-запрос\n * @param path Путь к API-ресурсу\n * @param body Тело запроса\n * @param options Опции запроса (опционально)\n * @returns Ответ от API\n */\n post<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>(path, HTTPMethods.POST, body, options);\n }\n\n /**\n * Выполняет PUT-запрос\n * @param path Путь к API-ресурсу\n * @param body Тело запроса\n * @param options Опции запроса (опционально)\n * @returns Ответ от API\n */\n put<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>(path, HTTPMethods.PUT, body, options);\n }\n\n /**\n * Выполняет DELETE-запрос\n * @param path Путь к API-ресурсу\n * @param body Тело запроса (опционально)\n * @param options Опции запроса (опционально)\n * @returns Ответ от API\n */\n delete<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>(path, HTTPMethods.DELETE, body, options);\n }\n\n /**\n * Выполняет PATCH-запрос\n * @param path Путь к API-ресурсу\n * @param body Тело запроса\n * @param options Опции запроса (опционально)\n * @returns Ответ от API\n */\n patch<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>(path, HTTPMethods.PATCH, body, options);\n }\n}\n"
5
+ "import { ApiVersionWarning, GitVerseApiError, RateLimitError } from \"./errors\";\nimport type { ApiError, ApiResponseMetadata, ApiVersionInfo, RateLimitInfo, RequestOptions } from \"./types\";\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-User-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 && retryAfter)) {\n return;\n }\n\n const retryAfterNum = Number.parseInt(retryAfter, 10);\n const resetNum = reset ? Number.parseInt(reset, 10) : Math.floor(Date.now() / 1000) + retryAfterNum;\n const remainingNum = remaining ? Number.parseInt(remaining, 10) : 0;\n\n return {\n limit: Number.parseInt(limit, 10),\n remaining: remainingNum,\n reset: resetNum,\n retryAfter: retryAfterNum,\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 * @param options Опции запроса (опционально)\n * @returns Ответ от API\n * @throws {RateLimitError} При превышении лимита запросов (429)\n * @throws {GitVerseApiError} При других ошибках API\n */\n async request<T>(path: string, method: HTTPMethods, body?: unknown, options?: RequestOptions): 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 fetchOptions: RequestInit = {\n body: body ? JSON.stringify(body) : undefined,\n headers,\n method,\n signal: options?.signal,\n };\n\n const response = await fetch(url, fetchOptions);\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 * @param options Опции запроса (опционально)\n * @returns Ответ от API\n */\n get<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>(path, HTTPMethods.GET, undefined, options);\n }\n\n /**\n * Выполняет POST-запрос\n * @param path Путь к API-ресурсу\n * @param body Тело запроса\n * @param options Опции запроса (опционально)\n * @returns Ответ от API\n */\n post<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>(path, HTTPMethods.POST, body, options);\n }\n\n /**\n * Выполняет PUT-запрос\n * @param path Путь к API-ресурсу\n * @param body Тело запроса\n * @param options Опции запроса (опционально)\n * @returns Ответ от API\n */\n put<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>(path, HTTPMethods.PUT, body, options);\n }\n\n /**\n * Выполняет DELETE-запрос\n * @param path Путь к API-ресурсу\n * @param body Тело запроса (опционально)\n * @param options Опции запроса (опционально)\n * @returns Ответ от API\n */\n delete<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>(path, HTTPMethods.DELETE, body, options);\n }\n\n /**\n * Выполняет PATCH-запрос\n * @param path Путь к API-ресурсу\n * @param body Тело запроса\n * @param options Опции запроса (опционально)\n * @returns Ответ от API\n */\n patch<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>(path, HTTPMethods.PATCH, body, options);\n }\n\n /**\n * Выполняет загрузку файла через multipart/form-data\n * @param path Путь к API-ресурсу\n * @param fieldName Имя поля для файла\n * @param file Файл для загрузки (Blob или ArrayBuffer)\n * @param fileName Имя файла\n * @param options Опции запроса (опционально)\n * @returns Ответ от API\n */\n async uploadFile<T>(\n path: string,\n fieldName: string,\n file: Blob | ArrayBuffer,\n fileName: string,\n options?: RequestOptions,\n ): Promise<T> {\n const cleanPath = path.startsWith(\"/\") ? path.slice(1) : path;\n const url = `${this.baseUrl}/${cleanPath}`;\n\n const headers = new Headers();\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 formData = new FormData();\n const blob = file instanceof ArrayBuffer ? new Blob([file]) : file;\n formData.append(fieldName, blob, fileName);\n\n const fetchOptions: RequestInit = {\n body: formData,\n headers,\n method: HTTPMethods.POST,\n signal: options?.signal,\n };\n\n const response = await fetch(url, fetchOptions);\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 if (response.status === 429 && metadata.rateLimit) {\n throw new RateLimitError(\n errorMessage || \"Превышен лимит запросов. Попробуйте позже.\",\n metadata.rateLimit,\n metadata,\n );\n }\n\n throw new GitVerseApiError(response.status, errorMessage, metadata);\n }\n\n return data as T;\n }\n}\n"
6
6
  ],
7
- "mappings": "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",
8
- "debugId": "0E13183CD0E75AD764756E2164756E21",
7
+ "mappings": "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",
8
+ "debugId": "E35C8522B6655D0264756E2164756E21",
9
9
  "names": []
10
10
  }