summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVolpeon <git@volpeon.ink>2021-10-18 13:50:57 +0200
committerVolpeon <git@volpeon.ink>2021-10-18 13:50:57 +0200
commit8a6ad69c1e859db373a67c75f893853986750603 (patch)
tree92ddcffc840dc444c1a28a883a62fc8eea01958c
parentAdd presenting to excluded tags (diff)
downloadferalbot-8a6ad69c1e859db373a67c75f893853986750603.tar.gz
feralbot-8a6ad69c1e859db373a67c75f893853986750603.tar.bz2
feralbot-8a6ad69c1e859db373a67c75f893853986750603.zip
Support posting a specific picture
-rw-r--r--package.json1
-rw-r--r--src/api/e621/index.ts18
-rw-r--r--src/config.ts2
-rw-r--r--src/index.ts64
-rw-r--r--yarn.lock179
5 files changed, 244 insertions, 20 deletions
diff --git a/package.json b/package.json
index a88dbf9..22329e2 100644
--- a/package.json
+++ b/package.json
@@ -14,6 +14,7 @@
14 "form-data": "^4.0.0", 14 "form-data": "^4.0.0",
15 "got": "^11.8.2", 15 "got": "^11.8.2",
16 "nanoid": "^3.1.30", 16 "nanoid": "^3.1.30",
17 "ts-command-line-args": "^2.1.0",
17 "ts-node": "^10.3.0", 18 "ts-node": "^10.3.0",
18 "typescript": "^4.4.4" 19 "typescript": "^4.4.4"
19 }, 20 },
diff --git a/src/api/e621/index.ts b/src/api/e621/index.ts
index c8e0f44..411edae 100644
--- a/src/api/e621/index.ts
+++ b/src/api/e621/index.ts
@@ -26,7 +26,23 @@ export const client = got.extend({
26 }, 26 },
27}); 27});
28 28
29export async function randomPost() { 29export async function getPost(id: number) {
30 const response = await client
31 .get("https://e926.net/posts.json", {
32 searchParams: {
33 tags: `id:${id}`,
34 },
35 })
36 .json<{ posts: readonly Post[] }>();
37
38 if (!response.posts.length) {
39 throw new Error("No posts received");
40 }
41
42 return response.posts[0];
43}
44
45export async function getRandomPost() {
30 const queryIndex = Math.floor(Math.random() * config.e621.queries.length); 46 const queryIndex = Math.floor(Math.random() * config.e621.queries.length);
31 const query = config.e621.queries[queryIndex]; 47 const query = config.e621.queries[queryIndex];
32 const page = Math.floor(Math.random() * (query.maxPage - 1)) + 1; 48 const page = Math.floor(Math.random() * (query.maxPage - 1)) + 1;
diff --git a/src/config.ts b/src/config.ts
index f6e7447..d854725 100644
--- a/src/config.ts
+++ b/src/config.ts
@@ -37,5 +37,5 @@ export default {
37 instance: "https://botsin.space/", 37 instance: "https://botsin.space/",
38 token: process.env.MASTODON_TOKEN, 38 token: process.env.MASTODON_TOKEN,
39 }, 39 },
40 cw: ["gun"], 40 cw: ["gun", "blood"],
41}; 41};
diff --git a/src/index.ts b/src/index.ts
index 34cd5f1..e2fee01 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,34 +1,49 @@
1import * as e621 from "./api/e621"; 1import * as e621 from "./api/e621";
2import * as mastodon from "./api/mastodon"; 2import * as mastodon from "./api/mastodon";
3import config from "./config"; 3import config from "./config";
4import * as cliArgs from 'ts-command-line-args';
4 5
5(async () => { 6const args = cliArgs.parse<{
6 if (!config.mastodon.token) { 7 id?: number;
7 console.error("MASTODON_TOKEN not set"); 8 help?: boolean;
8 return; 9}>(
9 } 10 {
11 id: { type: Number, optional: true },
12 help: { type: Boolean, optional: true, alias: 'h' },
13 },
14 {
15 helpArg: 'help',
16 },
17);
18
19async function postRandomPicture() {
20 console.log("Fetching random post...");
21
22 const { queryIndex, post } = await e621.getRandomPost();
23
24 console.log(`Got ${post.id} via query ${queryIndex}`);
25
26 await handlePost(post);
27}
28
29async function postSpecificPicture(id: number) {
30 console.log("Fetching post ${id}...");
31
32 const post = await e621.getPost(id);
10 33
11 console.log("Fetching post..."); 34 console.log(`Got ${post.id}`);
35
36 await handlePost(post);
37}
12 38
13 const { queryIndex, post } = await e621.randomPost(); 39async function handlePost(post: e621.Post) {
14 const source = post.sources.length ? post.sources[0] : undefined; 40 const source = post.sources.length ? post.sources[0] : undefined;
15 const cws = config.cw.filter((w) => post.tags.general.includes(w)); 41 const cws = config.cw.filter((w) => post.tags.general.includes(w));
16 42
17 console.log(`Got ${post.id} via query ${queryIndex}`);
18 console.log(`Downloading image...`); 43 console.log(`Downloading image...`);
19 44
20 const file = await e621.client.get(post.file.url).buffer(); 45 const file = await e621.client.get(post.file.url).buffer();
21 46
22 /*console.log(`Compressing...`);
23
24 const compressedFile = await sharp(file)
25 .resize(1000, 1000, {
26 fit: "inside",
27 withoutEnlargement: true,
28 })
29 .jpeg({ quality: 85, mozjpeg: true })
30 .toBuffer();*/
31
32 console.log(`Uploading...`); 47 console.log(`Uploading...`);
33 48
34 const attachment = await mastodon.upload(file, post.id.toString(10)); 49 const attachment = await mastodon.upload(file, post.id.toString(10));
@@ -38,4 +53,17 @@ import config from "./config";
38 const status = await mastodon.createStatus(`https://e926.net/posts/${post.id}`, source, cws, attachment.id); 53 const status = await mastodon.createStatus(`https://e926.net/posts/${post.id}`, source, cws, attachment.id);
39 54
40 console.log(`Done! ${status.url}`); 55 console.log(`Done! ${status.url}`);
56}
57
58(async () => {
59 if (!config.mastodon.token) {
60 console.error("MASTODON_TOKEN not set");
61 return;
62 }
63
64 if (args.id) {
65 await postSpecificPicture(args.id);
66 } else {
67 await postRandomPicture();
68 }
41})(); 69})();
diff --git a/yarn.lock b/yarn.lock
index 233de5d..03025b1 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -102,11 +102,35 @@ acorn@^8.4.1:
102 resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2" 102 resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2"
103 integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q== 103 integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==
104 104
105ansi-styles@^3.2.1:
106 version "3.2.1"
107 resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
108 integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
109 dependencies:
110 color-convert "^1.9.0"
111
112ansi-styles@^4.1.0:
113 version "4.3.0"
114 resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
115 integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
116 dependencies:
117 color-convert "^2.0.1"
118
105arg@^4.1.0: 119arg@^4.1.0:
106 version "4.1.3" 120 version "4.1.3"
107 resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" 121 resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
108 integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== 122 integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
109 123
124array-back@^3.0.1, array-back@^3.1.0:
125 version "3.1.0"
126 resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0"
127 integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==
128
129array-back@^4.0.1:
130 version "4.0.2"
131 resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e"
132 integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==
133
110asynckit@^0.4.0: 134asynckit@^0.4.0:
111 version "0.4.0" 135 version "0.4.0"
112 resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 136 resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
@@ -130,6 +154,23 @@ cacheable-request@^7.0.1:
130 normalize-url "^6.0.1" 154 normalize-url "^6.0.1"
131 responselike "^2.0.0" 155 responselike "^2.0.0"
132 156
157chalk@^2.4.2:
158 version "2.4.2"
159 resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
160 integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
161 dependencies:
162 ansi-styles "^3.2.1"
163 escape-string-regexp "^1.0.5"
164 supports-color "^5.3.0"
165
166chalk@^4.1.0:
167 version "4.1.2"
168 resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
169 integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
170 dependencies:
171 ansi-styles "^4.1.0"
172 supports-color "^7.1.0"
173
133clone-response@^1.0.2: 174clone-response@^1.0.2:
134 version "1.0.2" 175 version "1.0.2"
135 resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" 176 resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b"
@@ -137,6 +178,30 @@ clone-response@^1.0.2:
137 dependencies: 178 dependencies:
138 mimic-response "^1.0.0" 179 mimic-response "^1.0.0"
139 180
181color-convert@^1.9.0:
182 version "1.9.3"
183 resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
184 integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
185 dependencies:
186 color-name "1.1.3"
187
188color-convert@^2.0.1:
189 version "2.0.1"
190 resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
191 integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
192 dependencies:
193 color-name "~1.1.4"
194
195color-name@1.1.3:
196 version "1.1.3"
197 resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
198 integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
199
200color-name@~1.1.4:
201 version "1.1.4"
202 resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
203 integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
204
140combined-stream@^1.0.8: 205combined-stream@^1.0.8:
141 version "1.0.8" 206 version "1.0.8"
142 resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 207 resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
@@ -144,6 +209,26 @@ combined-stream@^1.0.8:
144 dependencies: 209 dependencies:
145 delayed-stream "~1.0.0" 210 delayed-stream "~1.0.0"
146 211
212command-line-args@^5.1.1:
213 version "5.2.0"
214 resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.0.tgz#087b02748272169741f1fd7c785b295df079b9be"
215 integrity sha512-4zqtU1hYsSJzcJBOcNZIbW5Fbk9BkjCp1pZVhQKoRaWL5J7N4XphDLwo8aWwdQpTugxwu+jf9u2ZhkXiqp5Z6A==
216 dependencies:
217 array-back "^3.1.0"
218 find-replace "^3.0.0"
219 lodash.camelcase "^4.3.0"
220 typical "^4.0.0"
221
222command-line-usage@^6.1.0:
223 version "6.1.1"
224 resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.1.tgz#c908e28686108917758a49f45efb4f02f76bc03f"
225 integrity sha512-F59pEuAR9o1SF/bD0dQBDluhpT4jJQNWUHEuVBqpDmCUo6gPjCi+m9fCWnWZVR/oG6cMTUms4h+3NPl74wGXvA==
226 dependencies:
227 array-back "^4.0.1"
228 chalk "^2.4.2"
229 table-layout "^1.0.1"
230 typical "^5.2.0"
231
147create-require@^1.1.0: 232create-require@^1.1.0:
148 version "1.1.1" 233 version "1.1.1"
149 resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" 234 resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
@@ -156,6 +241,11 @@ decompress-response@^6.0.0:
156 dependencies: 241 dependencies:
157 mimic-response "^3.1.0" 242 mimic-response "^3.1.0"
158 243
244deep-extend@~0.6.0:
245 version "0.6.0"
246 resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
247 integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
248
159defer-to-connect@^2.0.0: 249defer-to-connect@^2.0.0:
160 version "2.0.1" 250 version "2.0.1"
161 resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" 251 resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587"
@@ -178,6 +268,11 @@ end-of-stream@^1.1.0:
178 dependencies: 268 dependencies:
179 once "^1.4.0" 269 once "^1.4.0"
180 270
271escape-string-regexp@^1.0.5:
272 version "1.0.5"
273 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
274 integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
275
181file-type@^16.5.3: 276file-type@^16.5.3:
182 version "16.5.3" 277 version "16.5.3"
183 resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.3.tgz#474b7e88c74724046abb505e9b8ed4db30c4fc06" 278 resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.3.tgz#474b7e88c74724046abb505e9b8ed4db30c4fc06"
@@ -187,6 +282,13 @@ file-type@^16.5.3:
187 strtok3 "^6.2.4" 282 strtok3 "^6.2.4"
188 token-types "^4.1.1" 283 token-types "^4.1.1"
189 284
285find-replace@^3.0.0:
286 version "3.0.0"
287 resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38"
288 integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==
289 dependencies:
290 array-back "^3.0.1"
291
190form-data@^4.0.0: 292form-data@^4.0.0:
191 version "4.0.0" 293 version "4.0.0"
192 resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" 294 resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
@@ -220,6 +322,16 @@ got@^11.8.2:
220 p-cancelable "^2.0.0" 322 p-cancelable "^2.0.0"
221 responselike "^2.0.0" 323 responselike "^2.0.0"
222 324
325has-flag@^3.0.0:
326 version "3.0.0"
327 resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
328 integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
329
330has-flag@^4.0.0:
331 version "4.0.0"
332 resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
333 integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
334
223http-cache-semantics@^4.0.0: 335http-cache-semantics@^4.0.0:
224 version "4.1.0" 336 version "4.1.0"
225 resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" 337 resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390"
@@ -255,6 +367,11 @@ keyv@^4.0.0:
255 dependencies: 367 dependencies:
256 json-buffer "3.0.1" 368 json-buffer "3.0.1"
257 369
370lodash.camelcase@^4.3.0:
371 version "4.3.0"
372 resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
373 integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY=
374
258lowercase-keys@^2.0.0: 375lowercase-keys@^2.0.0:
259 version "2.0.0" 376 version "2.0.0"
260 resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" 377 resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
@@ -348,6 +465,11 @@ readable-web-to-node-stream@^3.0.0:
348 dependencies: 465 dependencies:
349 readable-stream "^3.6.0" 466 readable-stream "^3.6.0"
350 467
468reduce-flatten@^2.0.0:
469 version "2.0.0"
470 resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27"
471 integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==
472
351resolve-alpn@^1.0.0: 473resolve-alpn@^1.0.0:
352 version "1.2.1" 474 version "1.2.1"
353 resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" 475 resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9"
@@ -365,6 +487,11 @@ safe-buffer@~5.2.0:
365 resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 487 resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
366 integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 488 integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
367 489
490string-format@^2.0.0:
491 version "2.0.0"
492 resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b"
493 integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==
494
368string_decoder@^1.1.1: 495string_decoder@^1.1.1:
369 version "1.3.0" 496 version "1.3.0"
370 resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 497 resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
@@ -380,6 +507,30 @@ strtok3@^6.2.4:
380 "@tokenizer/token" "^0.3.0" 507 "@tokenizer/token" "^0.3.0"
381 peek-readable "^4.0.1" 508 peek-readable "^4.0.1"
382 509
510supports-color@^5.3.0:
511 version "5.5.0"
512 resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
513 integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
514 dependencies:
515 has-flag "^3.0.0"
516
517supports-color@^7.1.0:
518 version "7.2.0"
519 resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
520 integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
521 dependencies:
522 has-flag "^4.0.0"
523
524table-layout@^1.0.1:
525 version "1.0.2"
526 resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04"
527 integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==
528 dependencies:
529 array-back "^4.0.1"
530 deep-extend "~0.6.0"
531 typical "^5.2.0"
532 wordwrapjs "^4.0.0"
533
383token-types@^4.1.1: 534token-types@^4.1.1:
384 version "4.1.1" 535 version "4.1.1"
385 resolved "https://registry.yarnpkg.com/token-types/-/token-types-4.1.1.tgz#ef9e8c8e2e0ded9f1b3f8dbaa46a3228b113ba1a" 536 resolved "https://registry.yarnpkg.com/token-types/-/token-types-4.1.1.tgz#ef9e8c8e2e0ded9f1b3f8dbaa46a3228b113ba1a"
@@ -388,6 +539,16 @@ token-types@^4.1.1:
388 "@tokenizer/token" "^0.3.0" 539 "@tokenizer/token" "^0.3.0"
389 ieee754 "^1.2.1" 540 ieee754 "^1.2.1"
390 541
542ts-command-line-args@^2.1.0:
543 version "2.1.0"
544 resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.1.0.tgz#1f75ceabaf794fd6171a2c749e95d27e5231f89b"
545 integrity sha512-C9BWuFzNLAmEmfnxBhq40YHu7CptJd7ytLHqtD8xRaIA0jZBtTdo+u32OlMHxGvoegUfinnMh41kcjvaZ1RiFA==
546 dependencies:
547 chalk "^4.1.0"
548 command-line-args "^5.1.1"
549 command-line-usage "^6.1.0"
550 string-format "^2.0.0"
551
391ts-node@^10.3.0: 552ts-node@^10.3.0:
392 version "10.3.0" 553 version "10.3.0"
393 resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.3.0.tgz#a797f2ed3ff50c9a5d814ce400437cb0c1c048b4" 554 resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.3.0.tgz#a797f2ed3ff50c9a5d814ce400437cb0c1c048b4"
@@ -411,11 +572,29 @@ typescript@^4.4.4:
411 resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.4.tgz#2cd01a1a1f160704d3101fd5a58ff0f9fcb8030c" 572 resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.4.tgz#2cd01a1a1f160704d3101fd5a58ff0f9fcb8030c"
412 integrity sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA== 573 integrity sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==
413 574
575typical@^4.0.0:
576 version "4.0.0"
577 resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4"
578 integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==
579
580typical@^5.2.0:
581 version "5.2.0"
582 resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066"
583 integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==
584
414util-deprecate@^1.0.1: 585util-deprecate@^1.0.1:
415 version "1.0.2" 586 version "1.0.2"
416 resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 587 resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
417 integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 588 integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
418 589
590wordwrapjs@^4.0.0:
591 version "4.0.1"
592 resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f"
593 integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==
594 dependencies:
595 reduce-flatten "^2.0.0"
596 typical "^5.2.0"
597
419wrappy@1: 598wrappy@1:
420 version "1.0.2" 599 version "1.0.2"
421 resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 600 resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"