From a55fa90753f36b40bf8e2903706e88ac90ee6674 Mon Sep 17 00:00:00 2001 From: Izan Gil <66965250+SrIzan10@users.noreply.github.com> Date: Sat, 27 Jan 2024 00:39:02 +0100 Subject: [PATCH] feat: ocr --- package.json | 3 +- src/commands/ocr.ts | 60 ++++++ src/trie/doc-autocmp.ts | 1 - yarn.lock | 402 ++++++++++++++++++++++++++-------------- 4 files changed, 325 insertions(+), 141 deletions(-) create mode 100644 src/commands/ocr.ts diff --git a/package.json b/package.json index f9d1d9d..886b867 100644 --- a/package.json +++ b/package.json @@ -29,10 +29,11 @@ "dependencies": { "@octokit/rest": "19.0.7", "@sern/handler": "^3.3.2", - "discord.js": "14.9.0", + "discord.js": "^14.14.1", "dotenv": "16.0.3", "jsdoc-parse-plus": "1.3.0", "string-similarity": "4.0.4", + "tesseract.js": "^5.0.4", "trie-search": "1.4.1", "undici": "5.22.0", "winston": "3.8.2" diff --git a/src/commands/ocr.ts b/src/commands/ocr.ts new file mode 100644 index 0000000..94bae53 --- /dev/null +++ b/src/commands/ocr.ts @@ -0,0 +1,60 @@ +import { publish } from '#plugins'; +import { commandModule, CommandType } from '@sern/handler'; +import { ActionRowBuilder, codeBlock, ComponentType, inlineCode, StringSelectMenuBuilder } from 'discord.js'; +import { createWorker } from 'tesseract.js'; + +export default commandModule({ + type: CommandType.CtxMsg, + plugins: [publish()], + description: '', + execute: async (ctx) => { + const select = new StringSelectMenuBuilder({ + customId: 'ocr-lang', + placeholder: 'Select language', + options: [ + { label: 'English', value: 'eng', emoji: '🇺🇸' }, + { label: 'Spanish', value: 'spa', emoji: '🇪🇸' }, + { label: 'Portuguese', value: 'por', emoji: '🇵🇹' }, + { label: 'French', value: 'fra', emoji: '🇫🇷' }, + { label: 'German', value: 'deu', emoji: '🇩🇪' }, + { label: 'Italian', value: 'ita', emoji: '🇮🇹' }, + { label: 'Japanese', value: 'jpn', emoji: '🇯🇵' }, + ] + }) + const row = new ActionRowBuilder() + .addComponents(select) + + const langMsg = await ctx.reply({ + components: [row], + ephemeral: true, + }) + + const langCollector = langMsg.createMessageComponentCollector({ + filter: (i) => i.user.id === ctx.user.id, + componentType: ComponentType.StringSelect, + time: 10000 + }) + langCollector.on('collect', async (i) => { + const lang = i.values[0] + langMsg.delete() + const readingMessage = await ctx.targetMessage.reply({ + content: `Reading image with language ${inlineCode(lang)}...`, + }) + + const image = ctx.targetMessage.attachments.first() + if (!image) { + await readingMessage.edit({ + content: 'No image found', + }) + return langCollector.stop('No image found') + } + + const worker = await createWorker(lang) + const ocrData = await worker.recognize(image.proxyURL) + await readingMessage.edit({ + content: `Here's what I was able to read:\n${codeBlock(ocrData.data.text)}`, + }) + await worker.terminate() + }) + }, +}); \ No newline at end of file diff --git a/src/trie/doc-autocmp.ts b/src/trie/doc-autocmp.ts index 28474ac..1af42f0 100644 --- a/src/trie/doc-autocmp.ts +++ b/src/trie/doc-autocmp.ts @@ -1,4 +1,3 @@ -import { readFile } from "fs/promises"; import TrieSearch from "trie-search"; import { createRequire } from "module"; const require = createRequire(import.meta.url); diff --git a/yarn.lock b/yarn.lock index b5b9f1c..4930cdc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,57 +23,82 @@ __metadata: languageName: node linkType: hard -"@discordjs/builders@npm:^1.6.0": - version: 1.6.1 - resolution: "@discordjs/builders@npm:1.6.1" +"@discordjs/builders@npm:^1.7.0": + version: 1.7.0 + resolution: "@discordjs/builders@npm:1.7.0" dependencies: - "@discordjs/formatters": ^0.3.0 - "@discordjs/util": ^0.2.0 - "@sapphire/shapeshift": ^3.8.1 - discord-api-types: ^0.37.37 + "@discordjs/formatters": ^0.3.3 + "@discordjs/util": ^1.0.2 + "@sapphire/shapeshift": ^3.9.3 + discord-api-types: 0.37.61 fast-deep-equal: ^3.1.3 ts-mixer: ^6.0.3 - tslib: ^2.5.0 - checksum: 057b5585d17e6273d99aa4cb356ca845d54785d95c0af05418f30eb933cf0b80043f7941effe7a593142c6817f47b893c5a973dfd95f3db24e0570666781e2d9 + tslib: ^2.6.2 + checksum: 837e7643fc8396e4914bbbfbbfa1232ab7109c931884e8df45cd7356944633590f710a18513d30a10de1b6686ed5166df702bde0c4511fb0cbcac897edd9e56a languageName: node linkType: hard -"@discordjs/collection@npm:^1.5.0": - version: 1.5.0 - resolution: "@discordjs/collection@npm:1.5.0" - checksum: 072043743c5e5ef99033f1c227fd92f437a0665b8f0a5bfa26bacc6610963d03b54c45da0e0116ce30e4612efc52b2db0a0827f79091a135409237722db5400a +"@discordjs/collection@npm:1.5.3": + version: 1.5.3 + resolution: "@discordjs/collection@npm:1.5.3" + checksum: fefed19bea0f69053d195f9d9dc8af07ca5d8c9b1064581e0aa14bda2b70e632b93c164d5ef3e4910f5442369612ff4eec8d52a700aec562510c19b223f67023 languageName: node linkType: hard -"@discordjs/formatters@npm:^0.3.0": - version: 0.3.0 - resolution: "@discordjs/formatters@npm:0.3.0" +"@discordjs/collection@npm:^2.0.0": + version: 2.0.0 + resolution: "@discordjs/collection@npm:2.0.0" + checksum: c2d05fa2b9a27bb64e93e2836bbe44c835d21f85e28cd934f6e2a81fef423ab0415968cca9d066b83347539edc8ea9afa8075d80bd62594e39f09eb881052c49 + languageName: node + linkType: hard + +"@discordjs/formatters@npm:^0.3.3": + version: 0.3.3 + resolution: "@discordjs/formatters@npm:0.3.3" dependencies: - discord-api-types: ^0.37.37 - checksum: cdf0d842f268a1b8c072522f58b0c77853e825964acb1e3b189f53d740d0d4ee4ed3b4be177ce4ab30a665bc1e6953348ab0d29b5fd52a0651e74eb63ad4be6d + discord-api-types: 0.37.61 + checksum: a844628094a6effa8ac4e4a4ea9082d5c89e6cae6bbd18e60abd410769e5ea18f64aa2db8623aa3c8c572084368f6c2e27cc2d72af640aff5e4ee7fc42132c60 languageName: node linkType: hard -"@discordjs/rest@npm:^1.7.0": - version: 1.7.0 - resolution: "@discordjs/rest@npm:1.7.0" +"@discordjs/rest@npm:^2.1.0": + version: 2.2.0 + resolution: "@discordjs/rest@npm:2.2.0" dependencies: - "@discordjs/collection": ^1.5.0 - "@discordjs/util": ^0.2.0 + "@discordjs/collection": ^2.0.0 + "@discordjs/util": ^1.0.2 "@sapphire/async-queue": ^1.5.0 - "@sapphire/snowflake": ^3.4.0 - discord-api-types: ^0.37.37 - file-type: ^18.2.1 - tslib: ^2.5.0 - undici: ^5.21.0 - checksum: 5d52ae02b77abafbcd70c650a9760625a7afab37875a7fc85404e1053e12745aeca819747ad4dbbaab78b1df0a33a050b980b1e91ba356c496bb0ea93d32e10f + "@sapphire/snowflake": ^3.5.1 + "@vladfrangu/async_event_emitter": ^2.2.2 + discord-api-types: 0.37.61 + magic-bytes.js: ^1.5.0 + tslib: ^2.6.2 + undici: 5.27.2 + checksum: 29a14ecf3282ae3306883f1f6c870693d0ecacd080c5b66a72e31487a8070655807a80a8bf09bebea4f73e631439abc5121dfa38016ca0ccbe3f68c0f7ffc80e languageName: node linkType: hard -"@discordjs/util@npm:^0.2.0": - version: 0.2.0 - resolution: "@discordjs/util@npm:0.2.0" - checksum: 1e6c02a2881c98ccee2ffd34f487b751e1f16bce007e0a3e9fa538170c1ddb3d68e2b1d88c84b3406191ba9dfec3a999a828603a142c359703fc53482269e7fa +"@discordjs/util@npm:^1.0.2": + version: 1.0.2 + resolution: "@discordjs/util@npm:1.0.2" + checksum: 320d7e125981001160d413ae56e76e60447dce102010b80e3b1b16d885be765df5ae2551aa79fdc4d435a82361ed72246b44251f0c1f7a8fef7056a4481d5609 + languageName: node + linkType: hard + +"@discordjs/ws@npm:^1.0.2": + version: 1.0.2 + resolution: "@discordjs/ws@npm:1.0.2" + dependencies: + "@discordjs/collection": ^2.0.0 + "@discordjs/rest": ^2.1.0 + "@discordjs/util": ^1.0.2 + "@sapphire/async-queue": ^1.5.0 + "@types/ws": ^8.5.9 + "@vladfrangu/async_event_emitter": ^2.2.2 + discord-api-types: 0.37.61 + tslib: ^2.6.2 + ws: ^8.14.2 + checksum: 2564d3ff00d04d7638955c8c9a9f6234c50168fbe8243140bc458dc9ffa39ad5063e7d5762cdce71bb8bcf70b6353c28b8531e40f54568706898e92bc8748590 languageName: node linkType: hard @@ -231,6 +256,13 @@ __metadata: languageName: node linkType: hard +"@fastify/busboy@npm:^2.0.0": + version: 2.1.0 + resolution: "@fastify/busboy@npm:2.1.0" + checksum: 3233abd10f73e50668cb4bb278a79b7b3fadd30215ac6458299b0e5a09a29c3586ec07597aae6bd93f5cbedfcef43a8aeea51829cd28fc13850cdbcd324c28d5 + languageName: node + linkType: hard + "@gar/promisify@npm:^1.1.3": version: 1.1.3 resolution: "@gar/promisify@npm:1.1.3" @@ -423,20 +455,27 @@ __metadata: languageName: node linkType: hard -"@sapphire/shapeshift@npm:^3.8.1": - version: 3.8.1 - resolution: "@sapphire/shapeshift@npm:3.8.1" +"@sapphire/shapeshift@npm:^3.9.3": + version: 3.9.6 + resolution: "@sapphire/shapeshift@npm:3.9.6" dependencies: fast-deep-equal: ^3.1.3 lodash: ^4.17.21 - checksum: 2a5954c76ee9a91506ae269141ffd2d71e05891c7f1618d0acbf3670312f0b473e356f9c3dafe484d8dc89282d7554f1fd7d720a2a3b0e921fb4e969d09513ee + checksum: d94a30e65fabc9f8a3ab0181c1de3710cc17d6c57bba40e02120adbe97bd6dde061a4b07b6424d58d07022fabe508034c712837f28829817783522304048fc58 languageName: node linkType: hard -"@sapphire/snowflake@npm:^3.4.0": - version: 3.4.0 - resolution: "@sapphire/snowflake@npm:3.4.0" - checksum: 556b7001f33d6edbbbcbca46f6abfa56c732a29e78b693161e358688e688edcb012d2c1bc944e7ffb41bd6c9950d261bc73f95656dc01643361a218b4f5ab985 +"@sapphire/snowflake@npm:3.5.1": + version: 3.5.1 + resolution: "@sapphire/snowflake@npm:3.5.1" + checksum: 8fc025020adab1a7a1a5d2cf07704d598cc1977b50e5fcd3a5dd239f00934dc936d3a4d5ae336e71d8bf1d88ec27aa814b34de79e38ff097b7b9ba5a7977a683 + languageName: node + linkType: hard + +"@sapphire/snowflake@npm:^3.5.1": + version: 3.5.3 + resolution: "@sapphire/snowflake@npm:3.5.3" + checksum: 821add76877e2786ddb1b5cd3ee5de130610b82014972d91a99b4b7ce5475839b9a26f94de322f48a66f9ba2e2c578ffe46a60d06cbb9a36fd8fb96ef78be248 languageName: node linkType: hard @@ -452,13 +491,6 @@ __metadata: languageName: node linkType: hard -"@tokenizer/token@npm:^0.3.0": - version: 0.3.0 - resolution: "@tokenizer/token@npm:0.3.0" - checksum: 1d575d02d2a9f0c5a4ca5180635ebd2ad59e0f18b42a65f3d04844148b49b3db35cf00b6012a1af2d59c2ab3caca59451c5689f747ba8667ee586ad717ee58e1 - languageName: node - linkType: hard - "@tootallnate/once@npm:2": version: 2.0.0 resolution: "@tootallnate/once@npm:2.0.0" @@ -487,12 +519,28 @@ __metadata: languageName: node linkType: hard -"@types/ws@npm:^8.5.4": - version: 8.5.4 - resolution: "@types/ws@npm:8.5.4" +"@types/ws@npm:8.5.9": + version: 8.5.9 + resolution: "@types/ws@npm:8.5.9" dependencies: "@types/node": "*" - checksum: fefbad20d211929bb996285c4e6f699b12192548afedbe4930ab4384f8a94577c9cd421acaad163cacd36b88649509970a05a0b8f20615b30c501ed5269038d1 + checksum: 83f436b731d2cdc49a45ced31a0a65cdd2e39c24d7b882776c26efa190dad6553e266d624c7a7089f36ad3ed471e02e729f3219282c80689b435f665df4a2b0b + languageName: node + linkType: hard + +"@types/ws@npm:^8.5.9": + version: 8.5.10 + resolution: "@types/ws@npm:8.5.10" + dependencies: + "@types/node": "*" + checksum: 3ec416ea2be24042ebd677932a462cf16d2080393d8d7d0b1b3f5d6eaa4a7387aaf0eefb99193c0bfd29444857cf2e0c3ac89899e130550dc6c14ada8a46d25e + languageName: node + linkType: hard + +"@vladfrangu/async_event_emitter@npm:^2.2.2": + version: 2.2.4 + resolution: "@vladfrangu/async_event_emitter@npm:2.2.4" + checksum: ff65ebc4d89639adecd249e24e4f6f97b7696404f2a4461160efdff628d91de543e982727c18de62a4edada3f66381b5a3cd1d4f4f33098075d839c1b4f46979 languageName: node linkType: hard @@ -609,6 +657,13 @@ __metadata: languageName: node linkType: hard +"bmp-js@npm:^0.1.0": + version: 0.1.0 + resolution: "bmp-js@npm:0.1.0" + checksum: 2f6cf7eeabae2aa50eb768122f59e9752caa97248028cb8b5cf0d9db7cf8fb3a60262aeb2c6889dd21357ab061b2fb318f21f20d2b24963ba36ead8e264c6654 + languageName: node + linkType: hard + "brace-expansion@npm:^1.1.7": version: 1.1.11 resolution: "brace-expansion@npm:1.1.11" @@ -866,31 +921,32 @@ __metadata: languageName: node linkType: hard -"discord-api-types@npm:^0.37.37": - version: 0.37.40 - resolution: "discord-api-types@npm:0.37.40" - checksum: d05ab85c10eeaed4b066e5b826adee8faf05d53c93234ece89c17ef7bf8ff967b9e1fb60f0b343475416910d898f1656f1b7afe33d9a001c2fd7e0245584b128 +"discord-api-types@npm:0.37.61": + version: 0.37.61 + resolution: "discord-api-types@npm:0.37.61" + checksum: fe33d528e31a6de0bab2afb43d0e058957a6da6cfc4d797943fac83aeb8d07543dc0f85cad3c4e6789cbbac0c7ca49dae5ac465224b129c7acb716097fa0b081 languageName: node linkType: hard -"discord.js@npm:14.9.0": - version: 14.9.0 - resolution: "discord.js@npm:14.9.0" +"discord.js@npm:^14.14.1": + version: 14.14.1 + resolution: "discord.js@npm:14.14.1" dependencies: - "@discordjs/builders": ^1.6.0 - "@discordjs/collection": ^1.5.0 - "@discordjs/formatters": ^0.3.0 - "@discordjs/rest": ^1.7.0 - "@discordjs/util": ^0.2.0 - "@sapphire/snowflake": ^3.4.0 - "@types/ws": ^8.5.4 - discord-api-types: ^0.37.37 - fast-deep-equal: ^3.1.3 - lodash.snakecase: ^4.1.1 - tslib: ^2.5.0 - undici: ^5.21.0 - ws: ^8.13.0 - checksum: 34589830f771b238975cbabb82531db78756b1b132b6b296ad845bc93755cfee34e65febb638e1b77e9e68d9ce2362cd4d4057123c37909e1354d670b747cb71 + "@discordjs/builders": ^1.7.0 + "@discordjs/collection": 1.5.3 + "@discordjs/formatters": ^0.3.3 + "@discordjs/rest": ^2.1.0 + "@discordjs/util": ^1.0.2 + "@discordjs/ws": ^1.0.2 + "@sapphire/snowflake": 3.5.1 + "@types/ws": 8.5.9 + discord-api-types: 0.37.61 + fast-deep-equal: 3.1.3 + lodash.snakecase: 4.1.1 + tslib: 2.6.2 + undici: 5.27.2 + ws: 8.14.2 + checksum: 651e61861ae33e6ec3903e72a8bf229caae5dab73f8d409c3673430cafd9c438a0dd59983242bdcff47bab50da39f7a04da5b586c35b396c102e8e87637076e5 languageName: node linkType: hard @@ -1032,7 +1088,7 @@ __metadata: languageName: node linkType: hard -"fast-deep-equal@npm:^3.1.3": +"fast-deep-equal@npm:3.1.3, fast-deep-equal@npm:^3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" checksum: e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d @@ -1068,17 +1124,6 @@ __metadata: languageName: node linkType: hard -"file-type@npm:^18.2.1": - version: 18.2.1 - resolution: "file-type@npm:18.2.1" - dependencies: - readable-web-to-node-stream: ^3.0.2 - strtok3: ^7.0.0 - token-types: ^5.0.1 - checksum: bbc9381292e96a72ecd892f9f5e1a9a8d3f9717955841346e55891acfe099135bfa149f7dad51f35ee52b5e7e0a1a02d7375061b2800758011682c2e9d96953e - languageName: node - linkType: hard - "fill-range@npm:^7.0.1": version: 7.0.1 resolution: "fill-range@npm:7.0.1" @@ -1293,10 +1338,10 @@ __metadata: languageName: node linkType: hard -"ieee754@npm:^1.2.1": - version: 1.2.1 - resolution: "ieee754@npm:1.2.1" - checksum: 5144c0c9815e54ada181d80a0b810221a253562422e7c6c3a60b1901154184f49326ec239d618c416c1c5945a2e197107aee8d986a3dd836b53dffefd99b5e7e +"idb-keyval@npm:^6.2.0": + version: 6.2.1 + resolution: "idb-keyval@npm:6.2.1" + checksum: 7c0836f832096086e99258167740181132a71dd2694c8b8454a4f5ec69114ba6d70983115153306f0b6de1c8d3bad04f67eed3dff8f50c96815b9985d6d78470 languageName: node linkType: hard @@ -1368,6 +1413,13 @@ __metadata: languageName: node linkType: hard +"is-electron@npm:^2.2.2": + version: 2.2.2 + resolution: "is-electron@npm:2.2.2" + checksum: de5aa8bd8d72c96675b8d0f93fab4cc21f62be5440f65bc05c61338ca27bd851a64200f31f1bf9facbaa01b3dbfed7997b2186741d84b93b63e0aff1db6a9494 + languageName: node + linkType: hard + "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" @@ -1419,6 +1471,13 @@ __metadata: languageName: node linkType: hard +"is-url@npm:^1.2.4": + version: 1.2.4 + resolution: "is-url@npm:1.2.4" + checksum: 100e74b3b1feab87a43ef7653736e88d997eb7bd32e71fd3ebc413e58c1cbe56269699c776aaea84244b0567f2a7d68dfaa512a062293ed2f9fdecb394148432 + languageName: node + linkType: hard + "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" @@ -1484,7 +1543,7 @@ __metadata: languageName: node linkType: hard -"lodash.snakecase@npm:^4.1.1": +"lodash.snakecase@npm:4.1.1": version: 4.1.1 resolution: "lodash.snakecase@npm:4.1.1" checksum: 1685ed3e83dda6eae5a4dcaee161a51cd210aabb3e1c09c57150e7dd8feda19e4ca0d27d0631eabe8d0f4eaa51e376da64e8c018ae5415417c5890d42feb72a8 @@ -1534,6 +1593,13 @@ __metadata: languageName: node linkType: hard +"magic-bytes.js@npm:^1.5.0": + version: 1.8.0 + resolution: "magic-bytes.js@npm:1.8.0" + checksum: 18835ec4e67a5985d162788cba4ca6744cb9b042f15d02358623dca4e72d54029d14c60b5ce326d574c8524e30eeb5245c015da121546d61f49888c8a365137c + languageName: node + linkType: hard + "make-fetch-happen@npm:^10.0.3": version: 10.2.1 resolution: "make-fetch-happen@npm:10.2.1" @@ -1732,6 +1798,20 @@ __metadata: languageName: node linkType: hard +"node-fetch@npm:^2.6.9": + version: 2.7.0 + resolution: "node-fetch@npm:2.7.0" + dependencies: + whatwg-url: ^5.0.0 + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + checksum: d76d2f5edb451a3f05b15115ec89fc6be39de37c6089f1b6368df03b91e1633fd379a7e01b7ab05089a25034b2023d959b47e59759cb38d88341b2459e89d6e5 + languageName: node + linkType: hard + "node-gyp@npm:latest": version: 9.3.0 resolution: "node-gyp@npm:9.3.0" @@ -1825,6 +1905,15 @@ __metadata: languageName: node linkType: hard +"opencollective-postinstall@npm:^2.0.3": + version: 2.0.3 + resolution: "opencollective-postinstall@npm:2.0.3" + bin: + opencollective-postinstall: index.js + checksum: 0a68c5cef135e46d11e665d5077398285d1ce5311c948e8327b435791c409744d4a6bb9c55bd6507fb5f2ef34b0ad920565adcdaf974cbdae701aead6f32b396 + languageName: node + linkType: hard + "p-map@npm:^4.0.0": version: 4.0.0 resolution: "p-map@npm:4.0.0" @@ -1855,13 +1944,6 @@ __metadata: languageName: node linkType: hard -"peek-readable@npm:^5.0.0": - version: 5.0.0 - resolution: "peek-readable@npm:5.0.0" - checksum: bef5ceb50586eb42e14efba274ac57ffe97f0ed272df9239ce029f688f495d9bf74b2886fa27847c706a9db33acda4b7d23bbd09a2d21eb4c2a54da915117414 - languageName: node - linkType: hard - "picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" @@ -1936,15 +2018,6 @@ __metadata: languageName: node linkType: hard -"readable-web-to-node-stream@npm:^3.0.2": - version: 3.0.2 - resolution: "readable-web-to-node-stream@npm:3.0.2" - dependencies: - readable-stream: ^3.6.0 - checksum: 8c56cc62c68513425ddfa721954875b382768f83fa20e6b31e365ee00cbe7a3d6296f66f7f1107b16cd3416d33aa9f1680475376400d62a081a88f81f0ea7f9c - languageName: node - linkType: hard - "readdirp@npm:~3.6.0": version: 3.6.0 resolution: "readdirp@npm:3.6.0" @@ -1954,6 +2027,13 @@ __metadata: languageName: node linkType: hard +"regenerator-runtime@npm:^0.13.3": + version: 0.13.11 + resolution: "regenerator-runtime@npm:0.13.11" + checksum: 27481628d22a1c4e3ff551096a683b424242a216fee44685467307f14d58020af1e19660bf2e26064de946bad7eff28950eae9f8209d55723e2d9351e632bbb4 + languageName: node + linkType: hard + "resolve-from@npm:^5.0.0": version: 5.0.0 resolution: "resolve-from@npm:5.0.0" @@ -2058,10 +2138,11 @@ __metadata: "@sern/handler": ^3.3.2 "@types/node": 18.16.3 "@types/string-similarity": 4.0.0 - discord.js: 14.9.0 + discord.js: ^14.14.1 dotenv: 16.0.3 jsdoc-parse-plus: 1.3.0 string-similarity: 4.0.4 + tesseract.js: ^5.0.4 trie-search: 1.4.1 tsup: 6.7.0 typescript: 5.0.4 @@ -2219,16 +2300,6 @@ __metadata: languageName: node linkType: hard -"strtok3@npm:^7.0.0": - version: 7.0.0 - resolution: "strtok3@npm:7.0.0" - dependencies: - "@tokenizer/token": ^0.3.0 - peek-readable: ^5.0.0 - checksum: 2ebe7ad8f2aea611dec6742cf6a42e82764892a362907f7ce493faf334501bf981ce21c828dcc300457e6d460dc9c34d644ededb3b01dcb9e37559203cf1748c - languageName: node - linkType: hard - "sucrase@npm:^3.20.3": version: 3.25.0 resolution: "sucrase@npm:3.25.0" @@ -2260,6 +2331,31 @@ __metadata: languageName: node linkType: hard +"tesseract.js-core@npm:^5.0.0": + version: 5.0.0 + resolution: "tesseract.js-core@npm:5.0.0" + checksum: 5d66291078ecf36f2e957e195bc82c4b313136bebf64cfc974e188226a524690785c6f3561ce4cc42f6060190318d3a08c6fee88dade19d77e70f50badd59d7e + languageName: node + linkType: hard + +"tesseract.js@npm:^5.0.4": + version: 5.0.4 + resolution: "tesseract.js@npm:5.0.4" + dependencies: + bmp-js: ^0.1.0 + idb-keyval: ^6.2.0 + is-electron: ^2.2.2 + is-url: ^1.2.4 + node-fetch: ^2.6.9 + opencollective-postinstall: ^2.0.3 + regenerator-runtime: ^0.13.3 + tesseract.js-core: ^5.0.0 + wasm-feature-detect: ^1.2.11 + zlibjs: ^0.3.1 + checksum: 02addebd5b759a8a9b08f21ba60ef1f3f74ed76e497ec52c3a67be2e8f6ef4c7b6807e87a3d35a7f96d3d39d58ffc285eec9a2bb26a32ba62c4604f54c7816c6 + languageName: node + linkType: hard + "text-hex@npm:1.0.x": version: 1.0.0 resolution: "text-hex@npm:1.0.0" @@ -2294,16 +2390,6 @@ __metadata: languageName: node linkType: hard -"token-types@npm:^5.0.1": - version: 5.0.1 - resolution: "token-types@npm:5.0.1" - dependencies: - "@tokenizer/token": ^0.3.0 - ieee754: ^1.2.1 - checksum: 32780123bc6ce8b6a2231d860445c994a02a720abf38df5583ea957aa6626873cd1c4dd8af62314da4cf16ede00c379a765707a3b06f04b8808c38efdae1c785 - languageName: node - linkType: hard - "tr46@npm:^1.0.1": version: 1.0.1 resolution: "tr46@npm:1.0.1" @@ -2366,6 +2452,13 @@ __metadata: languageName: node linkType: hard +"tslib@npm:2.6.2, tslib@npm:^2.6.2": + version: 2.6.2 + resolution: "tslib@npm:2.6.2" + checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad + languageName: node + linkType: hard + "tslib@npm:^2.1.0": version: 2.4.1 resolution: "tslib@npm:2.4.1" @@ -2373,13 +2466,6 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.5.0": - version: 2.5.0 - resolution: "tslib@npm:2.5.0" - checksum: ae3ed5f9ce29932d049908ebfdf21b3a003a85653a9a140d614da6b767a93ef94f460e52c3d787f0e4f383546981713f165037dc2274df212ea9f8a4541004e1 - languageName: node - linkType: hard - "tsup@npm:6.7.0": version: 6.7.0 resolution: "tsup@npm:6.7.0" @@ -2436,7 +2522,7 @@ __metadata: languageName: node linkType: hard -"undici@npm:5.22.0, undici@npm:^5.21.0": +"undici@npm:5.22.0": version: 5.22.0 resolution: "undici@npm:5.22.0" dependencies: @@ -2445,6 +2531,15 @@ __metadata: languageName: node linkType: hard +"undici@npm:5.27.2": + version: 5.27.2 + resolution: "undici@npm:5.27.2" + dependencies: + "@fastify/busboy": ^2.0.0 + checksum: 22bbdd763798700979986546d70072b67223189353d2a811efa9c6e44476161a0d1781ffe24115221f69a1b344b95d5926bd39a6eb760a2cd8804781cec0c5eb + languageName: node + linkType: hard + "unique-filename@npm:^2.0.0": version: 2.0.1 resolution: "unique-filename@npm:2.0.1" @@ -2484,6 +2579,13 @@ __metadata: languageName: node linkType: hard +"wasm-feature-detect@npm:^1.2.11": + version: 1.6.1 + resolution: "wasm-feature-detect@npm:1.6.1" + checksum: 63bb5522f2cc2e1a35b1c287212e7eadc1311d853c9ff34497b887aa39389b07e63ca4ee2d6899678392303f08c6d178e5ee4f718d1989beb574f3fa69ab8b97 + languageName: node + linkType: hard + "webidl-conversions@npm:^3.0.0": version: 3.0.1 resolution: "webidl-conversions@npm:3.0.1" @@ -2576,9 +2678,9 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.13.0": - version: 8.13.0 - resolution: "ws@npm:8.13.0" +"ws@npm:8.14.2": + version: 8.14.2 + resolution: "ws@npm:8.14.2" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -2587,7 +2689,22 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 53e991bbf928faf5dc6efac9b8eb9ab6497c69feeb94f963d648b7a3530a720b19ec2e0ec037344257e05a4f35bd9ad04d9de6f289615ffb133282031b18c61c + checksum: 3ca0dad26e8cc6515ff392b622a1467430814c463b3368b0258e33696b1d4bed7510bc7030f7b72838b9fdeb8dbd8839cbf808367d6aae2e1d668ce741d4308b + languageName: node + linkType: hard + +"ws@npm:^8.14.2": + version: 8.16.0 + resolution: "ws@npm:8.16.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: feb3eecd2bae82fa8a8beef800290ce437d8b8063bdc69712725f21aef77c49cb2ff45c6e5e7fce622248f9c7abaee506bae0a9064067ffd6935460c7357321b languageName: node linkType: hard @@ -2604,3 +2721,10 @@ __metadata: checksum: ce4ada136e8a78a0b08dc10b4b900936912d15de59905b2bf415b4d33c63df1d555d23acb2a41b23cf9fb5da41c256441afca3d6509de7247daa062fd2c5ea5f languageName: node linkType: hard + +"zlibjs@npm:^0.3.1": + version: 0.3.1 + resolution: "zlibjs@npm:0.3.1" + checksum: 91f3d28bb5925ac71565a1fd4d44303b6b876ed483c9c192864393811151b399f29d917c9118a5aca5a541d9dfc7c199460f86b489ea1f77b7217e0edc887c89 + languageName: node + linkType: hard