itd-sdk-js 1.0.8 → 1.0.9

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "itd-sdk-js",
3
- "version": "1.0.8",
3
+ "version": "1.0.9",
4
4
  "description": "Unofficial SDK for итд.com - Node.js library for working with API. Automatic token refresh, session management, and convenient methods for posts, comments, users, and notifications.",
5
5
  "main": "src/client.js",
6
6
  "type": "module",
package/src/auth.js CHANGED
@@ -130,8 +130,11 @@ export class AuthManager {
130
130
 
131
131
  if (response.status === 200) {
132
132
  this.client.setAccessToken(null);
133
- // Очистка cookies
134
- this.axios.defaults.headers.common['Cookie'] = '';
133
+ try {
134
+ this.client.cookieJar.removeAllCookiesSync();
135
+ } catch (e) {
136
+ // MemoryCookieStore поддерживает removeAllCookiesSync
137
+ }
135
138
  return true;
136
139
  }
137
140
  return false;
package/src/client.js CHANGED
@@ -199,7 +199,7 @@ export class ITDClient {
199
199
  this.hashtags = new HashtagsManager(this);
200
200
  this.files = new FilesManager(this);
201
201
  this.reports = new ReportsManager(this);
202
- this.search = new SearchManager(this);
202
+ this.searchManager = new SearchManager(this);
203
203
  }
204
204
 
205
205
  /**
@@ -383,7 +383,7 @@ export class ITDClient {
383
383
  *
384
384
  * @param {string|null} username - Имя пользователя (null = лента/свои посты)
385
385
  * @param {number} limit - Количество постов
386
- * @param {string} sort - Сортировка: "new", "old", "popular"
386
+ * @param {string} sort - Сортировка: "newest", "oldest", "popular"
387
387
  * @param {string|null} cursor - Курсор для пагинации
388
388
  * @param {string|null} tab - Тип ленты: "popular" (популярные), "following" (из подписок), null (обычная лента)
389
389
  * @returns {Promise<Object>} { posts: [], pagination: {} }
@@ -843,7 +843,7 @@ export class ITDClient {
843
843
  * @returns {Promise<Object|null>} { users: [], hashtags: [] } или null при ошибке
844
844
  */
845
845
  async search(query, userLimit = 5, hashtagLimit = 5) {
846
- return await this.search.search(query, userLimit, hashtagLimit);
846
+ return await this.searchManager.search(query, userLimit, hashtagLimit);
847
847
  }
848
848
 
849
849
  /**
@@ -854,7 +854,7 @@ export class ITDClient {
854
854
  * @returns {Promise<Array|null>} Массив пользователей или null при ошибке
855
855
  */
856
856
  async searchUsers(query, limit = 5) {
857
- return await this.search.searchUsers(query, limit);
857
+ return await this.searchManager.searchUsers(query, limit);
858
858
  }
859
859
 
860
860
  /**
@@ -865,7 +865,7 @@ export class ITDClient {
865
865
  * @returns {Promise<Array|null>} Массив хэштегов или null при ошибке
866
866
  */
867
867
  async searchHashtags(query, limit = 5) {
868
- return await this.search.searchHashtags(query, limit);
868
+ return await this.searchManager.searchHashtags(query, limit);
869
869
  }
870
870
 
871
871
  // ========== USER-FRIENDLY МЕТОДЫ ==========
@@ -995,16 +995,6 @@ export class ITDClient {
995
995
  return await this.users.getMyClan();
996
996
  }
997
997
 
998
- /**
999
- * Получает клан пользователя (эмодзи аватара) (удобный метод)
1000
- *
1001
- * @param {string} username - Имя пользователя
1002
- * @returns {Promise<string|null>} Эмодзи клана или null
1003
- */
1004
- async getUserClan(username) {
1005
- return await this.users.getUserClan(username);
1006
- }
1007
-
1008
998
  // === Комментарии ===
1009
999
 
1010
1000
  /**
@@ -143,7 +143,8 @@ export class NotificationsManager {
143
143
  }
144
144
 
145
145
  /**
146
- * Отмечает все уведомления как прочитанные
146
+ * Отмечает все уведомления как прочитанные.
147
+ * Экспериментально: endpoint /api/notifications/read-all может отличаться.
147
148
  *
148
149
  * @returns {Promise<boolean>} True если успешно
149
150
  */
package/src/posts.js CHANGED
@@ -314,7 +314,7 @@ export class PostsManager {
314
314
  const response = await this.axios.put(editUrl, postData);
315
315
 
316
316
  if (response.status === 200) {
317
- return response.data;
317
+ return response.data?.data ?? response.data;
318
318
  } else {
319
319
  console.error(`Ошибка редактирования поста: ${response.status} - ${JSON.stringify(response.data)}`);
320
320
  return null;
@@ -424,7 +424,7 @@ export class PostsManager {
424
424
  const response = await this.axios.post(repostUrl, repostData);
425
425
 
426
426
  if (response.status === 200 || response.status === 201) {
427
- return response.data;
427
+ return response.data?.data ?? response.data;
428
428
  } else {
429
429
  console.error(`Ошибка репоста: ${response.status}`);
430
430
  if (response.data) {
package/src/users.js CHANGED
@@ -306,9 +306,8 @@ export class UsersManager {
306
306
  const response = await this.axios.get(topClansUrl);
307
307
 
308
308
  if (response.status === 200) {
309
- const data = response.data;
310
- // Структура: { clans: [...] }
311
- return data.clans || [];
309
+ const data = response.data?.data ?? response.data;
310
+ return data?.clans || [];
312
311
  } else {
313
312
  console.error(`Ошибка получения топ кланов: ${response.status}`);
314
313
  return null;
@@ -403,15 +402,4 @@ export class UsersManager {
403
402
  const profile = await this.getMyProfile();
404
403
  return profile ? (profile.avatar || null) : null;
405
404
  }
406
-
407
- /**
408
- * Получает клан пользователя (эмодзи аватара) (удобный метод)
409
- *
410
- * @param {string} username - Имя пользователя
411
- * @returns {Promise<string|null>} Эмодзи клана или null
412
- */
413
- async getUserClan(username) {
414
- const profile = await this.getUserProfile(username);
415
- return profile ? (profile.avatar || null) : null;
416
- }
417
405
  }