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.
- package/.node-version +1 -0
- package/README.md +116 -187
- package/build/package.json +14 -11
- package/build/src/index.d.ts +28 -295
- package/build/src/index.js +83 -442
- package/build/src/modules/Pools.d.ts +120 -0
- package/build/src/modules/Pools.js +247 -0
- package/build/src/modules/PostSets.d.ts +88 -0
- package/build/src/modules/PostSets.js +182 -0
- package/build/src/modules/Posts.d.ts +124 -0
- package/build/src/modules/Posts.js +323 -0
- package/build/src/modules/UserFeedback.d.ts +66 -0
- package/build/src/modules/UserFeedback.js +134 -0
- package/build/src/modules/Users.d.ts +110 -0
- package/build/src/modules/Users.js +248 -0
- package/build/src/modules/WikiPages.d.ts +99 -0
- package/build/src/modules/WikiPages.js +208 -0
- package/build/src/structures/AuthenticatedUser.d.ts +109 -0
- package/build/src/structures/AuthenticatedUser.js +128 -0
- package/build/src/structures/Pool.d.ts +85 -0
- package/build/src/structures/Pool.js +110 -0
- package/build/src/structures/PoolHistory.d.ts +42 -0
- package/build/src/structures/PoolHistory.js +53 -0
- package/build/src/structures/Post.d.ts +147 -0
- package/build/src/structures/Post.js +155 -0
- package/build/src/structures/PostHistory.d.ts +52 -0
- package/build/src/structures/PostHistory.js +93 -0
- package/build/src/structures/PostSet.d.ts +71 -0
- package/build/src/structures/PostSet.js +91 -0
- package/build/src/structures/User.d.ts +62 -0
- package/build/src/structures/User.js +80 -0
- package/build/src/structures/WikiPage.d.ts +16 -0
- package/build/src/structures/WikiPage.js +26 -0
- package/build/src/structures/WikiPageHistory.d.ts +37 -0
- package/build/src/structures/WikiPageHistory.js +49 -0
- package/build/src/types/index.d.ts +92 -0
- package/build/src/types/pools.d.ts +60 -0
- package/build/src/types/post_sets.d.ts +33 -0
- package/build/src/types/posts.d.ts +165 -0
- package/build/src/types/user_feedback.d.ts +27 -0
- package/build/src/types/users.d.ts +277 -0
- package/build/src/types/wiki_pages.d.ts +65 -0
- package/build/src/util/FormHelper.d.ts +9 -0
- package/build/src/util/FormHelper.js +15 -0
- package/build/src/util/MultipartData.d.ts +7 -0
- package/build/src/util/MultipartData.js +39 -0
- package/build/src/util/RequestHandler.d.ts +37 -0
- package/build/src/util/RequestHandler.js +311 -0
- package/package.json +14 -11
- 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
|