anilink-api-wrapper 1.26.0 → 1.27.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
@@ -129,6 +129,9 @@ List of methods in `anilist.mutation`:
129
129
  - toggleFollow
130
130
  - toggleFavourite
131
131
  - updateFavouriteOrder
132
+ - saveReview
133
+ - deleteReview
134
+ - saveRecommendation
132
135
 
133
136
  ### Error Handling
134
137
 
package/dist/AniLink.js CHANGED
@@ -62,6 +62,9 @@ const ToggleLikeV2_1 = require("./apis/anilist/mutation/ToggleLikeV2");
62
62
  const ToggleFollow_1 = require("./apis/anilist/mutation/ToggleFollow");
63
63
  const ToggleFavourite_1 = require("./apis/anilist/mutation/ToggleFavourite");
64
64
  const UpdateFavouriteOrder_1 = require("./apis/anilist/mutation/UpdateFavouriteOrder");
65
+ const SaveReview_1 = require("./apis/anilist/mutation/SaveReview");
66
+ const DeleteReview_1 = require("./apis/anilist/mutation/DeleteReview");
67
+ const SaveRecommendation_1 = require("./apis/anilist/mutation/SaveRecommendation");
65
68
  /**
66
69
  * `AniLink` is a class for interacting with the APIs.
67
70
  * It provides methods for querying and mutating data.
@@ -140,6 +143,9 @@ class AniLink {
140
143
  const toggleFollowMutationInstance = new ToggleFollow_1.ToggleFollowMutation(authToken);
141
144
  const toggleFavouriteMutationInstance = new ToggleFavourite_1.ToggleFavouriteMutation(authToken);
142
145
  const updateFavouriteOrderMutationInstance = new UpdateFavouriteOrder_1.UpdateFavouriteOrderMutation(authToken);
146
+ const saveReviewMutationInstance = new SaveReview_1.SaveReviewMutation(authToken);
147
+ const deleteReviewMutationInstance = new DeleteReview_1.DeleteReviewMutation(authToken);
148
+ const saveRecommendationMutationInstance = new SaveRecommendation_1.SaveRecommendationMutation(authToken);
143
149
  this.anilist = {
144
150
  query: {
145
151
  user: userQueryInstance.user.bind(userQueryInstance),
@@ -206,7 +212,10 @@ class AniLink {
206
212
  toggleLikeV2: toggleLikeV2MutationInstance.toggleLikeV2.bind(toggleLikeV2MutationInstance),
207
213
  toggleFollow: toggleFollowMutationInstance.toggleFollow.bind(toggleFollowMutationInstance),
208
214
  toggleFavourite: toggleFavouriteMutationInstance.toggleFavourite.bind(toggleFavouriteMutationInstance),
209
- updateFavouriteOrder: updateFavouriteOrderMutationInstance.updateFavouriteOrder.bind(updateFavouriteOrderMutationInstance)
215
+ updateFavouriteOrder: updateFavouriteOrderMutationInstance.updateFavouriteOrder.bind(updateFavouriteOrderMutationInstance),
216
+ saveReview: saveReviewMutationInstance.saveReview.bind(saveReviewMutationInstance),
217
+ deleteReview: deleteReviewMutationInstance.deleteReview.bind(deleteReviewMutationInstance),
218
+ saveRecommendation: saveRecommendationMutationInstance.saveRecommendation.bind(saveRecommendationMutationInstance)
210
219
  }
211
220
  };
212
221
  }
@@ -0,0 +1,61 @@
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.DeleteReviewMutation = void 0;
13
+ const RequestHandler_1 = require("../../../base/RequestHandler");
14
+ const ValidateVariables_1 = require("../../../base/ValidateVariables");
15
+ const APIWrapper_1 = require("../../../base/APIWrapper");
16
+ /**
17
+ * `DeleteReviewMutation` is a class representing a mutation to delete a review.
18
+ * It includes a method to delete a review.
19
+ */
20
+ class DeleteReviewMutation extends APIWrapper_1.APIWrapper {
21
+ /**
22
+ * Constructs a new `DeleteReviewMutation` instance.
23
+ *
24
+ * @param authToken - The authentication token.
25
+ */
26
+ constructor(authToken) {
27
+ super('https://graphql.anilist.co');
28
+ this.authToken = authToken;
29
+ }
30
+ /**
31
+ * `deleteReview` is a method that sends a mutation request to delete a review.
32
+ *
33
+ * @param variables - An object of type `DeleteReviewVariables` representing the variables for the mutation.
34
+ * @returns A Promise that resolves to the response from the mutation request.
35
+ * @throws Will throw an error if the mutation request fails or if the provided variables do not pass the validation checks.
36
+ */
37
+ deleteReview(variables) {
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ if (!this.authToken) {
40
+ throw new Error('DeleteReviewMutation requires an authentication token. Create a new instance of AniLink and pass the token as an argument.');
41
+ }
42
+ if (!variables.id) {
43
+ throw new Error('id variable is required');
44
+ }
45
+ const variableTypeMappings = {
46
+ id: 'number'
47
+ };
48
+ (0, ValidateVariables_1.validateVariables)(variables, variableTypeMappings);
49
+ const mutation = `
50
+ mutation ($id: Int) {
51
+ DeleteReview(id: $id) {
52
+ deleted
53
+ }
54
+ }
55
+ `;
56
+ const data = { query: mutation, variables };
57
+ return yield (0, RequestHandler_1.sendRequest)(this.baseURL, 'POST', data, this.authToken);
58
+ });
59
+ }
60
+ }
61
+ exports.DeleteReviewMutation = DeleteReviewMutation;
@@ -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.SaveRecommendationMutation = void 0;
13
+ const RequestHandler_1 = require("../../../base/RequestHandler");
14
+ const Recommendation_1 = require("../interfaces/responses/query/Recommendation");
15
+ const APIWrapper_1 = require("../../../base/APIWrapper");
16
+ const RecommendationRating_1 = require("../types/RecommendationRating");
17
+ const ValidateVariables_1 = require("../../../base/ValidateVariables");
18
+ /**
19
+ * `SaveRecommendationMutation` is a class representing a mutation to save a recommendation.
20
+ * It includes a method to save a recommendation.
21
+ */
22
+ class SaveRecommendationMutation extends APIWrapper_1.APIWrapper {
23
+ /**
24
+ * Constructs a new `SaveRecommendationMutation` instance.
25
+ *
26
+ * @param authToken - The authentication token.
27
+ */
28
+ constructor(authToken) {
29
+ super('https://graphql.anilist.co');
30
+ this.authToken = authToken;
31
+ }
32
+ /**
33
+ * `saveReview` is a method that sends a mutation request to save a recommendation.
34
+ *
35
+ * @param variables - An object of type `SaveRecommendationVariables` representing the variables for the mutation.
36
+ * @returns A Promise that resolves to the response from the mutation request.
37
+ * @throws Will throw an error if the mutation request fails or if the provided variables do not pass the validation checks.
38
+ */
39
+ saveRecommendation(variables) {
40
+ return __awaiter(this, void 0, void 0, function* () {
41
+ if (!this.authToken) {
42
+ throw new Error('SaveReviewMutation requires an authentication token. Create a new instance of AniLink and pass the token as an argument.');
43
+ }
44
+ if (!variables.mediaId || !variables.mediaRecommendationId || !variables.rating) {
45
+ throw new Error('mediaId, mediaRecommendationId, and rating variables are required.');
46
+ }
47
+ const variableTypeMappings = {
48
+ mediaId: 'number',
49
+ mediaRecommendationId: 'number',
50
+ rating: RecommendationRating_1.RecommendationRatingMappings,
51
+ asHtml: 'boolean'
52
+ };
53
+ (0, ValidateVariables_1.validateVariables)(variables, variableTypeMappings);
54
+ const mutation = `
55
+ mutation ($mediaId: Int, $mediaRecommendationId: Int, $rating: RecommendationRating, $asHtml: Boolean) {
56
+ SaveRecommendation(mediaId: $mediaId, mediaRecommendationId: $mediaRecommendationId, rating: $rating) {
57
+ ${Recommendation_1.RecommendationSchema}
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.SaveRecommendationMutation = SaveRecommendationMutation;
@@ -0,0 +1,68 @@
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.SaveReviewMutation = void 0;
13
+ const RequestHandler_1 = require("../../../base/RequestHandler");
14
+ const ValidateVariables_1 = require("../../../base/ValidateVariables");
15
+ const APIWrapper_1 = require("../../../base/APIWrapper");
16
+ const Review_1 = require("../interfaces/responses/query/Review");
17
+ /**
18
+ * `SaveReviewMutation` is a class representing a mutation to save a review.
19
+ * It includes a method to save a review.
20
+ */
21
+ class SaveReviewMutation extends APIWrapper_1.APIWrapper {
22
+ /**
23
+ * Constructs a new `SaveReviewMutation` 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
+ * `saveReview` is a method that sends a mutation request to save a review.
33
+ *
34
+ * @param variables - An object of type `SaveReviewVariables` 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
+ saveReview(variables) {
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ if (!this.authToken) {
41
+ throw new Error('SaveReviewMutation requires an authentication token. Create a new instance of AniLink and pass the token as an argument.');
42
+ }
43
+ if (!variables.id && !variables.mediaId) {
44
+ throw new Error('id or mediaId variable is required');
45
+ }
46
+ const variableTypeMappings = {
47
+ id: 'number',
48
+ mediaId: 'number',
49
+ body: 'string',
50
+ summary: 'string',
51
+ score: 'number',
52
+ private: 'boolean',
53
+ asHtml: 'boolean'
54
+ };
55
+ (0, ValidateVariables_1.validateVariables)(variables, variableTypeMappings);
56
+ const mutation = `
57
+ mutation ($id: Int, $mediaId: Int, $body: String, $summary: String, $score: Int, $private: Boolean, $asHtml: Boolean) {
58
+ SaveReview(id: $id, mediaId: $mediaId, body: $body, summary: $summary, score: $score, private: $private) {
59
+ ${Review_1.ReviewSchema}
60
+ }
61
+ }
62
+ `;
63
+ const data = { query: mutation, variables };
64
+ return yield (0, RequestHandler_1.sendRequest)(this.baseURL, 'POST', data, this.authToken);
65
+ });
66
+ }
67
+ }
68
+ exports.SaveReviewMutation = SaveReviewMutation;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RecommendationRatingMappings = void 0;
4
+ /**
5
+ * `RecommendationRatingMappings` is a mapping of `RecommendationRating` enum values to their corresponding string values.
6
+ * It can be one of the following: 'NO_RATING', 'RATE_UP', 'RATE_DOWN'.
7
+ */
8
+ exports.RecommendationRatingMappings = [
9
+ 'NO_RATING',
10
+ 'RATE_UP',
11
+ 'RATE_DOWN'
12
+ ];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "anilink-api-wrapper",
3
- "version": "1.26.0",
3
+ "version": "1.27.0",
4
4
  "description": "API wrapper for AniManga sites such as Anilist, MyAnimeList, Kitsu.",
5
5
  "main": "dist/AniLink.js",
6
6
  "scripts": {