From 5daff4bd8ef44cfb102962efa9bb43249ce64ffe Mon Sep 17 00:00:00 2001 From: Seth W Date: Mon, 27 Nov 2023 00:12:38 -0500 Subject: [PATCH] +Translation Support Ported over translation capabilities. --- .env.example | 20 + README.md | 67 +- index.mjs | 11 +- package.json | 6 +- src/Client.mjs | 11 +- src/events/messageHandlers/translate.mjs | 20 + src/events/messageReactionAdd.mjs | 32 + src/modules/Emoji/Countries.json | 254 ++++ src/modules/Emoji/Emoji.json | 255 ++++ src/modules/Emoji/Emoji.mjs | 26 + src/modules/Miscellaneous.mjs | 29 + src/modules/Translate/DeepL.mjs | 55 + src/modules/Translate/Microsoft.mjs | 76 ++ src/modules/Translate/Pirate.mjs | 23 + src/modules/Translate/Translate.mjs | 111 ++ yarn.lock | 1458 +++++++++++++++++++++- 16 files changed, 2397 insertions(+), 57 deletions(-) create mode 100644 src/events/messageHandlers/translate.mjs create mode 100644 src/events/messageReactionAdd.mjs create mode 100644 src/modules/Emoji/Countries.json create mode 100644 src/modules/Emoji/Emoji.json create mode 100644 src/modules/Emoji/Emoji.mjs create mode 100644 src/modules/Miscellaneous.mjs create mode 100644 src/modules/Translate/DeepL.mjs create mode 100644 src/modules/Translate/Microsoft.mjs create mode 100644 src/modules/Translate/Pirate.mjs create mode 100644 src/modules/Translate/Translate.mjs diff --git a/.env.example b/.env.example index 473f8af..4c6012f 100644 --- a/.env.example +++ b/.env.example @@ -14,3 +14,23 @@ CLIENT_ID= DISCORD_TOKEN= # URL for the logging webhook LOGGING_WEBHOOK_URL= + +# Detect Language API +# Token for the Detect Language API +DETECT_LANGUAGE_TOKEN= + +# DeepL API +# Token for the DeepL translation API +DEEPL_TOKEN= + +# Microsoft Translation API +# Resource key for the Microsoft Translator Text API +TRANSLATOR_TEXT_RESOURCE_KEY= +# Region for the Microsoft Translator Text API +TRANSLATOR_TEXT_REGION= +# Endpoint for the Microsoft Translator Text API +TRANSLATOR_TEXT_ENDPOINT= + +# Pirate API +# URL for the Pirate API +PIRATE_API_URL=https://pirate.monkeyness.com/api diff --git a/README.md b/README.md index 7e959be..510c604 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,19 @@ -# Discord Bot Framework +# Translation Discord Bot: Your Go-To Multilingual Assistant -A scalable Discord bot framework: easily expandable with modular components. -This is a barebones template. If you want to see something more fleshed out, -check out -[this translation bot fork](https://github.com/sethwalker1/Translation-Discord-Bot). +This is an (unofficial) fork of +[Discord Bot Framework](https://github.com/sethwalker1/Discord-Bot-Framework), +also developed by me. + +**Tired of subpar translation bots on Discord? Look no further!** + +Translation bots are a dime a dozen, but finding a good one? That's where +thechallenge lies. Most have high subscription costs associated with due to +implementing advanced Deep Learning models. One solution is to host it yourself, +using your own API token(s) for a free and accessible translation solution. + +I made this in about two days because some of my friends couldn't find a single +free translation bot worth using. This bot aims to be just that. It's fast, +reliable, and easy to use. ## Getting Started @@ -31,36 +41,35 @@ check out ## Features -### Commands +### Automatic Translation + +The bot will automatically translate any message not matching the configured +language in the `.env` file. + +### Manual Translation -Commands are defined in the `src/commands` directory. Each command is a class -that inherits from the `Command` class. The `Command` class provides a simple -interface for defining commands and subcommands. +React with a country's flag emoji to translate a message manually. Flag codes +and languages are in `src/modules/Emoji/`. -### Subcommands +### Customization -To create a subcommand, you need to follow a few steps. +Configure up to three translation APIs in the `.env` file, supporting over 130 +languages and allowing for 2.5 million characters monthly. -1. Create a folder matching the base command's name in - `src/commands/subcommands` and create a new `.mjs` file matching the - subcommand's name. -2. Inside your new subcommand file, export an object with: - - `data`: An arrow method that is passed as an argument to the - `addSubcommand` method. - - `execute`: An async class method that is called when the subcommand is - executed. +#### Detect Language -> ๐Ÿ’ก The `execute` method in the `Command` class supports loading subcommands by default. You're need to implement the logic yourself if your command overrides the `execute` method. +[This API](https://detectlanguage.com/) is optional but recommended. It +identifies message languages, saving translation characters when the source +language matches the default. Offers 1000 free daily **requests**, with no +character limit! -### Events +#### DeepL -Events are defined in the `src/events` directory. Each event is an object, not a -class. The `execute` method is called when the event is triggered. +[DeepL](https://www.deepl.com/) provides high-quality translations using Deep +Learning. Free for up to 500,000 characters monthly across 29 languages. -The `messageCreate` event can dynamically load message handler modules. To -create a message handler: +#### Microsoft Translator -1. Create a new `.mjs` file in the `src/events/messageHandlers` directory -2. Inside your new message handler file, export a method with your custom logic. -3. Your method needs to filter each message and return `null` when the message - doesn't match your criteria, as it will be executed for every message. +[Microsoft Translator](https://microsoft.com/en-us/translator/) offers 2 million +free characters monthly for personal use, supporting 120+ languages. Requires +more setup effort but maximizes your free character allowance. diff --git a/index.mjs b/index.mjs index 6366331..d9cbb0c 100644 --- a/index.mjs +++ b/index.mjs @@ -7,14 +7,14 @@ import path from 'path'; import * as Sentry from '@sentry/node'; import { ProfilingIntegration } from '@sentry/profiling-node'; import Client from './src/Client.mjs'; +import Translate from './src/modules/Translate/Translate.mjs'; // Load .env file const productionEnvPath = path.join(process.cwd(), '.env.production'); dotenv.config({ - path: path.join( - process.cwd(), - fs.existsSync(productionEnvPath) ? productionEnvPath : '.env' - ), + path: fs.existsSync(productionEnvPath) + ? productionEnvPath + : path.join(process.cwd(), '.env'), }); // Override .env file with .development.env file if in development mode @@ -49,6 +49,9 @@ async function init() { profilesSampleRate: 1.0, }); + // Initiate translation engines + await Translate.initEngines(); + // Initiate Discord client await Client.init(); } diff --git a/package.json b/package.json index ba3db86..4399a6d 100644 --- a/package.json +++ b/package.json @@ -17,8 +17,12 @@ "@sentry/node": "^7.80.1", "@sentry/profiling-node": "^1.2.6", "cross-env": "^7.0.3", + "deepl-node": "^1.11.0", + "detectlanguage": "^2.1.0", "discord.js": "^14.9.0", - "dotenv": "^16.3.1" + "dotenv": "^16.3.1", + "dotenv-vault": "^1.25.0", + "uuid": "^9.0.1" }, "devDependencies": { "nodemon": "^2.0.22" diff --git a/src/Client.mjs b/src/Client.mjs index db5ba3b..d0889c2 100644 --- a/src/Client.mjs +++ b/src/Client.mjs @@ -20,9 +20,10 @@ export default class Client { GatewayIntentBits.DirectMessages, GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, - GatewayIntentBits.MessageContent + GatewayIntentBits.MessageContent, + GatewayIntentBits.GuildMessageReactions, ], - partials: [Partials.Message, Partials.User], + partials: [Partials.Message, Partials.Reaction, Partials.User], }); Client.client.commands = new Collection(); @@ -47,7 +48,7 @@ export default class Client { // Load and validate each command asynchronously for better performance return await Promise.all( - commandFiles.map(async file => { + commandFiles.map(file => new Promise(async resolve => { const filePath = path.join(directory, file); const { default: command } = await import(`file://${filePath}`); @@ -55,8 +56,8 @@ export default class Client { if (!('data' in command && 'execute' in command)) return console.warn(`The command at ${filePath} is invalid!`); - return command; - }) + resolve(command); + })) ); } diff --git a/src/events/messageHandlers/translate.mjs b/src/events/messageHandlers/translate.mjs new file mode 100644 index 0000000..82814bc --- /dev/null +++ b/src/events/messageHandlers/translate.mjs @@ -0,0 +1,20 @@ +import Translate from '../../modules/Translate/Translate.mjs'; + +export default async message => { + const { content } = message; + + // Translate any non-English message to English + if (message.author.bot) return null; + + // Translate the message + const { text, embed } = (await Translate.translate(content, 'en')) ?? {}; + + // If the message couldn't be translated, don't send a response + if (!text || !embed) return; + + // Send the response + await message.reply({ + embeds: [embed], + allowedMentions: { repliedUser: false }, + }); +}; diff --git a/src/events/messageReactionAdd.mjs b/src/events/messageReactionAdd.mjs new file mode 100644 index 0000000..7fbe23c --- /dev/null +++ b/src/events/messageReactionAdd.mjs @@ -0,0 +1,32 @@ +import { Events } from 'discord.js'; +import Emoji from '../modules/Emoji/Emoji.mjs'; +import Translate from '../modules/Translate/Translate.mjs'; + +export default { + name: Events.MessageReactionAdd, + async execute(reaction, user) { + // When a reaction is received, check if the structure is partial + if (reaction.partial) + // If the message this reaction belongs to was removed, the fetching might result in an API error which should be handled + await reaction.fetch().catch(() => {}); + + if (!reaction.message?.content) return; + + // Convert the emoji to a language code + const targetLanguage = Emoji.emojiToLanguage(reaction.emoji.name); + if (!targetLanguage) return; + + // Translate the message + const { embed } = + (await Translate.translate(reaction.message.content, targetLanguage)) ?? + {}; + + if (!embed) return; + + // Send the response + await reaction.message.reply({ + embeds: [embed], + allowedMentions: { repliedUser: false }, + }); + }, +}; diff --git a/src/modules/Emoji/Countries.json b/src/modules/Emoji/Countries.json new file mode 100644 index 0000000..ee4e944 --- /dev/null +++ b/src/modules/Emoji/Countries.json @@ -0,0 +1,254 @@ +{ + "Andorra": "ca", + "United Arab Emirates": "ar", + "Afghanistan": "ps", + "Anguilla": "en", + "Albania": "sq", + "Armenia": "hy", + "Angola": "pt-PT", + "Austria": "de", + "Australia": "en", + "Azerbaijan": "az", + "Barbados": "en", + "Bangladesh": "bn", + "Bosnia and Herzegovina": "bs", + "Burkina Faso": "fr", + "Bulgaria": "bg", + "Bahrain": "ar", + "Benin": "fr", + "Bermuda": "en", + "Brunei": "ms", + "Brazil": "pt-BR", + "Bahamas": "en", + "Bouvet Island": "nb", + "Cocos (Keeling) Islands": "en", + "Chile": "es", + "Colombia": "es", + "Costa Rica": "es", + "Cuba": "es", + "Cape Verde": "pt-PT", + "Christmas Island": "en", + "Germany": "de", + "Denmark": "da", + "Dominican Republic": "es", + "Algeria": "ar", + "Ecuador": "es", + "Estonia": "et", + "Egypt": "ar", + "Spain": "es", + "Ethiopia": "am", + "Falkland Islands": "en", + "Micronesia": "en", + "France": "fr", + "Gabon": "fr", + "United Kingdom": "en", + "Grenada": "en", + "French Guiana": "fr", + "Ghana": "en", + "Gibraltar": "en", + "Greenland": "iu", + "Gambia": "en", + "Guadeloupe": "fr", + "Greece": "el", + "Guatemala": "es", + "Guyana": "en", + "Honduras": "es", + "Croatia": "hr", + "Hungary": "hu", + "Indonesia": "id", + "British Indian Ocean Territory": "en", + "Iceland": "is", + "Italy": "it", + "Jordan": "ar", + "Japan": "ja", + "Cambodia": "km", + "North Korea": "ko", + "South Korea": "ko", + "Kuwait": "ar", + "Cayman Islands": "en", + "Laos": "lo", + "Liechtenstein": "de", + "Liberia": "en", + "Lithuania": "lt", + "Latvia": "lv", + "Libya": "ar", + "Monaco": "fr", + "Moldova": "ro", + "Montenegro": "sr-Cyrl", + "North Macedonia": "mk", + "Mongolia": "mn-Cyrl", + "Martinique": "fr", + "Mauritania": "ar", + "Montserrat": "en", + "Mexico": "es", + "Mozambique": "pt-PT", + "New Caledonia": "fr", + "Nigeria": "en", + "Nicaragua": "es", + "Nepal": "ne", + "Panama": "es", + "French Polynesia": "fr", + "Poland": "pl", + "Pitcairn Islands": "en", + "Portugal": "pt-PT", + "Qatar": "ar", + "Romania": "ro", + "Serbia": "sr-Cyrl", + "Russia": "ru", + "Saudi Arabia": "ar", + "Solomon Islands": "en", + "Sweden": "sv", + "St. Helena": "en", + "Slovenia": "sl", + "Slovakia": "sk", + "Sierra Leone": "en", + "San Marino": "it", + "Senegal": "fr", + "Suriname": "nl", + "South Sudan": "en", + "El Salvador": "es", + "Syria": "ar", + "Tristan da Cunha": "en", + "French Southern Territories": "fr", + "Togo": "fr", + "Thailand": "th", + "Tunisia": "ar", + "Turkey": "tr", + "Taiwan": "zh-Hant", + "Ukraine": "uk", + "Uruguay": "es", + "Venezuela": "es", + "British Virgin Islands": "en", + "Vietnam": "vi", + "Yemen": "ar", + "Mayotte": "fr", + "Zambia": "en", + "Argentina": "es", + "American Samoa": "en", + "Aruba": "nl", + "Belgium": "nl", + "Burundi": "fr", + "Bolivia": "es", + "Caribbean Netherlands": "en", + "Botswana": "en", + "Belarus": "ru", + "Canada": "en", + "Central African Republic": "fr", + "Switzerland": "de", + "Cook Islands": "en", + "Cameroon": "en", + "Cyprus": "el", + "Czechia": "cs", + "Djibouti": "ar", + "Western Sahara": "ar", + "Eritrea": "ar", + "Finland": "fi", + "Fiji": "en", + "Faroe Islands": "da", + "Guernsey": "en", + "Equatorial Guinea": "fr", + "Guinea-Bissau": "pt-PT", + "Haiti": "fr", + "Israel": "ar", + "Isle of Man": "en", + "Iraq": "ar", + "Jersey": "en", + "Jamaica": "en", + "Kenya": "en", + "Kyrgyzstan": "ky", + "Kiribati": "en", + "Comoros": "ar", + "Kazakhstan": "kk", + "Lebanon": "ar", + "Sri Lanka": "si", + "Lesotho": "en", + "Luxembourg": "de", + "Morocco": "ar", + "Madagascar": "fr", + "Marshall Islands": "en", + "Malta": "en", + "Mauritius": "en", + "Malawi": "en", + "Malaysia": "en", + "Namibia": "af", + "Norfolk Island": "en", + "Norway": "nb", + "Nauru": "en", + "Niue": "en", + "New Zealand": "en", + "Peru": "es", + "Papua New Guinea": "en", + "Philippines": "fil", + "Pakistan": "ur", + "Puerto Rico": "es", + "Palau": "en", + "Paraguay": "es", + "Rwanda": "rw", + "Seychelles": "fr", + "Singapore": "zh", + "Somalia": "ar", + "Sint Maarten": "en", + "Eswatini": "en", + "Chad": "ar", + "Tajikistan": "ru", + "Tokelau": "en", + "Timor-Leste": "pt-PT", + "Turkmenistan": "ru", + "Tonga": "en", + "Tuvalu": "en", + "Tanzania": "en", + "Uganda": "en", + "Uzbekistan": "ru", + "Vatican City": "it", + "Kosovo": "sq", + "South Africa": "af", + "Zimbabwe": "sn", + "Antigua and Barbuda": "en", + "Svalbard and Jan Mayen": "nb", + "Turks and Caicos Islands": "en", + "Trinidad and Tobago": "en", + "Wallis and Futuna": "fr", + "U.S. Virgin Islands": "en", + "Samoa": "sm", + "United States": "en", + "China": "zh", + "Dominica": "en", + "Georgia": "ka", + "Guinea": "fr", + "Ireland": "ga", + "India": "hi", + "Iran": "fa", + "Mali": "fr", + "Niger": "fr", + "Netherlands": "nl", + "Oman": "ar", + "Sudan": "ar", + "Republic of Pirates": "pirate", + "ร…land Islands": "sv", + "St. Barthรฉlemy": "fr", + "Congo - Kinshasa": "fr", + "Congo - Brazzaville": "fr", + "Cรดte d'Ivoire": "fr", + "Clipperton Island": "fr", + "Curaรงao": "nl", + "Diego Garcia": "en", + "Ceuta and Melilla": "es", + "South Georgia and South Sandwich Islands": "en", + "Hong Kong SAR China": "zh-Hant", + "Heard and McDonald Islands": "en", + "Canary Islands": "es", + "St. Kitts and Nevis": "en", + "St. Lucia": "en", + "St. Martin": "fr", + "Myanmar (Burma)": "my", + "Macao SAR China": "zh-Hant", + "St. Pierre and Miquelon": "fr", + "Palestinian Territories": "ar", + "Rรฉunion": "fr", + "Sรฃo Tomรฉ and Prรญncipe": "pt-PT", + "U.S. Outlying Islands": "en", + "St. Vincent and Grenadines": "en", + "England": "en", + "Scotland": "en", + "Wales": "en" +} \ No newline at end of file diff --git a/src/modules/Emoji/Emoji.json b/src/modules/Emoji/Emoji.json new file mode 100644 index 0000000..9a1461c --- /dev/null +++ b/src/modules/Emoji/Emoji.json @@ -0,0 +1,255 @@ +{ + "๐Ÿด": "Republic of Pirates", + "๐Ÿดโ€โ˜ ๏ธ": "Republic of Pirates", + "๐Ÿ‡ฆ๐Ÿ‡ฉ": "Andorra", + "๐Ÿ‡ฆ๐Ÿ‡ช": "United Arab Emirates", + "๐Ÿ‡ฆ๐Ÿ‡ซ": "Afghanistan", + "๐Ÿ‡ฆ๐Ÿ‡ฌ": "Antigua and Barbuda", + "๐Ÿ‡ฆ๐Ÿ‡ฎ": "Anguilla", + "๐Ÿ‡ฆ๐Ÿ‡ฑ": "Albania", + "๐Ÿ‡ฆ๐Ÿ‡ฒ": "Armenia", + "๐Ÿ‡ฆ๐Ÿ‡ด": "Angola", + "๐Ÿ‡ฆ๐Ÿ‡ท": "Argentina", + "๐Ÿ‡ฆ๐Ÿ‡ธ": "American Samoa", + "๐Ÿ‡ฆ๐Ÿ‡น": "Austria", + "๐Ÿ‡ฆ๐Ÿ‡บ": "Australia", + "๐Ÿ‡ฆ๐Ÿ‡ผ": "Aruba", + "๐Ÿ‡ฆ๐Ÿ‡ฝ": "ร…land Islands", + "๐Ÿ‡ฆ๐Ÿ‡ฟ": "Azerbaijan", + "๐Ÿ‡ง๐Ÿ‡ฆ": "Bosnia and Herzegovina", + "๐Ÿ‡ง๐Ÿ‡ง": "Barbados", + "๐Ÿ‡ง๐Ÿ‡ฉ": "Bangladesh", + "๐Ÿ‡ง๐Ÿ‡ช": "Belgium", + "๐Ÿ‡ง๐Ÿ‡ซ": "Burkina Faso", + "๐Ÿ‡ง๐Ÿ‡ฌ": "Bulgaria", + "๐Ÿ‡ง๐Ÿ‡ญ": "Bahrain", + "๐Ÿ‡ง๐Ÿ‡ฎ": "Burundi", + "๐Ÿ‡ง๐Ÿ‡ฏ": "Benin", + "๐Ÿ‡ง๐Ÿ‡ฑ": "St. Barthรฉlemy", + "๐Ÿ‡ง๐Ÿ‡ฒ": "Bermuda", + "๐Ÿ‡ง๐Ÿ‡ณ": "Brunei", + "๐Ÿ‡ง๐Ÿ‡ด": "Bolivia", + "๐Ÿ‡ง๐Ÿ‡ถ": "Caribbean Netherlands", + "๐Ÿ‡ง๐Ÿ‡ท": "Brazil", + "๐Ÿ‡ง๐Ÿ‡ธ": "Bahamas", + "๐Ÿ‡ง๐Ÿ‡ป": "Bouvet Island", + "๐Ÿ‡ง๐Ÿ‡ผ": "Botswana", + "๐Ÿ‡ง๐Ÿ‡พ": "Belarus", + "๐Ÿ‡จ๐Ÿ‡ฆ": "Canada", + "๐Ÿ‡จ๐Ÿ‡จ": "Cocos (Keeling) Islands", + "๐Ÿ‡จ๐Ÿ‡ฉ": "Congo - Kinshasa", + "๐Ÿ‡จ๐Ÿ‡ซ": "Central African Republic", + "๐Ÿ‡จ๐Ÿ‡ฌ": "Congo - Brazzaville", + "๐Ÿ‡จ๐Ÿ‡ญ": "Switzerland", + "๐Ÿ‡จ๐Ÿ‡ฎ": "Cรดte d'Ivoire", + "๐Ÿ‡จ๐Ÿ‡ฐ": "Cook Islands", + "๐Ÿ‡จ๐Ÿ‡ฑ": "Chile", + "๐Ÿ‡จ๐Ÿ‡ฒ": "Cameroon", + "๐Ÿ‡จ๐Ÿ‡ณ": "China", + "๐Ÿ‡จ๐Ÿ‡ด": "Colombia", + "๐Ÿ‡จ๐Ÿ‡ต": "Clipperton Island", + "๐Ÿ‡จ๐Ÿ‡ท": "Costa Rica", + "๐Ÿ‡จ๐Ÿ‡บ": "Cuba", + "๐Ÿ‡จ๐Ÿ‡ป": "Cape Verde", + "๐Ÿ‡จ๐Ÿ‡ผ": "Curaรงao", + "๐Ÿ‡จ๐Ÿ‡ฝ": "Christmas Island", + "๐Ÿ‡จ๐Ÿ‡พ": "Cyprus", + "๐Ÿ‡จ๐Ÿ‡ฟ": "Czechia", + "๐Ÿ‡ฉ๐Ÿ‡ช": "Germany", + "๐Ÿ‡ฉ๐Ÿ‡ฌ": "Diego Garcia", + "๐Ÿ‡ฉ๐Ÿ‡ฏ": "Djibouti", + "๐Ÿ‡ฉ๐Ÿ‡ฐ": "Denmark", + "๐Ÿ‡ฉ๐Ÿ‡ฒ": "Dominica", + "๐Ÿ‡ฉ๐Ÿ‡ด": "Dominican Republic", + "๐Ÿ‡ฉ๐Ÿ‡ฟ": "Algeria", + "๐Ÿ‡ช๐Ÿ‡ฆ": "Ceuta and Melilla", + "๐Ÿ‡ช๐Ÿ‡จ": "Ecuador", + "๐Ÿ‡ช๐Ÿ‡ช": "Estonia", + "๐Ÿ‡ช๐Ÿ‡ฌ": "Egypt", + "๐Ÿ‡ช๐Ÿ‡ญ": "Western Sahara", + "๐Ÿ‡ช๐Ÿ‡ท": "Eritrea", + "๐Ÿ‡ช๐Ÿ‡ธ": "Spain", + "๐Ÿ‡ช๐Ÿ‡น": "Ethiopia", + "๐Ÿ‡ซ๐Ÿ‡ฎ": "Finland", + "๐Ÿ‡ซ๐Ÿ‡ฏ": "Fiji", + "๐Ÿ‡ซ๐Ÿ‡ฐ": "Falkland Islands", + "๐Ÿ‡ซ๐Ÿ‡ฒ": "Micronesia", + "๐Ÿ‡ซ๐Ÿ‡ด": "Faroe Islands", + "๐Ÿ‡ซ๐Ÿ‡ท": "France", + "๐Ÿ‡ฌ๐Ÿ‡ฆ": "Gabon", + "๐Ÿ‡ฌ๐Ÿ‡ง": "United Kingdom", + "๐Ÿ‡ฌ๐Ÿ‡ฉ": "Grenada", + "๐Ÿ‡ฌ๐Ÿ‡ช": "Georgia", + "๐Ÿ‡ฌ๐Ÿ‡ซ": "French Guiana", + "๐Ÿ‡ฌ๐Ÿ‡ฌ": "Guernsey", + "๐Ÿ‡ฌ๐Ÿ‡ญ": "Ghana", + "๐Ÿ‡ฌ๐Ÿ‡ฎ": "Gibraltar", + "๐Ÿ‡ฌ๐Ÿ‡ฑ": "Greenland", + "๐Ÿ‡ฌ๐Ÿ‡ฒ": "Gambia", + "๐Ÿ‡ฌ๐Ÿ‡ณ": "Guinea", + "๐Ÿ‡ฌ๐Ÿ‡ต": "Guadeloupe", + "๐Ÿ‡ฌ๐Ÿ‡ถ": "Equatorial Guinea", + "๐Ÿ‡ฌ๐Ÿ‡ท": "Greece", + "๐Ÿ‡ฌ๐Ÿ‡ธ": "South Georgia and South Sandwich Islands", + "๐Ÿ‡ฌ๐Ÿ‡น": "Guatemala", + "๐Ÿ‡ฌ๐Ÿ‡ผ": "Guinea-Bissau", + "๐Ÿ‡ฌ๐Ÿ‡พ": "Guyana", + "๐Ÿ‡ญ๐Ÿ‡ฐ": "Hong Kong SAR China", + "๐Ÿ‡ญ๐Ÿ‡ฒ": "Heard and McDonald Islands", + "๐Ÿ‡ญ๐Ÿ‡ณ": "Honduras", + "๐Ÿ‡ญ๐Ÿ‡ท": "Croatia", + "๐Ÿ‡ญ๐Ÿ‡น": "Haiti", + "๐Ÿ‡ญ๐Ÿ‡บ": "Hungary", + "๐Ÿ‡ฎ๐Ÿ‡จ": "Canary Islands", + "๐Ÿ‡ฎ๐Ÿ‡ฉ": "Indonesia", + "๐Ÿ‡ฎ๐Ÿ‡ช": "Ireland", + "๐Ÿ‡ฎ๐Ÿ‡ฑ": "Israel", + "๐Ÿ‡ฎ๐Ÿ‡ฒ": "Isle of Man", + "๐Ÿ‡ฎ๐Ÿ‡ณ": "India", + "๐Ÿ‡ฎ๐Ÿ‡ด": "British Indian Ocean Territory", + "๐Ÿ‡ฎ๐Ÿ‡ถ": "Iraq", + "๐Ÿ‡ฎ๐Ÿ‡ท": "Iran", + "๐Ÿ‡ฎ๐Ÿ‡ธ": "Iceland", + "๐Ÿ‡ฎ๐Ÿ‡น": "Italy", + "๐Ÿ‡ฏ๐Ÿ‡ช": "Jersey", + "๐Ÿ‡ฏ๐Ÿ‡ฒ": "Jamaica", + "๐Ÿ‡ฏ๐Ÿ‡ด": "Jordan", + "๐Ÿ‡ฏ๐Ÿ‡ต": "Japan", + "๐Ÿ‡ฐ๐Ÿ‡ช": "Kenya", + "๐Ÿ‡ฐ๐Ÿ‡ฌ": "Kyrgyzstan", + "๐Ÿ‡ฐ๐Ÿ‡ญ": "Cambodia", + "๐Ÿ‡ฐ๐Ÿ‡ฎ": "Kiribati", + "๐Ÿ‡ฐ๐Ÿ‡ฒ": "Comoros", + "๐Ÿ‡ฐ๐Ÿ‡ณ": "St. Kitts and Nevis", + "๐Ÿ‡ฐ๐Ÿ‡ต": "North Korea", + "๐Ÿ‡ฐ๐Ÿ‡ท": "South Korea", + "๐Ÿ‡ฐ๐Ÿ‡ผ": "Kuwait", + "๐Ÿ‡ฐ๐Ÿ‡พ": "Cayman Islands", + "๐Ÿ‡ฐ๐Ÿ‡ฟ": "Kazakhstan", + "๐Ÿ‡ฑ๐Ÿ‡ฆ": "Laos", + "๐Ÿ‡ฑ๐Ÿ‡ง": "Lebanon", + "๐Ÿ‡ฑ๐Ÿ‡จ": "St. Lucia", + "๐Ÿ‡ฑ๐Ÿ‡ฎ": "Liechtenstein", + "๐Ÿ‡ฑ๐Ÿ‡ฐ": "Sri Lanka", + "๐Ÿ‡ฑ๐Ÿ‡ท": "Liberia", + "๐Ÿ‡ฑ๐Ÿ‡ธ": "Lesotho", + "๐Ÿ‡ฑ๐Ÿ‡น": "Lithuania", + "๐Ÿ‡ฑ๐Ÿ‡บ": "Luxembourg", + "๐Ÿ‡ฑ๐Ÿ‡ป": "Latvia", + "๐Ÿ‡ฑ๐Ÿ‡พ": "Libya", + "๐Ÿ‡ฒ๐Ÿ‡ฆ": "Morocco", + "๐Ÿ‡ฒ๐Ÿ‡จ": "Monaco", + "๐Ÿ‡ฒ๐Ÿ‡ฉ": "Moldova", + "๐Ÿ‡ฒ๐Ÿ‡ช": "Montenegro", + "๐Ÿ‡ฒ๐Ÿ‡ซ": "St. Martin", + "๐Ÿ‡ฒ๐Ÿ‡ฌ": "Madagascar", + "๐Ÿ‡ฒ๐Ÿ‡ญ": "Marshall Islands", + "๐Ÿ‡ฒ๐Ÿ‡ฐ": "North Macedonia", + "๐Ÿ‡ฒ๐Ÿ‡ฑ": "Mali", + "๐Ÿ‡ฒ๐Ÿ‡ฒ": "Myanmar (Burma)", + "๐Ÿ‡ฒ๐Ÿ‡ณ": "Mongolia", + "๐Ÿ‡ฒ๐Ÿ‡ด": "Macao SAR China", + "๐Ÿ‡ฒ๐Ÿ‡ถ": "Martinique", + "๐Ÿ‡ฒ๐Ÿ‡ท": "Mauritania", + "๐Ÿ‡ฒ๐Ÿ‡ธ": "Montserrat", + "๐Ÿ‡ฒ๐Ÿ‡น": "Malta", + "๐Ÿ‡ฒ๐Ÿ‡บ": "Mauritius", + "๐Ÿ‡ฒ๐Ÿ‡ผ": "Malawi", + "๐Ÿ‡ฒ๐Ÿ‡ฝ": "Mexico", + "๐Ÿ‡ฒ๐Ÿ‡พ": "Malaysia", + "๐Ÿ‡ฒ๐Ÿ‡ฟ": "Mozambique", + "๐Ÿ‡ณ๐Ÿ‡ฆ": "Namibia", + "๐Ÿ‡ณ๐Ÿ‡จ": "New Caledonia", + "๐Ÿ‡ณ๐Ÿ‡ช": "Niger", + "๐Ÿ‡ณ๐Ÿ‡ซ": "Norfolk Island", + "๐Ÿ‡ณ๐Ÿ‡ฌ": "Nigeria", + "๐Ÿ‡ณ๐Ÿ‡ฎ": "Nicaragua", + "๐Ÿ‡ณ๐Ÿ‡ฑ": "Netherlands", + "๐Ÿ‡ณ๐Ÿ‡ด": "Norway", + "๐Ÿ‡ณ๐Ÿ‡ต": "Nepal", + "๐Ÿ‡ณ๐Ÿ‡ท": "Nauru", + "๐Ÿ‡ณ๐Ÿ‡บ": "Niue", + "๐Ÿ‡ณ๐Ÿ‡ฟ": "New Zealand", + "๐Ÿ‡ด๐Ÿ‡ฒ": "Oman", + "๐Ÿ‡ต๐Ÿ‡ฆ": "Panama", + "๐Ÿ‡ต๐Ÿ‡ช": "Peru", + "๐Ÿ‡ต๐Ÿ‡ซ": "French Polynesia", + "๐Ÿ‡ต๐Ÿ‡ฌ": "Papua New Guinea", + "๐Ÿ‡ต๐Ÿ‡ญ": "Philippines", + "๐Ÿ‡ต๐Ÿ‡ฐ": "Pakistan", + "๐Ÿ‡ต๐Ÿ‡ฑ": "Poland", + "๐Ÿ‡ต๐Ÿ‡ฒ": "St. Pierre and Miquelon", + "๐Ÿ‡ต๐Ÿ‡ณ": "Pitcairn Islands", + "๐Ÿ‡ต๐Ÿ‡ท": "Puerto Rico", + "๐Ÿ‡ต๐Ÿ‡ธ": "Palestinian Territories", + "๐Ÿ‡ต๐Ÿ‡น": "Portugal", + "๐Ÿ‡ต๐Ÿ‡ผ": "Palau", + "๐Ÿ‡ต๐Ÿ‡พ": "Paraguay", + "๐Ÿ‡ถ๐Ÿ‡ฆ": "Qatar", + "๐Ÿ‡ท๐Ÿ‡ช": "Rรฉunion", + "๐Ÿ‡ท๐Ÿ‡ด": "Romania", + "๐Ÿ‡ท๐Ÿ‡ธ": "Serbia", + "๐Ÿ‡ท๐Ÿ‡บ": "Russia", + "๐Ÿ‡ท๐Ÿ‡ผ": "Rwanda", + "๐Ÿ‡ธ๐Ÿ‡ฆ": "Saudi Arabia", + "๐Ÿ‡ธ๐Ÿ‡ง": "Solomon Islands", + "๐Ÿ‡ธ๐Ÿ‡จ": "Seychelles", + "๐Ÿ‡ธ๐Ÿ‡ฉ": "Sudan", + "๐Ÿ‡ธ๐Ÿ‡ช": "Sweden", + "๐Ÿ‡ธ๐Ÿ‡ฌ": "Singapore", + "๐Ÿ‡ธ๐Ÿ‡ญ": "St. Helena", + "๐Ÿ‡ธ๐Ÿ‡ฎ": "Slovenia", + "๐Ÿ‡ธ๐Ÿ‡ฏ": "Svalbard and Jan Mayen", + "๐Ÿ‡ธ๐Ÿ‡ฐ": "Slovakia", + "๐Ÿ‡ธ๐Ÿ‡ฑ": "Sierra Leone", + "๐Ÿ‡ธ๐Ÿ‡ฒ": "San Marino", + "๐Ÿ‡ธ๐Ÿ‡ณ": "Senegal", + "๐Ÿ‡ธ๐Ÿ‡ด": "Somalia", + "๐Ÿ‡ธ๐Ÿ‡ท": "Suriname", + "๐Ÿ‡ธ๐Ÿ‡ธ": "South Sudan", + "๐Ÿ‡ธ๐Ÿ‡น": "Sรฃo Tomรฉ and Prรญncipe", + "๐Ÿ‡ธ๐Ÿ‡ป": "El Salvador", + "๐Ÿ‡ธ๐Ÿ‡ฝ": "Sint Maarten", + "๐Ÿ‡ธ๐Ÿ‡พ": "Syria", + "๐Ÿ‡ธ๐Ÿ‡ฟ": "Eswatini", + "๐Ÿ‡น๐Ÿ‡ฆ": "Tristan da Cunha", + "๐Ÿ‡น๐Ÿ‡จ": "Turks and Caicos Islands", + "๐Ÿ‡น๐Ÿ‡ฉ": "Chad", + "๐Ÿ‡น๐Ÿ‡ซ": "French Southern Territories", + "๐Ÿ‡น๐Ÿ‡ฌ": "Togo", + "๐Ÿ‡น๐Ÿ‡ญ": "Thailand", + "๐Ÿ‡น๐Ÿ‡ฏ": "Tajikistan", + "๐Ÿ‡น๐Ÿ‡ฐ": "Tokelau", + "๐Ÿ‡น๐Ÿ‡ฑ": "Timor-Leste", + "๐Ÿ‡น๐Ÿ‡ฒ": "Turkmenistan", + "๐Ÿ‡น๐Ÿ‡ณ": "Tunisia", + "๐Ÿ‡น๐Ÿ‡ด": "Tonga", + "๐Ÿ‡น๐Ÿ‡ท": "Turkey", + "๐Ÿ‡น๐Ÿ‡น": "Trinidad and Tobago", + "๐Ÿ‡น๐Ÿ‡ป": "Tuvalu", + "๐Ÿ‡น๐Ÿ‡ผ": "Taiwan", + "๐Ÿ‡น๐Ÿ‡ฟ": "Tanzania", + "๐Ÿ‡บ๐Ÿ‡ฆ": "Ukraine", + "๐Ÿ‡บ๐Ÿ‡ฌ": "Uganda", + "๐Ÿ‡บ๐Ÿ‡ฒ": "U.S. Outlying Islands", + "๐Ÿ‡บ๐Ÿ‡ธ": "United States", + "๐Ÿ‡บ๐Ÿ‡พ": "Uruguay", + "๐Ÿ‡บ๐Ÿ‡ฟ": "Uzbekistan", + "๐Ÿ‡ป๐Ÿ‡ฆ": "Vatican City", + "๐Ÿ‡ป๐Ÿ‡จ": "St. Vincent and Grenadines", + "๐Ÿ‡ป๐Ÿ‡ช": "Venezuela", + "๐Ÿ‡ป๐Ÿ‡ฌ": "British Virgin Islands", + "๐Ÿ‡ป๐Ÿ‡ฎ": "U.S. Virgin Islands", + "๐Ÿ‡ป๐Ÿ‡ณ": "Vietnam", + "๐Ÿ‡ผ๐Ÿ‡ซ": "Wallis and Futuna", + "๐Ÿ‡ผ๐Ÿ‡ธ": "Samoa", + "๐Ÿ‡ฝ๐Ÿ‡ฐ": "Kosovo", + "๐Ÿ‡พ๐Ÿ‡ช": "Yemen", + "๐Ÿ‡พ๐Ÿ‡น": "Mayotte", + "๐Ÿ‡ฟ๐Ÿ‡ฆ": "South Africa", + "๐Ÿ‡ฟ๐Ÿ‡ฒ": "Zambia", + "๐Ÿ‡ฟ๐Ÿ‡ผ": "Zimbabwe", + "๐Ÿด๓ ง๓ ข๓ ฅ๓ ฎ๓ ง๓ ฟ": "England", + "๐Ÿด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ": "Scotland", + "๐Ÿด๓ ง๓ ข๓ ท๓ ฌ๓ ณ๓ ฟ": "Wales" +} \ No newline at end of file diff --git a/src/modules/Emoji/Emoji.mjs b/src/modules/Emoji/Emoji.mjs new file mode 100644 index 0000000..2f195dc --- /dev/null +++ b/src/modules/Emoji/Emoji.mjs @@ -0,0 +1,26 @@ +import fs from 'fs'; + +export default class Emoji { + static emojiToCountryMap = JSON.parse( + fs.readFileSync('./src/modules/Emoji/Emoji.json') + ); + static countriesToLanguageMap = JSON.parse( + fs.readFileSync('./src/modules/Emoji/Countries.json') + ); + + static emojiToLanguage(emoji) { + // Check if emoji is a valid country flag + if (!emoji) return null; + + // Convert emoji to country code + const country = this.emojiToCountryMap[emoji]; + if (!country) return null; + + // Convert country code to language + const language = this.countriesToLanguageMap[country]; + if (!language) return null; + + // Return the language + return language; + } +} diff --git a/src/modules/Miscellaneous.mjs b/src/modules/Miscellaneous.mjs new file mode 100644 index 0000000..86678d0 --- /dev/null +++ b/src/modules/Miscellaneous.mjs @@ -0,0 +1,29 @@ +/** + * Replaces various forms of commonly mismatched characters with their standard forms. + * @param {string} text - The text to be normalized. + * @return {string} - The text with replaced characters. + */ +export function normalize(text) { + // Normalize the text + text = text.normalize('NFKC'); + + // Define commonly mismatched characters + const replacements = { + // Apostrophes and quotes + 'โ€™': "'", + 'โ€˜': "'", + 'โ€œ': '"', + 'โ€': '"', + // Dashes and hyphens + 'โ€“': '-', + 'โ€”': '-', + 'โ€‘': '-', + // Add more replacements as needed + }; + + // Building a dynamic regex pattern from the keys of the replacements object + const pattern = new RegExp(`[${Object.keys(replacements).join('')}]`, 'g'); + + // Replace the mismatched characters + return text.replace(pattern, match => replacements[match]); +} diff --git a/src/modules/Translate/DeepL.mjs b/src/modules/Translate/DeepL.mjs new file mode 100644 index 0000000..ebdf5bc --- /dev/null +++ b/src/modules/Translate/DeepL.mjs @@ -0,0 +1,55 @@ +import * as deepl from 'deepl-node'; +import Translate from './Translate.mjs'; + +export default class DeepL { + static supportedSourceLanguages = []; + static supportedTargetLanguages = []; + static name = 'DeepL Translator'; + static icon = 'https://static.deepl.com/img/favicon/favicon_16.png'; + static url = 'https://deepl.com/translator'; + + static async anyLimitReached() { + const translator = new deepl.Translator(process.env.DEEPL_TOKEN); + const usage = await translator.getUsage().catch(() => ({})); + return usage ? usage.anyLimitReached() : true; + } + + static async getSupportedLanguages() { + const translator = new deepl.Translator(process.env.DEEPL_TOKEN); + const sourceLanguages = await translator.getSourceLanguages(); + + this.supportedSourceLanguages = []; + for (let lang of sourceLanguages) { + this.supportedSourceLanguages.push(lang.code); + Translate.languageCodes[lang.code] = lang.name; + } + + const targetLanguages = await translator.getTargetLanguages(); + this.supportedTargetLanguages = []; + for (let lang of targetLanguages) { + this.supportedTargetLanguages.push(lang.code); + Translate.languageCodes[lang.code] = lang.name; + } + + console.info( + `Loaded ${ + new Set([ + ...this.supportedSourceLanguages, + ...this.supportedTargetLanguages, + ]).size + } languages from ${this.name}.` + ); + } + + static async translate(inputText, targetLanguage) { + // Build the translator object + const translator = new deepl.Translator(process.env.DEEPL_TOKEN); + + // Translate and remap the detectedSourceLang property to detectedSourceLanguage + const { text, detectedSourceLang: detectedSourceLanguage } = + await translator.translateText(inputText, null, targetLanguage); + + // Return the result + return { text, detectedSourceLanguage, engine: this }; + } +} diff --git a/src/modules/Translate/Microsoft.mjs b/src/modules/Translate/Microsoft.mjs new file mode 100644 index 0000000..5586213 --- /dev/null +++ b/src/modules/Translate/Microsoft.mjs @@ -0,0 +1,76 @@ +import { v4 as uuidv4 } from 'uuid'; +import Translate from './Translate.mjs'; + +export default class Microsoft { + static supportedLanguages = []; + static name = 'Microsoft Translator'; + static icon = 'https://translator.microsoft.com/favicon.png'; + static url = 'https://microsoft.com/en-us/translator/'; + + static async request(endpoint, { method, body, queryParams }) { + // Constructing the URL + const url = new URL(`${process.env.TRANSLATOR_TEXT_ENDPOINT}/${endpoint}`); + url.search = new URLSearchParams({ + 'api-version': '3.0', + ...queryParams, + }); + + let options = { + method, + headers: { + 'Ocp-Apim-Subscription-Key': process.env.TRANSLATOR_TEXT_RESOURCE_KEY, + 'Ocp-Apim-Subscription-Region': process.env.TRANSLATOR_TEXT_REGION, + 'Content-type': 'application/json', + 'X-ClientTraceId': uuidv4().toString(), + }, + }; + + if (body) options.body = JSON.stringify(body); + + // Sending the request + const response = await fetch(url, options); + + // Processing the response + const json = await response.json(); + + // Returning the json data + return json; + } + + static async getSupportedLanguages() { + // Sending the request + const json = await this.request('languages', { method: 'GET' }); + + // Storing the supported languages + for (let i in json.translation) { + this.supportedLanguages.push(i); + Translate.languageCodes[i] = json.translation[i].name; + } + + console.info( + `Loaded ${this.supportedLanguages.length} languages from ${this.name}.` + ); + } + + static async translate(inputText, targetLanguage) { + // Sending the request + const json = await this.request('translate', { + method: 'POST', + body: [ + { + text: inputText, + }, + ], + queryParams: { + to: targetLanguage, + }, + }); + + // Returning the translation + return { + text: json[0].translations[0].text, + detectedSourceLanguage: json[0].detectedLanguage.language, + engine: this, + }; + } +} diff --git a/src/modules/Translate/Pirate.mjs b/src/modules/Translate/Pirate.mjs new file mode 100644 index 0000000..9cc7074 --- /dev/null +++ b/src/modules/Translate/Pirate.mjs @@ -0,0 +1,23 @@ +export default class Pirate { + static name = `The Pirate Translator`; + static icon = `https://flaticons.net/custom.php?i=zvmFDVuW6Nn8SqIPI6Iw7CnJAXRIk&format=png&size=64`; + static url = `https://pirate.monkeyness.com/translate`; + static async insult() { + // Build the URL + const url = new URL(`${process.env.PIRATE_API_URL}/insult`); + + // Send the request + const response = await fetch(url); + return await response.text(); + } + + static async translate(inputText) { + // Build the URL + const url = new URL(`${process.env.PIRATE_API_URL}/translate`); + url.searchParams.append("english", inputText); + + // Send the request + const response = await fetch(url); + return await response.text(); + } +} \ No newline at end of file diff --git a/src/modules/Translate/Translate.mjs b/src/modules/Translate/Translate.mjs new file mode 100644 index 0000000..a6b5e45 --- /dev/null +++ b/src/modules/Translate/Translate.mjs @@ -0,0 +1,111 @@ +import { EmbedBuilder } from 'discord.js'; +import DetectLanguage from 'detectlanguage'; +import Microsoft from './Microsoft.mjs'; +import DeepL from './DeepL.mjs'; +import Pirate from './Pirate.mjs'; +import { normalize } from '../Miscellaneous.mjs'; + +export default class Translate { + static languageCodes = { + pirate: 'Pirate', + }; + + static async initEngines() { + await DeepL.getSupportedLanguages(); + await Microsoft.getSupportedLanguages(); + } + + static async anyLimitReached() { + const detectLanguage = new DetectLanguage( + process.env.DETECT_LANGUAGE_TOKEN + ); + + const { + requests, + bytes, + daily_requests_limit: dailyRequestsLimit, + daily_bytes_limit: dailyBytesLimit, + } = await detectLanguage.userStatus(); + + return requests >= dailyRequestsLimit || bytes >= dailyBytesLimit; + } + + static async checkLanguage(text) { + // Check if daily request/byte limit is reached + if (await this.anyLimitReached()) return null; + + const detectLanguage = new DetectLanguage( + process.env.DETECT_LANGUAGE_TOKEN + ); + + return (await detectLanguage.detect(text)) + .filter(item => item.isReliable) + .map(item => item.language) + .pop(); + } + + static async translate(inputText, targetLanguage) { + // DeepL doesn't support 'en' as a target language + const deeplTargetLanguage = + targetLanguage === 'en' ? 'en-US' : targetLanguage; + + // Check the source language + let detectedSourceLanguage = await this.checkLanguage(inputText); + + let result; + if (targetLanguage === 'pirate') { + // Translate to English first if the source language is not English + if (detectedSourceLanguage != 'en') + ({ text: inputText, detectedSourceLanguage } = await this.translate( + inputText, + 'en' + )); + + // Translate to Pirate + result = { + text: await Pirate.translate(inputText), + detectedSourceLanguage, + engine: Pirate, + }; + } + // Check if the text is already in the target language + else if (detectedSourceLanguage === targetLanguage) return null; + // Prefer DeepL if the language is supported and no limit is reached + else if ( + DeepL.supportedSourceLanguages.includes(detectedSourceLanguage) && + DeepL.supportedTargetLanguages.includes(deeplTargetLanguage) && + !(await DeepL.anyLimitReached()) + ) + result = { + ...(await DeepL.translate(inputText, deeplTargetLanguage)), + engine: DeepL, + }; + // Otherwise use Microsoft's Translate API + else + result = { + ...(await Microsoft.translate(inputText, targetLanguage)), + engine: Microsoft, + }; + + // Check if the translation is the same as the input text + if (!result.text || normalize(result.text) === normalize(inputText)) + return null; + + if (detectedSourceLanguage !== result.detectedSourceLanguage) + console.log(detectedSourceLanguage, result.detectedSourceLanguage); + + // Detected source language by the translation engine + detectedSourceLanguage = result.detectedSourceLanguage; + let sourceLanguageName = this.languageCodes[detectedSourceLanguage]; + let targetLanguageName = this.languageCodes[targetLanguage]; + result.embed = new EmbedBuilder() + .setColor(0x5bccff) + .setDescription(`>>> ${result.text}`) + .setFooter({ + text: `${sourceLanguageName} โ†’ ${targetLanguageName} โ€ข ${result.engine.name}`, + iconURL: result.engine.icon, + }); + + return result; + } +} diff --git a/yarn.lock b/yarn.lock index 3418e7b..39cc5c9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,6 +5,15 @@ __metadata: version: 8 cacheKey: 10 +"@cspotcode/source-map-support@npm:^0.8.0": + version: 0.8.1 + resolution: "@cspotcode/source-map-support@npm:0.8.1" + dependencies: + "@jridgewell/trace-mapping": "npm:0.3.9" + checksum: b6e38a1712fab242c86a241c229cf562195aad985d0564bd352ac404be583029e89e93028ffd2c251d2c407ecac5fb0cbdca94a2d5c10f29ac806ede0508b3ff + languageName: node + linkType: hard + "@discordjs/builders@npm:^1.7.0": version: 1.7.0 resolution: "@discordjs/builders@npm:1.7.0" @@ -112,6 +121,57 @@ __metadata: languageName: node linkType: hard +"@jridgewell/resolve-uri@npm:^3.0.3": + version: 3.1.1 + resolution: "@jridgewell/resolve-uri@npm:3.1.1" + checksum: 64d59df8ae1a4e74315eb1b61e012f1c7bc8aac47a3a1e683f6fe7008eab07bc512a742b7aa7c0405685d1421206de58c9c2e6adbfe23832f8bd69408ffc183e + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:^1.4.10": + version: 1.4.15 + resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" + checksum: 89960ac087781b961ad918978975bcdf2051cd1741880469783c42de64239703eab9db5230d776d8e6a09d73bb5e4cb964e07d93ee6e2e7aea5a7d726e865c09 + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:0.3.9": + version: 0.3.9 + resolution: "@jridgewell/trace-mapping@npm:0.3.9" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.0.3" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + checksum: 83deafb8e7a5ca98993c2c6eeaa93c270f6f647a4c0dc00deb38c9cf9b2d3b7bf15e8839540155247ef034a052c0ec4466f980bf0c9e2ab63b97d16c0cedd3ff + languageName: node + linkType: hard + +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": "npm:2.0.5" + run-parallel: "npm:^1.1.9" + checksum: 6ab2a9b8a1d67b067922c36f259e3b3dfd6b97b219c540877a4944549a4d49ea5ceba5663905ab5289682f1f3c15ff441d02f0447f620a42e1cb5e1937174d4b + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0 + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": "npm:2.1.5" + fastq: "npm:^1.6.0" + checksum: 40033e33e96e97d77fba5a238e4bba4487b8284678906a9f616b5579ddaf868a18874c0054a75402c9fbaaa033a25ceae093af58c9c30278e35c23c9479e79b0 + languageName: node + linkType: hard + "@npmcli/agent@npm:^2.0.0": version: 2.2.0 resolution: "@npmcli/agent@npm:2.2.0" @@ -154,6 +214,146 @@ __metadata: languageName: node linkType: hard +"@oclif/core@npm:^1": + version: 1.26.2 + resolution: "@oclif/core@npm:1.26.2" + dependencies: + "@oclif/linewrap": "npm:^1.0.0" + "@oclif/screen": "npm:^3.0.4" + ansi-escapes: "npm:^4.3.2" + ansi-styles: "npm:^4.3.0" + cardinal: "npm:^2.1.1" + chalk: "npm:^4.1.2" + clean-stack: "npm:^3.0.1" + cli-progress: "npm:^3.10.0" + debug: "npm:^4.3.4" + ejs: "npm:^3.1.6" + fs-extra: "npm:^9.1.0" + get-package-type: "npm:^0.1.0" + globby: "npm:^11.1.0" + hyperlinker: "npm:^1.0.0" + indent-string: "npm:^4.0.0" + is-wsl: "npm:^2.2.0" + js-yaml: "npm:^3.14.1" + natural-orderby: "npm:^2.0.3" + object-treeify: "npm:^1.1.33" + password-prompt: "npm:^1.1.2" + semver: "npm:^7.3.7" + string-width: "npm:^4.2.3" + strip-ansi: "npm:^6.0.1" + supports-color: "npm:^8.1.1" + supports-hyperlinks: "npm:^2.2.0" + tslib: "npm:^2.4.1" + widest-line: "npm:^3.1.0" + wrap-ansi: "npm:^7.0.0" + checksum: 1d4d1e1914e6ef673e7dd36a674b4ac9d40cf08ad09233d908e61c75e4fdb1dbf7f2c8cde4c9b8c7a64c23ff81e56b1fd2e0b0bd2cfcb8f1422b12828f7b9255 + languageName: node + linkType: hard + +"@oclif/core@npm:^2.11.8, @oclif/core@npm:^2.15.0": + version: 2.15.0 + resolution: "@oclif/core@npm:2.15.0" + dependencies: + "@types/cli-progress": "npm:^3.11.0" + ansi-escapes: "npm:^4.3.2" + ansi-styles: "npm:^4.3.0" + cardinal: "npm:^2.1.1" + chalk: "npm:^4.1.2" + clean-stack: "npm:^3.0.1" + cli-progress: "npm:^3.12.0" + debug: "npm:^4.3.4" + ejs: "npm:^3.1.8" + get-package-type: "npm:^0.1.0" + globby: "npm:^11.1.0" + hyperlinker: "npm:^1.0.0" + indent-string: "npm:^4.0.0" + is-wsl: "npm:^2.2.0" + js-yaml: "npm:^3.14.1" + natural-orderby: "npm:^2.0.3" + object-treeify: "npm:^1.1.33" + password-prompt: "npm:^1.1.2" + slice-ansi: "npm:^4.0.0" + string-width: "npm:^4.2.3" + strip-ansi: "npm:^6.0.1" + supports-color: "npm:^8.1.1" + supports-hyperlinks: "npm:^2.2.0" + ts-node: "npm:^10.9.1" + tslib: "npm:^2.5.0" + widest-line: "npm:^3.1.0" + wordwrap: "npm:^1.0.0" + wrap-ansi: "npm:^7.0.0" + checksum: 610ad7425ac811797ec289be9f2f4763f95abf407d2b7b78a8f2871a2954168ff5c4ec323f831a0df5b5938d3ef826ad3915629c9749f7f615e1d4455f13b100 + languageName: node + linkType: hard + +"@oclif/linewrap@npm:^1.0.0": + version: 1.0.0 + resolution: "@oclif/linewrap@npm:1.0.0" + checksum: 210edd1aac4a0a2b68ec71a2b62e5c3a15f88ac0d5af31aae126fff1d147921c5de06d611999d4958699bafe1298cad9f62a9ff45fc55e4846bf35fcc7a6f331 + languageName: node + linkType: hard + +"@oclif/plugin-help@npm:^5.2.11": + version: 5.2.20 + resolution: "@oclif/plugin-help@npm:5.2.20" + dependencies: + "@oclif/core": "npm:^2.15.0" + checksum: 8e06e6dd29ba31b9eade803f14d676be5b06c934c81a87c19261dac67c3d14a0d89e1ccf6a58ee793f6d6fc14ae202bbe37ff52278a23e71a84a30e01b80198a + languageName: node + linkType: hard + +"@oclif/plugin-not-found@npm:^2.3.24": + version: 2.4.3 + resolution: "@oclif/plugin-not-found@npm:2.4.3" + dependencies: + "@oclif/core": "npm:^2.15.0" + chalk: "npm:^4" + fast-levenshtein: "npm:^3.0.0" + checksum: a7452e4d4b868411856dd3a195609af0757a8a171fbcc17f4311d8b04764e37f4c6d32dd1d9078b166452836e5fa7c42996ffb444016e466f92092c46a2606fb + languageName: node + linkType: hard + +"@oclif/plugin-update@npm:^3.1.16": + version: 3.2.4 + resolution: "@oclif/plugin-update@npm:3.2.4" + dependencies: + "@oclif/core": "npm:^2.11.8" + chalk: "npm:^4" + cross-spawn: "npm:^7.0.3" + debug: "npm:^4.3.1" + filesize: "npm:^6.1.0" + fs-extra: "npm:^9.0.1" + http-call: "npm:^5.3.0" + inquirer: "npm:^8.2.6" + lodash.throttle: "npm:^4.1.1" + log-chopper: "npm:^1.0.2" + semver: "npm:^7.5.4" + tar-fs: "npm:^2.1.1" + checksum: d49b40dd5be5f6fb9593eb4f8cf742ca2491ef1dfb78eead5c527a2c2b094a780d3764164953f313942b4f13e7be754ff9b70dad9cebab248264da7ec71b1071 + languageName: node + linkType: hard + +"@oclif/plugin-warn-if-update-available@npm:^2.0.40": + version: 2.1.1 + resolution: "@oclif/plugin-warn-if-update-available@npm:2.1.1" + dependencies: + "@oclif/core": "npm:^2.15.0" + chalk: "npm:^4.1.0" + debug: "npm:^4.1.0" + http-call: "npm:^5.2.2" + lodash.template: "npm:^4.5.0" + semver: "npm:^7.5.4" + checksum: 4ad8de9309a446fabbc8bea5f46854acfeb127ef80292e526bfd597a9e8e289a621ee7d27be180c49a93270c90999e7a946ba4161eb996e1627a51cb22a6ff69 + languageName: node + linkType: hard + +"@oclif/screen@npm:^3.0.4": + version: 3.0.8 + resolution: "@oclif/screen@npm:3.0.8" + checksum: 6a93c701b4daed2f17f1d7149d8accc3c4294ee1c2741e0ba9a039eeed5db6ddf2a182a3ea36cf9dc47a1875d073f053a32f2b19c8b81165dc855b2f47d86071 + languageName: node + linkType: hard + "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" @@ -271,7 +471,44 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*": +"@tsconfig/node10@npm:^1.0.7": + version: 1.0.9 + resolution: "@tsconfig/node10@npm:1.0.9" + checksum: a33ae4dc2a621c0678ac8ac4bceb8e512ae75dac65417a2ad9b022d9b5411e863c4c198b6ba9ef659e14b9fb609bbec680841a2e84c1172df7a5ffcf076539df + languageName: node + linkType: hard + +"@tsconfig/node12@npm:^1.0.7": + version: 1.0.11 + resolution: "@tsconfig/node12@npm:1.0.11" + checksum: 5ce29a41b13e7897a58b8e2df11269c5395999e588b9a467386f99d1d26f6c77d1af2719e407621412520ea30517d718d5192a32403b8dfcc163bf33e40a338a + languageName: node + linkType: hard + +"@tsconfig/node14@npm:^1.0.0": + version: 1.0.3 + resolution: "@tsconfig/node14@npm:1.0.3" + checksum: 19275fe80c4c8d0ad0abed6a96dbf00642e88b220b090418609c4376e1cef81bf16237bf170ad1b341452feddb8115d8dd2e5acdfdea1b27422071163dc9ba9d + languageName: node + linkType: hard + +"@tsconfig/node16@npm:^1.0.2": + version: 1.0.4 + resolution: "@tsconfig/node16@npm:1.0.4" + checksum: 202319785901f942a6e1e476b872d421baec20cf09f4b266a1854060efbf78cde16a4d256e8bc949d31e6cd9a90f1e8ef8fb06af96a65e98338a2b6b0de0a0ff + languageName: node + linkType: hard + +"@types/cli-progress@npm:^3.11.0": + version: 3.11.5 + resolution: "@types/cli-progress@npm:3.11.5" + dependencies: + "@types/node": "npm:*" + checksum: cb19187637b0a9b92219eab8d3d42250f1773328c24cb265d1bc677e3017f512e95e834e4846bcf0964efc232a13f86f7ef01843be804daa5433cc655c375bb3 + languageName: node + linkType: hard + +"@types/node@npm:*, @types/node@npm:>=12.0": version: 20.10.0 resolution: "@types/node@npm:20.10.0" dependencies: @@ -319,6 +556,22 @@ __metadata: languageName: node linkType: hard +"acorn-walk@npm:^8.1.1": + version: 8.3.0 + resolution: "acorn-walk@npm:8.3.0" + checksum: 7673f342db939adc16ac3596c374a56be33e6ef84e01dfb3a0b50cc87cf9b8e46d84c337dcd7d5644f75bf219ad5a36bf33795e9f1af15298e6bceacf46c5f1f + languageName: node + linkType: hard + +"acorn@npm:^8.4.1": + version: 8.11.2 + resolution: "acorn@npm:8.11.2" + bin: + acorn: bin/acorn + checksum: ff559b891382ad4cd34cc3c493511d0a7075a51f5f9f02a03440e92be3705679367238338566c5fbd3521ecadd565d29301bc8e16cb48379206bffbff3d72500 + languageName: node + linkType: hard + "agent-base@npm:6, agent-base@npm:^6.0.2": version: 6.0.2 resolution: "agent-base@npm:6.0.2" @@ -356,6 +609,15 @@ __metadata: languageName: node linkType: hard +"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.2": + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" + dependencies: + type-fest: "npm:^0.21.3" + checksum: 8661034456193ffeda0c15c8c564a9636b0c04094b7f78bd01517929c17c504090a60f7a75f949f5af91289c264d3e1001d91492c1bd58efc8e100500ce04de2 + languageName: node + linkType: hard + "ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" @@ -370,7 +632,7 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^4.0.0": +"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0, ansi-styles@npm:^4.3.0": version: 4.3.0 resolution: "ansi-styles@npm:4.3.0" dependencies: @@ -386,6 +648,13 @@ __metadata: languageName: node linkType: hard +"ansicolors@npm:~0.3.2": + version: 0.3.2 + resolution: "ansicolors@npm:0.3.2" + checksum: 0704d1485d84d65a47aacd3d2d26f501f21aeeb509922c8f2496d0ec5d346dc948efa64f3151aef0571d73e5c44eb10fd02f27f59762e9292fe123bb1ea9ff7d + languageName: node + linkType: hard + "anymatch@npm:~3.1.2": version: 3.1.3 resolution: "anymatch@npm:3.1.3" @@ -413,6 +682,87 @@ __metadata: languageName: node linkType: hard +"arg@npm:^4.1.0": + version: 4.1.3 + resolution: "arg@npm:4.1.3" + checksum: 969b491082f20cad166649fa4d2073ea9e974a4e5ac36247ca23d2e5a8b3cb12d60e9ff70a8acfe26d76566c71fd351ee5e6a9a6595157eb36f92b1fd64e1599 + languageName: node + linkType: hard + +"argparse@npm:^1.0.7": + version: 1.0.10 + resolution: "argparse@npm:1.0.10" + dependencies: + sprintf-js: "npm:~1.0.2" + checksum: c6a621343a553ff3779390bb5ee9c2263d6643ebcd7843227bdde6cc7adbed796eb5540ca98db19e3fd7b4714e1faa51551f8849b268bb62df27ddb15cbcd91e + languageName: node + linkType: hard + +"array-union@npm:^2.1.0": + version: 2.1.0 + resolution: "array-union@npm:2.1.0" + checksum: 5bee12395cba82da674931df6d0fea23c4aa4660cb3b338ced9f828782a65caa232573e6bf3968f23e0c5eb301764a382cef2f128b170a9dc59de0e36c39f98d + languageName: node + linkType: hard + +"astral-regex@npm:^2.0.0": + version: 2.0.0 + resolution: "astral-regex@npm:2.0.0" + checksum: 876231688c66400473ba505731df37ea436e574dd524520294cc3bbc54ea40334865e01fa0d074d74d036ee874ee7e62f486ea38bc421ee8e6a871c06f011766 + languageName: node + linkType: hard + +"async@npm:^3.2.3": + version: 3.2.5 + resolution: "async@npm:3.2.5" + checksum: 323c3615c3f0ab1ac25a6f953296bc0ac3213d5e0f1c0debdb12964e55963af288d570293c11e44f7967af58c06d2a88d0ea588c86ec0fbf62fa98037f604a0f + languageName: node + linkType: hard + +"asynckit@npm:^0.4.0": + version: 0.4.0 + resolution: "asynckit@npm:0.4.0" + checksum: 3ce727cbc78f69d6a4722517a58ee926c8c21083633b1d3fdf66fd688f6c127a53a592141bd4866f9b63240a86e9d8e974b13919450bd17fa33c2d22c4558ad8 + languageName: node + linkType: hard + +"at-least-node@npm:^1.0.0": + version: 1.0.0 + resolution: "at-least-node@npm:1.0.0" + checksum: 463e2f8e43384f1afb54bc68485c436d7622acec08b6fad269b421cb1d29cebb5af751426793d0961ed243146fe4dc983402f6d5a51b720b277818dbf6f2e49e + languageName: node + linkType: hard + +"axios@npm:>=0.21.2 <1.2.0 || >=1.2.2": + version: 1.6.2 + resolution: "axios@npm:1.6.2" + dependencies: + follow-redirects: "npm:^1.15.0" + form-data: "npm:^4.0.0" + proxy-from-env: "npm:^1.1.0" + checksum: 612bc93f8f738a518e7c5f9de9cc782bcd36aac6bae279160ef6a10260378e21c1786520eab3336898e3d66e0839ebdf739f327fb6d0431baa4d3235703a7652 + languageName: node + linkType: hard + +"axios@npm:^0.21.1": + version: 0.21.4 + resolution: "axios@npm:0.21.4" + dependencies: + follow-redirects: "npm:^1.14.0" + checksum: da644592cb6f8f9f8c64fdabd7e1396d6769d7a4c1ea5f8ae8beb5c2eb90a823e3a574352b0b934ac62edc762c0f52647753dc54f7d07279127a7e5c4cd20272 + languageName: node + linkType: hard + +"axios@npm:^0.27.2": + version: 0.27.2 + resolution: "axios@npm:0.27.2" + dependencies: + follow-redirects: "npm:^1.14.9" + form-data: "npm:^4.0.0" + checksum: 2efaf18dd0805f7bc772882bc86f004abd92d51007b54c5081f74db0d08ce3593e2c010261896d25a14318eeaa2e966fd825e34f810e8a3339dc64b9d177cf70 + languageName: node + linkType: hard + "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" @@ -420,6 +770,13 @@ __metadata: languageName: node linkType: hard +"base64-js@npm:^1.3.1": + version: 1.5.1 + resolution: "base64-js@npm:1.5.1" + checksum: 669632eb3745404c2f822a18fc3a0122d2f9a7a13f7fb8b5823ee19d1d2ff9ee5b52c53367176ea4ad093c332fd5ab4bd0ebae5a8e27917a4105a4cfc86b1005 + languageName: node + linkType: hard + "binary-extensions@npm:^2.0.0": version: 2.2.0 resolution: "binary-extensions@npm:2.2.0" @@ -427,6 +784,17 @@ __metadata: languageName: node linkType: hard +"bl@npm:^4.0.3, bl@npm:^4.1.0": + version: 4.1.0 + resolution: "bl@npm:4.1.0" + dependencies: + buffer: "npm:^5.5.0" + inherits: "npm:^2.0.4" + readable-stream: "npm:^3.4.0" + checksum: b7904e66ed0bdfc813c06ea6c3e35eafecb104369dbf5356d0f416af90c1546de3b74e5b63506f0629acf5e16a6f87c3798f16233dcff086e9129383aa02ab55 + languageName: node + linkType: hard + "brace-expansion@npm:^1.1.7": version: 1.1.11 resolution: "brace-expansion@npm:1.1.11" @@ -446,7 +814,7 @@ __metadata: languageName: node linkType: hard -"braces@npm:~3.0.2": +"braces@npm:^3.0.2, braces@npm:~3.0.2": version: 3.0.2 resolution: "braces@npm:3.0.2" dependencies: @@ -455,6 +823,23 @@ __metadata: languageName: node linkType: hard +"buffer@npm:^5.5.0": + version: 5.7.1 + resolution: "buffer@npm:5.7.1" + dependencies: + base64-js: "npm:^1.3.1" + ieee754: "npm:^1.1.13" + checksum: 997434d3c6e3b39e0be479a80288875f71cd1c07d75a3855e6f08ef848a3c966023f79534e22e415ff3a5112708ce06127277ab20e527146d55c84566405c7c6 + languageName: node + linkType: hard + +"byline@npm:5.x": + version: 5.0.0 + resolution: "byline@npm:5.0.0" + checksum: 737ca83e8eda2976728dae62e68bc733aea095fab08db4c6f12d3cee3cf45b6f97dce45d1f6b6ff9c2c947736d10074985b4425b31ce04afa1985a4ef3d334a7 + languageName: node + linkType: hard + "cacache@npm:^16.1.0": version: 16.1.3 resolution: "cacache@npm:16.1.3" @@ -501,6 +886,35 @@ __metadata: languageName: node linkType: hard +"cardinal@npm:^2.1.1": + version: 2.1.1 + resolution: "cardinal@npm:2.1.1" + dependencies: + ansicolors: "npm:~0.3.2" + redeyed: "npm:~2.1.0" + bin: + cdl: ./bin/cdl.js + checksum: caf0d34739ef7b1d80e1753311f889997b62c4490906819eb5da5bd46e7f5e5caba7a8a96ca401190c7d9c18443a7749e5338630f7f9a1ae98d60cac49b9008e + languageName: node + linkType: hard + +"chalk@npm:^4, chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.1, chalk@npm:^4.1.2": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: cb3f3e594913d63b1814d7ca7c9bafbf895f75fbf93b92991980610dfd7b48500af4e3a5d4e3a8f337990a96b168d7eb84ee55efdce965e2ee8efc20f8c8f139 + languageName: node + linkType: hard + +"chardet@npm:^0.7.0": + version: 0.7.0 + resolution: "chardet@npm:0.7.0" + checksum: b0ec668fba5eeec575ed2559a0917ba41a6481f49063c8445400e476754e0957ee09e44dc032310f526182b8f1bf25e9d4ed371f74050af7be1383e06bc44952 + languageName: node + linkType: hard + "chokidar@npm:^3.5.2": version: 3.5.3 resolution: "chokidar@npm:3.5.3" @@ -520,6 +934,13 @@ __metadata: languageName: node linkType: hard +"chownr@npm:^1.1.1": + version: 1.1.4 + resolution: "chownr@npm:1.1.4" + checksum: 115648f8eb38bac5e41c3857f3e663f9c39ed6480d1349977c4d96c95a47266fcacc5a5aabf3cb6c481e22d72f41992827db47301851766c4fd77ac21a4f081d + languageName: node + linkType: hard + "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" @@ -534,6 +955,54 @@ __metadata: languageName: node linkType: hard +"clean-stack@npm:^3.0.1": + version: 3.0.1 + resolution: "clean-stack@npm:3.0.1" + dependencies: + escape-string-regexp: "npm:4.0.0" + checksum: dc18c842d7792dd72d463936b1b0a5b2621f0fc11588ee48b602e1a29b6c010c606d89f3de1f95d15d72de74aea93c0fbac8246593a31d95f8462cac36148e05 + languageName: node + linkType: hard + +"cli-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "cli-cursor@npm:3.1.0" + dependencies: + restore-cursor: "npm:^3.1.0" + checksum: 2692784c6cd2fd85cfdbd11f53aea73a463a6d64a77c3e098b2b4697a20443f430c220629e1ca3b195ea5ac4a97a74c2ee411f3807abf6df2b66211fec0c0a29 + languageName: node + linkType: hard + +"cli-progress@npm:^3.10.0, cli-progress@npm:^3.12.0": + version: 3.12.0 + resolution: "cli-progress@npm:3.12.0" + dependencies: + string-width: "npm:^4.2.3" + checksum: a6a549919a7461f5e798b18a4a19f83154bab145d3ec73d7f3463a8db8e311388c545ace1105557760a058cc4999b7f28c9d8d24d9783ee2912befb32544d4b8 + languageName: node + linkType: hard + +"cli-spinners@npm:^2.5.0": + version: 2.9.2 + resolution: "cli-spinners@npm:2.9.2" + checksum: a0a863f442df35ed7294424f5491fa1756bd8d2e4ff0c8736531d886cec0ece4d85e8663b77a5afaf1d296e3cbbebff92e2e99f52bbea89b667cbe789b994794 + languageName: node + linkType: hard + +"cli-width@npm:^3.0.0": + version: 3.0.0 + resolution: "cli-width@npm:3.0.0" + checksum: 8730848b04fb189666ab037a35888d191c8f05b630b1d770b0b0e4c920b47bb5cc14bddf6b8ffe5bfc66cee97c8211d4d18e756c1ffcc75d7dbe7e1186cd7826 + languageName: node + linkType: hard + +"clone@npm:^1.0.2": + version: 1.0.4 + resolution: "clone@npm:1.0.4" + checksum: d06418b7335897209e77bdd430d04f882189582e67bd1f75a04565f3f07f5b3f119a9d670c943b6697d0afb100f03b866b3b8a1f91d4d02d72c4ecf2bb64b5dd + languageName: node + linkType: hard + "color-convert@npm:^2.0.1": version: 2.0.1 resolution: "color-convert@npm:2.0.1" @@ -559,6 +1028,15 @@ __metadata: languageName: node linkType: hard +"combined-stream@npm:^1.0.8": + version: 1.0.8 + resolution: "combined-stream@npm:1.0.8" + dependencies: + delayed-stream: "npm:~1.0.0" + checksum: 2e969e637d05d09fa50b02d74c83a1186f6914aae89e6653b62595cc75a221464f884f55f231b8f4df7a49537fba60bdc0427acd2bf324c09a1dbb84837e36e4 + languageName: node + linkType: hard + "concat-map@npm:0.0.1": version: 0.0.1 resolution: "concat-map@npm:0.0.1" @@ -573,6 +1051,20 @@ __metadata: languageName: node linkType: hard +"content-type@npm:^1.0.4": + version: 1.0.5 + resolution: "content-type@npm:1.0.5" + checksum: 585847d98dc7fb8035c02ae2cb76c7a9bd7b25f84c447e5ed55c45c2175e83617c8813871b4ee22f368126af6b2b167df655829007b21aa10302873ea9c62662 + languageName: node + linkType: hard + +"create-require@npm:^1.1.0": + version: 1.1.1 + resolution: "create-require@npm:1.1.1" + checksum: a9a1503d4390d8b59ad86f4607de7870b39cad43d929813599a23714831e81c520bddf61bcdd1f8e30f05fd3a2b71ae8538e946eb2786dc65c2bbc520f692eff + languageName: node + linkType: hard + "cross-env@npm:^7.0.3": version: 7.0.3 resolution: "cross-env@npm:7.0.3" @@ -585,7 +1077,7 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.1": +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.3": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" dependencies: @@ -596,7 +1088,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.3.3, debug@npm:^4.3.4": +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.3, debug@npm:^4.3.4": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: @@ -617,6 +1109,34 @@ __metadata: languageName: node linkType: hard +"deepl-node@npm:^1.11.0": + version: 1.11.0 + resolution: "deepl-node@npm:1.11.0" + dependencies: + "@types/node": "npm:>=12.0" + axios: "npm:>=0.21.2 <1.2.0 || >=1.2.2" + form-data: "npm:^3.0.0" + loglevel: "npm:>=1.6.2" + checksum: 8b899f4451a3b9431ff2f342a1a450a47f19459fe8f838f8e4a3fd89ce317bda577814506b33a02942345370750a3062271a0caff14f2f66ac47e55f2b5689f7 + languageName: node + linkType: hard + +"defaults@npm:^1.0.3": + version: 1.0.4 + resolution: "defaults@npm:1.0.4" + dependencies: + clone: "npm:^1.0.2" + checksum: 3a88b7a587fc076b84e60affad8b85245c01f60f38fc1d259e7ac1d89eb9ce6abb19e27215de46b98568dd5bc48471730b327637e6f20b0f1bc85cf00440c80a + languageName: node + linkType: hard + +"delayed-stream@npm:~1.0.0": + version: 1.0.0 + resolution: "delayed-stream@npm:1.0.0" + checksum: 46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 + languageName: node + linkType: hard + "delegates@npm:^1.0.0": version: 1.0.0 resolution: "delegates@npm:1.0.0" @@ -631,6 +1151,31 @@ __metadata: languageName: node linkType: hard +"detectlanguage@npm:^2.1.0": + version: 2.1.0 + resolution: "detectlanguage@npm:2.1.0" + dependencies: + axios: "npm:^0.21.1" + checksum: 3a4fc000d45b5b66ed53274f120af4732a72879a1ce7a438ddcdfe76e50efe5272a8a92785268ba742f23e1f6d597e03b1fbcbea60dac4d8c9e9fdd5e6ecdff7 + languageName: node + linkType: hard + +"diff@npm:^4.0.1": + version: 4.0.2 + resolution: "diff@npm:4.0.2" + checksum: ec09ec2101934ca5966355a229d77afcad5911c92e2a77413efda5455636c4cf2ce84057e2d7715227a2eeeda04255b849bd3ae3a4dd22eb22e86e76456df069 + languageName: node + linkType: hard + +"dir-glob@npm:^3.0.1": + version: 3.0.1 + resolution: "dir-glob@npm:3.0.1" + dependencies: + path-type: "npm:^4.0.0" + checksum: fa05e18324510d7283f55862f3161c6759a3f2f8dbce491a2fc14c8324c498286c54282c1f0e933cb930da8419b30679389499b919122952a4f8592362ef4615 + languageName: node + linkType: hard + "discord-api-types@npm:0.37.61": version: 0.37.61 resolution: "discord-api-types@npm:0.37.61" @@ -645,9 +1190,13 @@ __metadata: "@sentry/node": "npm:^7.80.1" "@sentry/profiling-node": "npm:^1.2.6" cross-env: "npm:^7.0.3" + deepl-node: "npm:^1.11.0" + detectlanguage: "npm:^2.1.0" discord.js: "npm:^14.9.0" dotenv: "npm:^16.3.1" + dotenv-vault: "npm:^1.25.0" nodemon: "npm:^2.0.22" + uuid: "npm:^9.0.1" languageName: unknown linkType: soft @@ -673,6 +1222,24 @@ __metadata: languageName: node linkType: hard +"dotenv-vault@npm:^1.25.0": + version: 1.25.0 + resolution: "dotenv-vault@npm:1.25.0" + dependencies: + "@oclif/core": "npm:^1" + "@oclif/plugin-help": "npm:^5.2.11" + "@oclif/plugin-not-found": "npm:^2.3.24" + "@oclif/plugin-update": "npm:^3.1.16" + "@oclif/plugin-warn-if-update-available": "npm:^2.0.40" + axios: "npm:^0.27.2" + chalk: "npm:^4.1.2" + dotenv: "npm:^16.3.1" + bin: + dotenv-vault: bin/run + checksum: 6e4ffad222ef3669c636241f8acc3cbca4620c088aabf3539a019fb3d920568188826b319bcf66aee185ea7739e5e7ec3dca251e4098002fd9d2f3cbcc7d9c31 + languageName: node + linkType: hard + "dotenv@npm:^16.3.1": version: 16.3.1 resolution: "dotenv@npm:16.3.1" @@ -687,6 +1254,17 @@ __metadata: languageName: node linkType: hard +"ejs@npm:^3.1.6, ejs@npm:^3.1.8": + version: 3.1.9 + resolution: "ejs@npm:3.1.9" + dependencies: + jake: "npm:^10.8.5" + bin: + ejs: bin/cli.js + checksum: 71f56d37540d2c2d71701f0116710c676f75314a3e997ef8b83515d5d4d2b111c5a72725377caeecb928671bacb84a0d38135f345904812e989847057d59f21a + languageName: node + linkType: hard + "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" @@ -710,6 +1288,15 @@ __metadata: languageName: node linkType: hard +"end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": + version: 1.4.4 + resolution: "end-of-stream@npm:1.4.4" + dependencies: + once: "npm:^1.4.0" + checksum: 530a5a5a1e517e962854a31693dbb5c0b2fc40b46dad2a56a2deec656ca040631124f4795823acc68238147805f8b021abbe221f4afed5ef3c8e8efc2024908b + languageName: node + linkType: hard + "env-paths@npm:^2.2.0": version: 2.2.1 resolution: "env-paths@npm:2.2.1" @@ -724,6 +1311,39 @@ __metadata: languageName: node linkType: hard +"error-ex@npm:^1.3.1": + version: 1.3.2 + resolution: "error-ex@npm:1.3.2" + dependencies: + is-arrayish: "npm:^0.2.1" + checksum: d547740aa29c34e753fb6fed2c5de81802438529c12b3673bd37b6bb1fe49b9b7abdc3c11e6062fe625d8a296b3cf769a80f878865e25e685f787763eede3ffb + languageName: node + linkType: hard + +"escape-string-regexp@npm:4.0.0": + version: 4.0.0 + resolution: "escape-string-regexp@npm:4.0.0" + checksum: 98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^1.0.5": + version: 1.0.5 + resolution: "escape-string-regexp@npm:1.0.5" + checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 + languageName: node + linkType: hard + +"esprima@npm:^4.0.0, esprima@npm:~4.0.0": + version: 4.0.1 + resolution: "esprima@npm:4.0.1" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: f1d3c622ad992421362294f7acf866aa9409fbad4eb2e8fa230bd33944ce371d32279667b242d8b8907ec2b6ad7353a717f3c0e60e748873a34a7905174bc0eb + languageName: node + linkType: hard + "exponential-backoff@npm:^3.1.1": version: 3.1.1 resolution: "exponential-backoff@npm:3.1.1" @@ -731,6 +1351,17 @@ __metadata: languageName: node linkType: hard +"external-editor@npm:^3.0.3": + version: 3.1.0 + resolution: "external-editor@npm:3.1.0" + dependencies: + chardet: "npm:^0.7.0" + iconv-lite: "npm:^0.4.24" + tmp: "npm:^0.0.33" + checksum: 776dff1d64a1d28f77ff93e9e75421a81c062983fd1544279d0a32f563c0b18c52abbb211f31262e2827e48edef5c9dc8f960d06dd2d42d1654443b88568056b + languageName: node + linkType: hard + "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" @@ -738,6 +1369,69 @@ __metadata: languageName: node linkType: hard +"fast-glob@npm:^3.2.9": + version: 3.3.2 + resolution: "fast-glob@npm:3.3.2" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.4" + checksum: 222512e9315a0efca1276af9adb2127f02105d7288fa746145bf45e2716383fb79eb983c89601a72a399a56b7c18d38ce70457c5466218c5f13fad957cee16df + languageName: node + linkType: hard + +"fast-levenshtein@npm:^3.0.0": + version: 3.0.0 + resolution: "fast-levenshtein@npm:3.0.0" + dependencies: + fastest-levenshtein: "npm:^1.0.7" + checksum: df98841b262eb345335043ae42f0219f1acf1a88f2e0959ca94c4a46df44e40455d9ee11a3f1c730dee2b1b87dc8b20d4184e71712b30b229df5b40c944ea649 + languageName: node + linkType: hard + +"fastest-levenshtein@npm:^1.0.7": + version: 1.0.16 + resolution: "fastest-levenshtein@npm:1.0.16" + checksum: ee85d33b5cef592033f70e1c13ae8624055950b4eb832435099cd56aa313d7f251b873bedbc06a517adfaff7b31756d139535991e2406967438e03a1bf1b008e + languageName: node + linkType: hard + +"fastq@npm:^1.6.0": + version: 1.15.0 + resolution: "fastq@npm:1.15.0" + dependencies: + reusify: "npm:^1.0.4" + checksum: 67c01b1c972e2d5b6fea197a1a39d5d582982aea69ff4c504badac71080d8396d4843b165a9686e907c233048f15a86bbccb0e7f83ba771f6fa24bcde059d0c3 + languageName: node + linkType: hard + +"figures@npm:^3.0.0": + version: 3.2.0 + resolution: "figures@npm:3.2.0" + dependencies: + escape-string-regexp: "npm:^1.0.5" + checksum: a3bf94e001be51d3770500789157f067218d4bc681a65e1f69d482de15120bcac822dceb1a7b3803f32e4e3a61a46df44f7f2c8ba95d6375e7491502e0dd3d97 + languageName: node + linkType: hard + +"filelist@npm:^1.0.4": + version: 1.0.4 + resolution: "filelist@npm:1.0.4" + dependencies: + minimatch: "npm:^5.0.1" + checksum: 4b436fa944b1508b95cffdfc8176ae6947b92825483639ef1b9a89b27d82f3f8aa22b21eed471993f92709b431670d4e015b39c087d435a61e1bb04564cf51de + languageName: node + linkType: hard + +"filesize@npm:^6.1.0": + version: 6.4.0 + resolution: "filesize@npm:6.4.0" + checksum: 20ddfd66059aa4cdd0db34e36adb368696811d083bbc31952f64f33f5f7792d8351ab33cd47416ef478acfd869cf77eee47235749090ad9b1cac26d2c18a05e5 + languageName: node + linkType: hard + "fill-range@npm:^7.0.1": version: 7.0.1 resolution: "fill-range@npm:7.0.1" @@ -747,6 +1441,16 @@ __metadata: languageName: node linkType: hard +"follow-redirects@npm:^1.14.0, follow-redirects@npm:^1.14.9, follow-redirects@npm:^1.15.0": + version: 1.15.3 + resolution: "follow-redirects@npm:1.15.3" + peerDependenciesMeta: + debug: + optional: true + checksum: 60d98693f4976892f8c654b16ef6d1803887a951898857ab0cdc009570b1c06314ad499505b7a040ac5b98144939f8597766e5e6a6859c0945d157b473aa6f5f + languageName: node + linkType: hard + "foreground-child@npm:^3.1.0": version: 3.1.1 resolution: "foreground-child@npm:3.1.1" @@ -757,6 +1461,47 @@ __metadata: languageName: node linkType: hard +"form-data@npm:^3.0.0": + version: 3.0.1 + resolution: "form-data@npm:3.0.1" + dependencies: + asynckit: "npm:^0.4.0" + combined-stream: "npm:^1.0.8" + mime-types: "npm:^2.1.12" + checksum: 944b40ff63b9cb1ca7a97e70f72104c548e0b0263e3e817e49919015a0d687453086259b93005389896dbffd3777cccea2e67c51f4e827590e5979b14ff91bf7 + languageName: node + linkType: hard + +"form-data@npm:^4.0.0": + version: 4.0.0 + resolution: "form-data@npm:4.0.0" + dependencies: + asynckit: "npm:^0.4.0" + combined-stream: "npm:^1.0.8" + mime-types: "npm:^2.1.12" + checksum: 7264aa760a8cf09482816d8300f1b6e2423de1b02bba612a136857413fdc96d7178298ced106817655facc6b89036c6e12ae31c9eb5bdc16aabf502ae8a5d805 + languageName: node + linkType: hard + +"fs-constants@npm:^1.0.0": + version: 1.0.0 + resolution: "fs-constants@npm:1.0.0" + checksum: 18f5b718371816155849475ac36c7d0b24d39a11d91348cfcb308b4494824413e03572c403c86d3a260e049465518c4f0d5bd00f0371cdfcad6d4f30a85b350d + languageName: node + linkType: hard + +"fs-extra@npm:^9.0.1, fs-extra@npm:^9.1.0": + version: 9.1.0 + resolution: "fs-extra@npm:9.1.0" + dependencies: + at-least-node: "npm:^1.0.0" + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^6.0.1" + universalify: "npm:^2.0.0" + checksum: 08600da1b49552ed23dfac598c8fc909c66776dd130fea54fbcad22e330f7fcc13488bb995f6bc9ce5651aa35b65702faf616fe76370ee56f1aade55da982dca + languageName: node + linkType: hard + "fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": version: 2.1.0 resolution: "fs-minipass@npm:2.1.0" @@ -817,7 +1562,14 @@ __metadata: languageName: node linkType: hard -"glob-parent@npm:~5.1.2": +"get-package-type@npm:^0.1.0": + version: 0.1.0 + resolution: "get-package-type@npm:0.1.0" + checksum: bba0811116d11e56d702682ddef7c73ba3481f114590e705fc549f4d868972263896af313c57a25c076e3c0d567e11d919a64ba1b30c879be985fc9d44f96148 + languageName: node + linkType: hard + +"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" dependencies: @@ -868,7 +1620,21 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.2.6": +"globby@npm:^11.1.0": + version: 11.1.0 + resolution: "globby@npm:11.1.0" + dependencies: + array-union: "npm:^2.1.0" + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.2.9" + ignore: "npm:^5.2.0" + merge2: "npm:^1.4.1" + slash: "npm:^3.0.0" + checksum: 288e95e310227bbe037076ea81b7c2598ccbc3122d87abc6dab39e1eec309aa14f0e366a98cdc45237ffcfcbad3db597778c0068217dcb1950fef6249104e1b1 + languageName: node + linkType: hard + +"graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.6": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: bf152d0ed1dc159239db1ba1f74fdbc40cb02f626770dcd5815c427ce0688c2635a06ed69af364396da4636d0408fcf7d4afdf7881724c3307e46aff30ca49e2 @@ -882,6 +1648,13 @@ __metadata: languageName: node linkType: hard +"has-flag@npm:^4.0.0": + version: 4.0.0 + resolution: "has-flag@npm:4.0.0" + checksum: 261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad + languageName: node + linkType: hard + "has-unicode@npm:^2.0.1": version: 2.0.1 resolution: "has-unicode@npm:2.0.1" @@ -896,6 +1669,20 @@ __metadata: languageName: node linkType: hard +"http-call@npm:^5.2.2, http-call@npm:^5.3.0": + version: 5.3.0 + resolution: "http-call@npm:5.3.0" + dependencies: + content-type: "npm:^1.0.4" + debug: "npm:^4.1.1" + is-retry-allowed: "npm:^1.1.0" + is-stream: "npm:^2.0.0" + parse-json: "npm:^4.0.0" + tunnel-agent: "npm:^0.6.0" + checksum: 458c890c95573db831daa2346ff98b1630543c9b2fc3cfc432e1fb6968d6eeb6a5abe87e551f0fc3bce1972215a69fd133b8d25ff8cff2276c2c153d405b3d1f + languageName: node + linkType: hard + "http-proxy-agent@npm:^5.0.0": version: 5.0.0 resolution: "http-proxy-agent@npm:5.0.0" @@ -946,6 +1733,22 @@ __metadata: languageName: node linkType: hard +"hyperlinker@npm:^1.0.0": + version: 1.0.0 + resolution: "hyperlinker@npm:1.0.0" + checksum: fdcf08c72dde534e127cfc40e4c28de5106c58b58f0191d117a8a78802aeeff98dd870a2ee1ac7ee877861b9d0bd7b515a8d0759f1e319ea3162d3c210dbea7c + languageName: node + linkType: hard + +"iconv-lite@npm:^0.4.24": + version: 0.4.24 + resolution: "iconv-lite@npm:0.4.24" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3" + checksum: 6d3a2dac6e5d1fb126d25645c25c3a1209f70cceecc68b8ef51ae0da3cdc078c151fade7524a30b12a3094926336831fca09c666ef55b37e2c69638b5d6bd2e3 + languageName: node + linkType: hard + "iconv-lite@npm:^0.6.2": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" @@ -955,6 +1758,13 @@ __metadata: languageName: node linkType: hard +"ieee754@npm:^1.1.13": + version: 1.2.1 + resolution: "ieee754@npm:1.2.1" + checksum: d9f2557a59036f16c282aaeb107832dc957a93d73397d89bbad4eb1130560560eb695060145e8e6b3b498b15ab95510226649a0b8f52ae06583575419fe10fc4 + languageName: node + linkType: hard + "ignore-by-default@npm:^1.0.1": version: 1.0.1 resolution: "ignore-by-default@npm:1.0.1" @@ -962,6 +1772,13 @@ __metadata: languageName: node linkType: hard +"ignore@npm:^5.2.0": + version: 5.3.0 + resolution: "ignore@npm:5.3.0" + checksum: 51594355cea4c6ad6b28b3b85eb81afa7b988a1871feefd7062baf136c95aa06760ee934fa9590e43d967bd377ce84a4cf6135fbeb6063e063f1182a0e9a3bcd + languageName: node + linkType: hard + "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" @@ -993,13 +1810,36 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:^2.0.3": +"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:^2.0.4": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: cd45e923bee15186c07fa4c89db0aace24824c482fb887b528304694b2aa6ff8a898da8657046a5dcf3e46cd6db6c61629551f9215f208d7c3f157cf9b290521 languageName: node linkType: hard +"inquirer@npm:^8.2.6": + version: 8.2.6 + resolution: "inquirer@npm:8.2.6" + dependencies: + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.1.1" + cli-cursor: "npm:^3.1.0" + cli-width: "npm:^3.0.0" + external-editor: "npm:^3.0.3" + figures: "npm:^3.0.0" + lodash: "npm:^4.17.21" + mute-stream: "npm:0.0.8" + ora: "npm:^5.4.1" + run-async: "npm:^2.4.0" + rxjs: "npm:^7.5.5" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + through: "npm:^2.3.6" + wrap-ansi: "npm:^6.0.1" + checksum: f642b9e5a94faaba54f277bdda2af0e0a6b592bd7f88c60e1614b5795b19336c7025e0c2923915d5f494f600a02fe8517413779a794415bb79a9563b061d68ab + languageName: node + linkType: hard + "ip@npm:^2.0.0": version: 2.0.0 resolution: "ip@npm:2.0.0" @@ -1007,6 +1847,13 @@ __metadata: languageName: node linkType: hard +"is-arrayish@npm:^0.2.1": + version: 0.2.1 + resolution: "is-arrayish@npm:0.2.1" + checksum: 73ced84fa35e59e2c57da2d01e12cd01479f381d7f122ce41dcbb713f09dbfc651315832cd2bf8accba7681a69e4d6f1e03941d94dd10040d415086360e7005e + languageName: node + linkType: hard + "is-binary-path@npm:~2.1.0": version: 2.1.0 resolution: "is-binary-path@npm:2.1.0" @@ -1016,6 +1863,15 @@ __metadata: languageName: node linkType: hard +"is-docker@npm:^2.0.0": + version: 2.2.1 + resolution: "is-docker@npm:2.2.1" + bin: + is-docker: cli.js + checksum: 3fef7ddbf0be25958e8991ad941901bf5922ab2753c46980b60b05c1bf9c9c2402d35e6dc32e4380b980ef5e1970a5d9d5e5aa2e02d77727c3b6b5e918474c56 + languageName: node + linkType: hard + "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" @@ -1039,6 +1895,13 @@ __metadata: languageName: node linkType: hard +"is-interactive@npm:^1.0.0": + version: 1.0.0 + resolution: "is-interactive@npm:1.0.0" + checksum: 824808776e2d468b2916cdd6c16acacebce060d844c35ca6d82267da692e92c3a16fdba624c50b54a63f38bdc4016055b6f443ce57d7147240de4f8cdabaf6f9 + languageName: node + linkType: hard + "is-lambda@npm:^1.0.1": version: 1.0.1 resolution: "is-lambda@npm:1.0.1" @@ -1053,6 +1916,36 @@ __metadata: languageName: node linkType: hard +"is-retry-allowed@npm:^1.1.0": + version: 1.2.0 + resolution: "is-retry-allowed@npm:1.2.0" + checksum: 50d700a89ae31926b1c91b3eb0104dbceeac8790d8b80d02f5c76d9a75c2056f1bb24b5268a8a018dead606bddf116b2262e5ac07401eb8b8783b266ed22558d + languageName: node + linkType: hard + +"is-stream@npm:^2.0.0": + version: 2.0.1 + resolution: "is-stream@npm:2.0.1" + checksum: b8e05ccdf96ac330ea83c12450304d4a591f9958c11fd17bed240af8d5ffe08aedafa4c0f4cfccd4d28dc9d4d129daca1023633d5c11601a6cbc77521f6fae66 + languageName: node + linkType: hard + +"is-unicode-supported@npm:^0.1.0": + version: 0.1.0 + resolution: "is-unicode-supported@npm:0.1.0" + checksum: a2aab86ee7712f5c2f999180daaba5f361bdad1efadc9610ff5b8ab5495b86e4f627839d085c6530363c6d6d4ecbde340fb8e54bdb83da4ba8e0865ed5513c52 + languageName: node + linkType: hard + +"is-wsl@npm:^2.2.0": + version: 2.2.0 + resolution: "is-wsl@npm:2.2.0" + dependencies: + is-docker: "npm:^2.0.0" + checksum: 20849846ae414997d290b75e16868e5261e86ff5047f104027026fd61d8b5a9b0b3ade16239f35e1a067b3c7cc02f70183cb661010ed16f4b6c7c93dad1b19d8 + languageName: node + linkType: hard + "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" @@ -1080,6 +1973,59 @@ __metadata: languageName: node linkType: hard +"jake@npm:^10.8.5": + version: 10.8.7 + resolution: "jake@npm:10.8.7" + dependencies: + async: "npm:^3.2.3" + chalk: "npm:^4.0.2" + filelist: "npm:^1.0.4" + minimatch: "npm:^3.1.2" + bin: + jake: bin/cli.js + checksum: ad1cfe398836df4e6962954e5095597c21c5af1ea5a4182f6adf0869df8aca467a2eeca7869bf44f47120f4dd4ea52589d16050d295c87a5906c0d744775acc3 + languageName: node + linkType: hard + +"js-yaml@npm:^3.14.1": + version: 3.14.1 + resolution: "js-yaml@npm:3.14.1" + dependencies: + argparse: "npm:^1.0.7" + esprima: "npm:^4.0.0" + bin: + js-yaml: bin/js-yaml.js + checksum: 9e22d80b4d0105b9899135365f746d47466ed53ef4223c529b3c0f7a39907743fdbd3c4379f94f1106f02755b5e90b2faaf84801a891135544e1ea475d1a1379 + languageName: node + linkType: hard + +"json-parse-better-errors@npm:^1.0.1": + version: 1.0.2 + resolution: "json-parse-better-errors@npm:1.0.2" + checksum: 5553232045359b767b0f2039a6777fede1a8d7dca1a0ffb1f9ef73a7519489ae7f566b2e040f2b4c38edb8e35e37ae07af7f0a52420902f869ee0dbf5dc6c784 + languageName: node + linkType: hard + +"jsonfile@npm:^6.0.1": + version: 6.1.0 + resolution: "jsonfile@npm:6.1.0" + dependencies: + graceful-fs: "npm:^4.1.6" + universalify: "npm:^2.0.0" + dependenciesMeta: + graceful-fs: + optional: true + checksum: 03014769e7dc77d4cf05fa0b534907270b60890085dd5e4d60a382ff09328580651da0b8b4cdf44d91e4c8ae64d91791d965f05707beff000ed494a38b6fec85 + languageName: node + linkType: hard + +"lodash._reinterpolate@npm:^3.0.0": + version: 3.0.0 + resolution: "lodash._reinterpolate@npm:3.0.0" + checksum: 06d2d5f33169604fa5e9f27b6067ed9fb85d51a84202a656901e5ffb63b426781a601508466f039c720af111b0c685d12f1a5c14ff8df5d5f27e491e562784b2 + languageName: node + linkType: hard + "lodash.snakecase@npm:4.1.1": version: 4.1.1 resolution: "lodash.snakecase@npm:4.1.1" @@ -1087,6 +2033,32 @@ __metadata: languageName: node linkType: hard +"lodash.template@npm:^4.5.0": + version: 4.5.0 + resolution: "lodash.template@npm:4.5.0" + dependencies: + lodash._reinterpolate: "npm:^3.0.0" + lodash.templatesettings: "npm:^4.0.0" + checksum: 56d18ba410ff591f22e4dd2974d21fdcfcba392f2d462ee4b7a7368c3a28ac1cb38a73f1d1c9eb8b8cae26f8e0ae2c28058f7488b4ffa9da84a6096bc77691db + languageName: node + linkType: hard + +"lodash.templatesettings@npm:^4.0.0": + version: 4.2.0 + resolution: "lodash.templatesettings@npm:4.2.0" + dependencies: + lodash._reinterpolate: "npm:^3.0.0" + checksum: ef470fa8b66b6370b08fb0709c1577e4bf72cc3d1e8639196577db827915808ec138861cbc791b295a24fbfe7b78dd26bcfc8f237e5d94df383a3125ae6f5339 + languageName: node + linkType: hard + +"lodash.throttle@npm:^4.1.1": + version: 4.1.1 + resolution: "lodash.throttle@npm:4.1.1" + checksum: 9be9fb2ffd686c20543167883305542f4564062a5f712a40e8c6f2f0d9fd8254a6e9d801c2470b1b24e0cdf2ae83c1277b55aa0fb4799a2db6daf545f53820e1 + languageName: node + linkType: hard + "lodash@npm:^4.17.21": version: 4.17.21 resolution: "lodash@npm:4.17.21" @@ -1094,6 +2066,32 @@ __metadata: languageName: node linkType: hard +"log-chopper@npm:^1.0.2": + version: 1.0.2 + resolution: "log-chopper@npm:1.0.2" + dependencies: + byline: "npm:5.x" + checksum: c5990ddaab57ee642d991f451f39fa7aeed89db94aae1e95abb8e77b50f6307d97b2f8fec72344f69726a9e40c22cdbdc09a9d14d0668fc43e0cef761debedd8 + languageName: node + linkType: hard + +"log-symbols@npm:^4.1.0": + version: 4.1.0 + resolution: "log-symbols@npm:4.1.0" + dependencies: + chalk: "npm:^4.1.0" + is-unicode-supported: "npm:^0.1.0" + checksum: fce1497b3135a0198803f9f07464165e9eb83ed02ceb2273930a6f8a508951178d8cf4f0378e9d28300a2ed2bc49050995d2bd5f53ab716bb15ac84d58c6ef74 + languageName: node + linkType: hard + +"loglevel@npm:>=1.6.2": + version: 1.8.1 + resolution: "loglevel@npm:1.8.1" + checksum: 36a786082a7e4f1d962de330122291da3a102b88dbde81a45eb92a045c38b0903783958ba39dce641440c0413da303410e7f2565f897bccad828853bd5974c86 + languageName: node + linkType: hard + "lru-cache@npm:^10.0.1, lru-cache@npm:^9.1.1 || ^10.0.0": version: 10.1.0 resolution: "lru-cache@npm:10.1.0" @@ -1124,6 +2122,13 @@ __metadata: languageName: node linkType: hard +"make-error@npm:^1.1.1": + version: 1.3.6 + resolution: "make-error@npm:1.3.6" + checksum: b86e5e0e25f7f777b77fabd8e2cbf15737972869d852a22b7e73c17623928fccb826d8e46b9951501d3f20e51ad74ba8c59ed584f610526a48f8ccf88aaec402 + languageName: node + linkType: hard + "make-fetch-happen@npm:^10.0.3": version: 10.2.1 resolution: "make-fetch-happen@npm:10.2.1" @@ -1167,6 +2172,46 @@ __metadata: languageName: node linkType: hard +"merge2@npm:^1.3.0, merge2@npm:^1.4.1": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: 7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2 + languageName: node + linkType: hard + +"micromatch@npm:^4.0.4": + version: 4.0.5 + resolution: "micromatch@npm:4.0.5" + dependencies: + braces: "npm:^3.0.2" + picomatch: "npm:^2.3.1" + checksum: a749888789fc15cac0e03273844dbd749f9f8e8d64e70c564bcf06a033129554c789bb9e30d7566d7ff6596611a08e58ac12cf2a05f6e3c9c47c50c4c7e12fa2 + languageName: node + linkType: hard + +"mime-db@npm:1.52.0": + version: 1.52.0 + resolution: "mime-db@npm:1.52.0" + checksum: 54bb60bf39e6f8689f6622784e668a3d7f8bed6b0d886f5c3c446cb3284be28b30bf707ed05d0fe44a036f8469976b2629bbea182684977b084de9da274694d7 + languageName: node + linkType: hard + +"mime-types@npm:^2.1.12": + version: 2.1.35 + resolution: "mime-types@npm:2.1.35" + dependencies: + mime-db: "npm:1.52.0" + checksum: 89aa9651b67644035de2784a6e665fc685d79aba61857e02b9c8758da874a754aed4a9aced9265f5ed1171fd934331e5516b84a7f0218031b6fa0270eca1e51a + languageName: node + linkType: hard + +"mimic-fn@npm:^2.1.0": + version: 2.1.0 + resolution: "mimic-fn@npm:2.1.0" + checksum: d2421a3444848ce7f84bd49115ddacff29c15745db73f54041edc906c14b131a38d05298dae3081667627a59b2eb1ca4b436ff2e1b80f69679522410418b478a + languageName: node + linkType: hard + "minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" @@ -1293,6 +2338,13 @@ __metadata: languageName: node linkType: hard +"mkdirp-classic@npm:^0.5.2": + version: 0.5.3 + resolution: "mkdirp-classic@npm:0.5.3" + checksum: 3f4e088208270bbcc148d53b73e9a5bd9eef05ad2cbf3b3d0ff8795278d50dd1d11a8ef1875ff5aea3fa888931f95bfcb2ad5b7c1061cfefd6284d199e6776ac + languageName: node + linkType: hard + "mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": version: 1.0.4 resolution: "mkdirp@npm:1.0.4" @@ -1316,6 +2368,20 @@ __metadata: languageName: node linkType: hard +"mute-stream@npm:0.0.8": + version: 0.0.8 + resolution: "mute-stream@npm:0.0.8" + checksum: a2d2e79dde87e3424ffc8c334472c7f3d17b072137734ca46e6f221131f1b014201cc593b69a38062e974fb2394d3d1cb4349f80f012bbf8b8ac1b28033e515f + languageName: node + linkType: hard + +"natural-orderby@npm:^2.0.3": + version: 2.0.3 + resolution: "natural-orderby@npm:2.0.3" + checksum: b0c982709cab2133e65ab2ca9c44cdbca972b5d72886a75fa3afac159b736a586e582e5de46bd04d0f3d5ab6f9d0447e6a5a8c4392de017ac67e6638b317e4aa + languageName: node + linkType: hard + "negotiator@npm:^0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" @@ -1445,7 +2511,14 @@ __metadata: languageName: node linkType: hard -"once@npm:^1.3.0": +"object-treeify@npm:^1.1.33": + version: 1.1.33 + resolution: "object-treeify@npm:1.1.33" + checksum: 1c7865240037d7c2d39e28b96598538af59b545dc49cfc45d8c0a96baa343fc3335cbef26ede8c6dc48073368ec16bf194c276ffdedf32b41f3c3c8ef4d27fef + languageName: node + linkType: hard + +"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": version: 1.4.0 resolution: "once@npm:1.4.0" dependencies: @@ -1454,6 +2527,39 @@ __metadata: languageName: node linkType: hard +"onetime@npm:^5.1.0": + version: 5.1.2 + resolution: "onetime@npm:5.1.2" + dependencies: + mimic-fn: "npm:^2.1.0" + checksum: e9fd0695a01cf226652f0385bf16b7a24153dbbb2039f764c8ba6d2306a8506b0e4ce570de6ad99c7a6eb49520743afdb66edd95ee979c1a342554ed49a9aadd + languageName: node + linkType: hard + +"ora@npm:^5.4.1": + version: 5.4.1 + resolution: "ora@npm:5.4.1" + dependencies: + bl: "npm:^4.1.0" + chalk: "npm:^4.1.0" + cli-cursor: "npm:^3.1.0" + cli-spinners: "npm:^2.5.0" + is-interactive: "npm:^1.0.0" + is-unicode-supported: "npm:^0.1.0" + log-symbols: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + wcwidth: "npm:^1.0.1" + checksum: 8d071828f40090a8e1c6e8f350c6eb065808e9ab2b3e57fa37e0d5ae78cb46dac00117c8f12c3c8b8da2923454afbd8265e08c10b69881170c5b269f451e7fef + languageName: node + linkType: hard + +"os-tmpdir@npm:~1.0.2": + version: 1.0.2 + resolution: "os-tmpdir@npm:1.0.2" + checksum: 5666560f7b9f10182548bf7013883265be33620b1c1b4a4d405c25be2636f970c5488ff3e6c48de75b55d02bde037249fe5dbfbb4c0fb7714953d56aed062e6d + languageName: node + linkType: hard + "p-map@npm:^4.0.0": version: 4.0.0 resolution: "p-map@npm:4.0.0" @@ -1463,6 +2569,26 @@ __metadata: languageName: node linkType: hard +"parse-json@npm:^4.0.0": + version: 4.0.0 + resolution: "parse-json@npm:4.0.0" + dependencies: + error-ex: "npm:^1.3.1" + json-parse-better-errors: "npm:^1.0.1" + checksum: 0fe227d410a61090c247e34fa210552b834613c006c2c64d9a05cfe9e89cf8b4246d1246b1a99524b53b313e9ac024438d0680f67e33eaed7e6f38db64cfe7b5 + languageName: node + linkType: hard + +"password-prompt@npm:^1.1.2": + version: 1.1.3 + resolution: "password-prompt@npm:1.1.3" + dependencies: + ansi-escapes: "npm:^4.3.2" + cross-spawn: "npm:^7.0.3" + checksum: 1cf7001e66868b2ed7a03e036bc2f1dd45eb6dc8fee7e3e2056370057c484be25e7468fee00a1378e1ee8eca77ba79f48bee5ce15dcb464413987ace63c68b35 + languageName: node + linkType: hard + "path-is-absolute@npm:^1.0.0": version: 1.0.1 resolution: "path-is-absolute@npm:1.0.1" @@ -1487,7 +2613,14 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1": +"path-type@npm:^4.0.0": + version: 4.0.0 + resolution: "path-type@npm:4.0.0" + checksum: 5b1e2daa247062061325b8fdbfd1fb56dde0a448fb1455453276ea18c60685bdad23a445dc148cf87bc216be1573357509b7d4060494a6fd768c7efad833ee45 + 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" checksum: 60c2595003b05e4535394d1da94850f5372c9427ca4413b71210f437f7b2ca091dbd611c45e8b37d10036fa8eade25c1b8951654f9d3973bfa66a2ff4d3b08bc @@ -1518,6 +2651,13 @@ __metadata: languageName: node linkType: hard +"proxy-from-env@npm:^1.1.0": + version: 1.1.0 + resolution: "proxy-from-env@npm:1.1.0" + checksum: f0bb4a87cfd18f77bc2fba23ae49c3b378fb35143af16cc478171c623eebe181678f09439707ad80081d340d1593cd54a33a0113f3ccb3f4bc9451488780ee23 + languageName: node + linkType: hard + "pstree.remy@npm:^1.1.8": version: 1.1.8 resolution: "pstree.remy@npm:1.1.8" @@ -1525,7 +2665,24 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^3.6.0": +"pump@npm:^3.0.0": + version: 3.0.0 + resolution: "pump@npm:3.0.0" + dependencies: + end-of-stream: "npm:^1.1.0" + once: "npm:^1.3.1" + checksum: e42e9229fba14732593a718b04cb5e1cfef8254544870997e0ecd9732b189a48e1256e4e5478148ecb47c8511dca2b09eae56b4d0aad8009e6fac8072923cfc9 + languageName: node + linkType: hard + +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: 72900df0616e473e824202113c3df6abae59150dfb73ed13273503127235320e9c8ca4aaaaccfd58cf417c6ca92a6e68ee9a5c3182886ae949a768639b388a7b + languageName: node + linkType: hard + +"readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" dependencies: @@ -1545,6 +2702,25 @@ __metadata: languageName: node linkType: hard +"redeyed@npm:~2.1.0": + version: 2.1.1 + resolution: "redeyed@npm:2.1.1" + dependencies: + esprima: "npm:~4.0.0" + checksum: 86880f97d54bb55bbf1c338e27fe28f18f52afc2f5afa808354a09a3777aa79b4f04e04844350d7fec80aa2d299196bde256b21f586e7e5d9b63494bd4a9db27 + languageName: node + linkType: hard + +"restore-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "restore-cursor@npm:3.1.0" + dependencies: + onetime: "npm:^5.1.0" + signal-exit: "npm:^3.0.2" + checksum: f877dd8741796b909f2a82454ec111afb84eb45890eb49ac947d87991379406b3b83ff9673a46012fca0d7844bb989f45cc5b788254cf1a39b6b5a9659de0630 + languageName: node + linkType: hard + "retry@npm:^0.12.0": version: 0.12.0 resolution: "retry@npm:0.12.0" @@ -1552,6 +2728,13 @@ __metadata: languageName: node linkType: hard +"reusify@npm:^1.0.4": + version: 1.0.4 + resolution: "reusify@npm:1.0.4" + checksum: 14222c9e1d3f9ae01480c50d96057228a8524706db79cdeb5a2ce5bb7070dd9f409a6f84a02cbef8cdc80d39aef86f2dd03d155188a1300c599b05437dcd2ffb + languageName: node + linkType: hard + "rimraf@npm:^3.0.2": version: 3.0.2 resolution: "rimraf@npm:3.0.2" @@ -1563,14 +2746,39 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:~5.2.0": +"run-async@npm:^2.4.0": + version: 2.4.1 + resolution: "run-async@npm:2.4.1" + checksum: c79551224dafa26ecc281cb1efad3510c82c79116aaf681f8a931ce70fdf4ca880d58f97d3b930a38992c7aad7955a08e065b32ec194e1dd49d7790c874ece50 + languageName: node + linkType: hard + +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: "npm:^1.2.2" + checksum: cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d + languageName: node + linkType: hard + +"rxjs@npm:^7.5.5": + version: 7.8.1 + resolution: "rxjs@npm:7.8.1" + dependencies: + tslib: "npm:^2.1.0" + checksum: b10cac1a5258f885e9dd1b70d23c34daeb21b61222ee735d2ec40a8685bdca40429000703a44f0e638c27a684ac139e1c37e835d2a0dc16f6fc061a138ae3abb + languageName: node + linkType: hard + +"safe-buffer@npm:^5.0.1, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 32872cd0ff68a3ddade7a7617b8f4c2ae8764d8b7d884c651b74457967a9e0e886267d3ecc781220629c44a865167b61c375d2da6c720c840ecd73f45d5d9451 languageName: node linkType: hard -"safer-buffer@npm:>= 2.1.2 < 3.0.0": +"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" checksum: 7eaf7a0cf37cc27b42fb3ef6a9b1df6e93a1c6d98c6c6702b02fe262d5fcbd89db63320793b99b21cb5348097d0a53de81bd5f4e8b86e20cc9412e3f1cfb4e83 @@ -1586,7 +2794,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.5": +"semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.4": version: 7.5.4 resolution: "semver@npm:7.5.4" dependencies: @@ -1629,7 +2837,7 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^3.0.7": +"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 @@ -1652,6 +2860,24 @@ __metadata: languageName: node linkType: hard +"slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: 94a93fff615f25a999ad4b83c9d5e257a7280c90a32a7cb8b4a87996e4babf322e469c42b7f649fd5796edd8687652f3fb452a86dc97a816f01113183393f11c + languageName: node + linkType: hard + +"slice-ansi@npm:^4.0.0": + version: 4.0.0 + resolution: "slice-ansi@npm:4.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + astral-regex: "npm:^2.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + checksum: 4a82d7f085b0e1b070e004941ada3c40d3818563ac44766cca4ceadd2080427d337554f9f99a13aaeb3b4a94d9964d9466c807b3d7b7541d1ec37ee32d308756 + languageName: node + linkType: hard + "smart-buffer@npm:^4.2.0": version: 4.2.0 resolution: "smart-buffer@npm:4.2.0" @@ -1691,6 +2917,13 @@ __metadata: languageName: node linkType: hard +"sprintf-js@npm:~1.0.2": + version: 1.0.3 + resolution: "sprintf-js@npm:1.0.3" + checksum: c34828732ab8509c2741e5fd1af6b767c3daf2c642f267788f933a65b1614943c282e74c4284f4fa749c264b18ee016a0d37a3e5b73aee446da46277d3a85daa + languageName: node + linkType: hard + "ssri@npm:^10.0.0": version: 10.0.5 resolution: "ssri@npm:10.0.5" @@ -1709,7 +2942,7 @@ __metadata: languageName: node linkType: hard -"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.3": +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: @@ -1767,6 +3000,59 @@ __metadata: languageName: node linkType: hard +"supports-color@npm:^7.0.0, supports-color@npm:^7.1.0": + version: 7.2.0 + resolution: "supports-color@npm:7.2.0" + dependencies: + has-flag: "npm:^4.0.0" + checksum: c8bb7afd564e3b26b50ca6ee47572c217526a1389fe018d00345856d4a9b08ffbd61fadaf283a87368d94c3dcdb8f5ffe2650a5a65863e21ad2730ca0f05210a + languageName: node + linkType: hard + +"supports-color@npm:^8.1.1": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 157b534df88e39c5518c5e78c35580c1eca848d7dbaf31bbe06cdfc048e22c7ff1a9d046ae17b25691128f631a51d9ec373c1b740c12ae4f0de6e292037e4282 + languageName: node + linkType: hard + +"supports-hyperlinks@npm:^2.2.0": + version: 2.3.0 + resolution: "supports-hyperlinks@npm:2.3.0" + dependencies: + has-flag: "npm:^4.0.0" + supports-color: "npm:^7.0.0" + checksum: 3e7df6e9eaa177d7bfbbe065c91325e9b482f48de0f7c9133603e3ffa8af31cbceac104a0941cd0266a57f8e691de6eb58b79fec237852dc84ed7ad152b116b0 + languageName: node + linkType: hard + +"tar-fs@npm:^2.1.1": + version: 2.1.1 + resolution: "tar-fs@npm:2.1.1" + dependencies: + chownr: "npm:^1.1.1" + mkdirp-classic: "npm:^0.5.2" + pump: "npm:^3.0.0" + tar-stream: "npm:^2.1.4" + checksum: 526deae025453e825f87650808969662fbb12eb0461d033e9b447de60ec951c6c4607d0afe7ce057defe9d4e45cf80399dd74bc15f9d9e0773d5e990a78ce4ac + languageName: node + linkType: hard + +"tar-stream@npm:^2.1.4": + version: 2.2.0 + resolution: "tar-stream@npm:2.2.0" + dependencies: + bl: "npm:^4.0.3" + end-of-stream: "npm:^1.4.1" + fs-constants: "npm:^1.0.0" + inherits: "npm:^2.0.3" + readable-stream: "npm:^3.1.1" + checksum: 1a52a51d240c118cbcd30f7368ea5e5baef1eac3e6b793fb1a41e6cd7319296c79c0264ccc5859f5294aa80f8f00b9239d519e627b9aade80038de6f966fec6a + languageName: node + linkType: hard + "tar@npm:^6.1.11, tar@npm:^6.1.2": version: 6.2.0 resolution: "tar@npm:6.2.0" @@ -1781,6 +3067,22 @@ __metadata: languageName: node linkType: hard +"through@npm:^2.3.6": + version: 2.3.8 + resolution: "through@npm:2.3.8" + checksum: 5da78346f70139a7d213b65a0106f3c398d6bc5301f9248b5275f420abc2c4b1e77c2abc72d218dedc28c41efb2e7c312cb76a7730d04f9c2d37d247da3f4198 + languageName: node + linkType: hard + +"tmp@npm:^0.0.33": + version: 0.0.33 + resolution: "tmp@npm:0.0.33" + dependencies: + os-tmpdir: "npm:~1.0.2" + checksum: 09c0abfd165cff29b32be42bc35e80b8c64727d97dedde6550022e88fa9fd39a084660415ed8e3ebaa2aca1ee142f86df8b31d4196d4f81c774a3a20fd4b6abf + languageName: node + linkType: hard + "to-regex-range@npm:^5.0.1": version: 5.0.1 resolution: "to-regex-range@npm:5.0.1" @@ -1808,13 +3110,67 @@ __metadata: languageName: node linkType: hard -"tslib@npm:2.6.2, tslib@npm:^2.6.2": +"ts-node@npm:^10.9.1": + version: 10.9.1 + resolution: "ts-node@npm:10.9.1" + dependencies: + "@cspotcode/source-map-support": "npm:^0.8.0" + "@tsconfig/node10": "npm:^1.0.7" + "@tsconfig/node12": "npm:^1.0.7" + "@tsconfig/node14": "npm:^1.0.0" + "@tsconfig/node16": "npm:^1.0.2" + acorn: "npm:^8.4.1" + acorn-walk: "npm:^8.1.1" + arg: "npm:^4.1.0" + create-require: "npm:^1.1.0" + diff: "npm:^4.0.1" + make-error: "npm:^1.1.1" + v8-compile-cache-lib: "npm:^3.0.1" + yn: "npm:3.1.1" + peerDependencies: + "@swc/core": ">=1.2.50" + "@swc/wasm": ">=1.2.50" + "@types/node": "*" + typescript: ">=2.7" + peerDependenciesMeta: + "@swc/core": + optional: true + "@swc/wasm": + optional: true + bin: + ts-node: dist/bin.js + ts-node-cwd: dist/bin-cwd.js + ts-node-esm: dist/bin-esm.js + ts-node-script: dist/bin-script.js + ts-node-transpile-only: dist/bin-transpile.js + ts-script: dist/bin-script-deprecated.js + checksum: bee56d4dc96ccbafc99dfab7b73fbabc62abab2562af53cdea91c874a301b9d11e42bc33c0a032a6ed6d813dbdc9295ec73dde7b73ea4ebde02b0e22006f7e04 + languageName: node + linkType: hard + +"tslib@npm:2.6.2, tslib@npm:^2.1.0, tslib@npm:^2.4.1, tslib@npm:^2.5.0, tslib@npm:^2.6.2": version: 2.6.2 resolution: "tslib@npm:2.6.2" checksum: bd26c22d36736513980091a1e356378e8b662ded04204453d353a7f34a4c21ed0afc59b5f90719d4ba756e581a162ecbf93118dc9c6be5acf70aa309188166ca languageName: node linkType: hard +"tunnel-agent@npm:^0.6.0": + version: 0.6.0 + resolution: "tunnel-agent@npm:0.6.0" + dependencies: + safe-buffer: "npm:^5.0.1" + checksum: 7f0d9ed5c22404072b2ae8edc45c071772affd2ed14a74f03b4e71b4dd1a14c3714d85aed64abcaaee5fec2efc79002ba81155c708f4df65821b444abb0cfade + languageName: node + linkType: hard + +"type-fest@npm:^0.21.3": + version: 0.21.3 + resolution: "type-fest@npm:0.21.3" + checksum: f4254070d9c3d83a6e573bcb95173008d73474ceadbbf620dd32d273940ca18734dff39c2b2480282df9afe5d1675ebed5499a00d791758748ea81f61a38961f + languageName: node + linkType: hard + "undefsafe@npm:^2.0.5": version: 2.0.5 resolution: "undefsafe@npm:2.0.5" @@ -1874,6 +3230,13 @@ __metadata: languageName: node linkType: hard +"universalify@npm:^2.0.0": + version: 2.0.1 + resolution: "universalify@npm:2.0.1" + checksum: ecd8469fe0db28e7de9e5289d32bd1b6ba8f7183db34f3bfc4ca53c49891c2d6aa05f3fb3936a81285a905cc509fb641a0c3fc131ec786167eff41236ae32e60 + languageName: node + linkType: hard + "util-deprecate@npm:^1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" @@ -1881,6 +3244,31 @@ __metadata: languageName: node linkType: hard +"uuid@npm:^9.0.1": + version: 9.0.1 + resolution: "uuid@npm:9.0.1" + bin: + uuid: dist/bin/uuid + checksum: 9d0b6adb72b736e36f2b1b53da0d559125ba3e39d913b6072f6f033e0c87835b414f0836b45bcfaf2bdf698f92297fea1c3cc19b0b258bc182c9c43cc0fab9f2 + languageName: node + linkType: hard + +"v8-compile-cache-lib@npm:^3.0.1": + version: 3.0.1 + resolution: "v8-compile-cache-lib@npm:3.0.1" + checksum: 88d3423a52b6aaf1836be779cab12f7016d47ad8430dffba6edf766695e6d90ad4adaa3d8eeb512cc05924f3e246c4a4ca51e089dccf4402caa536b5e5be8961 + languageName: node + linkType: hard + +"wcwidth@npm:^1.0.1": + version: 1.0.1 + resolution: "wcwidth@npm:1.0.1" + dependencies: + defaults: "npm:^1.0.3" + checksum: 182ebac8ca0b96845fae6ef44afd4619df6987fe5cf552fdee8396d3daa1fb9b8ec5c6c69855acb7b3c1231571393bd1f0a4cdc4028d421575348f64bb0a8817 + languageName: node + linkType: hard + "which@npm:^2.0.1, which@npm:^2.0.2": version: 2.0.2 resolution: "which@npm:2.0.2" @@ -1912,7 +3300,23 @@ __metadata: languageName: node linkType: hard -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": +"widest-line@npm:^3.1.0": + version: 3.1.0 + resolution: "widest-line@npm:3.1.0" + dependencies: + string-width: "npm:^4.0.0" + checksum: 03db6c9d0af9329c37d74378ff1d91972b12553c7d72a6f4e8525fe61563fa7adb0b9d6e8d546b7e059688712ea874edd5ded475999abdeedf708de9849310e0 + languageName: node + linkType: hard + +"wordwrap@npm:^1.0.0": + version: 1.0.0 + resolution: "wordwrap@npm:1.0.0" + checksum: 497d40beb2bdb08e6d38754faa17ce20b0bf1306327f80cb777927edb23f461ee1f6bc659b3c3c93f26b08e1cf4b46acc5bae8fda1f0be3b5ab9a1a0211034cd + languageName: node + linkType: hard + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" dependencies: @@ -1923,6 +3327,17 @@ __metadata: languageName: node linkType: hard +"wrap-ansi@npm:^6.0.1": + version: 6.2.0 + resolution: "wrap-ansi@npm:6.2.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 0d64f2d438e0b555e693b95aee7b2689a12c3be5ac458192a1ce28f542a6e9e59ddfecc37520910c2c88eb1f82a5411260566dba5064e8f9895e76e169e76187 + languageName: node + linkType: hard + "wrap-ansi@npm:^8.1.0": version: 8.1.0 resolution: "wrap-ansi@npm:8.1.0" @@ -1962,3 +3377,10 @@ __metadata: checksum: 4cb02b42b8a93b5cf50caf5d8e9beb409400a8a4d85e83bb0685c1457e9ac0b7a00819e9f5991ac25ffabb56a78e2f017c1acc010b3a1babfe6de690ba531abd languageName: node linkType: hard + +"yn@npm:3.1.1": + version: 3.1.1 + resolution: "yn@npm:3.1.1" + checksum: 2c487b0e149e746ef48cda9f8bad10fc83693cd69d7f9dcd8be4214e985de33a29c9e24f3c0d6bcf2288427040a8947406ab27f7af67ee9456e6b84854f02dd6 + languageName: node + linkType: hard