@irfanshadikrishad/anilist 1.1.10 → 1.2.0-forbidden.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.
@@ -15,8 +15,8 @@ import os from "os";
15
15
  import path from "path";
16
16
  import { fetcher } from "./fetcher.js";
17
17
  import { AniList, MyAnimeList } from "./lists.js";
18
- import { deleteActivityMutation, saveTextActivityMutation, } from "./mutations.js";
19
- import { activityAllQuery, activityAnimeListQuery, activityMangaListQuery, activityMediaList, activityMessageQuery, activityTextQuery, currentUserAnimeList, currentUserMangaList, currentUserQuery, deleteMangaEntryMutation, deleteMediaEntryMutation, userActivityQuery, } from "./queries.js";
18
+ import { deleteActivityMutation, likeActivityMutation, saveTextActivityMutation, } from "./mutations.js";
19
+ import { activityAllQuery, activityAnimeListQuery, activityMangaListQuery, activityMediaList, activityMessageQuery, activityTextQuery, currentUserAnimeList, currentUserMangaList, currentUserQuery, deleteMangaEntryMutation, deleteMediaEntryMutation, followingActivitiesQuery, globalActivitiesQuery, specificUserActivitiesQuery, userActivityQuery, userQuery, } from "./queries.js";
20
20
  import { aniListEndpoint, getTitle, redirectUri } from "./workers.js";
21
21
  const home_dir = os.homedir();
22
22
  const save_path = path.join(home_dir, ".anilist_token");
@@ -130,28 +130,28 @@ class Auth {
130
130
  perPage: 10,
131
131
  });
132
132
  const activities = (_b = (_a = activiResponse === null || activiResponse === void 0 ? void 0 : activiResponse.data) === null || _a === void 0 ? void 0 : _a.Page) === null || _b === void 0 ? void 0 : _b.activities;
133
- console.log(`
134
- ID: ${user === null || user === void 0 ? void 0 : user.id}
135
- Name: ${user === null || user === void 0 ? void 0 : user.name}
136
- siteUrl: ${user === null || user === void 0 ? void 0 : user.siteUrl}
137
- profileColor: ${(_c = user === null || user === void 0 ? void 0 : user.options) === null || _c === void 0 ? void 0 : _c.profileColor}
138
- timeZone: ${(_d = user === null || user === void 0 ? void 0 : user.options) === null || _d === void 0 ? void 0 : _d.timezone}
139
- activityMergeTime: ${(_e = user === null || user === void 0 ? void 0 : user.options) === null || _e === void 0 ? void 0 : _e.activityMergeTime}
140
- donatorTier: ${user === null || user === void 0 ? void 0 : user.donatorTier}
141
- donatorBadge: ${user === null || user === void 0 ? void 0 : user.donatorBadge}
142
- unreadNotificationCount:${user === null || user === void 0 ? void 0 : user.unreadNotificationCount}
143
- Account Created: ${new Date((user === null || user === void 0 ? void 0 : user.createdAt) * 1000).toUTCString()}
144
- Account Updated: ${new Date((user === null || user === void 0 ? void 0 : user.updatedAt) * 1000).toUTCString()}
145
-
146
- Statistics (Anime):
147
- Count: ${(_g = (_f = user === null || user === void 0 ? void 0 : user.statistics) === null || _f === void 0 ? void 0 : _f.anime) === null || _g === void 0 ? void 0 : _g.count}
148
- Mean Score: ${(_j = (_h = user === null || user === void 0 ? void 0 : user.statistics) === null || _h === void 0 ? void 0 : _h.anime) === null || _j === void 0 ? void 0 : _j.meanScore}
149
- Minutes Watched: ${(_l = (_k = user === null || user === void 0 ? void 0 : user.statistics) === null || _k === void 0 ? void 0 : _k.anime) === null || _l === void 0 ? void 0 : _l.minutesWatched}
150
-
151
- Statistics (Manga):
152
- Count: ${(_o = (_m = user === null || user === void 0 ? void 0 : user.statistics) === null || _m === void 0 ? void 0 : _m.manga) === null || _o === void 0 ? void 0 : _o.count}
153
- Chapters Read: ${(_q = (_p = user === null || user === void 0 ? void 0 : user.statistics) === null || _p === void 0 ? void 0 : _p.manga) === null || _q === void 0 ? void 0 : _q.chaptersRead}
154
- Volumes Read: ${(_s = (_r = user === null || user === void 0 ? void 0 : user.statistics) === null || _r === void 0 ? void 0 : _r.manga) === null || _s === void 0 ? void 0 : _s.volumesRead}
133
+ console.log(`
134
+ ID: ${user === null || user === void 0 ? void 0 : user.id}
135
+ Name: ${user === null || user === void 0 ? void 0 : user.name}
136
+ siteUrl: ${user === null || user === void 0 ? void 0 : user.siteUrl}
137
+ profileColor: ${(_c = user === null || user === void 0 ? void 0 : user.options) === null || _c === void 0 ? void 0 : _c.profileColor}
138
+ timeZone: ${(_d = user === null || user === void 0 ? void 0 : user.options) === null || _d === void 0 ? void 0 : _d.timezone}
139
+ activityMergeTime: ${(_e = user === null || user === void 0 ? void 0 : user.options) === null || _e === void 0 ? void 0 : _e.activityMergeTime}
140
+ donatorTier: ${user === null || user === void 0 ? void 0 : user.donatorTier}
141
+ donatorBadge: ${user === null || user === void 0 ? void 0 : user.donatorBadge}
142
+ unreadNotificationCount:${user === null || user === void 0 ? void 0 : user.unreadNotificationCount}
143
+ Account Created: ${new Date((user === null || user === void 0 ? void 0 : user.createdAt) * 1000).toUTCString()}
144
+ Account Updated: ${new Date((user === null || user === void 0 ? void 0 : user.updatedAt) * 1000).toUTCString()}
145
+
146
+ Statistics (Anime):
147
+ Count: ${(_g = (_f = user === null || user === void 0 ? void 0 : user.statistics) === null || _f === void 0 ? void 0 : _f.anime) === null || _g === void 0 ? void 0 : _g.count}
148
+ Mean Score: ${(_j = (_h = user === null || user === void 0 ? void 0 : user.statistics) === null || _h === void 0 ? void 0 : _h.anime) === null || _j === void 0 ? void 0 : _j.meanScore}
149
+ Minutes Watched: ${(_l = (_k = user === null || user === void 0 ? void 0 : user.statistics) === null || _k === void 0 ? void 0 : _k.anime) === null || _l === void 0 ? void 0 : _l.minutesWatched}
150
+
151
+ Statistics (Manga):
152
+ Count: ${(_o = (_m = user === null || user === void 0 ? void 0 : user.statistics) === null || _m === void 0 ? void 0 : _m.manga) === null || _o === void 0 ? void 0 : _o.count}
153
+ Chapters Read: ${(_q = (_p = user === null || user === void 0 ? void 0 : user.statistics) === null || _p === void 0 ? void 0 : _p.manga) === null || _q === void 0 ? void 0 : _q.chaptersRead}
154
+ Volumes Read: ${(_s = (_r = user === null || user === void 0 ? void 0 : user.statistics) === null || _r === void 0 ? void 0 : _r.manga) === null || _s === void 0 ? void 0 : _s.volumesRead}
155
155
  `);
156
156
  console.log(`\nRecent Activities:`);
157
157
  if (activities.length > 0) {
@@ -344,19 +344,8 @@ Statistics (Manga):
344
344
  if (yield Auth.isLoggedIn()) {
345
345
  const userID = yield Auth.MyUserId();
346
346
  if (userID) {
347
- const request = yield fetch(aniListEndpoint, {
348
- method: "POST",
349
- headers: {
350
- "content-type": "application/json",
351
- "Authorization": `Bearer ${yield Auth.RetriveAccessToken()}`,
352
- },
353
- body: JSON.stringify({
354
- query: currentUserAnimeList,
355
- variables: { id: userID },
356
- }),
357
- });
358
- const response = yield request.json();
359
- if (request.status === 200) {
347
+ const response = yield fetcher(currentUserAnimeList, { id: userID });
348
+ if (response !== null) {
360
349
  const lists = (_b = (_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.MediaListCollection) === null || _b === void 0 ? void 0 : _b.lists;
361
350
  if (lists.length > 0) {
362
351
  const { selectedList } = yield inquirer.prompt([
@@ -440,19 +429,8 @@ Statistics (Manga):
440
429
  if (yield Auth.isLoggedIn()) {
441
430
  const userID = yield Auth.MyUserId();
442
431
  if (userID) {
443
- const request = yield fetch(aniListEndpoint, {
444
- method: "POST",
445
- headers: {
446
- "content-type": "application/json",
447
- "Authorization": `Bearer ${yield Auth.RetriveAccessToken()}`,
448
- },
449
- body: JSON.stringify({
450
- query: currentUserMangaList,
451
- variables: { id: userID },
452
- }),
453
- });
454
- const response = yield request.json();
455
- if (request.status === 200) {
432
+ const response = yield fetcher(currentUserMangaList, { id: userID });
433
+ if (response === null || response === void 0 ? void 0 : response.data) {
456
434
  const lists = (_b = (_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.MediaListCollection) === null || _b === void 0 ? void 0 : _b.lists;
457
435
  if (lists.length > 0) {
458
436
  const { selectedList } = yield inquirer.prompt([
@@ -625,5 +603,215 @@ Statistics (Manga):
625
603
  }
626
604
  });
627
605
  }
606
+ static LikeFollowing() {
607
+ return __awaiter(this, void 0, void 0, function* () {
608
+ var _a, _b, _c, _d;
609
+ try {
610
+ let page = 1;
611
+ let hasMoreActivities = true;
612
+ let retryCount = 0;
613
+ const maxRetries = 5;
614
+ while (hasMoreActivities) {
615
+ const activities = yield fetcher(followingActivitiesQuery, {
616
+ page,
617
+ perPage: 50,
618
+ });
619
+ if (activities && ((_b = (_a = activities === null || activities === void 0 ? void 0 : activities.data) === null || _a === void 0 ? void 0 : _a.Page) === null || _b === void 0 ? void 0 : _b.activities.length) > 0) {
620
+ retryCount = 0; // Reset retry count on successful fetch
621
+ const activiti = (_d = (_c = activities === null || activities === void 0 ? void 0 : activities.data) === null || _c === void 0 ? void 0 : _c.Page) === null || _d === void 0 ? void 0 : _d.activities;
622
+ for (let activ of activiti) {
623
+ if (!activ.isLiked && activ.id) {
624
+ try {
625
+ const like = yield fetcher(likeActivityMutation, {
626
+ activityId: activ.id,
627
+ });
628
+ console.info(`[${activ.id}] liked ${activ.user.name}`);
629
+ }
630
+ catch (error) {
631
+ console.error(`Activity possibly deleted.`);
632
+ }
633
+ }
634
+ else {
635
+ console.log(`[${activ === null || activ === void 0 ? void 0 : activ.id}] ${activ.user.name} already-liked`);
636
+ }
637
+ // avoiding rate-limit
638
+ yield new Promise((resolve) => {
639
+ setTimeout(resolve, 2000);
640
+ });
641
+ }
642
+ page++;
643
+ }
644
+ else {
645
+ if (retryCount < maxRetries) {
646
+ retryCount++;
647
+ console.warn(`Empty activities returned. Retrying... (${retryCount}/${maxRetries})`);
648
+ yield new Promise((resolve) => setTimeout(resolve, 3000));
649
+ }
650
+ else {
651
+ console.log(`\nProbably the end of activities after ${maxRetries} retries.`);
652
+ console.info(activities);
653
+ hasMoreActivities = false;
654
+ }
655
+ }
656
+ }
657
+ }
658
+ catch (error) {
659
+ console.error(`\nError from likeFollowing. ${error.message}`);
660
+ }
661
+ });
662
+ }
663
+ static Like(type) {
664
+ return __awaiter(this, void 0, void 0, function* () {
665
+ var _a, _b, _c, _d;
666
+ try {
667
+ let page = 1;
668
+ let hasMoreActivities = true;
669
+ let activity = type === 0
670
+ ? followingActivitiesQuery
671
+ : type === 1
672
+ ? globalActivitiesQuery
673
+ : followingActivitiesQuery;
674
+ while (hasMoreActivities) {
675
+ const activities = yield fetcher(activity, {
676
+ page,
677
+ perPage: 50,
678
+ });
679
+ if (activities && ((_b = (_a = activities === null || activities === void 0 ? void 0 : activities.data) === null || _a === void 0 ? void 0 : _a.Page) === null || _b === void 0 ? void 0 : _b.activities.length) > 0) {
680
+ const activiti = (_d = (_c = activities === null || activities === void 0 ? void 0 : activities.data) === null || _c === void 0 ? void 0 : _c.Page) === null || _d === void 0 ? void 0 : _d.activities;
681
+ for (let activ of activiti) {
682
+ if (!activ.isLiked && activ.id) {
683
+ try {
684
+ const like = yield fetcher(likeActivityMutation, {
685
+ activityId: activ.id,
686
+ });
687
+ // const ToggleLike = like?.data?.ToggleLike
688
+ console.info(`[${activ.id}] liked ${activ.user.name}`);
689
+ }
690
+ catch (error) {
691
+ console.error(`Activity possibly deleted.`);
692
+ }
693
+ }
694
+ else {
695
+ console.log(`[${activ === null || activ === void 0 ? void 0 : activ.id}] ${activ.user.name} already-liked`);
696
+ }
697
+ // avoiding rate-limit
698
+ yield new Promise((resolve) => {
699
+ setTimeout(resolve, 2000);
700
+ });
701
+ }
702
+ page++;
703
+ }
704
+ else {
705
+ // No more activities to like
706
+ console.log(`\nProbably the end of activities.`);
707
+ console.info(activities);
708
+ hasMoreActivities = false;
709
+ }
710
+ }
711
+ }
712
+ catch (error) {
713
+ console.error(`\nError from likeFollowing. ${error.message}`);
714
+ }
715
+ });
716
+ }
717
+ static LikeSpecificUser() {
718
+ return __awaiter(this, void 0, void 0, function* () {
719
+ var _a, _b, _c, _d, _e, _f;
720
+ try {
721
+ const { username } = yield inquirer.prompt([
722
+ {
723
+ type: "input",
724
+ name: "username",
725
+ message: "Username of the user:",
726
+ },
727
+ ]);
728
+ const userDetails = yield fetcher(userQuery, { username: username });
729
+ if (userDetails) {
730
+ let page = 1;
731
+ const perPage = 50;
732
+ const userId = (_b = (_a = userDetails === null || userDetails === void 0 ? void 0 : userDetails.data) === null || _a === void 0 ? void 0 : _a.User) === null || _b === void 0 ? void 0 : _b.id;
733
+ if (userId) {
734
+ while (true) {
735
+ const activities = yield fetcher(specificUserActivitiesQuery, {
736
+ page,
737
+ perPage,
738
+ userId,
739
+ });
740
+ const activiti = (_d = (_c = activities === null || activities === void 0 ? void 0 : activities.data) === null || _c === void 0 ? void 0 : _c.Page) === null || _d === void 0 ? void 0 : _d.activities;
741
+ // Break the loop if no more activities are found
742
+ if (!activiti || activiti.length === 0) {
743
+ console.log("No more activities found.");
744
+ break;
745
+ }
746
+ for (let activ of activiti) {
747
+ if (!activ.isLiked && activ.id) {
748
+ try {
749
+ const like = yield fetcher(likeActivityMutation, {
750
+ activityId: activ.id,
751
+ });
752
+ console.info(`[${activ.id}] liked ${(_e = activ.user) === null || _e === void 0 ? void 0 : _e.name}`);
753
+ }
754
+ catch (error) {
755
+ console.error(`Activity possibly deleted.`);
756
+ }
757
+ }
758
+ else {
759
+ console.log(`[${activ === null || activ === void 0 ? void 0 : activ.id}] ${(_f = activ.user) === null || _f === void 0 ? void 0 : _f.name} already liked`);
760
+ }
761
+ // Avoiding rate limit
762
+ yield new Promise((resolve) => {
763
+ setTimeout(resolve, 2000);
764
+ });
765
+ }
766
+ // Go to the next page
767
+ page += 1;
768
+ }
769
+ }
770
+ }
771
+ }
772
+ catch (error) {
773
+ console.error(`\nError from LikeSpecificUser. ${error.message}`);
774
+ }
775
+ });
776
+ }
777
+ static AutoLike() {
778
+ return __awaiter(this, void 0, void 0, function* () {
779
+ try {
780
+ if (!(yield Auth.isLoggedIn())) {
781
+ console.error(`\nPlease login to use this feature.`);
782
+ return;
783
+ }
784
+ const { activityType } = yield inquirer.prompt([
785
+ {
786
+ type: "list",
787
+ name: "activityType",
788
+ message: "Select activity type:",
789
+ choices: [
790
+ { name: "Following", value: 1 },
791
+ { name: "Global", value: 2 },
792
+ { name: "Specific User", value: 3 },
793
+ ],
794
+ pageSize: 10,
795
+ },
796
+ ]);
797
+ switch (activityType) {
798
+ case 1:
799
+ yield this.LikeFollowing();
800
+ break;
801
+ case 2:
802
+ yield this.Like(1);
803
+ break;
804
+ case 3:
805
+ yield this.LikeSpecificUser();
806
+ break;
807
+ default:
808
+ console.error(`\nInvalid choice. (${activityType})`);
809
+ }
810
+ }
811
+ catch (error) {
812
+ console.error(`\nError from autolike. ${error.message}`);
813
+ }
814
+ });
815
+ }
628
816
  }
629
817
  export { Auth };
@@ -2,11 +2,12 @@
2
2
  * Sends a GraphQL request to the AniList API.
3
3
  *
4
4
  * This function constructs a request with the provided query and variables,
5
- * handles authorization, and processes the API response.
5
+ * handles authorization, and processes the API response. If a rate-limit error (429) is returned,
6
+ * it waits for 1 minute and retries the request.
6
7
  *
7
8
  * @param {string} query - The AniList GraphQL query to be executed.
8
9
  * @param {object} variables - An object containing the variables for the query.
9
10
  * @returns {Promise<object|null>} The response from the API as a JSON object if successful; otherwise, null.
10
11
  */
11
- declare function fetcher(query: string, variables: object): Promise<object | null>;
12
+ declare function fetcher(query: string, variables: object): Promise<any>;
12
13
  export { fetcher };
@@ -14,7 +14,8 @@ import { aniListEndpoint } from "./workers.js";
14
14
  * Sends a GraphQL request to the AniList API.
15
15
  *
16
16
  * This function constructs a request with the provided query and variables,
17
- * handles authorization, and processes the API response.
17
+ * handles authorization, and processes the API response. If a rate-limit error (429) is returned,
18
+ * it waits for 1 minute and retries the request.
18
19
  *
19
20
  * @param {string} query - The AniList GraphQL query to be executed.
20
21
  * @param {object} variables - An object containing the variables for the query.
@@ -22,7 +23,7 @@ import { aniListEndpoint } from "./workers.js";
22
23
  */
23
24
  function fetcher(query, variables) {
24
25
  return __awaiter(this, void 0, void 0, function* () {
25
- var _a;
26
+ var _a, _b;
26
27
  try {
27
28
  const headers = {
28
29
  "content-type": "application/json",
@@ -39,8 +40,13 @@ function fetcher(query, variables) {
39
40
  if (request.status === 200) {
40
41
  return response;
41
42
  }
43
+ else if (request.status === 429) {
44
+ console.warn("Rate limit reached. Retrying in 1 minute...");
45
+ yield new Promise((resolve) => setTimeout(resolve, 60000)); // Wait for 1 minute
46
+ return yield fetcher(query, variables); // Retry the request
47
+ }
42
48
  else {
43
- console.error(`\n${request.status} ${(_a = response === null || response === void 0 ? void 0 : response.errors[0]) === null || _a === void 0 ? void 0 : _a.message}.`);
49
+ console.error(`\n${request.status} ${((_b = (_a = response === null || response === void 0 ? void 0 : response.errors) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.message) || "Unknown error"}.`);
44
50
  return null;
45
51
  }
46
52
  }
@@ -5,7 +5,7 @@ declare class AniList {
5
5
  static exportManga(): Promise<void>;
6
6
  static MyAnime(): Promise<void>;
7
7
  static MyManga(): Promise<void>;
8
- static getTrendingAnime(count: number): Promise<void>;
8
+ static getTrendingAnime(count: number): Promise<any>;
9
9
  static getPopularAnime(count: number): Promise<void>;
10
10
  static getUpcomingAnime(count: number): Promise<void>;
11
11
  static getUserByUsername(username: string): Promise<void>;
@@ -45,7 +45,7 @@ class AniList {
45
45
  if (save) {
46
46
  const id = (_b = (_a = save === null || save === void 0 ? void 0 : save.data) === null || _a === void 0 ? void 0 : _a.SaveMediaListEntry) === null || _b === void 0 ? void 0 : _b.id;
47
47
  count++;
48
- console.log(`[${count}] ${anime === null || anime === void 0 ? void 0 : anime.id}-${id} ✅`);
48
+ console.log(`[${count}]\t${id}\t${anime === null || anime === void 0 ? void 0 : anime.id} ✅`);
49
49
  }
50
50
  else {
51
51
  console.error(`\nError saving ${anime === null || anime === void 0 ? void 0 : anime.id}`);
@@ -93,7 +93,7 @@ class AniList {
93
93
  if (save) {
94
94
  const id = (_b = (_a = save === null || save === void 0 ? void 0 : save.data) === null || _a === void 0 ? void 0 : _a.SaveMediaListEntry) === null || _b === void 0 ? void 0 : _b.id;
95
95
  count++;
96
- console.log(`[${count}] ${manga === null || manga === void 0 ? void 0 : manga.id}-${id} ✅`);
96
+ console.log(`[${count}]\t${id}\t${manga === null || manga === void 0 ? void 0 : manga.id} ✅`);
97
97
  }
98
98
  }
99
99
  catch (err) {
@@ -4,4 +4,5 @@ declare const deleteActivityMutation = "\nmutation($id: Int!) {\n DeleteActivit
4
4
  declare const saveTextActivityMutation = "\nmutation SaveTextActivity($status: String!) {\n SaveTextActivity(text: $status) { id text userId createdAt }\n}\n";
5
5
  declare const saveAnimeWithProgressMutation = "\nmutation ($mediaId: Int, $progress: Int, $status: MediaListStatus, $hiddenFromStatusLists: Boolean) {\n SaveMediaListEntry(mediaId: $mediaId, progress: $progress, status: $status, hiddenFromStatusLists: $hiddenFromStatusLists) {\n id progress hiddenFromStatusLists\n }\n}\n";
6
6
  declare const saveMangaWithProgressMutation = "\nmutation ($mediaId: Int, $progress: Int, $status: MediaListStatus, $hiddenFromStatusLists: Boolean, $private: Boolean) {\n SaveMediaListEntry( mediaId: $mediaId, progress: $progress, status: $status, hiddenFromStatusLists: $hiddenFromStatusLists, private: $private\n ) { id progress hiddenFromStatusLists private }\n}\n";
7
- export { addAnimeToListMutation, addMangaToListMutation, deleteActivityMutation, saveAnimeWithProgressMutation, saveMangaWithProgressMutation, saveTextActivityMutation, };
7
+ declare const likeActivityMutation = "\nmutation($activityId: Int!) {\n ToggleLike(id: $activityId, type: ACTIVITY) { id }\n}\n";
8
+ export { addAnimeToListMutation, addMangaToListMutation, deleteActivityMutation, likeActivityMutation, saveAnimeWithProgressMutation, saveMangaWithProgressMutation, saveTextActivityMutation, };
@@ -1,38 +1,43 @@
1
- const addAnimeToListMutation = `
2
- mutation($mediaId: Int, $status: MediaListStatus) {
3
- SaveMediaListEntry(mediaId: $mediaId, status: $status) { id status }
4
- }
1
+ const addAnimeToListMutation = `
2
+ mutation($mediaId: Int, $status: MediaListStatus) {
3
+ SaveMediaListEntry(mediaId: $mediaId, status: $status) { id status }
4
+ }
5
5
  `;
6
- const addMangaToListMutation = `
7
- mutation($mediaId: Int, $status: MediaListStatus) {
8
- SaveMediaListEntry(mediaId: $mediaId, status: $status) {
9
- id
10
- status
11
- media { id title { romaji english } }
12
- }
13
- }
6
+ const addMangaToListMutation = `
7
+ mutation($mediaId: Int, $status: MediaListStatus) {
8
+ SaveMediaListEntry(mediaId: $mediaId, status: $status) {
9
+ id
10
+ status
11
+ media { id title { romaji english } }
12
+ }
13
+ }
14
14
  `;
15
- const deleteActivityMutation = `
16
- mutation($id: Int!) {
17
- DeleteActivity(id: $id) { deleted }
18
- }
15
+ const deleteActivityMutation = `
16
+ mutation($id: Int!) {
17
+ DeleteActivity(id: $id) { deleted }
18
+ }
19
19
  `;
20
- const saveTextActivityMutation = `
21
- mutation SaveTextActivity($status: String!) {
22
- SaveTextActivity(text: $status) { id text userId createdAt }
23
- }
20
+ const saveTextActivityMutation = `
21
+ mutation SaveTextActivity($status: String!) {
22
+ SaveTextActivity(text: $status) { id text userId createdAt }
23
+ }
24
24
  `;
25
- const saveAnimeWithProgressMutation = `
26
- mutation ($mediaId: Int, $progress: Int, $status: MediaListStatus, $hiddenFromStatusLists: Boolean) {
27
- SaveMediaListEntry(mediaId: $mediaId, progress: $progress, status: $status, hiddenFromStatusLists: $hiddenFromStatusLists) {
28
- id progress hiddenFromStatusLists
29
- }
30
- }
25
+ const saveAnimeWithProgressMutation = `
26
+ mutation ($mediaId: Int, $progress: Int, $status: MediaListStatus, $hiddenFromStatusLists: Boolean) {
27
+ SaveMediaListEntry(mediaId: $mediaId, progress: $progress, status: $status, hiddenFromStatusLists: $hiddenFromStatusLists) {
28
+ id progress hiddenFromStatusLists
29
+ }
30
+ }
31
31
  `;
32
- const saveMangaWithProgressMutation = `
33
- mutation ($mediaId: Int, $progress: Int, $status: MediaListStatus, $hiddenFromStatusLists: Boolean, $private: Boolean) {
34
- SaveMediaListEntry( mediaId: $mediaId, progress: $progress, status: $status, hiddenFromStatusLists: $hiddenFromStatusLists, private: $private
35
- ) { id progress hiddenFromStatusLists private }
36
- }
32
+ const saveMangaWithProgressMutation = `
33
+ mutation ($mediaId: Int, $progress: Int, $status: MediaListStatus, $hiddenFromStatusLists: Boolean, $private: Boolean) {
34
+ SaveMediaListEntry( mediaId: $mediaId, progress: $progress, status: $status, hiddenFromStatusLists: $hiddenFromStatusLists, private: $private
35
+ ) { id progress hiddenFromStatusLists private }
36
+ }
37
37
  `;
38
- export { addAnimeToListMutation, addMangaToListMutation, deleteActivityMutation, saveAnimeWithProgressMutation, saveMangaWithProgressMutation, saveTextActivityMutation, };
38
+ const likeActivityMutation = `
39
+ mutation($activityId: Int!) {
40
+ ToggleLike(id: $activityId, type: ACTIVITY) { id }
41
+ }
42
+ `;
43
+ export { addAnimeToListMutation, addMangaToListMutation, deleteActivityMutation, likeActivityMutation, saveAnimeWithProgressMutation, saveMangaWithProgressMutation, saveTextActivityMutation, };
@@ -17,6 +17,9 @@ declare const activityMangaListQuery = "query ($userId: Int, $page: Int, $perPag
17
17
  declare const activityMessageQuery = "query ($userId: Int, $page: Int, $perPage: Int) {\n Page(page: $page, perPage: $perPage) {\n activities(userId: $userId, type: MESSAGE, sort: ID_DESC) {\n ... on MessageActivity { id type message recipient { id name } createdAt }\n }\n }\n}";
18
18
  declare const activityAllQuery = "query ($userId: Int, $page: Int, $perPage: Int) {\n Page(page: $page, perPage: $perPage) {\n activities(userId: $userId, sort: ID_DESC) {\n ... on TextActivity { id type text createdAt user { id name } }\n ... on ListActivity { id type status progress createdAt media { id title { romaji english native } } }\n ... on MessageActivity { id type message recipient { id name } createdAt }\n }\n }\n}";
19
19
  declare const activityMediaList = "query ($userId: Int, $page: Int, $perPage: Int, $type: ActivityType) {\n Page(page: $page, perPage: $perPage) {\n pageInfo { total currentPage lastPage hasNextPage perPage }\n activities(userId: $userId, type: $type, sort: ID_DESC) {\n ... on ListActivity { id type status progress media { id title { romaji english native } format } createdAt }\n }\n }\n}";
20
- declare const malIdToAnilistAnimeId = "query ($malId: Int) {\n Media(idMal: $malId, type: ANIME) {\n id title { romaji english } } \n}\n";
21
- declare const malIdToAnilistMangaId = "query ($malId: Int) {\n Media(idMal: $malId, type: MANGA) {\n id title { romaji english } } \n}\n";
22
- export { activityAllQuery, activityAnimeListQuery, activityMangaListQuery, activityMediaList, activityMessageQuery, activityTextQuery, animeDetailsQuery, animeSearchQuery, currentUserAnimeList, currentUserMangaList, currentUserQuery, deleteMangaEntryMutation, deleteMediaEntryMutation, malIdToAnilistAnimeId, malIdToAnilistMangaId, mangaSearchQuery, popularQuery, trendingQuery, upcomingAnimesQuery, userActivityQuery, userQuery, };
20
+ declare const malIdToAnilistAnimeId = "query ($malId: Int) {\n Media(idMal: $malId, type: ANIME) { id title { romaji english } } }\n";
21
+ declare const malIdToAnilistMangaId = "query ($malId: Int) {\n Media(idMal: $malId, type: MANGA) { id title { romaji english } } }\n";
22
+ declare const followingActivitiesQuery = "\nquery ($page: Int, $perPage: Int) {\n Page(page: $page, perPage: $perPage) {\n activities(isFollowing: true, sort: ID_DESC) {\n ... on TextActivity { id type isLiked createdAt user { id name } }\n ... on ListActivity { id type isLiked status progress media { title { userPreferred } } createdAt user { id name } }\n ... on MessageActivity { id type isLiked message createdAt recipient { id name } }\n }\n }\n}\n";
23
+ declare const globalActivitiesQuery = "\nquery ($page: Int, $perPage: Int) {\n Page(page: $page, perPage: $perPage) {\n activities(sort: ID_DESC) {\n ... on TextActivity { id type isLiked createdAt user { id name } }\n ... on ListActivity { id type isLiked status progress media { title { userPreferred } } createdAt user { id name } }\n ... on MessageActivity { id type isLiked message createdAt recipient { id name } }\n }\n }\n}\n";
24
+ declare const specificUserActivitiesQuery = "\nquery ($page: Int, $perPage: Int, $userId: Int) {\n Page(page: $page, perPage: $perPage) {\n activities(userId: $userId, sort: ID_DESC) {\n ... on TextActivity { id type isLiked createdAt user { id name } }\n ... on ListActivity { id type isLiked status progress media { title { userPreferred } } createdAt user { id name } }\n ... on MessageActivity { id type isLiked message createdAt recipient { id name } }\n }\n }\n}\n";
25
+ export { activityAllQuery, activityAnimeListQuery, activityMangaListQuery, activityMediaList, activityMessageQuery, activityTextQuery, animeDetailsQuery, animeSearchQuery, currentUserAnimeList, currentUserMangaList, currentUserQuery, deleteMangaEntryMutation, deleteMediaEntryMutation, followingActivitiesQuery, globalActivitiesQuery, malIdToAnilistAnimeId, malIdToAnilistMangaId, mangaSearchQuery, popularQuery, specificUserActivitiesQuery, trendingQuery, upcomingAnimesQuery, userActivityQuery, userQuery, };