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,311 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.APIError = void 0;
26
+ const MultipartData_1 = __importDefault(require("./MultipartData"));
27
+ const http = __importStar(require("http"));
28
+ const https = __importStar(require("https"));
29
+ class APIError extends Error {
30
+ name = "APIError";
31
+ type;
32
+ statusCode;
33
+ statusMessage;
34
+ method;
35
+ path;
36
+ reqBody;
37
+ resBody;
38
+ constructor(type, statusCode, statusMessage, method, path, reqBody, resBody) {
39
+ if (type === "UNEXPECTED")
40
+ super(`Unexpected ${statusCode} ${statusMessage} on "${method.toUpperCase()} ${path}"`);
41
+ else if (type === "PARSE")
42
+ super(`Parse Error on "${method.toUpperCase()} ${path}"`);
43
+ else
44
+ super(`Unknown Error on "${method.toUpperCase()} ${path}" (${statusCode} ${statusMessage})`);
45
+ this.name = `APIError[${type || "UNKNOWN"}]`;
46
+ this.type = type;
47
+ this.statusCode = statusCode;
48
+ this.statusMessage = statusMessage;
49
+ this.method = method;
50
+ this.path = path;
51
+ this.reqBody = reqBody;
52
+ this.resBody = resBody;
53
+ }
54
+ }
55
+ exports.APIError = APIError;
56
+ class RequestHandler {
57
+ auth;
58
+ main;
59
+ constructor(main) {
60
+ Object.defineProperties(this, {
61
+ auth: {
62
+ get() {
63
+ return !this.main.options.authUser || !this.main.options.authKey ? null : `Basic ${Buffer.from(`${this.main.options.authUser}:${this.main.options.authKey}`).toString("base64")}`;
64
+ },
65
+ configurable: false,
66
+ enumerable: false
67
+ },
68
+ main: {
69
+ value: main,
70
+ configurable: false,
71
+ enumerable: false,
72
+ writable: false
73
+ }
74
+ });
75
+ }
76
+ authCheck(func, error = true) {
77
+ if (this.auth === null) {
78
+ if (error)
79
+ throw new Error(`Authentication is required to use ${func}`);
80
+ else
81
+ return false;
82
+ }
83
+ else
84
+ return true;
85
+ }
86
+ // null = 204 No Content
87
+ async get(path) {
88
+ return new Promise((resolve, reject) => {
89
+ const r = (this.main.options.instanceSSL ? https : http)
90
+ .request({
91
+ method: "GET",
92
+ timeout: this.main.options.requestTimeout * 1000,
93
+ hostname: this.main.options.instanceHost,
94
+ port: this.main.options.instancePort,
95
+ path,
96
+ headers: {
97
+ "User-Agent": this.main.options.userAgent,
98
+ "Host": this.main.options.instanceHost,
99
+ ...(this.auth === null ? {} : {
100
+ Authorization: this.auth
101
+ })
102
+ }
103
+ }, (req) => {
104
+ const data = [];
105
+ req
106
+ .on("error", (err) => reject(err))
107
+ .on("data", (d) => data.push(d))
108
+ .on("end", () => {
109
+ if (!req.statusCode || !req.statusMessage)
110
+ reject(new Error("No Status Information"));
111
+ if (req.statusCode === 204)
112
+ return resolve(null);
113
+ else if (req.statusCode === 200 || req.statusCode === 201) {
114
+ try {
115
+ resolve(JSON.parse(Buffer.concat(data).toString()));
116
+ }
117
+ catch {
118
+ reject(new APIError("PARSE", req.statusCode, req.statusMessage, "GET", path, null, Buffer.concat(data).toString()));
119
+ }
120
+ }
121
+ else {
122
+ let d;
123
+ try {
124
+ d = Buffer.concat(data).toString();
125
+ d = JSON.parse(String(d));
126
+ }
127
+ catch {
128
+ // ignore
129
+ }
130
+ reject(new APIError("UNEXPECTED", req.statusCode, req.statusMessage, "GET", path, null, d));
131
+ }
132
+ });
133
+ })
134
+ .setTimeout(this.main.options.requestTimeout * 1000, () => {
135
+ r.destroy(new Error(`Request Went Over The Limit Of ${this.main.options.requestTimeout * 1000}ms`));
136
+ });
137
+ r.end();
138
+ });
139
+ }
140
+ async post(path, body) { return this.other("POST", path, body); }
141
+ async postWithFile(path, body, files) { return this.otherWithFile("POST", path, body, files); }
142
+ async patch(path, body) { return this.other("PATCH", path, body); }
143
+ async put(path, body) { return this.other("PUT", path, body); }
144
+ async delete(path, body) { return this.other("DELETE", path, body); }
145
+ async other(method, path, body) {
146
+ return new Promise((resolve, reject) => {
147
+ const r = (this.main.options.instanceSSL ? https : http)
148
+ .request({
149
+ method,
150
+ timeout: this.main.options.requestTimeout * 1000,
151
+ hostname: this.main.options.instanceHost,
152
+ port: this.main.options.instancePort,
153
+ path,
154
+ headers: {
155
+ "User-Agent": this.main.options.userAgent,
156
+ "Content-Type": "application/x-www-form-urlencoded",
157
+ "Host": this.main.options.instanceHost,
158
+ ...(this.auth === null ? {} : {
159
+ Authorization: this.auth
160
+ })
161
+ }
162
+ }, (req) => {
163
+ const data = [];
164
+ req
165
+ .on("error", (err) => reject(err))
166
+ .on("data", (d) => data.push(d))
167
+ .on("end", () => {
168
+ if (!req.statusCode || !req.statusMessage)
169
+ reject(new Error("No Status Information"));
170
+ if (req.statusCode === 204)
171
+ return resolve(null);
172
+ else if (req.statusCode === 200 || req.statusCode === 201) {
173
+ try {
174
+ resolve(JSON.parse(Buffer.concat(data).toString()));
175
+ }
176
+ catch {
177
+ reject(new APIError("PARSE", req.statusCode, req.statusMessage, method, path, body ?? null, Buffer.concat(data).toString()));
178
+ }
179
+ }
180
+ else {
181
+ let d;
182
+ try {
183
+ d = Buffer.concat(data).toString();
184
+ d = JSON.parse(String(d));
185
+ }
186
+ catch {
187
+ // ignore
188
+ }
189
+ reject(new APIError("UNEXPECTED", req.statusCode, req.statusMessage, method, path, body ?? null, d));
190
+ }
191
+ });
192
+ })
193
+ .setTimeout(this.main.options.requestTimeout * 1000, () => {
194
+ r.destroy(new Error(`Request Went Over The Limit Of ${this.main.options.requestTimeout * 1000}ms`));
195
+ });
196
+ if (body)
197
+ r.write(body);
198
+ r.end();
199
+ });
200
+ }
201
+ // the things I do for zero dependencies
202
+ // not well tested at all
203
+ async otherWithFile(method, path, body, files) {
204
+ return new Promise((resolve, reject) => {
205
+ const multi = new MultipartData_1.default();
206
+ files.forEach(({ content, name }, i) => {
207
+ const magic = [...(new Uint8Array(content.slice(0, 4)))].map(v => v.toString(16).toUpperCase()).join("");
208
+ let filename;
209
+ switch (magic) {
210
+ case "47494638":
211
+ filename = `upload${i}.gif`;
212
+ break;
213
+ case "89504E47":
214
+ filename = `upload${i}.png`;
215
+ break;
216
+ case "FFD8FFDB":
217
+ case "FFD8FFE0":
218
+ case "49460001":
219
+ case "FFD8FFEE":
220
+ case "69660000":
221
+ filename = `upload${i}.jpeg`;
222
+ break;
223
+ case "1A45DFA3":
224
+ filename = `upload${i}.webm`;
225
+ break;
226
+ case "52494646":
227
+ filename = `upload${i}.webp`;
228
+ break;
229
+ default: throw new Error(`Unrecognized file type (magic: ${magic})`);
230
+ }
231
+ multi.attach(name, content, filename);
232
+ });
233
+ body.get2d().forEach(([key, value]) => {
234
+ multi.attach(key, value);
235
+ });
236
+ const formData = multi.finish();
237
+ const r = (this.main.options.instanceSSL ? https : http)
238
+ .request({
239
+ method,
240
+ timeout: this.main.options.requestTimeout * 1000,
241
+ hostname: this.main.options.instanceHost,
242
+ port: this.main.options.instancePort,
243
+ path,
244
+ headers: {
245
+ "User-Agent": this.main.options.userAgent,
246
+ "Content-Type": `multipart/form-data; boundary=${multi.boundary}`,
247
+ "Host": this.main.options.instanceHost,
248
+ ...(this.auth === null ? {} : {
249
+ Authorization: this.auth
250
+ })
251
+ }
252
+ }, (req) => {
253
+ const data = [];
254
+ req
255
+ .on("error", (err) => reject(err))
256
+ .on("data", (d) => data.push(d))
257
+ .on("end", () => {
258
+ console.log(JSON.parse(Buffer.concat(data).toString()));
259
+ if (!req.statusCode || !req.statusMessage)
260
+ reject(new Error("No Status Information"));
261
+ if (req.statusCode === 204)
262
+ return resolve(null);
263
+ else if (req.statusCode === 200 || req.statusCode === 201) {
264
+ try {
265
+ resolve(JSON.parse(Buffer.concat(data).toString()));
266
+ }
267
+ catch {
268
+ reject(new APIError("PARSE", req.statusCode, req.statusMessage, method, path, "Multipart Form Data", Buffer.concat(data).toString()));
269
+ }
270
+ }
271
+ else {
272
+ let d;
273
+ try {
274
+ d = Buffer.concat(data).toString();
275
+ d = JSON.parse(String(d));
276
+ }
277
+ catch {
278
+ // ignore
279
+ }
280
+ reject(new APIError("UNEXPECTED", req.statusCode, req.statusMessage, method, path, "Multipart Form Data", d));
281
+ }
282
+ });
283
+ })
284
+ .setTimeout(this.main.options.requestTimeout * 1000, () => {
285
+ r.destroy(new Error(`Request Went Over The Limit Of ${this.main.options.requestTimeout * 1000}ms`));
286
+ });
287
+ for (const chunk of formData)
288
+ r.write(chunk);
289
+ r.end();
290
+ });
291
+ }
292
+ get instanceURL() {
293
+ return `http${this.main.options.instanceSSL ? "s" : ""}://${this.main.options.instanceHost}${[80, 443].includes(this.main.options.instancePort) ? "" : `:${this.main.options.instancePort}`}`;
294
+ }
295
+ // the deleted image url is on the instance itself by default
296
+ get deletedImageURL() {
297
+ return `${this.instanceURL}/images/deleted-preview.png`;
298
+ }
299
+ constructURL(md5, type, ext = "png") {
300
+ if (this.main.options.reconstructStaticURL)
301
+ return this.main.options.reconstructStaticURL(md5, type, ext);
302
+ switch (this.main.options.imageReconstructionType) {
303
+ case "e621": return `https://static1.e621.net/data/${type === "original" ? "" : `${type}/`}${md5.slice(0, 2)}/${md5.slice(2, 4)}/${md5}.${ext}`;
304
+ case "yiffy": return `https://v3.yiff.media/${type === "original" ? "" : `${type}/`}${md5.slice(0, 2)}/${md5.slice(2, 4)}/${md5}.${ext}`;
305
+ case "dev": return `http://e621.local/data/${type === "original" ? "" : `${type}/`}${md5}.${ext}`;
306
+ default: throw new Error(`Image reconstruction failed with no implemented method (type: ${String(this.main.options.imageReconstructionType)}, host: ${this.main.options.instanceHost})`);
307
+ }
308
+ }
309
+ }
310
+ exports.default = RequestHandler;
311
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVxdWVzdEhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbC9SZXF1ZXN0SGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsb0VBQTRDO0FBRTVDLDJDQUE2QjtBQUM3Qiw2Q0FBK0I7QUFDL0IsTUFBYSxRQUFTLFNBQVEsS0FBSztJQUNsQyxJQUFJLEdBQUcsVUFBVSxDQUFDO0lBQ2xCLElBQUksQ0FBcUM7SUFDekMsVUFBVSxDQUFTO0lBQ25CLGFBQWEsQ0FBUztJQUN0QixNQUFNLENBQVM7SUFDZixJQUFJLENBQVM7SUFDYixPQUFPLENBQWlCO0lBQ3hCLE9BQU8sQ0FBaUI7SUFDeEIsWUFBWSxJQUFzQixFQUFFLFVBQWtCLEVBQUUsYUFBcUIsRUFBRSxNQUFjLEVBQUUsSUFBWSxFQUFFLE9BQXVCLEVBQUUsT0FBdUI7UUFDNUosSUFBSSxJQUFJLEtBQUssWUFBWTtZQUFFLEtBQUssQ0FBQyxjQUFjLFVBQVUsSUFBSSxhQUFhLFFBQVEsTUFBTSxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7YUFDOUcsSUFBSSxJQUFJLEtBQUssT0FBTztZQUFFLEtBQUssQ0FBQyxtQkFBbUIsTUFBTSxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7O1lBQ2hGLEtBQUssQ0FBQyxxQkFBcUIsTUFBTSxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksTUFBTSxVQUFVLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQztRQUVsRyxJQUFJLENBQUMsSUFBSSxHQUFHLFlBQVksSUFBSSxJQUFJLFNBQVMsR0FBRyxDQUFDO1FBQzdDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ25D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
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "e621",
3
- "version": "1.0.9",
4
- "description": "A module for fetching posts from e621.",
3
+ "version": "2.0.0-dev.11",
4
+ "description": "A module for interfacing with e621.",
5
5
  "main": "build/src/index.js",
6
- "types": "build/src/index.d.ts",
7
6
  "scripts": {
8
- "prepare": "rm -rf build && tsc && echo Build Finished",
9
- "build": "npm run prepare"
7
+ "build": "rm -rf build && tsc -p tsc.json && sed -i '/__exportStar(require(\".\\/types\"), exports);/d' build/src/index.js && cp -r src/types build/src",
8
+ "prepublishOnly": "npm run build",
9
+ "dev": "npm publish --tag dev"
10
10
  },
11
11
  "repository": {
12
12
  "type": "git",
@@ -14,20 +14,23 @@
14
14
  },
15
15
  "keywords": [
16
16
  "e621",
17
- "api",
18
17
  "e621-api",
18
+ "api",
19
19
  "e926",
20
- "e926-api"
20
+ "e926-api",
21
+ "e6",
22
+ "e9"
21
23
  ],
22
- "author": "Donovan_DMC <hewwo@yiff.rocks> (https://donovan.is.gay)",
24
+ "author": "Donovan Daniels <hewwo@yiff.rocks>",
23
25
  "license": "MIT",
24
26
  "bugs": {
25
27
  "url": "https://github.com/DonovanDMC/E621/issues"
26
28
  },
27
29
  "homepage": "https://github.com/DonovanDMC/E621#readme",
28
30
  "devDependencies": {
29
- "@types/node": "^14.14.22",
30
- "@uwu-codes/eslint-config": "^1.0.8",
31
- "@uwu-codes/tsconfig": "^1.0.1"
31
+ "@uwu-codes/eslint-config": "^1.0.25",
32
+ "@uwu-codes/tsconfig": "^1.0.1",
33
+ "ts-node": "^10.3.0",
34
+ "typescript": "^4.4.4"
32
35
  }
33
36
  }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2021 Donovan Daniels
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.