summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--.prettierrc4
-rw-r--r--.vscode/launch.json24
-rw-r--r--.vscode/settings.json3
-rw-r--r--package.json20
-rw-r--r--src/api/e621/index.ts50
-rw-r--r--src/api/mastodon/index.ts58
-rw-r--r--src/api/misskey/index.ts26
-rw-r--r--src/config.ts34
-rw-r--r--src/index.ts36
-rw-r--r--tsconfig.json8
-rw-r--r--yarn.lock427
12 files changed, 691 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..3c3629e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
node_modules
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 0000000..e8980d1
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,4 @@
1{
2 "printWidth": 120,
3 "tabWidth": 4
4}
diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 0000000..fe4c94f
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,24 @@
1{
2 "version": "0.2.0",
3 "configurations": [
4 {
5 "name": "ts-node",
6 "type": "node",
7 "request": "launch",
8 "args": [
9 "src/index.ts"
10 ],
11 "runtimeArgs": [
12 "-r",
13 "ts-node/register"
14 ],
15 "env": {
16 "MASTODON_TOKEN": "-mPmNM7D-BOmWt2_VVUODTCSKk9sLG7BY8zOK-FFRMc",
17 "MISSKEY_TOKEN": "HGwt6ZGuZ7v6ztV3C0RMCwDYFuhhN6sg"
18 },
19 "cwd": "${workspaceRoot}",
20 "protocol": "inspector",
21 "internalConsoleOptions": "openOnSessionStart"
22 }
23 ]
24}
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..25fa621
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
1{
2 "typescript.tsdk": "node_modules/typescript/lib"
3}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..01dabf4
--- /dev/null
+++ b/package.json
@@ -0,0 +1,20 @@
1{
2 "name": "feralbot",
3 "version": "1.0.0",
4 "main": "index.js",
5 "author": "Volpeon",
6 "license": "MIT",
7 "private": true,
8 "dependencies": {
9 "@types/sharp": "^0.29.2",
10 "file-type": "^16.5.3",
11 "form-data": "^4.0.0",
12 "got": "^11.8.2",
13 "nanoid": "^3.1.30",
14 "ts-node": "^10.3.0",
15 "typescript": "^4.4.4"
16 },
17 "devDependencies": {
18 "prettier": "^2.4.1"
19 }
20}
diff --git a/src/api/e621/index.ts b/src/api/e621/index.ts
new file mode 100644
index 0000000..6aa6a35
--- /dev/null
+++ b/src/api/e621/index.ts
@@ -0,0 +1,50 @@
1import got from "got";
2import config from "../../config";
3
4export interface Post {
5 id: number;
6 file: {
7 url: string;
8 };
9 sources: readonly string[];
10
11 tags: {
12 general: readonly string[];
13 species: readonly string[];
14 character: readonly string[];
15 copyright: readonly string[];
16 artist: readonly string[];
17 invalid: readonly string[];
18 lore: readonly string[];
19 meta: readonly string[];
20 };
21}
22
23export const client = got.extend({
24 headers: {
25 "User-Agent": config.e621.userAgent,
26 },
27});
28
29export async function randomPost() {
30 const page = Math.floor(Math.random() * (config.e621.maxPage - 1)) + 1;
31
32 const response = await client
33 .get("https://e926.net/posts.json", {
34 searchParams: {
35 limit: 75,
36 page,
37 tags: config.e621.tags.join(" "),
38 },
39 })
40 .json<{ posts: readonly Post[] }>();
41
42 if (!response.posts.length) {
43 throw new Error("No posts received");
44 }
45
46 const postIndex = Math.floor(Math.random() * response.posts.length);
47 const post = response.posts[postIndex];
48
49 return post;
50}
diff --git a/src/api/mastodon/index.ts b/src/api/mastodon/index.ts
new file mode 100644
index 0000000..2d8636e
--- /dev/null
+++ b/src/api/mastodon/index.ts
@@ -0,0 +1,58 @@
1import got from "got";
2import FormData from "form-data";
3import fileType from "file-type";
4import { nanoid } from "nanoid";
5import config from "../../config";
6
7export interface Attachment {
8 id: string;
9}
10
11export interface Status {
12 url: string;
13}
14
15export const client = got.extend({
16 prefixUrl: config.mastodon.instance,
17 headers: {
18 Authorization: `Bearer ${config.mastodon.token}`,
19 },
20});
21
22export async function upload(buf: Buffer, filename: string) {
23 const type = await fileType.fromBuffer(buf);
24
25 const body = new FormData();
26 body.append("i", config.mastodon.token);
27 body.append("file", buf, { filename: `${filename}.${type.ext}`, contentType: type.mime });
28
29 return client.post("api/v1/media", { body }).json<Attachment>();
30}
31
32export async function createStatus(
33 postUrl: string,
34 sourceUrl: string | undefined,
35 spoiler: string[],
36 attachmentId: string
37) {
38 let lines = [postUrl];
39 if (sourceUrl) {
40 lines.push(`Source: ${sourceUrl}`);
41 }
42
43 const spoilerText = spoiler.length ? `CW: ${spoiler.join(", ")}` : undefined;
44
45 return client
46 .post("api/v1/statuses", {
47 headers: {
48 "Idempotency-Key": nanoid(),
49 },
50 json: {
51 status: lines.join("\n"),
52 media_ids: [attachmentId],
53 sensitive: true,
54 spoiler_text: spoilerText,
55 },
56 })
57 .json<Status>();
58}
diff --git a/src/api/misskey/index.ts b/src/api/misskey/index.ts
new file mode 100644
index 0000000..64bfe67
--- /dev/null
+++ b/src/api/misskey/index.ts
@@ -0,0 +1,26 @@
1/*
2import got from "got";
3import FormData from "form-data";
4import stream from "stream";
5import config from "../../config";
6
7export interface DriveFile {
8 id: string;
9}
10
11export const client = got.extend({
12 prefixUrl: config.misskey.instance,
13});
14
15export function upload(buf: Buffer, filename: string) {
16 const body = new FormData();
17 body.append("i", config.misskey.token);
18 body.append("file", buf, { filename });
19
20 return client.post("drive/files/create", { body }).json<DriveFile>();
21};
22
23export function createNote() {
24
25}
26*/
diff --git a/src/config.ts b/src/config.ts
new file mode 100644
index 0000000..f051888
--- /dev/null
+++ b/src/config.ts
@@ -0,0 +1,34 @@
1export default {
2 e621: {
3 userAgent: "@feralbot@botsin.space (by RedFoxxo)",
4 tags: [
5 "feral",
6 "-anthro",
7 "-human",
8 "-meme",
9 "-humor",
10 "-photography_(artwork)",
11 "-portrait",
12 "-comic",
13 "-saliva",
14 "-friendship_is_magic",
15 "-my_little_pony",
16 "-type:swf",
17 "-type:webm",
18 "-type:gif",
19 "status:active",
20 "score:>=20",
21 "inpool:false",
22 ],
23 maxPage: 131,
24 },
25 /*misskey: {
26 instance: "https://mk.vulpes.one/",
27 token: process.env.MISSKEY_TOKEN,
28 },*/
29 mastodon: {
30 instance: "https://botsin.space/",
31 token: process.env.MASTODON_TOKEN,
32 },
33 cw: ["gun"],
34};
diff --git a/src/index.ts b/src/index.ts
new file mode 100644
index 0000000..7185e23
--- /dev/null
+++ b/src/index.ts
@@ -0,0 +1,36 @@
1import * as e621 from "./api/e621";
2import * as mastodon from "./api/mastodon";
3import config from "./config";
4
5(async () => {
6 console.log("Fetching post...");
7
8 const post = await e621.randomPost();
9 const source = post.sources.length ? post.sources[0] : undefined;
10 const cws = config.cw.filter((w) => post.tags.general.includes(w));
11
12 console.log(`Got ${post.id}`);
13 console.log(`Downloading image...`);
14
15 const file = await e621.client.get(post.file.url).buffer();
16
17 /*console.log(`Compressing...`);
18
19 const compressedFile = await sharp(file)
20 .resize(1000, 1000, {
21 fit: "inside",
22 withoutEnlargement: true,
23 })
24 .jpeg({ quality: 85, mozjpeg: true })
25 .toBuffer();*/
26
27 console.log(`Uploading...`);
28
29 const attachment = await mastodon.upload(file, post.id.toString(10));
30
31 console.log(`Posting status...`);
32
33 const status = await mastodon.createStatus(`https://e926.net/posts/${post.id}`, source, cws, attachment.id);
34
35 console.log(`Done! ${status.url}`);
36})();
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..75337a5
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,8 @@
1{
2 "compilerOptions": {
3 "rootDirs": ["src"],
4 "target": "ES2020",
5 "moduleResolution": "node",
6 "esModuleInterop": true
7 }
8}
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 0000000..233de5d
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,427 @@
1# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2# yarn lockfile v1
3
4
5"@cspotcode/source-map-consumer@0.8.0":
6 version "0.8.0"
7 resolved "https://registry.yarnpkg.com/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b"
8 integrity sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==
9
10"@cspotcode/source-map-support@0.7.0":
11 version "0.7.0"
12 resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz#4789840aa859e46d2f3173727ab707c66bf344f5"
13 integrity sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==
14 dependencies:
15 "@cspotcode/source-map-consumer" "0.8.0"
16
17"@sindresorhus/is@^4.0.0":
18 version "4.2.0"
19 resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.2.0.tgz#667bfc6186ae7c9e0b45a08960c551437176e1ca"
20 integrity sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw==
21
22"@szmarczak/http-timer@^4.0.5":
23 version "4.0.6"
24 resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807"
25 integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==
26 dependencies:
27 defer-to-connect "^2.0.0"
28
29"@tokenizer/token@^0.3.0":
30 version "0.3.0"
31 resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276"
32 integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==
33
34"@tsconfig/node10@^1.0.7":
35 version "1.0.8"
36 resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9"
37 integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==
38
39"@tsconfig/node12@^1.0.7":
40 version "1.0.9"
41 resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c"
42 integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==
43
44"@tsconfig/node14@^1.0.0":
45 version "1.0.1"
46 resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2"
47 integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==
48
49"@tsconfig/node16@^1.0.2":
50 version "1.0.2"
51 resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e"
52 integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==
53
54"@types/cacheable-request@^6.0.1":
55 version "6.0.2"
56 resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.2.tgz#c324da0197de0a98a2312156536ae262429ff6b9"
57 integrity sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==
58 dependencies:
59 "@types/http-cache-semantics" "*"
60 "@types/keyv" "*"
61 "@types/node" "*"
62 "@types/responselike" "*"
63
64"@types/http-cache-semantics@*":
65 version "4.0.1"
66 resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812"
67 integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==
68
69"@types/keyv@*":
70 version "3.1.3"
71 resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.3.tgz#1c9aae32872ec1f20dcdaee89a9f3ba88f465e41"
72 integrity sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg==
73 dependencies:
74 "@types/node" "*"
75
76"@types/node@*":
77 version "16.11.1"
78 resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.1.tgz#2e50a649a50fc403433a14f829eface1a3443e97"
79 integrity sha512-PYGcJHL9mwl1Ek3PLiYgyEKtwTMmkMw4vbiyz/ps3pfdRYLVv+SN7qHVAImrjdAXxgluDEw6Ph4lyv+m9UpRmA==
80
81"@types/responselike@*", "@types/responselike@^1.0.0":
82 version "1.0.0"
83 resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29"
84 integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==
85 dependencies:
86 "@types/node" "*"
87
88"@types/sharp@^0.29.2":
89 version "0.29.2"
90 resolved "https://registry.yarnpkg.com/@types/sharp/-/sharp-0.29.2.tgz#b4e932e982e258d1013236c8b4bcc14f9883c9a3"
91 integrity sha512-tIbMvtPa8kMyFMKNhpsPT1HO3CgXLuiCAA8bxHAGAZLyALpYvYc4hUu3pu0+3oExQA5LwvHrWp+OilgXCYVQgg==
92 dependencies:
93 "@types/node" "*"
94
95acorn-walk@^8.1.1:
96 version "8.2.0"
97 resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
98 integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
99
100acorn@^8.4.1:
101 version "8.5.0"
102 resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2"
103 integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==
104
105arg@^4.1.0:
106 version "4.1.3"
107 resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
108 integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
109
110asynckit@^0.4.0:
111 version "0.4.0"
112 resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
113 integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
114
115cacheable-lookup@^5.0.3:
116 version "5.0.4"
117 resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005"
118 integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==
119
120cacheable-request@^7.0.1:
121 version "7.0.2"
122 resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27"
123 integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==
124 dependencies:
125 clone-response "^1.0.2"
126 get-stream "^5.1.0"
127 http-cache-semantics "^4.0.0"
128 keyv "^4.0.0"
129 lowercase-keys "^2.0.0"
130 normalize-url "^6.0.1"
131 responselike "^2.0.0"
132
133clone-response@^1.0.2:
134 version "1.0.2"
135 resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b"
136 integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=
137 dependencies:
138 mimic-response "^1.0.0"
139
140combined-stream@^1.0.8:
141 version "1.0.8"
142 resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
143 integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
144 dependencies:
145 delayed-stream "~1.0.0"
146
147create-require@^1.1.0:
148 version "1.1.1"
149 resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
150 integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
151
152decompress-response@^6.0.0:
153 version "6.0.0"
154 resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc"
155 integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==
156 dependencies:
157 mimic-response "^3.1.0"
158
159defer-to-connect@^2.0.0:
160 version "2.0.1"
161 resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587"
162 integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==
163
164delayed-stream@~1.0.0:
165 version "1.0.0"
166 resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
167 integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
168
169diff@^4.0.1:
170 version "4.0.2"
171 resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
172 integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
173
174end-of-stream@^1.1.0:
175 version "1.4.4"
176 resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
177 integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
178 dependencies:
179 once "^1.4.0"
180
181file-type@^16.5.3:
182 version "16.5.3"
183 resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.3.tgz#474b7e88c74724046abb505e9b8ed4db30c4fc06"
184 integrity sha512-uVsl7iFhHSOY4bEONLlTK47iAHtNsFHWP5YE4xJfZ4rnX7S1Q3wce09XgqSC7E/xh8Ncv/be1lNoyprlUH/x6A==
185 dependencies:
186 readable-web-to-node-stream "^3.0.0"
187 strtok3 "^6.2.4"
188 token-types "^4.1.1"
189
190form-data@^4.0.0:
191 version "4.0.0"
192 resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
193 integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
194 dependencies:
195 asynckit "^0.4.0"
196 combined-stream "^1.0.8"
197 mime-types "^2.1.12"
198
199get-stream@^5.1.0:
200 version "5.2.0"
201 resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
202 integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
203 dependencies:
204 pump "^3.0.0"
205
206got@^11.8.2:
207 version "11.8.2"
208 resolved "https://registry.yarnpkg.com/got/-/got-11.8.2.tgz#7abb3959ea28c31f3576f1576c1effce23f33599"
209 integrity sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ==
210 dependencies:
211 "@sindresorhus/is" "^4.0.0"
212 "@szmarczak/http-timer" "^4.0.5"
213 "@types/cacheable-request" "^6.0.1"
214 "@types/responselike" "^1.0.0"
215 cacheable-lookup "^5.0.3"
216 cacheable-request "^7.0.1"
217 decompress-response "^6.0.0"
218 http2-wrapper "^1.0.0-beta.5.2"
219 lowercase-keys "^2.0.0"
220 p-cancelable "^2.0.0"
221 responselike "^2.0.0"
222
223http-cache-semantics@^4.0.0:
224 version "4.1.0"
225 resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390"
226 integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==
227
228http2-wrapper@^1.0.0-beta.5.2:
229 version "1.0.3"
230 resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d"
231 integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==
232 dependencies:
233 quick-lru "^5.1.1"
234 resolve-alpn "^1.0.0"
235
236ieee754@^1.2.1:
237 version "1.2.1"
238 resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
239 integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
240
241inherits@^2.0.3:
242 version "2.0.4"
243 resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
244 integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
245
246json-buffer@3.0.1:
247 version "3.0.1"
248 resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
249 integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
250
251keyv@^4.0.0:
252 version "4.0.3"
253 resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.0.3.tgz#4f3aa98de254803cafcd2896734108daa35e4254"
254 integrity sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==
255 dependencies:
256 json-buffer "3.0.1"
257
258lowercase-keys@^2.0.0:
259 version "2.0.0"
260 resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
261 integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
262
263make-error@^1.1.1:
264 version "1.3.6"
265 resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
266 integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
267
268mime-db@1.50.0:
269 version "1.50.0"
270 resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.50.0.tgz#abd4ac94e98d3c0e185016c67ab45d5fde40c11f"
271 integrity sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==
272
273mime-types@^2.1.12:
274 version "2.1.33"
275 resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.33.tgz#1fa12a904472fafd068e48d9e8401f74d3f70edb"
276 integrity sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==
277 dependencies:
278 mime-db "1.50.0"
279
280mimic-response@^1.0.0:
281 version "1.0.1"
282 resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
283 integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
284
285mimic-response@^3.1.0:
286 version "3.1.0"
287 resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9"
288 integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==
289
290nanoid@^3.1.30:
291 version "3.1.30"
292 resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362"
293 integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==
294
295normalize-url@^6.0.1:
296 version "6.1.0"
297 resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a"
298 integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==
299
300once@^1.3.1, once@^1.4.0:
301 version "1.4.0"
302 resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
303 integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
304 dependencies:
305 wrappy "1"
306
307p-cancelable@^2.0.0:
308 version "2.1.1"
309 resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf"
310 integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==
311
312peek-readable@^4.0.1:
313 version "4.0.1"
314 resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.0.1.tgz#9a045f291db254111c3412c1ce4fec27ddd4d202"
315 integrity sha512-7qmhptnR0WMSpxT5rMHG9bW/mYSR1uqaPFj2MHvT+y/aOUu6msJijpKt5SkTDKySwg65OWG2JwTMBlgcbwMHrQ==
316
317prettier@^2.4.1:
318 version "2.4.1"
319 resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.1.tgz#671e11c89c14a4cfc876ce564106c4a6726c9f5c"
320 integrity sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==
321
322pump@^3.0.0:
323 version "3.0.0"
324 resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
325 integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
326 dependencies:
327 end-of-stream "^1.1.0"
328 once "^1.3.1"
329
330quick-lru@^5.1.1:
331 version "5.1.1"
332 resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
333 integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
334
335readable-stream@^3.6.0:
336 version "3.6.0"
337 resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
338 integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
339 dependencies:
340 inherits "^2.0.3"
341 string_decoder "^1.1.1"
342 util-deprecate "^1.0.1"
343
344readable-web-to-node-stream@^3.0.0:
345 version "3.0.2"
346 resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz#5d52bb5df7b54861fd48d015e93a2cb87b3ee0bb"
347 integrity sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==
348 dependencies:
349 readable-stream "^3.6.0"
350
351resolve-alpn@^1.0.0:
352 version "1.2.1"
353 resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9"
354 integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==
355
356responselike@^2.0.0:
357 version "2.0.0"
358 resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.0.tgz#26391bcc3174f750f9a79eacc40a12a5c42d7723"
359 integrity sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==
360 dependencies:
361 lowercase-keys "^2.0.0"
362
363safe-buffer@~5.2.0:
364 version "5.2.1"
365 resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
366 integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
367
368string_decoder@^1.1.1:
369 version "1.3.0"
370 resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
371 integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
372 dependencies:
373 safe-buffer "~5.2.0"
374
375strtok3@^6.2.4:
376 version "6.2.4"
377 resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.2.4.tgz#302aea64c0fa25d12a0385069ba66253fdc38a81"
378 integrity sha512-GO8IcFF9GmFDvqduIspUBwCzCbqzegyVKIsSymcMgiZKeCfrN9SowtUoi8+b59WZMAjIzVZic/Ft97+pynR3Iw==
379 dependencies:
380 "@tokenizer/token" "^0.3.0"
381 peek-readable "^4.0.1"
382
383token-types@^4.1.1:
384 version "4.1.1"
385 resolved "https://registry.yarnpkg.com/token-types/-/token-types-4.1.1.tgz#ef9e8c8e2e0ded9f1b3f8dbaa46a3228b113ba1a"
386 integrity sha512-hD+QyuUAyI2spzsI0B7gf/jJ2ggR4RjkAo37j3StuePhApJUwcWDjnHDOFdIWYSwNR28H14hpwm4EI+V1Ted1w==
387 dependencies:
388 "@tokenizer/token" "^0.3.0"
389 ieee754 "^1.2.1"
390
391ts-node@^10.3.0:
392 version "10.3.0"
393 resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.3.0.tgz#a797f2ed3ff50c9a5d814ce400437cb0c1c048b4"
394 integrity sha512-RYIy3i8IgpFH45AX4fQHExrT8BxDeKTdC83QFJkNzkvt8uFB6QJ8XMyhynYiKMLxt9a7yuXaDBZNOYS3XjDcYw==
395 dependencies:
396 "@cspotcode/source-map-support" "0.7.0"
397 "@tsconfig/node10" "^1.0.7"
398 "@tsconfig/node12" "^1.0.7"
399 "@tsconfig/node14" "^1.0.0"
400 "@tsconfig/node16" "^1.0.2"
401 acorn "^8.4.1"
402 acorn-walk "^8.1.1"
403 arg "^4.1.0"
404 create-require "^1.1.0"
405 diff "^4.0.1"
406 make-error "^1.1.1"
407 yn "3.1.1"
408
409typescript@^4.4.4:
410 version "4.4.4"
411 resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.4.tgz#2cd01a1a1f160704d3101fd5a58ff0f9fcb8030c"
412 integrity sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==
413
414util-deprecate@^1.0.1:
415 version "1.0.2"
416 resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
417 integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
418
419wrappy@1:
420 version "1.0.2"
421 resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
422 integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
423
424yn@3.1.1:
425 version "3.1.1"
426 resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
427 integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==