anixapi 0.2.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.
Files changed (164) hide show
  1. package/LICENSE +339 -0
  2. package/README.md +165 -0
  3. package/dist/api/auth.d.ts +129 -0
  4. package/dist/api/auth.js +156 -0
  5. package/dist/api/bookmarks/export.d.ts +19 -0
  6. package/dist/api/bookmarks/export.js +24 -0
  7. package/dist/api/bookmarks/import.d.ts +29 -0
  8. package/dist/api/bookmarks/import.js +36 -0
  9. package/dist/api/bookmarks/index.d.ts +2 -0
  10. package/dist/api/bookmarks/index.js +18 -0
  11. package/dist/api/channel/article.d.ts +119 -0
  12. package/dist/api/channel/article.js +144 -0
  13. package/dist/api/channel/articleComment.d.ts +119 -0
  14. package/dist/api/channel/articleComment.js +144 -0
  15. package/dist/api/channel/articleSuggestion.d.ts +69 -0
  16. package/dist/api/channel/articleSuggestion.js +84 -0
  17. package/dist/api/channel/channel.d.ts +249 -0
  18. package/dist/api/channel/channel.js +300 -0
  19. package/dist/api/channel/index.d.ts +4 -0
  20. package/dist/api/channel/index.js +20 -0
  21. package/dist/api/collection/collection.d.ts +59 -0
  22. package/dist/api/collection/collection.js +72 -0
  23. package/dist/api/collection/collectionComment.d.ts +109 -0
  24. package/dist/api/collection/collectionComment.js +132 -0
  25. package/dist/api/collection/collectionFavorite.d.ts +39 -0
  26. package/dist/api/collection/collectionFavorite.js +48 -0
  27. package/dist/api/collection/collectionMy.d.ts +69 -0
  28. package/dist/api/collection/collectionMy.js +84 -0
  29. package/dist/api/collection/index.d.ts +4 -0
  30. package/dist/api/collection/index.js +20 -0
  31. package/dist/api/config.d.ts +29 -0
  32. package/dist/api/config.js +36 -0
  33. package/dist/api/discover.d.ts +59 -0
  34. package/dist/api/discover.js +72 -0
  35. package/dist/api/feed.d.ts +39 -0
  36. package/dist/api/feed.js +48 -0
  37. package/dist/api/index.d.ts +12 -0
  38. package/dist/api/index.js +28 -0
  39. package/dist/api/notification/index.d.ts +2 -0
  40. package/dist/api/notification/index.js +18 -0
  41. package/dist/api/notification/notification.d.ts +199 -0
  42. package/dist/api/notification/notification.js +240 -0
  43. package/dist/api/notification/notificationPreference.d.ts +159 -0
  44. package/dist/api/notification/notificationPreference.js +192 -0
  45. package/dist/api/profile/index.d.ts +10 -0
  46. package/dist/api/profile/index.js +26 -0
  47. package/dist/api/profile/profile.d.ts +65 -0
  48. package/dist/api/profile/profile.js +80 -0
  49. package/dist/api/profile/profileBadge.d.ts +39 -0
  50. package/dist/api/profile/profileBadge.js +48 -0
  51. package/dist/api/profile/profileBlockList.d.ts +39 -0
  52. package/dist/api/profile/profileBlockList.js +48 -0
  53. package/dist/api/profile/profileDeletion.d.ts +39 -0
  54. package/dist/api/profile/profileDeletion.js +48 -0
  55. package/dist/api/profile/profileFriend.d.ts +99 -0
  56. package/dist/api/profile/profileFriend.js +120 -0
  57. package/dist/api/profile/profileHealth.d.ts +59 -0
  58. package/dist/api/profile/profileHealth.js +72 -0
  59. package/dist/api/profile/profileList.d.ts +49 -0
  60. package/dist/api/profile/profileList.js +60 -0
  61. package/dist/api/profile/profilePreference.d.ts +239 -0
  62. package/dist/api/profile/profilePreference.js +288 -0
  63. package/dist/api/profile/profileReleaseVote.d.ts +39 -0
  64. package/dist/api/profile/profileReleaseVote.js +48 -0
  65. package/dist/api/profile/profileRoleList.d.ts +19 -0
  66. package/dist/api/profile/profileRoleList.js +24 -0
  67. package/dist/api/release/episode.d.ts +99 -0
  68. package/dist/api/release/episode.js +120 -0
  69. package/dist/api/release/favorite.d.ts +39 -0
  70. package/dist/api/release/favorite.js +48 -0
  71. package/dist/api/release/filter.d.ts +19 -0
  72. package/dist/api/release/filter.js +24 -0
  73. package/dist/api/release/history.d.ts +39 -0
  74. package/dist/api/release/history.js +48 -0
  75. package/dist/api/release/index.d.ts +13 -0
  76. package/dist/api/release/index.js +29 -0
  77. package/dist/api/release/related.d.ts +19 -0
  78. package/dist/api/release/related.js +24 -0
  79. package/dist/api/release/release.d.ts +79 -0
  80. package/dist/api/release/release.js +96 -0
  81. package/dist/api/release/releaseComment.d.ts +109 -0
  82. package/dist/api/release/releaseComment.js +132 -0
  83. package/dist/api/release/releaseStreamingPlatform.d.ts +19 -0
  84. package/dist/api/release/releaseStreamingPlatform.js +24 -0
  85. package/dist/api/release/releaseVideo.d.ts +59 -0
  86. package/dist/api/release/releaseVideo.js +72 -0
  87. package/dist/api/release/releaseVideoAppeal.d.ts +49 -0
  88. package/dist/api/release/releaseVideoAppeal.js +60 -0
  89. package/dist/api/release/releaseVideoFavorite.d.ts +39 -0
  90. package/dist/api/release/releaseVideoFavorite.js +48 -0
  91. package/dist/api/release/schedule.d.ts +19 -0
  92. package/dist/api/release/schedule.js +24 -0
  93. package/dist/api/release/type.d.ts +39 -0
  94. package/dist/api/release/type.js +48 -0
  95. package/dist/api/report.d.ts +189 -0
  96. package/dist/api/report.js +228 -0
  97. package/dist/api/search.d.ts +129 -0
  98. package/dist/api/search.js +156 -0
  99. package/dist/classes/Article.d.ts +18 -0
  100. package/dist/classes/Article.js +44 -0
  101. package/dist/classes/ArticleComment.d.ts +15 -0
  102. package/dist/classes/ArticleComment.js +37 -0
  103. package/dist/classes/BaseArticle.d.ts +21 -0
  104. package/dist/classes/BaseArticle.js +23 -0
  105. package/dist/classes/BaseComment.d.ts +22 -0
  106. package/dist/classes/BaseComment.js +25 -0
  107. package/dist/classes/BaseProfile.d.ts +29 -0
  108. package/dist/classes/BaseProfile.js +52 -0
  109. package/dist/classes/Channel.d.ts +47 -0
  110. package/dist/classes/Channel.js +108 -0
  111. package/dist/classes/Collection.d.ts +29 -0
  112. package/dist/classes/Collection.js +58 -0
  113. package/dist/classes/Dubber.d.ts +19 -0
  114. package/dist/classes/Dubber.js +24 -0
  115. package/dist/classes/Episode.d.ts +20 -0
  116. package/dist/classes/Episode.js +30 -0
  117. package/dist/classes/FullProfile.d.ts +70 -0
  118. package/dist/classes/FullProfile.js +92 -0
  119. package/dist/classes/Release.d.ts +91 -0
  120. package/dist/classes/Release.js +150 -0
  121. package/dist/classes/ReleaseComment.d.ts +16 -0
  122. package/dist/classes/ReleaseComment.js +45 -0
  123. package/dist/classes/Source.d.ts +15 -0
  124. package/dist/classes/Source.js +20 -0
  125. package/dist/classes/SuggestionArticle.d.ts +14 -0
  126. package/dist/classes/SuggestionArticle.js +30 -0
  127. package/dist/client.d.ts +49 -0
  128. package/dist/client.js +183 -0
  129. package/dist/endpoints.d.ts +63 -0
  130. package/dist/endpoints.js +67 -0
  131. package/dist/errors.d.ts +37 -0
  132. package/dist/errors.js +122 -0
  133. package/dist/index.d.ts +5 -0
  134. package/dist/index.js +23 -0
  135. package/dist/types/auth.d.ts +127 -0
  136. package/dist/types/auth.js +47 -0
  137. package/dist/types/channel.d.ts +350 -0
  138. package/dist/types/channel.js +104 -0
  139. package/dist/types/collection.d.ts +105 -0
  140. package/dist/types/collection.js +44 -0
  141. package/dist/types/config.d.ts +41 -0
  142. package/dist/types/config.js +4 -0
  143. package/dist/types/index.d.ts +13 -0
  144. package/dist/types/index.js +26 -0
  145. package/dist/types/notification.d.ts +81 -0
  146. package/dist/types/notification.js +2 -0
  147. package/dist/types/profile.d.ts +339 -0
  148. package/dist/types/profile.js +46 -0
  149. package/dist/types/release.d.ts +467 -0
  150. package/dist/types/release.js +39 -0
  151. package/dist/types/request.d.ts +138 -0
  152. package/dist/types/request.js +2 -0
  153. package/dist/types/response.d.ts +104 -0
  154. package/dist/types/response.js +35 -0
  155. package/dist/types/settings.d.ts +119 -0
  156. package/dist/types/settings.js +48 -0
  157. package/dist/utils/ArticleBuilder.d.ts +38 -0
  158. package/dist/utils/ArticleBuilder.js +144 -0
  159. package/dist/utils/LinkParser.d.ts +253 -0
  160. package/dist/utils/LinkParser.js +253 -0
  161. package/dist/utils/Utils.d.ts +3 -0
  162. package/dist/utils/Utils.js +11 -0
  163. package/docs/DOCUMENTATION.md +290 -0
  164. package/package.json +55 -0
@@ -0,0 +1,290 @@
1
+ # Документация AnixApi
2
+
3
+ Полное руководство по установке, настройке и использованию библиотеки.
4
+
5
+ ---
6
+
7
+ ## Содержание
8
+
9
+ 1. [Установка](#установка)
10
+ 2. [Быстрый старт](#быстрый-старт)
11
+ 3. [Инициализация](#инициализация)
12
+ 4. [Аутентификация](#аутентификация)
13
+ 5. [Высокоуровневые методы](#высокоуровневые-методы)
14
+ 6. [Прямой доступ к эндпоинтам](#прямой-доступ-к-эндпоинтам)
15
+ 7. [Структура API](#структура-api)
16
+ 8. [Обработка ошибок](#обработка-ошибок)
17
+ 9. [Сборка из исходников](#сборка-из-исходников)
18
+ 10. [TypeScript](#typescript)
19
+
20
+ ---
21
+
22
+ ## Установка
23
+
24
+ ```bash
25
+ npm install anixapi
26
+ ```
27
+
28
+ Для разработки из репозитория:
29
+
30
+ ```bash
31
+ git clone https://github.com/Maks1mio/anixapi
32
+ cd AnixApi
33
+ npm install
34
+ npm run build-win # Windows
35
+ npm run build # Linux / macOS
36
+ ```
37
+
38
+ ---
39
+
40
+ ## Быстрый старт
41
+
42
+ ```javascript
43
+ const { Anixart, DefaultResult } = require("anixapi");
44
+
45
+ const client = new Anixart();
46
+
47
+ // Вход
48
+ const code = await client.login("username", "password");
49
+ if (code !== DefaultResult.Ok) {
50
+ console.error("Ошибка входа, код:", code);
51
+ process.exit(1);
52
+ }
53
+
54
+ // Релиз (RAW-ответ API)
55
+ const raw = await client.endpoints.release.info(789, true);
56
+ console.log(raw);
57
+
58
+ // Профиль (обёртка-класс)
59
+ const profile = await client.getProfileById(456);
60
+ console.log(profile.login);
61
+ ```
62
+
63
+ ---
64
+
65
+ ## Инициализация
66
+
67
+ ```typescript
68
+ import { Anixart } from "anixapi";
69
+ // const { Anixart } = require("anixapi");
70
+
71
+ const client = new Anixart({
72
+ baseUrl: "https://api-s.anixsekai.com", // опционально
73
+ token: "your-token", // опционально
74
+ throwOnApiError: false, // опционально, см. «Обработка ошибок»
75
+ });
76
+ ```
77
+
78
+ | Параметр | Описание |
79
+ |----------|----------|
80
+ | `baseUrl` | Базовый URL API. По умолчанию `https://api-s.anixsekai.com` |
81
+ | `token` | Токен сессии для авторизованных запросов |
82
+ | `throwOnApiError` | Бросать `AnixApiError`, если `code !== 0` в ответе API |
83
+
84
+ Токен можно передать при создании или получить через `login()` — он сохранится в экземпляре автоматически.
85
+
86
+ ---
87
+
88
+ ## Аутентификация
89
+
90
+ ### Логин и пароль
91
+
92
+ ```typescript
93
+ import { DefaultResult } from "anixapi";
94
+
95
+ const code = await client.login("username", "password");
96
+
97
+ if (code === DefaultResult.Ok) {
98
+ console.log("Вход выполнен, token:", client.token);
99
+ }
100
+ ```
101
+
102
+ ### Готовый токен
103
+
104
+ ```typescript
105
+ const client = new Anixart({ token: "existing-token" });
106
+ ```
107
+
108
+ ### OAuth и регистрация
109
+
110
+ ```typescript
111
+ // Вход через VK
112
+ await client.endpoints.auth.signInWithVk({ vkAccessToken: "..." });
113
+
114
+ // Регистрация
115
+ await client.endpoints.auth.signUp({ login, email, password });
116
+ await client.endpoints.auth.verify({ login, email, password, code, hash });
117
+ ```
118
+
119
+ Полный список методов: `client.endpoints.auth.*`
120
+
121
+ ---
122
+
123
+ ## Высокоуровневые методы
124
+
125
+ Класс `Anixart` предоставляет готовые методы, возвращающие доменные объекты (`Article`, `Channel`, `Release`, `FullProfile`, `Collection`).
126
+
127
+ | Метод | Описание |
128
+ |-------|----------|
129
+ | `getChannelById(id)` | Канал или `null` |
130
+ | `getProfileById(id)` | `FullProfile` |
131
+ | `getArticleById(id)` | Статья или `null` |
132
+ | `getReleaseById(id, extended?)` | Релиз или `null` |
133
+ | `getCollectionById(id)` | Коллекция или `null` |
134
+ | `getRandomRelease(extended?)` | Случайный релиз |
135
+ | `getLatestFeed(page)` | Массив `Article` |
136
+ | `getFavoriteCollections(page)` | Избранные коллекции |
137
+ | `getAllCollections(page, sort?)` | Все коллекции |
138
+ | `login(username, password)` | Авторизация, возвращает код ответа |
139
+ | `getEndpointUrls()` | Статический: зеркала API |
140
+
141
+ ### Примеры
142
+
143
+ ```typescript
144
+ const channel = await client.getChannelById(123);
145
+ if (channel) console.log(channel.title);
146
+
147
+ const profile = await client.getProfileById(456);
148
+ console.log(profile.login, profile.watchingCount);
149
+
150
+ const articles = await client.getLatestFeed(1);
151
+ articles.forEach(a => console.log(a.id));
152
+
153
+ const release = await client.getReleaseById(101, true);
154
+ if (release) console.log(release.titleRu);
155
+ ```
156
+
157
+ ---
158
+
159
+ ## Прямой доступ к эндпоинтам
160
+
161
+ Все **275** эндпоинтов доступны через `client.endpoints`:
162
+
163
+ ```typescript
164
+ // Релиз
165
+ const info = await client.endpoints.release.info(789, true);
166
+
167
+ // Профиль
168
+ const response = await client.endpoints.profile.byId(456);
169
+
170
+ // Канал
171
+ const channel = await client.endpoints.channel.channel(123);
172
+
173
+ // Друзья
174
+ const friends = await client.endpoints.profileFriend.friends(profileId, 0);
175
+
176
+ // Эпизоды
177
+ const episodes = await client.endpoints.episode.episodes(releaseId, typeId, sourceId);
178
+ ```
179
+
180
+ Каждый метод возвращает типизированный ответ с полем `code`. Список возможных кодов описан в JSDoc и в enum'ах (`LoginResult`, `CommentAddResult` и т.д.).
181
+
182
+ ### Устаревший алиас
183
+
184
+ ```typescript
185
+ client.endpoints.settings // → profilePreference (deprecated)
186
+ ```
187
+
188
+ ---
189
+
190
+ ## Структура API
191
+
192
+ ```
193
+ client.endpoints
194
+ ├── auth, config
195
+ ├── channel, article, articleComment, articleSuggestion
196
+ ├── collection, collectionMy, collectionFavorite, collectionComment
197
+ ├── feed, discover, search
198
+ ├── profile, profileFriend, profileHealth, profilePreference, …
199
+ ├── release, episode, releaseComment, releaseVideo, …
200
+ ├── notification, notificationPreference
201
+ ├── export, import
202
+ └── report
203
+ ```
204
+
205
+ Исходники разложены по доменам в `src/api/`:
206
+
207
+ ```
208
+ src/api/
209
+ ├── auth.ts, config.ts, discover.ts, feed.ts, search.ts, report.ts
210
+ ├── channel/ — каналы и статьи
211
+ ├── collection/ — коллекции
212
+ ├── notification/ — уведомления
213
+ ├── profile/ — профиль и настройки
214
+ ├── release/ — релизы, эпизоды, видео
215
+ └── bookmarks/ — импорт / экспорт закладок
216
+ ```
217
+
218
+ ---
219
+
220
+ ## Обработка ошибок
221
+
222
+ ### Коды ответа API
223
+
224
+ Большинство запросов возвращают `{ code: number, ... }`. Успех — `DefaultResult.Ok` (0).
225
+
226
+ ```typescript
227
+ import { DefaultResult, isApiOk, getApiErrorMessage, describeResultCode } from "anixapi";
228
+
229
+ const result = await client.endpoints.auth.signIn({ login, password });
230
+
231
+ if (!isApiOk(result)) {
232
+ console.error(getApiErrorMessage(result, "/auth/signIn"));
233
+ // code=3 (LoginResult.InvalidPassword | ...)
234
+ console.log(describeResultCode(result.code));
235
+ }
236
+ ```
237
+
238
+ ### Сетевые и парсинг-ошибки
239
+
240
+ При сбое сети, пустом ответе или невалидном JSON бросается `AnixApiError` с полями `path`, `httpStatus`, `body`.
241
+
242
+ ### Автоброс при code !== 0
243
+
244
+ ```typescript
245
+ const client = new Anixart({ throwOnApiError: true });
246
+
247
+ // или на один запрос
248
+ await client.endpoints.article.delete(123, { throwOnApiError: true });
249
+ ```
250
+
251
+ ---
252
+
253
+ ## Сборка из исходников
254
+
255
+ ```bash
256
+ npm run typecheck # проверка типов без сборки
257
+ npm run build-win # Windows: typecheck + tsc → dist/
258
+ npm run build # Unix: typecheck + tsc → dist/
259
+ ```
260
+
261
+ Перед сборкой автоматически запускается `tsc --noEmit` — при ошибках типов билд прерывается.
262
+
263
+ ---
264
+
265
+ ## TypeScript
266
+
267
+ Библиотека поставляется с декларациями (`dist/index.d.ts`). Основные экспорты:
268
+
269
+ ```typescript
270
+ import {
271
+ Anixart,
272
+ DefaultResult,
273
+ LoginResult,
274
+ AnixApiError,
275
+ isApiOk,
276
+ describeResultCode,
277
+ // типы ответов и сущностей
278
+ IProfile,
279
+ IRelease,
280
+ IArticle,
281
+ } from "anixapi";
282
+ ```
283
+
284
+ Доменные классы-обёртки (`Article`, `Channel`, `Release`, `FullProfile`, `Collection`) создаются через методы `Anixart`, а не экспортируются напрямую из корня пакета.
285
+
286
+ ---
287
+
288
+ ## Лицензия
289
+
290
+ [GPL-2.0](../LICENSE)
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "anixapi",
3
+ "version": "0.2.1",
4
+ "description": "Unofficial Anixart API wrapper for Node.js (TypeScript)",
5
+ "type": "commonjs",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "files": [
9
+ "dist",
10
+ "README.md",
11
+ "LICENSE",
12
+ "docs/DOCUMENTATION.md"
13
+ ],
14
+ "scripts": {
15
+ "typecheck": "tsc --noEmit",
16
+ "clean": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"",
17
+ "build": "npm run typecheck && npm run clean && tsc",
18
+ "build-win": "npm run build",
19
+ "prepublishOnly": "npm run build",
20
+ "publish:npm": "npm publish --access public",
21
+ "publish:yarn": "yarn publish"
22
+ },
23
+ "keywords": [
24
+ "api",
25
+ "anixart",
26
+ "anixapi",
27
+ "wrapper",
28
+ "anime",
29
+ "typescript"
30
+ ],
31
+ "homepage": "https://github.com/Maks1mio/anixapi#readme",
32
+ "bugs": {
33
+ "url": "https://github.com/Maks1mio/anixapi/issues"
34
+ },
35
+ "repository": {
36
+ "type": "git",
37
+ "url": "git+https://github.com/Maks1mio/anixapi.git"
38
+ },
39
+ "author": "Roman U. (DesConnet) & Maksim K. (Maks1mio)",
40
+ "license": "GPL-2.0",
41
+ "engines": {
42
+ "node": ">=18"
43
+ },
44
+ "publishConfig": {
45
+ "access": "public",
46
+ "registry": "https://registry.npmjs.org/"
47
+ },
48
+ "devDependencies": {
49
+ "@types/node": "^22.10.2",
50
+ "typescript": "^5.7.2"
51
+ },
52
+ "dependencies": {
53
+ "form-data": "^4.0.2"
54
+ }
55
+ }