e621 2.0.0-dev.9 → 2.0.3
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/.node-version +1 -0
- package/README.md +66 -47
- package/build/package.json +1 -1
- package/build/src/index.d.ts +10 -1
- package/build/src/index.js +18 -2
- package/build/src/modules/Artists.d.ts +106 -0
- package/build/src/modules/Artists.js +240 -0
- package/build/src/modules/Pools.d.ts +4 -4
- package/build/src/modules/Pools.js +9 -7
- package/build/src/modules/PostSets.d.ts +2 -2
- package/build/src/modules/PostSets.js +4 -4
- package/build/src/modules/Posts.d.ts +38 -2
- package/build/src/modules/Posts.js +85 -3
- package/build/src/modules/UserFeedback.d.ts +1 -0
- package/build/src/modules/UserFeedback.js +3 -2
- package/build/src/modules/Users.d.ts +2 -1
- package/build/src/modules/Users.js +4 -3
- package/build/src/modules/WikiPages.d.ts +99 -0
- package/build/src/modules/WikiPages.js +210 -0
- package/build/src/structures/Artist.d.ts +36 -0
- package/build/src/structures/Artist.js +51 -0
- package/build/src/structures/ArtistHistory.d.ts +39 -0
- package/build/src/structures/ArtistHistory.js +50 -0
- package/build/src/structures/AuthenticatedUser.js +4 -4
- package/build/src/structures/Pool.js +10 -8
- package/build/src/structures/PoolHistory.d.ts +1 -8
- package/build/src/structures/PoolHistory.js +5 -11
- package/build/src/structures/Post.js +11 -9
- package/build/src/structures/PostHistory.d.ts +52 -0
- package/build/src/structures/PostHistory.js +93 -0
- package/build/src/structures/PostSet.js +9 -7
- package/build/src/structures/User.js +5 -5
- package/build/src/structures/WikiPage.d.ts +17 -0
- package/build/src/structures/WikiPage.js +27 -0
- package/build/src/structures/WikiPageHistory.d.ts +38 -0
- package/build/src/structures/WikiPageHistory.js +49 -0
- package/build/src/types/artists.d.ts +75 -0
- package/build/src/types/index.d.ts +3 -1
- package/build/src/types/pools.d.ts +2 -2
- package/build/src/types/post_sets.d.ts +2 -2
- package/build/src/types/posts.d.ts +46 -1
- package/build/src/types/user_feedback.d.ts +0 -0
- package/build/src/types/users.d.ts +2 -2
- package/build/src/types/wiki_pages.d.ts +65 -0
- package/package.json +1 -1
package/.node-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
16.13.0
|
package/README.md
CHANGED
|
@@ -7,17 +7,17 @@ We support almost anything normal users can do, with plans to bring everything e
|
|
|
7
7
|
### Features:
|
|
8
8
|
- [x] Creating Posts (Buffer & URL)
|
|
9
9
|
- [x] Listing/Creating/Editing/Voting On/Favoriting Posts
|
|
10
|
-
- [x] Listing/Creating/Editing/Deleting/
|
|
11
|
-
- [x] Listing/Creating/Editing/Deleting/
|
|
10
|
+
- [x] Listing/Creating/Editing/Deleting/Adding To/Removing From Post Sets
|
|
11
|
+
- [x] Listing/Creating/Editing/Deleting/Adding To/Removing From Pools
|
|
12
|
+
- [x] Listing/Creating/Editing/Deleting Wiki Pages
|
|
13
|
+
- [x] Listing/Creating/Editing/Deleting Artists
|
|
12
14
|
- [x] Listing/Creating/Deleting/Editing User Feedback
|
|
13
15
|
- [x] Reverting Pool Changes
|
|
14
16
|
- [x] Listing Post History
|
|
15
17
|
- [x] Editing The Authenticated User (all properties minus password and email)
|
|
16
18
|
- [ ] Deleting/Approving/Unapproving/Destroying Posts
|
|
17
19
|
- [ ] Creating/Solving/Deleting Post Flags
|
|
18
|
-
- [ ] Listing/
|
|
19
|
-
- [ ] Listing/Creating/Editing/Deleting/Modifying Artists
|
|
20
|
-
- [ ] Listing/Editing/Deleting/Modifying Tags
|
|
20
|
+
- [ ] Listing/Editing/Deleting Tags
|
|
21
21
|
- [ ] General Janitorial/Moderative/Admninistrative Actions
|
|
22
22
|
- [ ] More Planned!
|
|
23
23
|
|
|
@@ -60,48 +60,67 @@ A map of features we support to their methods is listed below.
|
|
|
60
60
|
|
|
61
61
|
## Methods
|
|
62
62
|
The legend for the symbols can be found after the table.
|
|
63
|
-
| Section
|
|
64
|
-
|
|
65
|
-
|
|
|
66
|
-
|
|
|
67
|
-
|
|
|
68
|
-
|
|
|
69
|
-
|
|
|
70
|
-
|
|
|
71
|
-
|
|
|
72
|
-
|
|
|
73
|
-
|
|
|
74
|
-
| Pools
|
|
75
|
-
|
|
|
76
|
-
|
|
|
77
|
-
|
|
|
78
|
-
|
|
|
79
|
-
|
|
|
80
|
-
|
|
|
81
|
-
|
|
|
82
|
-
|
|
|
83
|
-
|
|
|
84
|
-
|
|
|
85
|
-
|
|
|
86
|
-
|
|
|
87
|
-
|
|
|
88
|
-
|
|
|
89
|
-
|
|
|
90
|
-
|
|
|
91
|
-
|
|
|
92
|
-
|
|
|
93
|
-
|
|
|
94
|
-
|
|
|
95
|
-
|
|
|
96
|
-
|
|
|
97
|
-
|
|
|
98
|
-
|
|
|
99
|
-
|
|
|
100
|
-
|
|
|
101
|
-
|
|
|
102
|
-
|
|
|
103
|
-
|
|
|
104
|
-
|
|
|
63
|
+
| Section | Description | Location |
|
|
64
|
+
|:---:|:---:|:---:|
|
|
65
|
+
| Artists | Get Artist | `artists.get` |
|
|
66
|
+
| Artists | Get Artist By Name | `artists.getByName` |
|
|
67
|
+
| Artists | Search Artists | `artists.search` |
|
|
68
|
+
| Artists | Create Artist* | `artists.create` |
|
|
69
|
+
| Artists | Modify Artist* | `artists.modify` |
|
|
70
|
+
| Artists | Delete Artist^ | `artists.delete` |
|
|
71
|
+
| Artists | Revert Artist* | `artists.revert` |
|
|
72
|
+
| Artists | Search Artist History | `artists.searchHistory` |
|
|
73
|
+
| Type | Description | Location || Pools | Get Pool | `pools.get` |
|
|
74
|
+
| Pools | Get Pool By Name | `pools.getByName` |
|
|
75
|
+
| Pools | Search Pools | `pools.search` |
|
|
76
|
+
| Pools | Create Pool* | `pools.create` |
|
|
77
|
+
| Pools | Modify Pool* | `pools.modify` |
|
|
78
|
+
| Pools | Delete Pool^ | `pools.delete` |
|
|
79
|
+
| Pools | Revert Pool* | `pools.revert` |
|
|
80
|
+
| Pools | Search Pool History | `pools.searchHistory` |
|
|
81
|
+
| Pools | Add Post To Pool | `pools.addPost` |
|
|
82
|
+
| Pools | Remove Post From Pool | `pools.removePost` |
|
|
83
|
+
| Type | Description | Location |
|
|
84
|
+
| Posts | Get Post By ID | `posts.get` |
|
|
85
|
+
| Posts | Get Post By MD5 | `posts.getByMD5` |
|
|
86
|
+
| Posts | Search Posts | `posts.search` |
|
|
87
|
+
| Posts | Create Post* | `posts.create` |
|
|
88
|
+
| Posts | Modify Post* | `posts.modify` |
|
|
89
|
+
| Posts | Vote On Post* | `posts.vote` |
|
|
90
|
+
| Posts | Revert Post* | `posts.revert` |
|
|
91
|
+
| Posts | Search Post History | `posts.searchHistory` |
|
|
92
|
+
| Type | Description | Location |
|
|
93
|
+
| Post Sets | Get Post Set | `postSets.get` |
|
|
94
|
+
| Post Sets | Search Sets | `postSets.search` |
|
|
95
|
+
| Post Sets | Create Post Set* | `postSets.create` |
|
|
96
|
+
| Post Sets | Modify Post Set* | `postSets.modify` |
|
|
97
|
+
| Post Sets | Delete Post Set* | `postSets.delete` |
|
|
98
|
+
| Post Sets | Add Post To Set* | `postSets.addPost` |
|
|
99
|
+
| Post Sets | Remove Post From Set* | `postSets.removePost` |
|
|
100
|
+
| Type | Description | Location |
|
|
101
|
+
| User Feedback | Get Feedback | `userFeedback.get` |
|
|
102
|
+
| User Feedback | Search Feedback | `userFeedback.search` |
|
|
103
|
+
| User Feedback | Create Feedback# | `userFeedback.create` |
|
|
104
|
+
| User Feedback | Modify Feedback# | `userFeedback.modify` |
|
|
105
|
+
| User Feedback | Delete Feedback# | `userFeedback.delete` |
|
|
106
|
+
| Type | Description | Location |
|
|
107
|
+
| Users | Get User (ID/Name) | `users.get` |
|
|
108
|
+
| Users | Search Users | `users.search` |
|
|
109
|
+
| Users | Get Authenticated User* | `users.getSelf` |
|
|
110
|
+
| Users | Edit Authenticated User* | `users.editSelf` |
|
|
111
|
+
| Users | Get Upload Limit* | `users.getUploadLimit` |
|
|
112
|
+
| Users | Get Favorites | `users.getFavorites` |
|
|
113
|
+
| Users | Add Favorite* | `users.addFavorite` |
|
|
114
|
+
| Users | Remove Favorite* | `users.removeFavorite` |
|
|
115
|
+
| Type | Description | Location |
|
|
116
|
+
| Wiki Page | Get Wiki Page | `wikiPages.get` |
|
|
117
|
+
| Wiki Page | Get Wiki Page (By Name) | `wikiPages.getByName` |
|
|
118
|
+
| Wiki Page | Search Wiki Pages | `wikiPages.search` |
|
|
119
|
+
| Wiki Page | Create Wiki Page* | `wikiPages.create` |
|
|
120
|
+
| Wiki Page | Modify Wiki Page* | `wikiPages.modify` |
|
|
121
|
+
| Wiki Page | Delete Wiki Page^ | `wikiPages.delete` |
|
|
122
|
+
| Wiki Page | Revert Wiki Page* | `wikiPages.revert` |
|
|
123
|
+
| Wiki Page | Search Wiki Page History | `wikiPages.searchHistory` |
|
|
105
124
|
|
|
106
125
|
#### Method Symbol Legend
|
|
107
126
|
| Symbol | Meaning |
|
package/build/package.json
CHANGED
package/build/src/index.d.ts
CHANGED
|
@@ -1,27 +1,36 @@
|
|
|
1
1
|
import type { Options, InstanceOptions } from "./types";
|
|
2
2
|
import RequestHandler from "./util/RequestHandler";
|
|
3
|
+
import Artists from "./modules/Artists";
|
|
3
4
|
import Posts from "./modules/Posts";
|
|
4
5
|
import UserFeedback from "./modules/UserFeedback";
|
|
5
6
|
import Users from "./modules/Users";
|
|
6
7
|
import PostSets from "./modules/PostSets";
|
|
7
8
|
import Pools from "./modules/Pools";
|
|
9
|
+
import WikiPages from "./modules/WikiPages";
|
|
10
|
+
import Artist from "./structures/Artist";
|
|
11
|
+
import ArtistHistory from "./structures/ArtistHistory";
|
|
8
12
|
import AuthenticatedUser from "./structures/AuthenticatedUser";
|
|
9
13
|
import Pool from "./structures/Pool";
|
|
10
14
|
import PoolHistory from "./structures/PoolHistory";
|
|
11
15
|
import Post from "./structures/Post";
|
|
16
|
+
import PostHistory from "./structures/PostHistory";
|
|
12
17
|
import PostSet from "./structures/PostSet";
|
|
13
18
|
import User from "./structures/User";
|
|
19
|
+
import WikiPage from "./structures/WikiPage";
|
|
20
|
+
import WikiPageHistory from "./structures/WikiPageHistory";
|
|
14
21
|
export default class E621 {
|
|
22
|
+
artists: Artists;
|
|
15
23
|
request: RequestHandler;
|
|
16
24
|
postSets: PostSets;
|
|
17
25
|
pools: Pools;
|
|
18
26
|
posts: Posts;
|
|
19
27
|
userFeedback: UserFeedback;
|
|
20
28
|
users: Users;
|
|
29
|
+
wikiPages: WikiPages;
|
|
21
30
|
private readonly auth;
|
|
22
31
|
readonly options: InstanceOptions;
|
|
23
32
|
constructor(options?: Options);
|
|
24
33
|
}
|
|
25
34
|
export * from "./types";
|
|
26
35
|
export { APIError } from "./util/RequestHandler";
|
|
27
|
-
export { AuthenticatedUser, Pool, PoolHistory, Post, PostSet, User };
|
|
36
|
+
export { Artist, ArtistHistory, AuthenticatedUser, Pool, PoolHistory, Post, PostHistory, PostSet, User, WikiPage, WikiPageHistory };
|
package/build/src/index.js
CHANGED
|
@@ -13,13 +13,21 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
13
13
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
14
14
|
};
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
exports.User = exports.PostSet = exports.Post = exports.PoolHistory = exports.Pool = exports.AuthenticatedUser = exports.APIError = void 0;
|
|
16
|
+
exports.WikiPageHistory = exports.WikiPage = exports.User = exports.PostSet = exports.PostHistory = exports.Post = exports.PoolHistory = exports.Pool = exports.AuthenticatedUser = exports.ArtistHistory = exports.Artist = exports.APIError = void 0;
|
|
17
17
|
const RequestHandler_1 = __importDefault(require("./util/RequestHandler"));
|
|
18
|
+
// Modules
|
|
19
|
+
const Artists_1 = __importDefault(require("./modules/Artists"));
|
|
18
20
|
const Posts_1 = __importDefault(require("./modules/Posts"));
|
|
19
21
|
const UserFeedback_1 = __importDefault(require("./modules/UserFeedback"));
|
|
20
22
|
const Users_1 = __importDefault(require("./modules/Users"));
|
|
21
23
|
const PostSets_1 = __importDefault(require("./modules/PostSets"));
|
|
22
24
|
const Pools_1 = __importDefault(require("./modules/Pools"));
|
|
25
|
+
const WikiPages_1 = __importDefault(require("./modules/WikiPages"));
|
|
26
|
+
// Structures
|
|
27
|
+
const Artist_1 = __importDefault(require("./structures/Artist"));
|
|
28
|
+
exports.Artist = Artist_1.default;
|
|
29
|
+
const ArtistHistory_1 = __importDefault(require("./structures/ArtistHistory"));
|
|
30
|
+
exports.ArtistHistory = ArtistHistory_1.default;
|
|
23
31
|
const AuthenticatedUser_1 = __importDefault(require("./structures/AuthenticatedUser"));
|
|
24
32
|
exports.AuthenticatedUser = AuthenticatedUser_1.default;
|
|
25
33
|
const Pool_1 = __importDefault(require("./structures/Pool"));
|
|
@@ -28,20 +36,28 @@ const PoolHistory_1 = __importDefault(require("./structures/PoolHistory"));
|
|
|
28
36
|
exports.PoolHistory = PoolHistory_1.default;
|
|
29
37
|
const Post_1 = __importDefault(require("./structures/Post"));
|
|
30
38
|
exports.Post = Post_1.default;
|
|
39
|
+
const PostHistory_1 = __importDefault(require("./structures/PostHistory"));
|
|
40
|
+
exports.PostHistory = PostHistory_1.default;
|
|
31
41
|
const PostSet_1 = __importDefault(require("./structures/PostSet"));
|
|
32
42
|
exports.PostSet = PostSet_1.default;
|
|
33
43
|
const User_1 = __importDefault(require("./structures/User"));
|
|
34
44
|
exports.User = User_1.default;
|
|
45
|
+
const WikiPage_1 = __importDefault(require("./structures/WikiPage"));
|
|
46
|
+
exports.WikiPage = WikiPage_1.default;
|
|
47
|
+
const WikiPageHistory_1 = __importDefault(require("./structures/WikiPageHistory"));
|
|
48
|
+
exports.WikiPageHistory = WikiPageHistory_1.default;
|
|
35
49
|
const package_json_1 = __importDefault(require("../package.json"));
|
|
36
50
|
// note for future reference (browser compatibility?)
|
|
37
51
|
// POST with "_method=*" can be used in place of PUT/PATCH/DELETE
|
|
38
52
|
class E621 {
|
|
53
|
+
artists = new Artists_1.default(this);
|
|
39
54
|
request = new RequestHandler_1.default(this);
|
|
40
55
|
postSets = new PostSets_1.default(this);
|
|
41
56
|
pools = new Pools_1.default(this);
|
|
42
57
|
posts = new Posts_1.default(this);
|
|
43
58
|
userFeedback = new UserFeedback_1.default(this);
|
|
44
59
|
users = new Users_1.default(this);
|
|
60
|
+
wikiPages = new WikiPages_1.default(this);
|
|
45
61
|
auth;
|
|
46
62
|
options;
|
|
47
63
|
constructor(options) {
|
|
@@ -100,4 +116,4 @@ class E621 {
|
|
|
100
116
|
exports.default = E621;
|
|
101
117
|
var RequestHandler_2 = require("./util/RequestHandler");
|
|
102
118
|
Object.defineProperty(exports, "APIError", { enumerable: true, get: function () { return RequestHandler_2.APIError; } });
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLDJFQUFtRDtBQUNuRCxVQUFVO0FBQ1YsZ0VBQXdDO0FBQ3hDLDREQUFvQztBQUNwQywwRUFBa0Q7QUFDbEQsNERBQW9DO0FBQ3BDLGtFQUEwQztBQUMxQyw0REFBb0M7QUFDcEMsb0VBQTRDO0FBQzVDLGFBQWE7QUFDYixpRUFBeUM7QUEyRXhDLGlCQTNFTSxnQkFBTSxDQTJFTjtBQTFFUCwrRUFBdUQ7QUEyRXRELHdCQTNFTSx1QkFBYSxDQTJFTjtBQTFFZCx1RkFBK0Q7QUEyRTlELDRCQTNFTSwyQkFBaUIsQ0EyRU47QUExRWxCLDZEQUFxQztBQTJFcEMsZUEzRU0sY0FBSSxDQTJFTjtBQTFFTCwyRUFBbUQ7QUEyRWxELHNCQTNFTSxxQkFBVyxDQTJFTjtBQTFFWiw2REFBcUM7QUEyRXBDLGVBM0VNLGNBQUksQ0EyRU47QUExRUwsMkVBQW1EO0FBMkVsRCxzQkEzRU0scUJBQVcsQ0EyRU47QUExRVosbUVBQTJDO0FBMkUxQyxrQkEzRU0saUJBQU8sQ0EyRU47QUExRVIsNkRBQXFDO0FBMkVwQyxlQTNFTSxjQUFJLENBMkVOO0FBMUVMLHFFQUE2QztBQTJFNUMsbUJBM0VNLGtCQUFRLENBMkVOO0FBMUVULG1GQUEyRDtBQTJFMUQsMEJBM0VNLHlCQUFlLENBMkVOO0FBekVoQixtRUFBa0M7QUFFbEMscURBQXFEO0FBQ3JELGlFQUFpRTtBQUNqRSxNQUFxQixJQUFJO0lBQ3hCLE9BQU8sR0FBRyxJQUFJLGlCQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsT0FBTyxHQUFHLElBQUksd0JBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxRQUFRLEdBQUcsSUFBSSxrQkFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLEtBQUssR0FBRyxJQUFJLGVBQUssQ0FBQyxJQUFJ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
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import type E621 from "..";
|
|
2
|
+
import Artist from "../structures/Artist";
|
|
3
|
+
import type { SearchArtistsOptions, CreateArtistOptions, ModifyArtistOptions, SearchArtistHistoryOptions } from "../types";
|
|
4
|
+
import ArtistHistory from "../structures/ArtistHistory";
|
|
5
|
+
export default class Artists {
|
|
6
|
+
private readonly auth;
|
|
7
|
+
private readonly main;
|
|
8
|
+
constructor(main: E621);
|
|
9
|
+
/**
|
|
10
|
+
* Get an artist by their id
|
|
11
|
+
*
|
|
12
|
+
* @param {number} id - The id of the artist to get
|
|
13
|
+
* @returns {Promise<(Artist | null)>}
|
|
14
|
+
*/
|
|
15
|
+
get(id: number): Promise<Artist | null>;
|
|
16
|
+
/**
|
|
17
|
+
* Get an artist by their name
|
|
18
|
+
*
|
|
19
|
+
* @param {string} name - The name of the artist to get
|
|
20
|
+
* @returns {Promise<(Artist | null)>}
|
|
21
|
+
*/
|
|
22
|
+
getByTitle(name: string): Promise<Artist | null>;
|
|
23
|
+
/**
|
|
24
|
+
* Search for artists
|
|
25
|
+
*
|
|
26
|
+
* @param {object} [options]
|
|
27
|
+
* @param {string} [options.name] - narrow the results by the name of the artist
|
|
28
|
+
* @param {string} [options.url] - narrow the results by urls of the artist
|
|
29
|
+
* @param {string} [options.creator] - narrow the results by the (name of the) creator of the artist page
|
|
30
|
+
* @param {boolean} [options.active] - narrow the results by the artist being active
|
|
31
|
+
* @param {boolean} [options.banned] - narrow the results by the artist being banned
|
|
32
|
+
* @param {boolean} [options.has_tag] - narrow the results by the artist having a matching tag
|
|
33
|
+
* @param {SearchArtistsOrder} [options.order] - the order of the results
|
|
34
|
+
* @param {(number |`${"" | "a" | "b"}${number}`)} [options.page] - page of results to get
|
|
35
|
+
* @param {number} [options.limit] - limit the maximum amount of results returned
|
|
36
|
+
* @returns {Promise<Array<ArtistProperties>>}
|
|
37
|
+
*/
|
|
38
|
+
search(options?: SearchArtistsOptions): Promise<Artist[]>;
|
|
39
|
+
/**
|
|
40
|
+
* Create an artist
|
|
41
|
+
*
|
|
42
|
+
* * Requires Authentication
|
|
43
|
+
*
|
|
44
|
+
* @param {object} options
|
|
45
|
+
* @param {string} options.name - the name of artist
|
|
46
|
+
* @param {number} [options.linkedUserID] - the id of the user associated with this artist (requires janitor)
|
|
47
|
+
* @param {boolean} [options.locked] - if the artist should be locked (requires janitor)
|
|
48
|
+
* @param {(Array<string> | string)} [options.otherNames] - the other names for this artist
|
|
49
|
+
* @param {string} [options.groupName] - the group name of this artist
|
|
50
|
+
* @param {(Array<string> | string)} [options.urls] - the urls associated with this artist
|
|
51
|
+
* @param {string} [options.notes] - notes for this artist
|
|
52
|
+
* @returns {Promise<Artist>}
|
|
53
|
+
*/
|
|
54
|
+
create(options: CreateArtistOptions): Promise<Artist>;
|
|
55
|
+
/**
|
|
56
|
+
* modify an artist
|
|
57
|
+
*
|
|
58
|
+
* * Requires Authentication
|
|
59
|
+
*
|
|
60
|
+
* @param {number} id - the id of the artists to edit
|
|
61
|
+
* @param {object} options
|
|
62
|
+
* @param {string} [options.name] - the name of artist (requires janitor)
|
|
63
|
+
* @param {number} [options.linkedUserID] - the id of the user associated with this artist (requires janitor)
|
|
64
|
+
* @param {boolean} [options.locked] - if the artist should be locked (requires janitor)
|
|
65
|
+
* @param {(Array<string> | string)} [options.otherNames] - the other names for this artist
|
|
66
|
+
* @param {string} [options.groupName] - the group name of this artist
|
|
67
|
+
* @param {(Array<string> | string)} [options.urls] - the urls associated with this artist
|
|
68
|
+
* @param {string} [options.notes] - notes for this artist
|
|
69
|
+
* @returns {Promise<Artist>}
|
|
70
|
+
*/
|
|
71
|
+
modify(id: number, options: ModifyArtistOptions): Promise<Artist>;
|
|
72
|
+
/**
|
|
73
|
+
* Delete an artist
|
|
74
|
+
*
|
|
75
|
+
* * Requires Authentication
|
|
76
|
+
*
|
|
77
|
+
* * Requires Janitor
|
|
78
|
+
*
|
|
79
|
+
* @param {number} id - the id of the artist to delete
|
|
80
|
+
* @returns {Promise<null>}
|
|
81
|
+
*/
|
|
82
|
+
delete(id: number): Promise<null>;
|
|
83
|
+
/**
|
|
84
|
+
* Revert an artist to a previous version
|
|
85
|
+
*
|
|
86
|
+
* * Requires Authentication
|
|
87
|
+
*
|
|
88
|
+
* @param {number} id - the id of the artist to revert
|
|
89
|
+
* @param {number} versionID - the version id to revert to (see history)
|
|
90
|
+
*/
|
|
91
|
+
revert(id: number, versionID: number): Promise<null>;
|
|
92
|
+
/**
|
|
93
|
+
* Search the artist history
|
|
94
|
+
*
|
|
95
|
+
* @param {object} [options]
|
|
96
|
+
* @param {number} [options.artistID] - narrow the results by artist id
|
|
97
|
+
* @param {string} [options.artistName] - narrow the results by artist name
|
|
98
|
+
* @param {number} [options.updaterID] - narrow the results by updater id
|
|
99
|
+
* @param {string} [options.updaterName] - narrow the results by updater name
|
|
100
|
+
* @param {(number |`${"" | "a" | "b"}${number}`)} [options.page] - page of results to get
|
|
101
|
+
* @param {number} [options.limit] - limit the maximum amount of results returned
|
|
102
|
+
* @param
|
|
103
|
+
* @returns {Promise<Array<ArtistHistory>>}
|
|
104
|
+
*/
|
|
105
|
+
searchHistory(options?: SearchArtistHistoryOptions): Promise<ArtistHistory[]>;
|
|
106
|
+
}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const Artist_1 = __importDefault(require("../structures/Artist"));
|
|
7
|
+
const FormHelper_1 = __importDefault(require("../util/FormHelper"));
|
|
8
|
+
const RequestHandler_1 = require("../util/RequestHandler");
|
|
9
|
+
const ArtistHistory_1 = __importDefault(require("../structures/ArtistHistory"));
|
|
10
|
+
class Artists {
|
|
11
|
+
auth;
|
|
12
|
+
main;
|
|
13
|
+
constructor(main) {
|
|
14
|
+
Object.defineProperties(this, {
|
|
15
|
+
auth: {
|
|
16
|
+
get() {
|
|
17
|
+
return !this.main.options.authUser || !this.main.options.authKey ? null : `Basic ${Buffer.from(`${this.main.options.authUser}:${this.main.options.authKey}`).toString("base64")}`;
|
|
18
|
+
},
|
|
19
|
+
configurable: false,
|
|
20
|
+
enumerable: false
|
|
21
|
+
},
|
|
22
|
+
main: {
|
|
23
|
+
value: main,
|
|
24
|
+
configurable: false,
|
|
25
|
+
enumerable: false,
|
|
26
|
+
writable: false
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get an artist by their id
|
|
32
|
+
*
|
|
33
|
+
* @param {number} id - The id of the artist to get
|
|
34
|
+
* @returns {Promise<(Artist | null)>}
|
|
35
|
+
*/
|
|
36
|
+
async get(id) {
|
|
37
|
+
const res = await this.main.request.get(`/artists/${id}.json`).catch(err => {
|
|
38
|
+
if (err instanceof RequestHandler_1.APIError && err.statusCode === 404)
|
|
39
|
+
return null;
|
|
40
|
+
throw err;
|
|
41
|
+
});
|
|
42
|
+
return res === null ? null : new Artist_1.default(this.main, res);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get an artist by their name
|
|
46
|
+
*
|
|
47
|
+
* @param {string} name - The name of the artist to get
|
|
48
|
+
* @returns {Promise<(Artist | null)>}
|
|
49
|
+
*/
|
|
50
|
+
async getByTitle(name) {
|
|
51
|
+
return this.search({
|
|
52
|
+
name,
|
|
53
|
+
limit: 1
|
|
54
|
+
}).then(r => r.length === 0 ? null : r[0]);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Search for artists
|
|
58
|
+
*
|
|
59
|
+
* @param {object} [options]
|
|
60
|
+
* @param {string} [options.name] - narrow the results by the name of the artist
|
|
61
|
+
* @param {string} [options.url] - narrow the results by urls of the artist
|
|
62
|
+
* @param {string} [options.creator] - narrow the results by the (name of the) creator of the artist page
|
|
63
|
+
* @param {boolean} [options.active] - narrow the results by the artist being active
|
|
64
|
+
* @param {boolean} [options.banned] - narrow the results by the artist being banned
|
|
65
|
+
* @param {boolean} [options.has_tag] - narrow the results by the artist having a matching tag
|
|
66
|
+
* @param {SearchArtistsOrder} [options.order] - the order of the results
|
|
67
|
+
* @param {(number |`${"" | "a" | "b"}${number}`)} [options.page] - page of results to get
|
|
68
|
+
* @param {number} [options.limit] - limit the maximum amount of results returned
|
|
69
|
+
* @returns {Promise<Array<ArtistProperties>>}
|
|
70
|
+
*/
|
|
71
|
+
async search(options) {
|
|
72
|
+
options = options ?? {};
|
|
73
|
+
const qs = new FormHelper_1.default();
|
|
74
|
+
if (typeof options.name === "string")
|
|
75
|
+
qs.add("search[any_name_matches]", options.name);
|
|
76
|
+
if (typeof options.url === "string")
|
|
77
|
+
qs.add("search[url_matches]", options.url);
|
|
78
|
+
if (typeof options.creator === "string")
|
|
79
|
+
qs.add("search[creator_name]", options.creator);
|
|
80
|
+
if (typeof options.active === "boolean")
|
|
81
|
+
qs.add("search[is_active]", options.active);
|
|
82
|
+
if (typeof options.banned === "boolean")
|
|
83
|
+
qs.add("search[is_banned]", options.banned);
|
|
84
|
+
if (typeof options.has_tag === "boolean")
|
|
85
|
+
qs.add("search[has_tag]", options.has_tag);
|
|
86
|
+
if (typeof options.order === "string")
|
|
87
|
+
qs.add("search[order]", options.order);
|
|
88
|
+
if (typeof options.page !== "undefined")
|
|
89
|
+
qs.add("page", options.page);
|
|
90
|
+
if (typeof options.limit === "number")
|
|
91
|
+
qs.add("limit", options.limit);
|
|
92
|
+
const res = await this.main.request.get(`/artists.json?${qs.build()}`);
|
|
93
|
+
return res.map(info => new Artist_1.default(this.main, info));
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Create an artist
|
|
97
|
+
*
|
|
98
|
+
* * Requires Authentication
|
|
99
|
+
*
|
|
100
|
+
* @param {object} options
|
|
101
|
+
* @param {string} options.name - the name of artist
|
|
102
|
+
* @param {number} [options.linkedUserID] - the id of the user associated with this artist (requires janitor)
|
|
103
|
+
* @param {boolean} [options.locked] - if the artist should be locked (requires janitor)
|
|
104
|
+
* @param {(Array<string> | string)} [options.otherNames] - the other names for this artist
|
|
105
|
+
* @param {string} [options.groupName] - the group name of this artist
|
|
106
|
+
* @param {(Array<string> | string)} [options.urls] - the urls associated with this artist
|
|
107
|
+
* @param {string} [options.notes] - notes for this artist
|
|
108
|
+
* @returns {Promise<Artist>}
|
|
109
|
+
*/
|
|
110
|
+
async create(options) {
|
|
111
|
+
this.main.request.authCheck.call(this, "Artists#create");
|
|
112
|
+
if (!options)
|
|
113
|
+
throw new Error("options is required in Artists#create");
|
|
114
|
+
const qs = new FormHelper_1.default()
|
|
115
|
+
.add("artist[name]", options.name);
|
|
116
|
+
if (typeof options.linkedUserID === "number")
|
|
117
|
+
qs.add("artist[linked_user_id]", options.linkedUserID);
|
|
118
|
+
if (typeof options.locked === "boolean")
|
|
119
|
+
qs.add("artist[is_locked]", options.locked);
|
|
120
|
+
if (typeof options.otherNames === "string")
|
|
121
|
+
qs.add("artist[other_names_string]", options.otherNames);
|
|
122
|
+
if (Array.isArray(options.otherNames))
|
|
123
|
+
qs.add("artist[other_names_string]", options.otherNames.join(" "));
|
|
124
|
+
if (typeof options.groupName === "string")
|
|
125
|
+
qs.add("artist[group_name]", options.groupName);
|
|
126
|
+
if (typeof options.urls === "string")
|
|
127
|
+
qs.add("artist[url_string]", options.urls);
|
|
128
|
+
if (Array.isArray(options.urls))
|
|
129
|
+
qs.add("artist[url_string]", options.urls.join("\n"));
|
|
130
|
+
if (typeof options.notes === "string")
|
|
131
|
+
qs.add("artist[notes]", options.notes);
|
|
132
|
+
const res = await this.main.request.post("/artists.json", qs.build());
|
|
133
|
+
return new Artist_1.default(this.main, res);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* modify an artist
|
|
137
|
+
*
|
|
138
|
+
* * Requires Authentication
|
|
139
|
+
*
|
|
140
|
+
* @param {number} id - the id of the artists to edit
|
|
141
|
+
* @param {object} options
|
|
142
|
+
* @param {string} [options.name] - the name of artist (requires janitor)
|
|
143
|
+
* @param {number} [options.linkedUserID] - the id of the user associated with this artist (requires janitor)
|
|
144
|
+
* @param {boolean} [options.locked] - if the artist should be locked (requires janitor)
|
|
145
|
+
* @param {(Array<string> | string)} [options.otherNames] - the other names for this artist
|
|
146
|
+
* @param {string} [options.groupName] - the group name of this artist
|
|
147
|
+
* @param {(Array<string> | string)} [options.urls] - the urls associated with this artist
|
|
148
|
+
* @param {string} [options.notes] - notes for this artist
|
|
149
|
+
* @returns {Promise<Artist>}
|
|
150
|
+
*/
|
|
151
|
+
async modify(id, options) {
|
|
152
|
+
this.main.request.authCheck.call(this, "Artists#modify");
|
|
153
|
+
if (!options)
|
|
154
|
+
throw new Error("options is required in Artists#modify");
|
|
155
|
+
const qs = new FormHelper_1.default();
|
|
156
|
+
if (typeof options.name === "string")
|
|
157
|
+
qs.add("artist[name]", options.name);
|
|
158
|
+
if (typeof options.linkedUserID === "number")
|
|
159
|
+
qs.add("artist[linked_user_id]", options.linkedUserID);
|
|
160
|
+
if (typeof options.locked === "boolean")
|
|
161
|
+
qs.add("artist[is_locked]", options.locked);
|
|
162
|
+
if (typeof options.otherNames === "string")
|
|
163
|
+
qs.add("artist[other_names_string]", options.otherNames);
|
|
164
|
+
if (Array.isArray(options.otherNames))
|
|
165
|
+
qs.add("artist[other_names_string]", options.otherNames.join(" "));
|
|
166
|
+
if (typeof options.groupName === "string")
|
|
167
|
+
qs.add("artist[group_name]", options.groupName);
|
|
168
|
+
if (typeof options.urls === "string")
|
|
169
|
+
qs.add("artist[url_string]", options.urls);
|
|
170
|
+
if (Array.isArray(options.urls))
|
|
171
|
+
qs.add("artist[url_string]", options.urls.join("\n"));
|
|
172
|
+
if (typeof options.notes === "string")
|
|
173
|
+
qs.add("artist[notes]", options.notes);
|
|
174
|
+
const res = await this.main.request.patch(`/artists/${id}.json`, qs.build());
|
|
175
|
+
return new Artist_1.default(this.main, res);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Delete an artist
|
|
179
|
+
*
|
|
180
|
+
* * Requires Authentication
|
|
181
|
+
*
|
|
182
|
+
* * Requires Janitor
|
|
183
|
+
*
|
|
184
|
+
* @param {number} id - the id of the artist to delete
|
|
185
|
+
* @returns {Promise<null>}
|
|
186
|
+
*/
|
|
187
|
+
async delete(id) {
|
|
188
|
+
this.main.request.authCheck.call(this, "Artists#delete");
|
|
189
|
+
return this.main.request.delete(`/artists/${id}.json`);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Revert an artist to a previous version
|
|
193
|
+
*
|
|
194
|
+
* * Requires Authentication
|
|
195
|
+
*
|
|
196
|
+
* @param {number} id - the id of the artist to revert
|
|
197
|
+
* @param {number} versionID - the version id to revert to (see history)
|
|
198
|
+
*/
|
|
199
|
+
async revert(id, versionID) {
|
|
200
|
+
this.main.request.authCheck.call(this, "Artists#revert");
|
|
201
|
+
const qs = new FormHelper_1.default()
|
|
202
|
+
.add("version_id", versionID);
|
|
203
|
+
return this.main.request.put(`/artists/${id}/revert.json`, qs.build());
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Search the artist history
|
|
207
|
+
*
|
|
208
|
+
* @param {object} [options]
|
|
209
|
+
* @param {number} [options.artistID] - narrow the results by artist id
|
|
210
|
+
* @param {string} [options.artistName] - narrow the results by artist name
|
|
211
|
+
* @param {number} [options.updaterID] - narrow the results by updater id
|
|
212
|
+
* @param {string} [options.updaterName] - narrow the results by updater name
|
|
213
|
+
* @param {(number |`${"" | "a" | "b"}${number}`)} [options.page] - page of results to get
|
|
214
|
+
* @param {number} [options.limit] - limit the maximum amount of results returned
|
|
215
|
+
* @param
|
|
216
|
+
* @returns {Promise<Array<ArtistHistory>>}
|
|
217
|
+
*/
|
|
218
|
+
async searchHistory(options) {
|
|
219
|
+
options = options ?? {};
|
|
220
|
+
const qs = new FormHelper_1.default();
|
|
221
|
+
if (typeof options.artistID === "number")
|
|
222
|
+
qs.add("search[artist_id]", options.artistID);
|
|
223
|
+
if (typeof options.artistName === "number")
|
|
224
|
+
qs.add("search[name]", options.artistName);
|
|
225
|
+
if (typeof options.updaterID === "number")
|
|
226
|
+
qs.add("search[updater_id]", options.updaterID);
|
|
227
|
+
if (typeof options.updaterName === "number")
|
|
228
|
+
qs.add("search[updater]", options.updaterName);
|
|
229
|
+
if (typeof options.page !== "undefined")
|
|
230
|
+
qs.add("page", options.page);
|
|
231
|
+
if (typeof options.limit === "number")
|
|
232
|
+
qs.add("limit", options.limit);
|
|
233
|
+
const res = await this.main.request.get(`/artist_versions.json?${qs.build()}`);
|
|
234
|
+
if (res && !Array.isArray(res) && "artist_versions" in res)
|
|
235
|
+
return [];
|
|
236
|
+
return res.map(info => new ArtistHistory_1.default(this.main, info));
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
exports.default = Artists;
|
|
240
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJ0aXN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2R1bGVzL0FydGlzdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxrRUFBMEM7QUFVMUMsb0VBQTRDO0FBQzVDLDJEQUFrRDtBQUNsRCxnRkFBd0Q7QUFFeEQsTUFBcUIsT0FBTztJQUNWLElBQUksQ0FBZ0I7SUFDcEIsSUFBSSxDQUFPO0lBQzVCLFlBQVksSUFBVTtRQUNyQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFO1lBQzdCLElBQUksRUFBRTtnQkFDTCxHQUFHO29CQUNGLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ25MLENBQUM7Z0JBQ0QsWUFBWSxFQUFFLEtBQUs7Z0JBQ25CLFVBQVUsRUFBRSxLQUFLO2FBQ2pCO1lBQ0QsSUFBSSxFQUFFO2dCQUNMLEtBQUssRUFBRSxJQUFJO2dCQUNYLFlBQVksRUFBRSxLQUFLO2dCQUNuQixVQUFVLEVBQUUsS0FBSztnQkFDakIsUUFBUSxFQUFFLEtBQUs7YUFDZjtTQUNELENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBVTtRQUNuQixNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBbUIsWUFBWSxFQUFFLE9B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
|