e621 1.0.9 → 2.0.0-dev.11

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.
Files changed (50) hide show
  1. package/.node-version +1 -0
  2. package/README.md +116 -187
  3. package/build/package.json +14 -11
  4. package/build/src/index.d.ts +28 -295
  5. package/build/src/index.js +83 -442
  6. package/build/src/modules/Pools.d.ts +120 -0
  7. package/build/src/modules/Pools.js +247 -0
  8. package/build/src/modules/PostSets.d.ts +88 -0
  9. package/build/src/modules/PostSets.js +182 -0
  10. package/build/src/modules/Posts.d.ts +124 -0
  11. package/build/src/modules/Posts.js +323 -0
  12. package/build/src/modules/UserFeedback.d.ts +66 -0
  13. package/build/src/modules/UserFeedback.js +134 -0
  14. package/build/src/modules/Users.d.ts +110 -0
  15. package/build/src/modules/Users.js +248 -0
  16. package/build/src/modules/WikiPages.d.ts +99 -0
  17. package/build/src/modules/WikiPages.js +208 -0
  18. package/build/src/structures/AuthenticatedUser.d.ts +109 -0
  19. package/build/src/structures/AuthenticatedUser.js +128 -0
  20. package/build/src/structures/Pool.d.ts +85 -0
  21. package/build/src/structures/Pool.js +110 -0
  22. package/build/src/structures/PoolHistory.d.ts +42 -0
  23. package/build/src/structures/PoolHistory.js +53 -0
  24. package/build/src/structures/Post.d.ts +147 -0
  25. package/build/src/structures/Post.js +155 -0
  26. package/build/src/structures/PostHistory.d.ts +52 -0
  27. package/build/src/structures/PostHistory.js +93 -0
  28. package/build/src/structures/PostSet.d.ts +71 -0
  29. package/build/src/structures/PostSet.js +91 -0
  30. package/build/src/structures/User.d.ts +62 -0
  31. package/build/src/structures/User.js +80 -0
  32. package/build/src/structures/WikiPage.d.ts +16 -0
  33. package/build/src/structures/WikiPage.js +26 -0
  34. package/build/src/structures/WikiPageHistory.d.ts +37 -0
  35. package/build/src/structures/WikiPageHistory.js +49 -0
  36. package/build/src/types/index.d.ts +92 -0
  37. package/build/src/types/pools.d.ts +60 -0
  38. package/build/src/types/post_sets.d.ts +33 -0
  39. package/build/src/types/posts.d.ts +165 -0
  40. package/build/src/types/user_feedback.d.ts +27 -0
  41. package/build/src/types/users.d.ts +277 -0
  42. package/build/src/types/wiki_pages.d.ts +65 -0
  43. package/build/src/util/FormHelper.d.ts +9 -0
  44. package/build/src/util/FormHelper.js +15 -0
  45. package/build/src/util/MultipartData.d.ts +7 -0
  46. package/build/src/util/MultipartData.js +39 -0
  47. package/build/src/util/RequestHandler.d.ts +37 -0
  48. package/build/src/util/RequestHandler.js +311 -0
  49. package/package.json +14 -11
  50. package/LICENSE +0 -21
@@ -0,0 +1,208 @@
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 WikiPage_1 = __importDefault(require("../structures/WikiPage"));
7
+ const FormHelper_1 = __importDefault(require("../util/FormHelper"));
8
+ const RequestHandler_1 = require("../util/RequestHandler");
9
+ const WikiPageHistory_1 = __importDefault(require("../structures/WikiPageHistory"));
10
+ class WikiPages {
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 a wiki page by its id
32
+ *
33
+ * @param {number} id - The id of the wiki page to get
34
+ * @returns {Promise<(WikiPage | null)>}
35
+ */
36
+ async get(id) {
37
+ const res = await this.main.request.get(`/wiki_pages/${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 WikiPage_1.default(this.main, res);
43
+ }
44
+ /**
45
+ * Get a wiki page by its title
46
+ *
47
+ * @param {string} title - The title of the wiki page to get
48
+ * @returns {Promise<(WikiPage | null)>}
49
+ */
50
+ async getByTitle(title) {
51
+ return this.search({
52
+ title,
53
+ limit: 1
54
+ }).then(r => r.length === 0 ? null : r[0]);
55
+ }
56
+ /**
57
+ * Search for wiki pages
58
+ *
59
+ * @param {object} [options]
60
+ * @param {string} [options.title] - narrow the results by the title of the wiki page
61
+ * @param {string} [options.creator] - narrow the results by the (name of the) creator of the wiki page
62
+ * @param {string} [options.body] - narrow the results by the content of the wiki page
63
+ * @param {string} [options.otherNames] - narrow the results by the other names of the wiki page
64
+ * @param {boolean} [options.hasOtherNames] - narrow the results by the wiki page having other names
65
+ * @param {boolean} [options.hideDeleted] - narrow the results by the wiki page being deleted or not
66
+ * @param {WikiPageOrder} [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<WikiPage>>}
70
+ */
71
+ async search(options) {
72
+ options = options ?? {};
73
+ const qs = new FormHelper_1.default();
74
+ if (typeof options.title === "string")
75
+ qs.add("search[title]", options.title);
76
+ if (typeof options.creator === "string")
77
+ qs.add("search[creator_name]", options.creator);
78
+ if (typeof options.body === "string")
79
+ qs.add("search[body_matches]", options.body);
80
+ if (typeof options.otherNames === "string")
81
+ qs.add("search[other_names_match]", options.otherNames);
82
+ if (typeof options.hasOtherNames === "boolean")
83
+ qs.add("search[other_names_present]", options.hasOtherNames);
84
+ if (typeof options.hideDeleted === "boolean")
85
+ qs.add("search[hide_deleted]", options.hideDeleted);
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(`/wiki_pages.json?${qs.build()}`);
93
+ return res.map(info => new WikiPage_1.default(this.main, info));
94
+ }
95
+ /**
96
+ * Create a wiki page
97
+ *
98
+ * * Requires Authentication
99
+ *
100
+ * @param {object} options
101
+ * @param {string} options.title - the name of the wiki page
102
+ * @param {string} options.body - the content of the wiki page
103
+ * @param {boolean} [options.locked] - if the wiki page should be locked (requires janitor)
104
+ * @param {boolean} [options.forceOverwrite] - if existing pages should be overwritten (requires janitor)
105
+ * @param {string} [options.reason] - the reson for creating the page
106
+ * @returns {Promise<WikiPage>}
107
+ */
108
+ async create(options) {
109
+ this.main.request.authCheck.call(this, "WikiPages#create");
110
+ if (!options)
111
+ throw new Error("options is required in WikiPages#create");
112
+ const qs = new FormHelper_1.default()
113
+ .add("wiki_page[title]", options.title)
114
+ .add("wiki_page[body]", options.body);
115
+ if (typeof options.locked === "boolean")
116
+ qs.add("wiki_page[is_locked]", options.locked);
117
+ if (typeof options.forceOverwrite === "boolean")
118
+ qs.add("wiki_page[is_locked]", options.forceOverwrite);
119
+ if (typeof options.reason === "string")
120
+ qs.add("wiki_page[edit_reason]", options.reason);
121
+ const res = await this.main.request.post("/wiki_pages.json", qs.build());
122
+ return new WikiPage_1.default(this.main, res);
123
+ }
124
+ /**
125
+ * modify a wiki page
126
+ *
127
+ * * Requires Authentication
128
+ *
129
+ * @param {number} id - the id of the wiki page to edit
130
+ * @param {object} options
131
+ * @param {string} [options.name] - the name of the wiki page (requires janitor)
132
+ * @param {string} [options.body] - the content of the wiki page
133
+ * @param {boolean} [options.locked] - if the wiki page is locked (requires janitor)
134
+ * @param {boolean} [options.forceOverwrite] - if existing pages should be overwritten (title change, requires janitor)
135
+ * @param {string} [options.reason] - the reason for the edit
136
+ * @returns {Promise<WikiPage>}
137
+ */
138
+ async modify(id, options) {
139
+ this.main.request.authCheck.call(this, "WikiPages#modify");
140
+ if (!options)
141
+ throw new Error("options is required in WikiPages#modify");
142
+ const qs = new FormHelper_1.default();
143
+ if (typeof options.title === "string")
144
+ qs.add("wiki_page[title]", options.title);
145
+ if (typeof options.body === "string")
146
+ qs.add("wiki_page[body]", options.body);
147
+ if (typeof options.locked === "boolean")
148
+ qs.add("wiki_page[is_locked]", options.locked);
149
+ if (typeof options.forceOverwrite === "boolean")
150
+ qs.add("wiki_page[skip_secondary_validations]", options.forceOverwrite);
151
+ if (typeof options.reason === "string")
152
+ qs.add("wiki_page[edit_reason]", options.reason);
153
+ const res = await this.main.request.patch(`/wiki_pages/${id}.json`, qs.build());
154
+ return new WikiPage_1.default(this.main, res);
155
+ }
156
+ /**
157
+ * Delete a wiki page
158
+ *
159
+ * * Requires Authentication
160
+ *
161
+ * * Requires Janitor
162
+ *
163
+ * @param {number} id - the id of the wiki page to delete
164
+ * @returns {Promise<null>}
165
+ */
166
+ async delete(id) {
167
+ this.main.request.authCheck.call(this, "WikiPages#delete");
168
+ return this.main.request.delete(`/wiki_pages/${id}.json`);
169
+ }
170
+ /**
171
+ * Revert a wiki page to a previous version
172
+ *
173
+ * * Requires Authentication
174
+ *
175
+ * @param {number} id - the id of the wiki page to revert
176
+ * @param {number} versionID - the version id to revert to (see history)
177
+ */
178
+ async revert(id, versionID) {
179
+ this.main.request.authCheck.call(this, "WikiPages#revert");
180
+ const qs = new FormHelper_1.default()
181
+ .add("version_id", versionID);
182
+ return this.main.request.put(`/wiki_pages/${id}/revert.json`, qs.build());
183
+ }
184
+ /**
185
+ * Search the wiki page history
186
+ *
187
+ * @param {object} [options]
188
+ * @param {number} [options.wikiPage] - narrow the results by the wiki page id
189
+ * @param {(number |`${"" | "a" | "b"}${number}`)} [options.page] - page of results to get
190
+ * @param {number} [options.limit] - limit the maximum amount of results returned
191
+ * @param
192
+ * @returns {Promise<Array<WikiPageHistory>>}
193
+ */
194
+ async searchHistory(options) {
195
+ options = options ?? {};
196
+ const qs = new FormHelper_1.default();
197
+ if (typeof options.wikiPage === "number")
198
+ qs.add("search[wiki_page_id]", options.wikiPage);
199
+ if (typeof options.page !== "undefined")
200
+ qs.add("page", options.page);
201
+ if (typeof options.limit === "number")
202
+ qs.add("limit", options.limit);
203
+ const res = await this.main.request.get(`/wiki_page_versions.json?${qs.build()}`);
204
+ return res.map(info => new WikiPageHistory_1.default(this.main, info));
205
+ }
206
+ }
207
+ exports.default = WikiPages;
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2lraVBhZ2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZHVsZXMvV2lraVBhZ2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0Esc0VBQThDO0FBVTlDLG9FQUE0QztBQUM1QywyREFBa0Q7QUFDbEQsb0ZBQTREO0FBRTVELE1BQXFCLFNBQVM7SUFDWixJQUFJLENBQWdCO0lBQ3BCLElBQUksQ0FBTztJQUM1QixZQUFZLElBQVU7UUFDckIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRTtZQUM3QixJQUFJLEVBQUU7Z0JBQ0wsR0FBRztvQkFDRixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUNuTCxDQUFDO2dCQUNELFlBQVksRUFBRSxLQUFLO2dCQUNuQixVQUFVLEVBQUUsS0FBSzthQUNqQjtZQUNELElBQUksRUFBRTtnQkFDTCxLQUFLLEVBQUUsSUFBSTtnQkFDWCxZQUFZLEVBQUUsS0FBSztnQkFDbkIsVUFBVSxFQUFFLEtBQUs7Z0JBQ2pCLFFBQVEsRUFBRSxLQUFLO2FBQ2Y7U0FDRCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQVU7UUFDbkIsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQXFCLGVBQWUsRUFB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
@@ -0,0 +1,109 @@
1
+ import User from "./User";
2
+ import type Post from "./Post";
3
+ import type E621 from "..";
4
+ import type { AuthenticatedUserProperties, DefaultImageSize, UploadLimit, EditSelfUserOptions } from "../types";
5
+ export default class AuthenticatedUser extends User implements AuthenticatedUserProperties {
6
+ show_avatars: boolean;
7
+ blacklist_avatars: boolean;
8
+ blacklist_users: boolean;
9
+ description_collapsed_initially: boolean;
10
+ hide_comments: boolean;
11
+ show_hidden_comments: boolean;
12
+ show_post_statistics: boolean;
13
+ has_mail: boolean;
14
+ receive_email_notifications: boolean;
15
+ enable_keyboard_navigation: boolean;
16
+ enable_privacy_mode: boolean;
17
+ style_usernames: boolean;
18
+ enable_auto_complete: boolean;
19
+ has_saved_searches: boolean;
20
+ disable_cropped_thumbnails: boolean;
21
+ disable_mobile_gestures: boolean;
22
+ enable_safe_mode: boolean;
23
+ disable_responsive_mode: boolean;
24
+ disable_post_tooltips: boolean;
25
+ no_flagging: boolean;
26
+ no_feedback: boolean;
27
+ disable_user_dmails: boolean;
28
+ enable_compact_uploader: boolean;
29
+ updated_at: string;
30
+ email: string;
31
+ last_logged_in_at: string;
32
+ last_forum_read_at: string | null;
33
+ recent_tags: string | null;
34
+ comment_threshold: number;
35
+ default_image_size: DefaultImageSize;
36
+ favorite_tags: string | null;
37
+ blacklisted_tags: string;
38
+ time_zone: string;
39
+ per_page: number;
40
+ custom_style: string | null;
41
+ favorite_count: number;
42
+ api_regen_multiplier: number;
43
+ api_burst_limit: number;
44
+ remaining_api_limit: number;
45
+ statement_timeout: number;
46
+ favorite_limit: number;
47
+ tag_query_limit: number;
48
+ constructor(main: E621, info: AuthenticatedUserProperties);
49
+ /**
50
+ * Edit the authenticated user
51
+ *
52
+ * * Requires Authentication
53
+ *
54
+ * @param {object} options
55
+ * @param {(number | null)} [options.avatarID] - post id to use as avatar
56
+ * @param {string} [options.about] - about section
57
+ * @param {string} [options.artinfo] - commissions section
58
+ * @param {Timezones} [options.timezone] - timezone
59
+ * @param {boolean} [options.receiveEmailNotifications] - if you should receive notifications via email
60
+ * @param {number} [options.commentThreshold] - the threshold at which comments should be hidden (usually negative)
61
+ * @param {DefaultImageSize} [options.defaultImageSize] - default image display size
62
+ * @param {number} [options.postsPerPage] - default posts per page, between 25 and 250
63
+ * @param {boolean} [options.safeMode] - toggle safe mode
64
+ * @param {(Array<string> | string)} [options.blacklistedTags] - the list of tags to hide in searches
65
+ * @param {boolean} [options.blacklistUsers] - hide things from users that have been blocked from the site
66
+ * @param {boolean} [options.coloredUsernames] - Color each user's name depending on their level. See the [legend](https://e621.net/wiki_pages/e621:colored_usernames) for what the colors are.
67
+ * @param {boolean} [options.enableKeyboardShortcuts] - Enables the use of keyboard shortcuts for a majority of site actions related to posts. A list of keyboard shortcuts is available [here](https://e621.net/static/keyboard_shortcuts).
68
+ * @param {boolean} [options.enableAutoComplete] - Enables auto-completion on most tag and user entry fields.
69
+ * @param {boolean} [options.enablePrivacyMode] - Makes a cursory effort to prevent showing your favorites to others users. Has not been well tested.
70
+ * @param {boolean} [options.enablePostStatistics] - Show post statistics below posts on search pages.
71
+ * @param {boolean} [options.descriptionCollapsed] - Don't expand post descriptions on page load.
72
+ * @param {boolean} [options.hideComments] - Do not show the comments section on post pages.
73
+ * @param {boolean} [options.disableCroppedThumbnails] - Prevent other users from sending you DMails. You will be prevented from sending DMails to non-staff members while this option is enabled. Staff are always allowed to send you DMails.
74
+ * @param {boolean} [options.showOwnHiddenComments] - Disables displaying cropped thumbnails on the mobile layout of the site in favor of scaled thumbnails. Has no effect on the desktop site.
75
+ * @param {boolean} [options.enableCompactUploader] - Show your own hidden comments on comment pages.
76
+ * @param {string} [options.dmailFilter] - A list of banned words (space delimited). Any dmail you receive with a banned word will automatically be deleted.
77
+ * @param {string} [options.frequentTags] - A list of tags that you use often. They will appear when using the list of Related Tags.
78
+ * @param {boolean} [options.disableResponsiveMode] - Disable alternative layout for mobile and tablet.
79
+ * @param {string} [options.customCSSStyle] - Style to apply to the whole site.
80
+ * @returns {Promise<null>}
81
+ */
82
+ edit(options: EditSelfUserOptions): Promise<null>;
83
+ /**
84
+ * Add a favorite
85
+ *
86
+ * * Requires Authentication
87
+ *
88
+ * @param {number} id - the id of the post to favorite
89
+ * @returns {Promise<Post>}
90
+ */
91
+ addFavorite(id: number): Promise<Post>;
92
+ /**
93
+ * Remove a favorite
94
+ *
95
+ * * Requires Authentication
96
+ *
97
+ * @param {number} id - the id of the post to unfavorite
98
+ * @returns {Promise<null>}
99
+ */
100
+ removeFavorite(id: number): Promise<null>;
101
+ /**
102
+ * Get the authenticated user's /users/upload_limit (AuthenticatedUser specific properties)
103
+ *
104
+ * * Authentication Required
105
+ *
106
+ * @returns {Promise<UploadLimit>}
107
+ */
108
+ getUploadLimit(): Promise<UploadLimit>;
109
+ }
@@ -0,0 +1,128 @@
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 User_1 = __importDefault(require("./User"));
7
+ class AuthenticatedUser extends User_1.default {
8
+ show_avatars;
9
+ blacklist_avatars;
10
+ blacklist_users;
11
+ description_collapsed_initially;
12
+ hide_comments;
13
+ show_hidden_comments;
14
+ show_post_statistics;
15
+ has_mail;
16
+ receive_email_notifications;
17
+ enable_keyboard_navigation;
18
+ enable_privacy_mode;
19
+ style_usernames;
20
+ enable_auto_complete;
21
+ has_saved_searches;
22
+ disable_cropped_thumbnails;
23
+ disable_mobile_gestures;
24
+ enable_safe_mode;
25
+ disable_responsive_mode;
26
+ disable_post_tooltips;
27
+ no_flagging;
28
+ no_feedback;
29
+ disable_user_dmails;
30
+ enable_compact_uploader;
31
+ updated_at;
32
+ email;
33
+ last_logged_in_at;
34
+ last_forum_read_at;
35
+ recent_tags;
36
+ comment_threshold;
37
+ default_image_size;
38
+ favorite_tags;
39
+ blacklisted_tags;
40
+ time_zone;
41
+ per_page;
42
+ custom_style;
43
+ favorite_count;
44
+ api_regen_multiplier;
45
+ api_burst_limit;
46
+ remaining_api_limit;
47
+ statement_timeout;
48
+ favorite_limit;
49
+ tag_query_limit;
50
+ constructor(main, info) {
51
+ super(main, info);
52
+ Object.assign(this, info);
53
+ }
54
+ /**
55
+ * Edit the authenticated user
56
+ *
57
+ * * Requires Authentication
58
+ *
59
+ * @param {object} options
60
+ * @param {(number | null)} [options.avatarID] - post id to use as avatar
61
+ * @param {string} [options.about] - about section
62
+ * @param {string} [options.artinfo] - commissions section
63
+ * @param {Timezones} [options.timezone] - timezone
64
+ * @param {boolean} [options.receiveEmailNotifications] - if you should receive notifications via email
65
+ * @param {number} [options.commentThreshold] - the threshold at which comments should be hidden (usually negative)
66
+ * @param {DefaultImageSize} [options.defaultImageSize] - default image display size
67
+ * @param {number} [options.postsPerPage] - default posts per page, between 25 and 250
68
+ * @param {boolean} [options.safeMode] - toggle safe mode
69
+ * @param {(Array<string> | string)} [options.blacklistedTags] - the list of tags to hide in searches
70
+ * @param {boolean} [options.blacklistUsers] - hide things from users that have been blocked from the site
71
+ * @param {boolean} [options.coloredUsernames] - Color each user's name depending on their level. See the [legend](https://e621.net/wiki_pages/e621:colored_usernames) for what the colors are.
72
+ * @param {boolean} [options.enableKeyboardShortcuts] - Enables the use of keyboard shortcuts for a majority of site actions related to posts. A list of keyboard shortcuts is available [here](https://e621.net/static/keyboard_shortcuts).
73
+ * @param {boolean} [options.enableAutoComplete] - Enables auto-completion on most tag and user entry fields.
74
+ * @param {boolean} [options.enablePrivacyMode] - Makes a cursory effort to prevent showing your favorites to others users. Has not been well tested.
75
+ * @param {boolean} [options.enablePostStatistics] - Show post statistics below posts on search pages.
76
+ * @param {boolean} [options.descriptionCollapsed] - Don't expand post descriptions on page load.
77
+ * @param {boolean} [options.hideComments] - Do not show the comments section on post pages.
78
+ * @param {boolean} [options.disableCroppedThumbnails] - Prevent other users from sending you DMails. You will be prevented from sending DMails to non-staff members while this option is enabled. Staff are always allowed to send you DMails.
79
+ * @param {boolean} [options.showOwnHiddenComments] - Disables displaying cropped thumbnails on the mobile layout of the site in favor of scaled thumbnails. Has no effect on the desktop site.
80
+ * @param {boolean} [options.enableCompactUploader] - Show your own hidden comments on comment pages.
81
+ * @param {string} [options.dmailFilter] - A list of banned words (space delimited). Any dmail you receive with a banned word will automatically be deleted.
82
+ * @param {string} [options.frequentTags] - A list of tags that you use often. They will appear when using the list of Related Tags.
83
+ * @param {boolean} [options.disableResponsiveMode] - Disable alternative layout for mobile and tablet.
84
+ * @param {string} [options.customCSSStyle] - Style to apply to the whole site.
85
+ * @returns {Promise<null>}
86
+ */
87
+ async edit(options) {
88
+ this.main.request.authCheck("AuthenticatedUser#edit");
89
+ return this.main.users.editSelf(options);
90
+ }
91
+ /**
92
+ * Add a favorite
93
+ *
94
+ * * Requires Authentication
95
+ *
96
+ * @param {number} id - the id of the post to favorite
97
+ * @returns {Promise<Post>}
98
+ */
99
+ async addFavorite(id) {
100
+ this.main.request.authCheck("AuthenticatedUser#addFavorite");
101
+ return this.main.users.addFavorite(id);
102
+ }
103
+ /**
104
+ * Remove a favorite
105
+ *
106
+ * * Requires Authentication
107
+ *
108
+ * @param {number} id - the id of the post to unfavorite
109
+ * @returns {Promise<null>}
110
+ */
111
+ async removeFavorite(id) {
112
+ this.main.request.authCheck("AuthenticatedUser#removeFavorite");
113
+ return this.main.users.removeFavorite(id);
114
+ }
115
+ /**
116
+ * Get the authenticated user's /users/upload_limit (AuthenticatedUser specific properties)
117
+ *
118
+ * * Authentication Required
119
+ *
120
+ * @returns {Promise<UploadLimit>}
121
+ */
122
+ async getUploadLimit() {
123
+ this.main.request.authCheck("AuthenticatedUser#getUploadLimit");
124
+ return this.main.users.getUploadLimit();
125
+ }
126
+ }
127
+ exports.default = AuthenticatedUser;
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXV0aGVudGljYXRlZFVzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RydWN0dXJlcy9BdXRoZW50aWNhdGVkVXNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGtEQUEwQjtBQVcxQixNQUFxQixpQkFBa0IsU0FBUSxjQUFJO0lBQ2xELFlBQVksQ0FBVTtJQUN0QixpQkFBaUIsQ0FBVTtJQUMzQixlQUFlLENBQVU7SUFDekIsK0JBQStCLENBQVU7SUFDekMsYUFBYSxDQUFVO0lBQ3ZCLG9CQUFvQixDQUFVO0lBQzlCLG9CQUFvQixDQUFVO0lBQzlCLFFBQVEsQ0FBVTtJQUNsQiwyQkFBMkIsQ0FBVTtJQUNyQywwQkFBMEIsQ0FBVTtJQUNwQyxtQkFBbUIsQ0FBVTtJQUM3QixlQUFlLENBQVU7SUFDekIsb0JBQW9CLENBQVU7SUFDOUIsa0JBQWtCLENBQVU7SUFDNUIsMEJBQTBCLENBQVU7SUFDcEMsdUJBQXVCLENBQVU7SUFDakMsZ0JBQWdCLENBQVU7SUFDMUIsdUJBQXVCLENBQVU7SUFDakMscUJBQXFCLENBQVU7SUFDL0IsV0FBVyxDQUFVO0lBQ3JCLFdBQVcsQ0FBVTtJQUNyQixtQkFBbUIsQ0FBVTtJQUM3Qix1QkFBdUIsQ0FBVTtJQUNqQyxVQUFVLENBQVM7SUFDbkIsS0FBSyxDQUFTO0lBQ2QsaUJBQWlCLENBQVM7SUFDMUIsa0JBQWtCLENBQWdCO0lBQ2xDLFdBQVcsQ0FBZ0I7SUFDM0IsaUJBQWlCLENBQVM7SUFDMUIsa0JBQWtCLENBQW1CO0lBQ3JDLGFBQWEsQ0FBZ0I7SUFDN0IsZ0JBQWdCLENBQVM7SUFDekIsU0FBUyxDQUFTO0lBQ2xCLFFBQVEsQ0FBUztJQUNqQixZQUFZLENBQWdCO0lBQzVCLGNBQWMsQ0FBUztJQUN2QixvQkFBb0IsQ0FBUztJQUM3QixlQUFlLENBQVM7SUFDeEIsbUJBQW1CLENBQVM7SUFDNUIsaUJBQWlCLENBQVM7SUFDMUIsY0FBYyxDQUFTO0lBQ3ZCLGVBQWUsQ0FBUztJQUN4QixZQUFZLElBQVUsRUFBRSxJQUFpQztRQUN4RCxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQ0c7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQTRCO1FBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFVO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQzdELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FBQyxFQUFVO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQ2hFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsY0FBYztRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUNoRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3pDLENBQUM7Q0FDRDtBQTNIRCxvQ0EySEMifQ==
@@ -0,0 +1,85 @@
1
+ import type Post from "./Post";
2
+ import type PoolHistory from "./PoolHistory";
3
+ import type { PoolProperties, PoolCategory, ModifyPoolOptions, SearchPoolHistoryOptions } from "../types";
4
+ import type E621 from "..";
5
+ export default class Pool implements PoolProperties {
6
+ private main;
7
+ id: number;
8
+ name: string;
9
+ created_at: string;
10
+ updated_at: string;
11
+ creator_id: number;
12
+ creator_name: string;
13
+ is_active: boolean;
14
+ category: PoolCategory;
15
+ is_deleted: boolean;
16
+ post_ids: Array<number>;
17
+ post_count: number;
18
+ constructor(main: E621, info: PoolProperties);
19
+ /**
20
+ * Get the post objects for the posts in this set
21
+ *
22
+ * @returns {Promise<Array<Post>>}
23
+ */
24
+ getPosts(): Promise<Post[]>;
25
+ /**
26
+ * Add a post to this pool
27
+ *
28
+ * * Requires Authentication
29
+ *
30
+ * @param {number} id - the id of the post to add
31
+ * @returns {Promise<Pool>}
32
+ */
33
+ addPost(id: number): Promise<import("./PostSet").default>;
34
+ /**
35
+ * Remove a post from this pool
36
+ *
37
+ * * Requires Authentication
38
+ *
39
+ * @param {number} id - the id of the post to remove
40
+ * @returns {Promise<Pool>}
41
+ */
42
+ removePost(id: number): Promise<import("./PostSet").default>;
43
+ /**
44
+ * modify this pool
45
+ *
46
+ * * Requires Authentication
47
+ *
48
+ * @param {object} options
49
+ * @param {string} [options.name] - the name of the pool
50
+ * @param {string} [options.description] - the description of the pool
51
+ * @param {Array<number>} [options.posts] - the posts to include in the pool (this will override all currently included posts)
52
+ * @param {boolean} [options.category] - the category of the pool
53
+ * @param {boolean} [options.active] - if the pool is active
54
+ * @returns {Promise<Pool>}
55
+ */
56
+ modify(options: ModifyPoolOptions): Promise<Pool>;
57
+ /**
58
+ * Delete this pool
59
+ *
60
+ * * Requires Authentication
61
+ *
62
+ * * Requires Janitor
63
+ *
64
+ * @returns {Promise<null>}
65
+ */
66
+ delete(): Promise<null>;
67
+ /**
68
+ * Revert this pool to a previous version
69
+ *
70
+ * * Requires Authentication
71
+ *
72
+ * @param {number} versionID - the version id to revert to (see history)
73
+ */
74
+ revert(versionID: number): Promise<null>;
75
+ /**
76
+ * Search this pool's history
77
+ *
78
+ * @param {object} [options]
79
+ * @param {number} [options.page] - page of results to get
80
+ * @param {number} [options.limit] - limit the maximum amount of results returned
81
+ * @param
82
+ * @returns {Promise<Array<PoolHistory>>}
83
+ */
84
+ getHistory(options?: Omit<SearchPoolHistoryOptions, "pool">): Promise<PoolHistory[]>;
85
+ }
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class Pool {
4
+ main;
5
+ id;
6
+ name;
7
+ created_at;
8
+ updated_at;
9
+ creator_id;
10
+ creator_name;
11
+ is_active;
12
+ category;
13
+ is_deleted;
14
+ post_ids;
15
+ post_count;
16
+ constructor(main, info) {
17
+ Object.assign(this, info);
18
+ Object.defineProperty(this, "main", {
19
+ value: main,
20
+ configurable: false,
21
+ enumerable: false,
22
+ writable: false
23
+ });
24
+ }
25
+ /**
26
+ * Get the post objects for the posts in this set
27
+ *
28
+ * @returns {Promise<Array<Post>>}
29
+ */
30
+ async getPosts() { return this.main.posts.search({ tags: this.post_ids.map(p => `id:${p}`) }); }
31
+ /**
32
+ * Add a post to this pool
33
+ *
34
+ * * Requires Authentication
35
+ *
36
+ * @param {number} id - the id of the post to add
37
+ * @returns {Promise<Pool>}
38
+ */
39
+ async addPost(id) {
40
+ this.main.request.authCheck("Pool#addPost");
41
+ return this.main.postSets.addPost(this.id, id);
42
+ }
43
+ /**
44
+ * Remove a post from this pool
45
+ *
46
+ * * Requires Authentication
47
+ *
48
+ * @param {number} id - the id of the post to remove
49
+ * @returns {Promise<Pool>}
50
+ */
51
+ async removePost(id) {
52
+ this.main.request.authCheck("Pool#removePost");
53
+ return this.main.postSets.removePost(this.id, id);
54
+ }
55
+ /**
56
+ * modify this pool
57
+ *
58
+ * * Requires Authentication
59
+ *
60
+ * @param {object} options
61
+ * @param {string} [options.name] - the name of the pool
62
+ * @param {string} [options.description] - the description of the pool
63
+ * @param {Array<number>} [options.posts] - the posts to include in the pool (this will override all currently included posts)
64
+ * @param {boolean} [options.category] - the category of the pool
65
+ * @param {boolean} [options.active] - if the pool is active
66
+ * @returns {Promise<Pool>}
67
+ */
68
+ async modify(options) {
69
+ this.main.request.authCheck("Pool#modify");
70
+ return this.main.pools.modify(this.id, options);
71
+ }
72
+ /**
73
+ * Delete this pool
74
+ *
75
+ * * Requires Authentication
76
+ *
77
+ * * Requires Janitor
78
+ *
79
+ * @returns {Promise<null>}
80
+ */
81
+ async delete() {
82
+ this.main.request.authCheck("Pool#delete");
83
+ return this.main.pools.delete(this.id);
84
+ }
85
+ /**
86
+ * Revert this pool to a previous version
87
+ *
88
+ * * Requires Authentication
89
+ *
90
+ * @param {number} versionID - the version id to revert to (see history)
91
+ */
92
+ async revert(versionID) {
93
+ this.main.request.authCheck("Pool#revert");
94
+ return this.main.pools.revert(this.id, versionID);
95
+ }
96
+ /**
97
+ * Search this pool's history
98
+ *
99
+ * @param {object} [options]
100
+ * @param {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<PoolHistory>>}
104
+ */
105
+ async getHistory(options) {
106
+ return this.main.pools.searchHistory({ pool: this.id, ...options });
107
+ }
108
+ }
109
+ exports.default = Pool;
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdHJ1Y3R1cmVzL1Bvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFLQSxNQUFxQixJQUFJO0lBQ2hCLElBQUksQ0FBTztJQUNuQixFQUFFLENBQVM7SUFDWCxJQUFJLENBQVM7SUFDYixVQUFVLENBQVM7SUFDbkIsVUFBVSxDQUFTO0lBQ25CLFVBQVUsQ0FBUztJQUNuQixZQUFZLENBQVM7SUFDckIsU0FBUyxDQUFVO0lBQ25CLFFBQVEsQ0FBZTtJQUN2QixVQUFVLENBQVU7SUFDcEIsUUFBUSxDQUFnQjtJQUN4QixVQUFVLENBQVM7SUFDbkIsWUFBWSxJQUFVLEVBQUUsSUFBb0I7UUFDM0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ25DLEtBQUssRUFBRSxJQUFJO1lBQ1gsWUFBWSxFQUFFLEtBQUs7WUFDbkIsVUFBVSxFQUFFLEtBQUs7WUFDakIsUUFBUSxFQUFFLEtBQUs7U0FDZixDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxRQUFRLEtBQUssT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVoRzs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFVO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM1QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFVO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQy9DLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBMEI7UUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsS0FBSyxDQUFDLE1BQU07UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQWlCO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMzQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBZ0Q7UUFDaEUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDckUsQ0FBQztDQUNEO0FBaEhELHVCQWdIQyJ9