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,165 @@
1
+ import type { GenericSearchOptions } from ".";
2
+
3
+ export type Ratings = "s" | "q" | "e";
4
+ export interface PostProperties {
5
+ id: number;
6
+ created_at: string;
7
+ updated_at: string;
8
+ file: {
9
+ width: number;
10
+ height: number;
11
+ ext: string;
12
+ size: number;
13
+ md5: string;
14
+ url: string;
15
+ };
16
+ preview: {
17
+ width: number;
18
+ height: number;
19
+ url: string;
20
+ };
21
+ sample: {
22
+ has: boolean;
23
+ height: number;
24
+ width: number;
25
+ url: string;
26
+ // seems to be used for videos
27
+ alternates: Record<string, {
28
+ type: string;
29
+ height: number;
30
+ width: number;
31
+ urls: Array<string | null>;
32
+ }>;
33
+ };
34
+ score: Record<"up" | "down" | "total", number>;
35
+ tags: Record<"general" | "species" | "character" | "copyright" | "artist" | "invalid" | "lore" | "meta", Array<string>>;
36
+ locked_tags: Array<string>;
37
+ change_seq: number;
38
+ flags: Record<"pending" | "flagged" | "note_locked" | "status_locked" | "rating_locked" | "deleted", boolean>;
39
+ rating: Ratings;
40
+ fav_count: number;
41
+ sources: Array<string>;
42
+ pools: Array<number>;
43
+ relationships: {
44
+ parent_id: number | null;
45
+ has_childeren: boolean;
46
+ has_active_childeren: boolean;
47
+ childeren: Array<number>;
48
+ };
49
+ approver_id: number | null;
50
+ uploader_id: number;
51
+ description: string;
52
+ comment_count: number;
53
+ is_favorited: boolean;
54
+ has_notes: boolean;
55
+ duration: number | null;
56
+ }
57
+
58
+ export interface SearchPostsOptions extends GenericSearchOptions {
59
+ tags?: string | Array<string>;
60
+ }
61
+
62
+ export type CreatePostOptions = {
63
+ tags: Array<string> | string;
64
+ rating: Ratings;
65
+ sources?: Array<string> | string;
66
+ description?: string;
67
+ parentID?: number;
68
+ refererURL?: string;
69
+ md5Confirmation?: string;
70
+ /** requires approver */
71
+ asPending?: boolean;
72
+ /** requires privileged */
73
+ ratingLocked?: boolean;
74
+ /** requires admin */
75
+ lockedTags?: Array<string> | string;
76
+ } & ({
77
+ file: Buffer;
78
+ } | {
79
+ fileURL: string;
80
+ });
81
+
82
+ export interface NewPost {
83
+ success: true;
84
+ location: `/posts/${number}`;
85
+ post_id: number;
86
+ }
87
+
88
+ export interface ModifyPostOptions {
89
+ editReason?: string;
90
+ addTags?: Array<string> | string;
91
+ removeTags?: Array<string> | string;
92
+ addSources?: Array<string> | string;
93
+ removeSources?: Array<string> | string;
94
+ rating?: Ratings;
95
+ description?: string;
96
+ parentID?: number;
97
+ hasEmbeddedNotes?: boolean;
98
+ /** requires privileged */
99
+ ratingLocked?: boolean;
100
+ /** requires janitor */
101
+ noteLocked?: boolean;
102
+ /** requires admin */
103
+ statusLocked?: boolean;
104
+ /** requires admin */
105
+ hideFromAnonymous?: boolean;
106
+ /** requires admin */
107
+ hideFromSearch?: boolean;
108
+ /** requires janitor */
109
+ backgroundColor?: string;
110
+ /** requires admin */
111
+ lockedTags?: Array<string> | string;
112
+ }
113
+
114
+ export interface PostVoteResult {
115
+ score: number;
116
+ up: number;
117
+ down: number;
118
+ our_score: number;
119
+ }
120
+
121
+ export interface SearchPostHistoryOptions extends GenericSearchOptions {
122
+ user?: string;
123
+ userID?: number;
124
+ post?: number;
125
+ reason?: string;
126
+ description?: string;
127
+ ratingChangedTo?: Ratings;
128
+ finalRating?: Ratings;
129
+ parent?: number;
130
+ parentChangedTo?: number;
131
+ finalTags?: Array<string> |string;
132
+ addedTags?: Array<string> | string;
133
+ removedTags?: Array<string> | string;
134
+ finalLockedTags?: Array<string> | string;
135
+ addedLockedTags?: Array<string> | string;
136
+ removedLockedTags?: Array<string> | string;
137
+ source?: string;
138
+ }
139
+
140
+ export interface PostHistoryProperties {
141
+ id: number;
142
+ post_id: number;
143
+ tags: string;
144
+ updater_id: number;
145
+ updater_name: string;
146
+ updated_at: string;
147
+ rating: Ratings;
148
+ parent_id: number | null;
149
+ source: string;
150
+ description: string;
151
+ reason: string;
152
+ locked_tags: string | null;
153
+ added_tags: Array<string>;
154
+ removed_tags: Array<string>;
155
+ added_locked_tags: Array<string>;
156
+ removed_locked_tags: Array<string>;
157
+ rating_changed: boolean;
158
+ parent_changed: boolean;
159
+ source_changed: boolean;
160
+ description_changed: boolean;
161
+ version: number;
162
+ obsolete_added_tags: string;
163
+ obsolete_removed_tags: string;
164
+ unchanged_tags: string;
165
+ }
@@ -0,0 +1,27 @@
1
+ import type { GenericSearchOptions } from ".";
2
+
3
+ export type FeedbackCategories = "positive" | "neutral" | "negative";
4
+ export interface UserFeedbackProperties {
5
+ id: number;
6
+ user_id: number;
7
+ creator_id: number;
8
+ created_at: string;
9
+ body: string;
10
+ category: FeedbackCategories;
11
+ updated_at: string;
12
+ }
13
+
14
+ export interface SearchUserFeedbackOptions extends GenericSearchOptions {
15
+ username?: string;
16
+ creator?: string;
17
+ body?: string;
18
+ category?: FeedbackCategories;
19
+ }
20
+
21
+ export interface CreateUserFeedbackOptions {
22
+ username: string;
23
+ category: FeedbackCategories;
24
+ body: string;
25
+ }
26
+
27
+ export type ModifyUserFeedbackOptions = Partial<Omit<CreateUserFeedbackOptions, "user_name">>;
@@ -0,0 +1,277 @@
1
+ import type { GenericSearchOptions } from ".";
2
+
3
+ export interface UserProperties {
4
+ wiki_page_version_count: number;
5
+ artist_version_count: number;
6
+ pool_version_count: number;
7
+ forum_post_count: number;
8
+ comment_count: number;
9
+ appeal_count: number;
10
+ flag_count: number;
11
+ positive_feedback_count: number;
12
+ neutral_feedback_count: number;
13
+ negative_feedback_count: number;
14
+ upload_limit: number;
15
+ id: number;
16
+ created_at: string;
17
+ name: string;
18
+ level: number; // not hardcoded due to custom instances
19
+ base_upload_limit: number;
20
+ post_upload_count: number;
21
+ post_update_count: number;
22
+ note_update_count: number;
23
+ is_banned: boolean;
24
+ can_approve_posts: boolean;
25
+ can_upload_free: boolean;
26
+ level_string: string; // not hardcoded due to custom instances
27
+ avatar_id: number | null;
28
+ }
29
+
30
+ export type DefaultImageSize = "original" | "fit" | "fitv" | "large";
31
+ export interface AuthenticatedUserProperties extends UserProperties {
32
+ show_avatars: boolean;
33
+ blacklist_avatars: boolean;
34
+ blacklist_users: boolean;
35
+ description_collapsed_initially: boolean;
36
+ hide_comments: boolean;
37
+ show_hidden_comments: boolean;
38
+ show_post_statistics: boolean;
39
+ has_mail: boolean;
40
+ receive_email_notifications: boolean;
41
+ enable_keyboard_navigation: boolean;
42
+ enable_privacy_mode: boolean;
43
+ style_usernames: boolean;
44
+ enable_auto_complete: boolean;
45
+ has_saved_searches: boolean;
46
+ disable_cropped_thumbnails: boolean;
47
+ disable_mobile_gestures: boolean;
48
+ enable_safe_mode: boolean;
49
+ disable_responsive_mode: boolean;
50
+ disable_post_tooltips: boolean;
51
+ no_flagging: boolean;
52
+ no_feedback: boolean;
53
+ disable_user_dmails: boolean;
54
+ enable_compact_uploader: boolean;
55
+ updated_at: string;
56
+ email: string;
57
+ last_logged_in_at: string;
58
+ last_forum_read_at: string | null;
59
+ recent_tags: string | null;
60
+ comment_threshold: number;
61
+ default_image_size: DefaultImageSize; // this *can* be different on custom instances, but I doubt anyone would change these
62
+ favorite_tags: string | null;
63
+ blacklisted_tags: string;
64
+ time_zone: string;
65
+ per_page: number;
66
+ custom_style: string | null;
67
+ favorite_count: number;
68
+ api_regen_multiplier: number;
69
+ api_burst_limit: number;
70
+ remaining_api_limit: number;
71
+ statement_timeout: number;
72
+ favorite_limit: number;
73
+ tag_query_limit: number;
74
+ }
75
+
76
+ export type UploadLimit = Omit<AuthenticatedUserProperties,
77
+ "wiki_page_version_count" | "artist_version_count" | "pool_version_count" | "forum_post_count" |
78
+ "comment_count" | "appeal_count" | "flag_count" | "positive_feedback_count" |
79
+ "neutral_feedback_count" | "negative_feedback_count" | "upload_limit"
80
+ >;
81
+
82
+ export type UserOrder = "date" | "name" | "post_upload_count" | "note_count" | "post_update_count";
83
+ export interface SearchUsersOptions extends GenericSearchOptions {
84
+ /** use asterisks for wildcards */
85
+ name?: string;
86
+ /** requires elevated privileges */
87
+ email?: string;
88
+ level?: number;
89
+ minLevel?: number;
90
+ maxLevel?: number;
91
+ unrestrictedUploads?: boolean;
92
+ approver?: boolean;
93
+ order?: UserOrder;
94
+ }
95
+
96
+ export type Timezones =
97
+ "International Date Line West" | // (GMT-12:00) International Date Line West
98
+ "American Samoa" | // (GMT-11:00) American Samoa
99
+ "Midway Island" | // (GMT-11:00) Midway Island
100
+ "Hawaii" | // (GMT-10:00) Hawaii
101
+ "Alaska" | // (GMT-09:00) Alaska
102
+ "Pacific Time (US &amp; Canada)" | // (GMT-08:00) Pacific Time (US &amp; Canada)
103
+ "Tijuana" | // (GMT-08:00) Tijuana
104
+ "Arizona" | // (GMT-07:00) Arizona
105
+ "Chihuahua" | // (GMT-07:00) Chihuahua
106
+ "Mazatlan" | // (GMT-07:00) Mazatlan
107
+ "Mountain Time (US & Canada)" | // (GMT-07:00) Mountain Time (US &amp; Canada)
108
+ "Central America" | // (GMT-06:00) Central America
109
+ "Central Time (US & Canada)" | // (GMT-06:00) Central Time (US &amp; Canada)
110
+ "Guadalajara" | // (GMT-06:00) Guadalajara
111
+ "Mexico City" | // (GMT-06:00) Mexico City
112
+ "Monterrey" | // (GMT-06:00) Monterrey
113
+ "Saskatchewan" | // (GMT-06:00) Saskatchewan
114
+ "Bogota" | // (GMT-05:00) Bogota
115
+ "Eastern Time (US & Canada)" | // (GMT-05:00) Eastern Time (US &amp; Canada)
116
+ "Indiana (East)" | // (GMT-05:00) Indiana (East)
117
+ "Lima" | // (GMT-05:00) Lima
118
+ "Quito" | // (GMT-05:00) Quito
119
+ "Atlantic Time (Canada)" | // (GMT-04:00) Atlantic Time (Canada)
120
+ "Caracas" | // (GMT-04:00) Caracas
121
+ "Georgetown" | // (GMT-04:00) Georgetown
122
+ "La Paz" | // (GMT-04:00) La Paz
123
+ "Puerto Rico" | // (GMT-04:00) Puerto Rico
124
+ "Santiago" | // (GMT-04:00) Santiago
125
+ "Newfoundland" | // (GMT-03:30) Newfoundland
126
+ "Brasilia" | // (GMT-03:00) Brasilia
127
+ "Buenos Aires" | // (GMT-03:00) Buenos Aires
128
+ "Greenland" | // (GMT-03:00) Greenland
129
+ "Montevideo" | // (GMT-03:00) Montevideo
130
+ "Mid-Atlantic" | // (GMT-02:00) Mid-Atlantic
131
+ "Azores" | // (GMT-01:00) Azores
132
+ "Cape Verde Is." | // (GMT-01:00) Cape Verde Is.
133
+ "Edinburgh" | // (GMT+00:00) Edinburgh
134
+ "Lisbon" | // (GMT+00:00) Lisbon
135
+ "London" | // (GMT+00:00) London
136
+ "Monrovia" | // (GMT+00:00) Monrovia
137
+ "UTC" | // (GMT+00:00) UTC
138
+ "Amsterdam" | // (GMT+01:00) Amsterdam
139
+ "Belgrade" | // (GMT+01:00) Belgrade
140
+ "Berlin" | // (GMT+01:00) Berlin
141
+ "Bern" | // (GMT+01:00) Bern
142
+ "Bratislava" | // (GMT+01:00) Bratislava
143
+ "Brussels" | // (GMT+01:00) Brussels
144
+ "Budapest" | // (GMT+01:00) Budapest
145
+ "Casablanca" | // (GMT+01:00) Casablanca
146
+ "Copenhagen" | // (GMT+01:00) Copenhagen
147
+ "Dublin" | // (GMT+01:00) Dublin
148
+ "Ljubljana" | // (GMT+01:00) Ljubljana
149
+ "Madrid" | // (GMT+01:00) Madrid
150
+ "Paris" | // (GMT+01:00) Paris
151
+ "Prague" | // (GMT+01:00) Prague
152
+ "Rome" | // (GMT+01:00) Rome
153
+ "Sarajevo" | // (GMT+01:00) Sarajevo
154
+ "Skopje" | // (GMT+01:00) Skopje
155
+ "Stockholm" | // (GMT+01:00) Stockholm
156
+ "Vienna" | // (GMT+01:00) Vienna
157
+ "Warsaw" | // (GMT+01:00) Warsaw
158
+ "West Central Africa" | // (GMT+01:00) West Central Africa
159
+ "Zagreb" | // (GMT+01:00) Zagreb
160
+ "Zurich" | // (GMT+01:00) Zurich
161
+ "Athens" | // (GMT+02:00) Athens
162
+ "Bucharest" | // (GMT+02:00) Bucharest
163
+ "Cairo" | // (GMT+02:00) Cairo
164
+ "Harare" | // (GMT+02:00) Harare
165
+ "Helsinki" | // (GMT+02:00) Helsinki
166
+ "Jerusalem" | // (GMT+02:00) Jerusalem
167
+ "Kaliningrad" | // (GMT+02:00) Kaliningrad
168
+ "Kyiv" | // (GMT+02:00) Kyiv
169
+ "Pretoria" | // (GMT+02:00) Pretoria
170
+ "Riga" | // (GMT+02:00) Riga
171
+ "Sofia" | // (GMT+02:00) Sofia
172
+ "Tallinn" | // (GMT+02:00) Tallinn
173
+ "Vilnius" | // (GMT+02:00) Vilnius
174
+ "Baghdad" | // (GMT+03:00) Baghdad
175
+ "Istanbul" | // (GMT+03:00) Istanbul
176
+ "Kuwait" | // (GMT+03:00) Kuwait
177
+ "Minsk" | // (GMT+03:00) Minsk
178
+ "Moscow" | // (GMT+03:00) Moscow
179
+ "Nairobi" | // (GMT+03:00) Nairobi
180
+ "Riyadh" | // (GMT+03:00) Riyadh
181
+ "St. Petersburg" | // (GMT+03:00) St. Petersburg
182
+ "Volgograd" | // (GMT+03:00) Volgograd
183
+ "Tehran" | // (GMT+03:30) Tehran
184
+ "Abu Dhabi" | // (GMT+04:00) Abu Dhabi
185
+ "Baku" | // (GMT+04:00) Baku
186
+ "Muscat" | // (GMT+04:00) Muscat
187
+ "Samara" | // (GMT+04:00) Samara
188
+ "Tbilisi" | // (GMT+04:00) Tbilisi
189
+ "Yerevan" | // (GMT+04:00) Yerevan
190
+ "Kabul" | // (GMT+04:30) Kabul
191
+ "Ekaterinburg" | // (GMT+05:00) Ekaterinburg
192
+ "Islamabad" | // (GMT+05:00) Islamabad
193
+ "Karachi" | // (GMT+05:00) Karachi
194
+ "Tashkent" | // (GMT+05:00) Tashkent
195
+ "Chennai" | // (GMT+05:30) Chennai
196
+ "Kolkata" | // (GMT+05:30) Kolkata
197
+ "Mumbai" | // (GMT+05:30) Mumbai
198
+ "New Delhi" | // (GMT+05:30) New Delhi
199
+ "Sri Jayawardenepura" | // (GMT+05:30) Sri Jayawardenepura
200
+ "Kathmandu" | // (GMT+05:45) Kathmandu
201
+ "Almaty" | // (GMT+06:00) Almaty
202
+ "Astana" | // (GMT+06:00) Astana
203
+ "Dhaka" | // (GMT+06:00) Dhaka
204
+ "Urumqi" | // (GMT+06:00) Urumqi
205
+ "Rangoon" | // (GMT+06:30) Rangoon
206
+ "Bangkok" | // (GMT+07:00) Bangkok
207
+ "Hanoi" | // (GMT+07:00) Hanoi
208
+ "Jakarta" | // (GMT+07:00) Jakarta
209
+ "Krasnoyarsk" | // (GMT+07:00) Krasnoyarsk
210
+ "Novosibirsk" | // (GMT+07:00) Novosibirsk
211
+ "Beijing" | // (GMT+08:00) Beijing
212
+ "Chongqing" | // (GMT+08:00) Chongqing
213
+ "Hong Kong" | // (GMT+08:00) Hong Kong
214
+ "Irkutsk" | // (GMT+08:00) Irkutsk
215
+ "Kuala Lumpur" | // (GMT+08:00) Kuala Lumpur
216
+ "Perth" | // (GMT+08:00) Perth
217
+ "Singapore" | // (GMT+08:00) Singapore
218
+ "Taipei" | // (GMT+08:00) Taipei
219
+ "Ulaanbaatar" | // (GMT+08:00) Ulaanbaatar
220
+ "Osaka" | // (GMT+09:00) Osaka
221
+ "Sapporo" | // (GMT+09:00) Sapporo
222
+ "Seoul" | // (GMT+09:00) Seoul
223
+ "Tokyo" | // (GMT+09:00) Tokyo
224
+ "Yakutsk" | // (GMT+09:00) Yakutsk
225
+ "Adelaide" | // (GMT+09:30) Adelaide
226
+ "Darwin" | // (GMT+09:30) Darwin
227
+ "Brisbane" | // (GMT+10:00) Brisbane
228
+ "Canberra" | // (GMT+10:00) Canberra
229
+ "Guam" | // (GMT+10:00) Guam
230
+ "Hobart" | // (GMT+10:00) Hobart
231
+ "Melbourne" | // (GMT+10:00) Melbourne
232
+ "Port Moresby" | // (GMT+10:00) Port Moresby
233
+ "Sydney" | // (GMT+10:00) Sydney
234
+ "Vladivostok" | // (GMT+10:00) Vladivostok
235
+ "Magadan" | // (GMT+11:00) Magadan
236
+ "New Caledonia" | // (GMT+11:00) New Caledonia
237
+ "Solomon Is." | // (GMT+11:00) Solomon Is.
238
+ "Srednekolymsk" | // (GMT+11:00) Srednekolymsk
239
+ "Auckland" | // (GMT+12:00) Auckland
240
+ "Fiji" | // (GMT+12:00) Fiji
241
+ "Kamchatka" | // (GMT+12:00) Kamchatka
242
+ "Marshall Is." | // (GMT+12:00) Marshall Is.
243
+ "Wellington" | // (GMT+12:00) Wellington
244
+ "Chatham Is." | // (GMT+12:45) Chatham Is.
245
+ "Nuku'alofa" | // (GMT+13:00) Nuku'alofa
246
+ "Samoa" | // (GMT+13:00) Samoa
247
+ "Tokelau Is."; // (GMT+13:00) Tokelau Is.
248
+
249
+ export interface EditSelfUserOptions {
250
+ avatarID?: number | null;
251
+ about?: string;
252
+ artinfo?: string;
253
+ timezone?: Timezones;
254
+ receiveEmailNotifications?: boolean;
255
+ commentThreshold?: number;
256
+ defaultImageSize?: DefaultImageSize;
257
+ /** between 25 and 250 */
258
+ postsPerPage?: number;
259
+ safeMode: boolean;
260
+ blacklistedTags?: string | Array<string>;
261
+ blacklistUsers?: boolean;
262
+ // advanced
263
+ coloredUsernames?: boolean;
264
+ enableKeyboardShortcuts?: boolean;
265
+ enableAutoComplete?: boolean;
266
+ enablePrivacyMode?: boolean;
267
+ enablePostStatistics?: boolean;
268
+ descriptionCollapsed?: boolean;
269
+ hideComments?: boolean;
270
+ disableCroppedThumbnails?: boolean;
271
+ showOwnHiddenComments?: boolean;
272
+ enableCompactUploader?: boolean;
273
+ dmailFilter?: string;
274
+ frequentTags?: string;
275
+ disableResponsiveMode?: boolean;
276
+ customCSSStyle?: string;
277
+ }
@@ -0,0 +1,65 @@
1
+ import type { GenericSearchOptions } from ".";
2
+
3
+ export interface WikiPageProperties {
4
+ id: number;
5
+ creator_id: number;
6
+ creator_name: string;
7
+ category_name: number;
8
+ body: string;
9
+ is_locked: boolean;
10
+ created_at: string;
11
+ updated_at: string;
12
+ updater_id: number;
13
+ other_names: Array<string>;
14
+ is_deleted: boolean;
15
+ }
16
+
17
+ export type WikiPageOrder = "title" | "time" | "post_count";
18
+ export interface SearchWikiPagesOptions extends GenericSearchOptions {
19
+ title?: string;
20
+ creator?: string;
21
+ body?: string;
22
+ otherNames?: string;
23
+ hasOtherNames?: boolean;
24
+ hideDeleted?: boolean;
25
+ order?: WikiPageOrder;
26
+ }
27
+
28
+ export interface CreateWikiPageOptions {
29
+ title: string;
30
+ body: string;
31
+ /** requires janitor */
32
+ locked?: boolean;
33
+ /** requires janitor */
34
+ forceOverwrite?: boolean;
35
+ reason?: string;
36
+ }
37
+
38
+ export interface ModifyWikiPageOptions {
39
+ /** requires janitor */
40
+ title?: string;
41
+ body?: string;
42
+ /** requires janitor */
43
+ locked?: boolean;
44
+ /** requires janitor */
45
+ forceOverwrite?: boolean;
46
+ reason?: string;
47
+ }
48
+
49
+ export interface WikiPageHistoryProperties {
50
+ id: number;
51
+ wiki_page_id: number;
52
+ updater_id: number;
53
+ title: string;
54
+ body: string;
55
+ is_locked: boolean;
56
+ created_at: string;
57
+ updated_at: string;
58
+ other_names: Array<string>;
59
+ is_deleted: boolean;
60
+ reason: string;
61
+ }
62
+
63
+ export interface SearchWikiPageHistoryOptions extends GenericSearchOptions {
64
+ wikiPage?: number;
65
+ }
@@ -0,0 +1,9 @@
1
+ export default class FormHelper {
2
+ private parts;
3
+ add(value: string): this;
4
+ add(name: string, value: string | number | boolean): this;
5
+ build(): string;
6
+ getRaw(): string[];
7
+ get2d(): string[][];
8
+ toString(): string;
9
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class FormHelper {
4
+ parts = [];
5
+ add(first, second) {
6
+ this.parts.push(!second ? encodeURIComponent(first) : `${first}=${encodeURIComponent(second)}`);
7
+ return this;
8
+ }
9
+ build() { return this.parts.join("&"); }
10
+ getRaw() { return Array.from(this.parts); }
11
+ get2d() { return Array.from(this.parts).map(p => p.split("=")); }
12
+ toString() { return this.build.call(this); }
13
+ }
14
+ exports.default = FormHelper;
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybUhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlsL0Zvcm1IZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFxQixVQUFVO0lBQ3RCLEtBQUssR0FBa0IsRUFBRSxDQUFDO0lBSWxDLEdBQUcsQ0FBQyxLQUFhLEVBQUUsTUFBa0M7UUFDcEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEcsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQsS0FBSyxLQUFLLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sS0FBSyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxLQUFLLEtBQUssT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsS0FBSyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUM1QztBQWRELDZCQWNDIn0=
@@ -0,0 +1,7 @@
1
+ /// <reference types="node" />
2
+ export default class MultipartData {
3
+ boundary: string;
4
+ bufs: Array<Buffer>;
5
+ attach(fieldName: string, data: any, filename?: string): void;
6
+ finish(): Buffer[];
7
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any, @typescript-eslint/restrict-plus-operands */
3
+ // lovingly borrowed from Eris
4
+ // https://github.com/abalabahaha/eris/blob/master/lib/util/MultipartData.js
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ class MultipartData {
7
+ boundary = "----E621Multipart";
8
+ bufs = [];
9
+ attach(fieldName, data, filename) {
10
+ if (data === undefined) {
11
+ return;
12
+ }
13
+ let str = "\r\n--" + this.boundary + "\r\nContent-Disposition: form-data; name=\"" + fieldName + "\"";
14
+ if (filename) {
15
+ str += "; filename=\"" + filename + "\"";
16
+ }
17
+ if (ArrayBuffer.isView(data)) {
18
+ str += "\r\nContent-Type: application/octet-stream";
19
+ if (!(data instanceof Uint8Array)) {
20
+ data = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
21
+ }
22
+ }
23
+ else if (typeof data === "object") {
24
+ str += "\r\nContent-Type: application/json";
25
+ data = Buffer.from(JSON.stringify(data));
26
+ }
27
+ else {
28
+ data = Buffer.from("" + data);
29
+ }
30
+ this.bufs.push(Buffer.from(str + "\r\n\r\n"));
31
+ this.bufs.push(data);
32
+ }
33
+ finish() {
34
+ this.bufs.push(Buffer.from("\r\n--" + this.boundary + "--"));
35
+ return this.bufs;
36
+ }
37
+ }
38
+ exports.default = MultipartData;
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTXVsdGlwYXJ0RGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlsL011bHRpcGFydERhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHlJQUF5STtBQUN6SSw4QkFBOEI7QUFDOUIsNEVBQTRFOztBQUU1RSxNQUFxQixhQUFhO0lBQ2pDLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQztJQUMvQixJQUFJLEdBQWtCLEVBQUUsQ0FBQztJQUV6QixNQUFNLENBQUMsU0FBaUIsRUFBRSxJQUFTLEVBQUUsUUFBaUI7UUFDckQsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLE9BQU87U0FDUDtRQUNELElBQUksR0FBRyxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLDZDQUE2QyxHQUFHLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEcsSUFBSSxRQUFRLEVBQUU7WUFDYixHQUFHLElBQUksZUFBZSxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUM7U0FDekM7UUFDRCxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDN0IsR0FBRyxJQUFJLDRDQUE0QyxDQUFDO1lBQ3BELElBQUksQ0FBQyxDQUFDLElBQUksWUFBWSxVQUFVLENBQUMsRUFBRTtnQkFDbEMsSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDckU7U0FDRDthQUFNLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQ3BDLEdBQUcsSUFBSSxvQ0FBb0MsQ0FBQztZQUM1QyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDekM7YUFBTTtZQUNOLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztTQUM5QjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELE1BQU07UUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDN0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ2xCLENBQUM7Q0FDRDtBQS9CRCxnQ0ErQkMifQ==
@@ -0,0 +1,37 @@
1
+ /// <reference types="node" />
2
+ import type FormHelper from "./FormHelper";
3
+ import type E621 from "..";
4
+ export declare class APIError extends Error {
5
+ name: string;
6
+ type: "UNEXPECTED" | "PARSE" | "UNKNOWN";
7
+ statusCode: number;
8
+ statusMessage: string;
9
+ method: string;
10
+ path: string;
11
+ reqBody: unknown | null;
12
+ resBody: unknown | null;
13
+ constructor(type: APIError["type"], statusCode: number, statusMessage: string, method: string, path: string, reqBody: unknown | null, resBody: unknown | null);
14
+ }
15
+ export default class RequestHandler {
16
+ private readonly auth;
17
+ private readonly main;
18
+ constructor(main: E621);
19
+ authCheck(func: string, error?: boolean): boolean;
20
+ get<T = unknown>(path: string): Promise<T | null>;
21
+ post<T = unknown>(path: string, body?: string): Promise<T | null>;
22
+ postWithFile<T = unknown>(path: string, body: FormHelper, files: Array<{
23
+ content: Buffer;
24
+ name: string;
25
+ }>): Promise<T | null>;
26
+ patch<T = unknown>(path: string, body?: string): Promise<T | null>;
27
+ put<T = unknown>(path: string, body?: string): Promise<T | null>;
28
+ delete<T = unknown>(path: string, body?: string): Promise<T | null>;
29
+ other<T = unknown>(method: string, path: string, body?: string): Promise<T | null>;
30
+ otherWithFile<T = unknown>(method: string, path: string, body: FormHelper, files: Array<{
31
+ content: Buffer;
32
+ name: string;
33
+ }>): Promise<T | null>;
34
+ get instanceURL(): string;
35
+ get deletedImageURL(): string;
36
+ constructURL(md5: string, type: "original" | "preview" | "sample", ext?: string): string;
37
+ }