anilink-api-wrapper 1.25.0 → 1.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -126,6 +126,9 @@ List of methods in `anilist.mutation`:
126
126
  - deleteActivityReply
127
127
  - toggleLike
128
128
  - toggleLikeV2
129
+ - toggleFollow
130
+ - toggleFavourite
131
+ - updateFavouriteOrder
129
132
 
130
133
  ### Error Handling
131
134
 
package/dist/AniLink.js CHANGED
@@ -59,6 +59,9 @@ const SaveActivityReply_1 = require("./apis/anilist/mutation/SaveActivityReply")
59
59
  const DeleteActivityReply_1 = require("./apis/anilist/mutation/DeleteActivityReply");
60
60
  const ToggleLike_1 = require("./apis/anilist/mutation/ToggleLike");
61
61
  const ToggleLikeV2_1 = require("./apis/anilist/mutation/ToggleLikeV2");
62
+ const ToggleFollow_1 = require("./apis/anilist/mutation/ToggleFollow");
63
+ const ToggleFavourite_1 = require("./apis/anilist/mutation/ToggleFavourite");
64
+ const UpdateFavouriteOrder_1 = require("./apis/anilist/mutation/UpdateFavouriteOrder");
62
65
  /**
63
66
  * `AniLink` is a class for interacting with the APIs.
64
67
  * It provides methods for querying and mutating data.
@@ -134,6 +137,9 @@ class AniLink {
134
137
  const deleteActivityReplyMutationInstance = new DeleteActivityReply_1.DeleteActivityReplyMutation(authToken);
135
138
  const toggleLikeMutationInstance = new ToggleLike_1.ToggleLikeMutation(authToken);
136
139
  const toggleLikeV2MutationInstance = new ToggleLikeV2_1.ToggleLikeV2Mutation(authToken);
140
+ const toggleFollowMutationInstance = new ToggleFollow_1.ToggleFollowMutation(authToken);
141
+ const toggleFavouriteMutationInstance = new ToggleFavourite_1.ToggleFavouriteMutation(authToken);
142
+ const updateFavouriteOrderMutationInstance = new UpdateFavouriteOrder_1.UpdateFavouriteOrderMutation(authToken);
137
143
  this.anilist = {
138
144
  query: {
139
145
  user: userQueryInstance.user.bind(userQueryInstance),
@@ -197,7 +203,10 @@ class AniLink {
197
203
  saveActivityReply: saveActivityReplyMutationInstance.saveActivityReply.bind(saveActivityReplyMutationInstance),
198
204
  deleteActivityReply: deleteActivityReplyMutationInstance.deleteActivityReply.bind(deleteActivityReplyMutationInstance),
199
205
  toggleLike: toggleLikeMutationInstance.toggleLike.bind(toggleLikeMutationInstance),
200
- toggleLikeV2: toggleLikeV2MutationInstance.toggleLikeV2.bind(toggleLikeV2MutationInstance)
206
+ toggleLikeV2: toggleLikeV2MutationInstance.toggleLikeV2.bind(toggleLikeV2MutationInstance),
207
+ toggleFollow: toggleFollowMutationInstance.toggleFollow.bind(toggleFollowMutationInstance),
208
+ toggleFavourite: toggleFavouriteMutationInstance.toggleFavourite.bind(toggleFavouriteMutationInstance),
209
+ updateFavouriteOrder: updateFavouriteOrderMutationInstance.updateFavouriteOrder.bind(updateFavouriteOrderMutationInstance)
201
210
  }
202
211
  };
203
212
  }
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FavouritesSchema = void 0;
4
+ const Title_1 = require("../../Title");
5
+ /**
6
+ * `FavouritesSchema` is a constant representing the GraphQL schema for a favourites query.
7
+ * It includes the anime, manga, characters, staff, and studios schema.
8
+ */
9
+ exports.FavouritesSchema = `
10
+ anime {
11
+ edges {
12
+ id
13
+ node {
14
+ id
15
+ ${Title_1.TitleSchema}
16
+ }
17
+ }
18
+ nodes {
19
+ id
20
+ ${Title_1.TitleSchema}
21
+ }
22
+ }
23
+ manga {
24
+ edges {
25
+ id
26
+ node {
27
+ id
28
+ ${Title_1.TitleSchema}
29
+ }
30
+ }
31
+ nodes {
32
+ id
33
+ ${Title_1.TitleSchema}
34
+ }
35
+ }
36
+ characters {
37
+ edges {
38
+ id
39
+ node {
40
+ id
41
+ name {
42
+ full
43
+ }
44
+ }
45
+ }
46
+ nodes {
47
+ id
48
+ name {
49
+ full
50
+ }
51
+ }
52
+ }
53
+ staff {
54
+ edges {
55
+ id
56
+ node {
57
+ id
58
+ name {
59
+ full
60
+ }
61
+ }
62
+ }
63
+ nodes {
64
+ id
65
+ name {
66
+ full
67
+ }
68
+ }
69
+ }
70
+ studios {
71
+ edges {
72
+ id
73
+ node {
74
+ id
75
+ name
76
+ }
77
+ }
78
+ nodes {
79
+ id
80
+ name
81
+ }
82
+ }
83
+ `;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ToggleFavouriteMutation = void 0;
13
+ const ValidateVariables_1 = require("../../../base/ValidateVariables");
14
+ const RequestHandler_1 = require("../../../base/RequestHandler");
15
+ const APIWrapper_1 = require("../../../base/APIWrapper");
16
+ const Favourites_1 = require("../interfaces/responses/mutation/Favourites");
17
+ /**
18
+ * `ToggleFavouriteMutation` is a class that contains the method to toggle a favourite.
19
+ * It includes a method to toggle a favourite.
20
+ */
21
+ class ToggleFavouriteMutation extends APIWrapper_1.APIWrapper {
22
+ /**
23
+ * Constructs a new `ToggleFavouriteMutation` instance.
24
+ *
25
+ * @param authToken - The authentication token.
26
+ */
27
+ constructor(authToken) {
28
+ super('https://graphql.anilist.co');
29
+ this.authToken = authToken;
30
+ }
31
+ /**
32
+ * `toggleFavourite` is a method that sends a mutation request to toggle a favourite.
33
+ *
34
+ * @param variables - An object of type `ToggleFavouriteVariables` representing the variables for the mutation.
35
+ * @returns A Promise that resolves to the response from the mutation request.
36
+ * @throws Will throw an error if the mutation request fails or if the provided variables do not pass the validation checks.
37
+ */
38
+ toggleFavourite(variables) {
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ if (!this.authToken) {
41
+ throw new Error('ToggleFavouriteMutation requires an authentication token. Create a new instance of AniLink and pass the token as an argument.');
42
+ }
43
+ if (!variables.animeId && !variables.mangaId && !variables.characterId && !variables.staffId && !variables.studioId) {
44
+ throw new Error('animeId, mangaId, characterId, staffId, or studioId variable is required');
45
+ }
46
+ const variableTypeMappings = {
47
+ animeId: 'number',
48
+ mangaId: 'number',
49
+ characterId: 'number',
50
+ staffId: 'number',
51
+ studioId: 'number'
52
+ };
53
+ (0, ValidateVariables_1.validateVariables)(variables, variableTypeMappings);
54
+ const mutation = `
55
+ mutation ($animeId: Int, $mangaId: Int, $characterId: Int, $staffId: Int, $studioId: Int) {
56
+ ToggleFavourite (animeId: $animeId, mangaId: $mangaId, characterId: $characterId, staffId: $staffId, studioId: $studioId) {
57
+ ${Favourites_1.FavouritesSchema}
58
+ }
59
+ }
60
+ `;
61
+ const data = { query: mutation, variables };
62
+ return yield (0, RequestHandler_1.sendRequest)(this.baseURL, 'POST', data, this.authToken);
63
+ });
64
+ }
65
+ }
66
+ exports.ToggleFavouriteMutation = ToggleFavouriteMutation;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ToggleFollowMutation = void 0;
13
+ const APIWrapper_1 = require("../../../base/APIWrapper");
14
+ const RequestHandler_1 = require("../../../base/RequestHandler");
15
+ const ValidateVariables_1 = require("../../../base/ValidateVariables");
16
+ const Basic_1 = require("../interfaces/Basic");
17
+ /**
18
+ * `ToggleFollowMutation` is a class representing a mutation to toggle a follow.
19
+ * It includes a method to toggle a follow.
20
+ */
21
+ class ToggleFollowMutation extends APIWrapper_1.APIWrapper {
22
+ /**
23
+ * Constructs a new `ToggleFollowMutation` instance.
24
+ *
25
+ * @param authToken - The authentication token.
26
+ */
27
+ constructor(authToken) {
28
+ super('https://graphql.anilist.co');
29
+ this.authToken = authToken;
30
+ }
31
+ /**
32
+ * `ToggleFollow` is a method that sends a mutation request to toggle a follow.
33
+ *
34
+ * @param variables - An object of type `ToggleFollowVariables` representing the variables for the mutation.
35
+ * @returns A Promise that resolves to the response from the mutation request.
36
+ * @throws Will throw an error if the mutation request fails or if the provided variables do not pass the validation checks.
37
+ * */
38
+ toggleFollow(variables) {
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ if (!this.authToken) {
41
+ throw new Error('ToggleFollowMutation requires an authentication token. Create a new instance of AniLink and pass the token as an argument.');
42
+ }
43
+ if (!variables.userId) {
44
+ throw new Error('userId variable is required');
45
+ }
46
+ const variableTypeMappings = {
47
+ userId: 'number'
48
+ };
49
+ (0, ValidateVariables_1.validateVariables)(variables, variableTypeMappings);
50
+ const mutation = `
51
+ mutation ($userId: Int) {
52
+ ToggleFollow (userId: $userId) {
53
+ ${Basic_1.BasicUserSchema}
54
+ }
55
+ }
56
+ `;
57
+ const data = { query: mutation, variables };
58
+ return yield (0, RequestHandler_1.sendRequest)(this.baseURL, 'POST', data, this.authToken);
59
+ });
60
+ }
61
+ }
62
+ exports.ToggleFollowMutation = ToggleFollowMutation;
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.UpdateFavouriteOrderMutation = void 0;
13
+ /**
14
+ * `UpdateFavouriteOrderVariables` is an interface that contains the variables that are required to update the order of the favourite anime/manga.
15
+ */
16
+ const RequestHandler_1 = require("../../../base/RequestHandler");
17
+ const APIWrapper_1 = require("../../../base/APIWrapper");
18
+ const Favourites_1 = require("../interfaces/responses/mutation/Favourites");
19
+ const ValidateVariables_1 = require("../../../base/ValidateVariables");
20
+ /**
21
+ * `UpdateFavouriteOrderMutation` is a class that contains the method to update the order of the favourites.
22
+ * It includes a method to update the order of the favourites.
23
+ */
24
+ class UpdateFavouriteOrderMutation extends APIWrapper_1.APIWrapper {
25
+ /**
26
+ * Constructs a new `UpdateFavouriteOrderMutation` instance.
27
+ *
28
+ * @param authToken - The authentication token.
29
+ */
30
+ constructor(authToken) {
31
+ super('https://graphql.anilist.co');
32
+ this.authToken = authToken;
33
+ }
34
+ /**
35
+ * `updateFavouriteOrder` is a method that sends a mutation request to update the order of the favourites.
36
+ *
37
+ * @param variables - An object of type `UpdateFavouriteOrderVariables` representing the variables for the mutation.
38
+ * @returns A Promise that resolves to the response from the mutation request.
39
+ */
40
+ updateFavouriteOrder(variables) {
41
+ return __awaiter(this, void 0, void 0, function* () {
42
+ if (!this.authToken) {
43
+ throw new Error('ToggleFavouriteMutation requires an authentication token. Create a new instance of AniLink and pass the token as an argument.');
44
+ }
45
+ if ((!variables.animeIds && variables.animeOrder) || (!variables.mangaIds && variables.mangaOrder) || (!variables.characterIds && variables.characterOrder) || (!variables.staffIds && variables.staffOrder) || (!variables.studioIds && variables.studioOrder)) {
46
+ throw new Error('The order array requires the corresponding id array to be present.');
47
+ }
48
+ const variableTypeMappings = {
49
+ animeIds: 'number[]',
50
+ mangaIds: 'number[]',
51
+ characterIds: 'number[]',
52
+ staffIds: 'number[]',
53
+ studioIds: 'number[]',
54
+ animeOrder: 'number[]',
55
+ mangaOrder: 'number[]',
56
+ characterOrder: 'number[]',
57
+ staffOrder: 'number[]',
58
+ studioOrder: 'number[]'
59
+ };
60
+ (0, ValidateVariables_1.validateVariables)(variables, variableTypeMappings);
61
+ const mutation = `
62
+ mutation ($animeIds: [Int], $mangaIds: [Int], $characterIds: [Int], $staffIds: [Int], $studioIds: [Int], $animeOrder: [Int], $mangaOrder: [Int], $characterOrder: [Int], $staffOrder: [Int], $studioOrder: [Int]) {
63
+ UpdateFavouriteOrder (animeIds: $animeIds, mangaIds: $mangaIds, characterIds: $characterIds, staffIds: $staffIds, studioIds: $studioIds, animeOrder: $animeOrder, mangaOrder: $mangaOrder, characterOrder: $characterOrder, staffOrder: $staffOrder, studioOrder: $studioOrder) {
64
+ ${Favourites_1.FavouritesSchema}
65
+ }
66
+ }
67
+ `;
68
+ const data = { query: mutation, variables };
69
+ return yield (0, RequestHandler_1.sendRequest)(this.baseURL, 'POST', data, this.authToken);
70
+ });
71
+ }
72
+ }
73
+ exports.UpdateFavouriteOrderMutation = UpdateFavouriteOrderMutation;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "anilink-api-wrapper",
3
- "version": "1.25.0",
3
+ "version": "1.26.0",
4
4
  "description": "API wrapper for AniManga sites such as Anilist, MyAnimeList, Kitsu.",
5
5
  "main": "dist/AniLink.js",
6
6
  "scripts": {