From 6232236052bafe4823deeb43087ddf9b88a48733 Mon Sep 17 00:00:00 2001 From: Lucid Kobold <72232219+LucidKobold@users.noreply.github.com> Date: Fri, 28 Feb 2025 18:46:18 -0500 Subject: [PATCH 1/8] Renamed file --- src/bot/features/blacklistDelete.ts | 49 ----------------------------- 1 file changed, 49 deletions(-) delete mode 100644 src/bot/features/blacklistDelete.ts diff --git a/src/bot/features/blacklistDelete.ts b/src/bot/features/blacklistDelete.ts deleted file mode 100644 index 96f4a79..0000000 --- a/src/bot/features/blacklistDelete.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { Composer } from "grammy"; -import type { Context } from "#root/bot/context.js"; -import { logHandle } from "#root/bot/helpers/logging.js"; - -const composer = new Composer(); - -const feature = composer.chatType(["group", "supergroup"]); - -const GROUP_IDS = process.env.GROUP_IDS - ? process.env.GROUP_IDS.split(",") - : undefined; - -feature.hears( - /(x.com|twitter.com)/g, - logHandle("blacklist-detection"), - async (ctx: Context) => { - if (ctx.chat && ctx.msg) { - if (GROUP_IDS !== undefined) { - const groupID = ctx.chat.id; - const flag = GROUP_IDS.includes(`${groupID}`); - const username = ctx.msg.from?.username; - - if (flag) { - ctx.msg.delete(); - await ctx.reply( - ctx.t( - `@${username} Twitter and X links are not allowed here\\. Please consider sharing the media directly or from other social media sources or websites\\. No administration action was taken against you other than the message being deleted\\.` - ), - { parse_mode: "MarkdownV2" } - ); - } - } - - if (!GROUP_IDS) { - await ctx.reply( - ctx.t( - `There was a problem retrieving the whitelist. Check the env variables and try again\\.` - ), - { - parse_mode: "MarkdownV2", - reply_parameters: { message_id: ctx.msg.message_id } - } - ); - } - } - } -); - -export { composer as blacklistDetection }; -- 2.49.1 From 32e893beca0dc293dfd10679aacad66684e934be Mon Sep 17 00:00:00 2001 From: Lucid Kobold <72232219+LucidKobold@users.noreply.github.com> Date: Fri, 28 Feb 2025 18:48:04 -0500 Subject: [PATCH 2/8] renamed file, moved variable into function, fixed conflicting characters with escape --- src/bot/features/twitterBlacklist.ts | 51 ++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/bot/features/twitterBlacklist.ts diff --git a/src/bot/features/twitterBlacklist.ts b/src/bot/features/twitterBlacklist.ts new file mode 100644 index 0000000..2083a8d --- /dev/null +++ b/src/bot/features/twitterBlacklist.ts @@ -0,0 +1,51 @@ +import { Composer } from "grammy"; +import type { Context } from "#root/bot/context.js"; +import { logHandle } from "#root/bot/helpers/logging.js"; + +const composer = new Composer(); + +const feature = composer.chatType(["group", "supergroup"]); + +feature.hears( + /(x.com|twitter.com)/g, + logHandle("blacklist-detection-twitter"), + async (ctx: Context) => { + const GROUP_IDS = process.env.GROUP_IDS + ? process.env.GROUP_IDS.split(",") + : undefined; + + if (ctx.chat && ctx.msg) { + if (GROUP_IDS !== undefined) { + const groupID = ctx.chat.id; + const flag = GROUP_IDS.includes(`${groupID}`); + const username = ctx.msg.from?.username; + + if (flag) { + ctx.msg.delete(); + await ctx.reply( + `@${username} Twitter and X links along with reformatting services for Twitter posts are not allowed here\\. Please consider sharing the media directly or from other social media sources or websites\\. No administration action was taken against you other than the message being deleted\\.`, + { parse_mode: "MarkdownV2" } + ); + } + } + + if (!GROUP_IDS) { + console.info( + "Group IDS:", + process.env.GROUP_IDS, + GROUP_IDS, + GROUP_IDS !== undefined + ); + await ctx.reply( + `There was a problem retrieving the whitelist\\. Check the env variables and try again\\.`, + { + parse_mode: "MarkdownV2", + reply_parameters: { message_id: ctx.msg.message_id } + } + ); + } + } + } +); + +export { composer as twitterBlacklist }; -- 2.49.1 From afb0e3086fafacaea54a526bbdd3a15bb32b5191 Mon Sep 17 00:00:00 2001 From: Lucid Kobold <72232219+LucidKobold@users.noreply.github.com> Date: Fri, 28 Feb 2025 18:48:45 -0500 Subject: [PATCH 3/8] moved variable into function --- src/bot/features/getGroupIDCommand.ts | 8 ++++---- src/bot/features/helpCommand.ts | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/bot/features/getGroupIDCommand.ts b/src/bot/features/getGroupIDCommand.ts index 4fa0bc4..d398ee5 100644 --- a/src/bot/features/getGroupIDCommand.ts +++ b/src/bot/features/getGroupIDCommand.ts @@ -6,14 +6,14 @@ const composer = new Composer(); const feature = composer.chatType(["group", "supergroup"]); -const GROUP_IDS = process.env.GROUP_IDS - ? process.env.GROUP_IDS.split(",") - : undefined; - feature.hears( "/getGroupID", logHandle("get-group-id"), async (ctx: Context) => { + const GROUP_IDS = process.env.GROUP_IDS + ? process.env.GROUP_IDS.split(",") + : undefined; + if (ctx.chat && ctx.msg) { if (GROUP_IDS !== undefined) { const groupID = ctx.chat.id; diff --git a/src/bot/features/helpCommand.ts b/src/bot/features/helpCommand.ts index 8f8977c..cb9e563 100644 --- a/src/bot/features/helpCommand.ts +++ b/src/bot/features/helpCommand.ts @@ -6,14 +6,14 @@ const composer = new Composer(); const feature = composer.chatType(["group", "supergroup"]); -const GROUP_IDS = process.env.GROUP_IDS - ? process.env.GROUP_IDS.split(",") - : undefined; - feature.hears( "/help", logHandle("blacklist-detection"), async (ctx: Context) => { + const GROUP_IDS = process.env.GROUP_IDS + ? process.env.GROUP_IDS.split(",") + : undefined; + if (ctx.chat && ctx.msg) { if (GROUP_IDS !== undefined) { const groupID = ctx.chat.id; -- 2.49.1 From 9738782f562552594560e30449643d31beb9c182 Mon Sep 17 00:00:00 2001 From: Lucid Kobold <72232219+LucidKobold@users.noreply.github.com> Date: Fri, 28 Feb 2025 18:48:55 -0500 Subject: [PATCH 4/8] moved variable into function, fixed conflicting characters with escape --- src/bot/features/isLCMGroup.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/bot/features/isLCMGroup.ts b/src/bot/features/isLCMGroup.ts index 5e71c3e..46ef2f4 100644 --- a/src/bot/features/isLCMGroup.ts +++ b/src/bot/features/isLCMGroup.ts @@ -6,14 +6,14 @@ const composer = new Composer(); const feature = composer.chatType(["group", "supergroup"]); -const GROUP_IDS = process.env.GROUP_IDS - ? process.env.GROUP_IDS.split(",") - : undefined; - feature.hears( "/isLCMGroup", logHandle("is-LCM-group"), async (ctx: Context) => { + const GROUP_IDS = process.env.GROUP_IDS + ? process.env.GROUP_IDS.split(",") + : undefined; + if (ctx.chat && ctx.msg) { const groupID = ctx.chat.id; @@ -43,7 +43,7 @@ feature.hears( if (!GROUP_IDS) { await ctx.reply( - `There was a problem retrieving the whitelist. Check the env variables and try again\\.`, + `There was a problem retrieving the whitelist\\. Check the env variables and try again\\.`, { parse_mode: "MarkdownV2", reply_parameters: { message_id: ctx.msg.message_id } -- 2.49.1 From 814df5ba35dc603e7e02741bde1d5066ec8c2fae Mon Sep 17 00:00:00 2001 From: Lucid Kobold <72232219+LucidKobold@users.noreply.github.com> Date: Fri, 28 Feb 2025 18:49:11 -0500 Subject: [PATCH 5/8] remove console lof --- src/bot/features/botInfoCommand.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/bot/features/botInfoCommand.ts b/src/bot/features/botInfoCommand.ts index 02e96e6..32cd301 100644 --- a/src/bot/features/botInfoCommand.ts +++ b/src/bot/features/botInfoCommand.ts @@ -14,9 +14,6 @@ feature.hears( "/botInfo", logHandle("bot-info-command"), async (ctx: Context) => { - console.info( - "BOT INFO! BOT INFO! BOT INFO! BOT INFO! BOT INFO! BOT INFO! BOT INFO! BOT INFO!" - ); if (ctx.chat && ctx.msg) { await ctx.reply( `I am a bot designed to delete any Twitter/X links and reformatting services within groups\\. By default I only work with whitelisted group IDs\\.\n\nYou can fork me from this link: https://github\\.com/lucid\\-creations\\-media/no\\-twitter\\-bot and deploy me for use in your own groups\\!`, -- 2.49.1 From 88f189c5e1d25b2cc4fe3e25a2dbdb08736ab4b3 Mon Sep 17 00:00:00 2001 From: Lucid Kobold <72232219+LucidKobold@users.noreply.github.com> Date: Fri, 28 Feb 2025 18:49:30 -0500 Subject: [PATCH 6/8] rename file, add new function --- src/bot/index.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bot/index.ts b/src/bot/index.ts index 386541e..58c5190 100644 --- a/src/bot/index.ts +++ b/src/bot/index.ts @@ -15,7 +15,8 @@ import { hydrate } from "@grammyjs/hydrate"; import { hydrateReply, parseMode } from "@grammyjs/parse-mode"; import { sequentialize } from "@grammyjs/runner"; import { MemorySessionStorage, Bot as TelegramBot } from "grammy"; -import { blacklistDetection } from "./features/blacklistDelete.js"; +import { twitterBlacklist } from "./features/twitterBlacklist.js"; +import { metaBlacklist } from "./features/metaBlacklist.js"; import { botInfoCommand } from "./features/botInfoCommand.js"; import { getGroupIDCommand } from "./features/getGroupIDCommand.js"; import { helpCommand } from "./features/helpCommand.js"; @@ -78,7 +79,8 @@ export function createBot( protectedBot.use(helpCommand); // Blacklist Feature - protectedBot.use(blacklistDetection); + protectedBot.use(twitterBlacklist); + protectedBot.use(metaBlacklist); // must be the last handler protectedBot.use(unhandledFeature); -- 2.49.1 From 5e2bf6f2687818d93bf0b26364f3f1806fb1f55c Mon Sep 17 00:00:00 2001 From: Lucid Kobold <72232219+LucidKobold@users.noreply.github.com> Date: Fri, 28 Feb 2025 18:49:50 -0500 Subject: [PATCH 7/8] added meta to the blacklist feature as its own file and function --- src/bot/features/metaBlacklist.ts | 46 +++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/bot/features/metaBlacklist.ts diff --git a/src/bot/features/metaBlacklist.ts b/src/bot/features/metaBlacklist.ts new file mode 100644 index 0000000..e3c4718 --- /dev/null +++ b/src/bot/features/metaBlacklist.ts @@ -0,0 +1,46 @@ +import { Composer } from "grammy"; +import type { Context } from "#root/bot/context.js"; +import { logHandle } from "#root/bot/helpers/logging.js"; + +const composer = new Composer(); + +const feature = composer.chatType(["group", "supergroup"]); + +feature.hears( + /(facebook.com|meta.com|instagram.com|threads.net|whatsapp.com)/g, + logHandle("blacklist-detection-meta"), + async (ctx: Context) => { + const GROUP_IDS = process.env.GROUP_IDS + ? process.env.GROUP_IDS.split(",") + : undefined; + + if (ctx.chat && ctx.msg) { + if (GROUP_IDS !== undefined) { + const groupID = ctx.chat.id; + const flag = GROUP_IDS.includes(`${groupID}`); + const username = ctx.msg.from?.username; + + if (flag) { + ctx.msg.delete(); + await ctx.reply( + `@${username} Facebook and meta links along with with links to meta\\-owned services are not allowed here\\. Please consider sharing the media directly or from other social media sources or websites\\. No administration action was taken against you other than the message being deleted\\.`, + { parse_mode: "MarkdownV2" } + ); + } + } + + if (!GROUP_IDS) { + console.info("Group IDS:", process.env.GROUP_IDS); + await ctx.reply( + `There was a problem retrieving the whitelist\\. Check the env variables and try again\\.`, + { + parse_mode: "MarkdownV2", + reply_parameters: { message_id: ctx.msg.message_id } + } + ); + } + } + } +); + +export { composer as metaBlacklist }; -- 2.49.1 From bb820f0e168af20457fed5b7d2437b91614949f6 Mon Sep 17 00:00:00 2001 From: Lucid Kobold <72232219+LucidKobold@users.noreply.github.com> Date: Fri, 28 Feb 2025 18:51:11 -0500 Subject: [PATCH 8/8] Upgrade dependencies --- package.json | 2 +- yarn.lock | 189 ++++++++++++++++++++++++++++++++++++--------------- 2 files changed, 136 insertions(+), 55 deletions(-) diff --git a/package.json b/package.json index 82404ca..56541b2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "no-twitter-bot", "type": "module", - "version": "1.0.1", + "version": "1.2.0", "private": true, "packageManager": "yarn@1.22.19+sha1.4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447", "description": "This grammY powered Telegram bot is designed to delete Twitter/X links and reformat services from whitelisted groups. This one is the main bot for the LCM Telegram groups/communities.", diff --git a/yarn.lock b/yarn.lock index 4e424b4..d120303 100644 --- a/yarn.lock +++ b/yarn.lock @@ -266,7 +266,7 @@ resolved "https://registry.yarnpkg.com/@eslint/compat/-/compat-1.2.6.tgz#747ad2bde060582873cb486e03bfdf2945f0868d" integrity sha512-k7HNCqApoDHM6XzT30zGoETj+D+uUcZUb+IVAJmar3u6bvHf7hhHJcWx09QHj4/a2qrKZMWU0E16tvkiAdv06Q== -"@eslint/config-array@^0.19.0": +"@eslint/config-array@^0.19.2": version "0.19.2" resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.19.2.tgz#3060b809e111abfc97adb0bb1172778b90cb46aa" integrity sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w== @@ -282,17 +282,17 @@ dependencies: "@types/json-schema" "^7.0.15" -"@eslint/core@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.11.0.tgz#7a9226e850922e42cbd2ba71361eacbe74352a12" - integrity sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA== +"@eslint/core@^0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.12.0.tgz#5f960c3d57728be9f6c65bd84aa6aa613078798e" + integrity sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg== dependencies: "@types/json-schema" "^7.0.15" -"@eslint/eslintrc@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.2.0.tgz#57470ac4e2e283a6bf76044d63281196e370542c" - integrity sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w== +"@eslint/eslintrc@^3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.0.tgz#96a558f45842989cca7ea1ecd785ad5491193846" + integrity sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ== dependencies: ajv "^6.12.4" debug "^4.3.2" @@ -304,10 +304,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@9.20.0", "@eslint/js@^9.20.0": - version "9.20.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.20.0.tgz#7421bcbe74889fcd65d1be59f00130c289856eb4" - integrity sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ== +"@eslint/js@9.21.0", "@eslint/js@^9.20.0": + version "9.21.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.21.0.tgz#4303ef4e07226d87c395b8fad5278763e9c15c08" + integrity sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw== "@eslint/markdown@^6.2.2": version "6.2.2" @@ -325,12 +325,12 @@ resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.6.tgz#58369ab5b5b3ca117880c0f6c0b0f32f6950f24f" integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA== -"@eslint/plugin-kit@^0.2.5": - version "0.2.6" - resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.6.tgz#a30084164a4ced1efb6ec31d3d04f581cb8929c0" - integrity sha512-+0TjwR1eAUdZtvv/ir1mGX+v0tUoR3VEPB8Up0LLJC+whRW0GgBBtpbOkg/a/U4Dxa6l5a3l9AJ1aWIQVyoWJA== +"@eslint/plugin-kit@^0.2.5", "@eslint/plugin-kit@^0.2.7": + version "0.2.7" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz#9901d52c136fb8f375906a73dcc382646c3b6a27" + integrity sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g== dependencies: - "@eslint/core" "^0.11.0" + "@eslint/core" "^0.12.0" levn "^0.4.1" "@fluent/bundle@^0.17.1": @@ -414,10 +414,10 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== -"@humanwhocodes/retry@^0.4.1": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.1.tgz#9a96ce501bc62df46c4031fbd970e3cc6b10f07b" - integrity sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA== +"@humanwhocodes/retry@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.2.tgz#1860473de7dfa1546767448f333db80cb0ff2161" + integrity sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -499,9 +499,9 @@ integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== "@types/node@^22.13.4": - version "22.13.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.13.4.tgz#3fe454d77cd4a2d73c214008b3e331bfaaf5038a" - integrity sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg== + version "22.13.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.13.7.tgz#63ae4418a4d2607cf4ccb1ff5f000fa40d73712a" + integrity sha512-oU2q+BsQldB9lYxHNp/5aZO+/Bs0Usa74Abo9mAKulz4ahQyXRHK6UVKYIN8KSC8HXwhWSi7b49JnX+txuac0w== dependencies: undici-types "~6.20.0" @@ -515,7 +515,22 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.3.tgz#acaab0f919ce69cce629c2d4ed2eb4adc1b6c20c" integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q== -"@typescript-eslint/eslint-plugin@8.24.1", "@typescript-eslint/eslint-plugin@^8.24.1": +"@typescript-eslint/eslint-plugin@8.25.0": + version "8.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.25.0.tgz#5e1d56f067e5808fa82d1b75bced82396e868a14" + integrity sha512-VM7bpzAe7JO/BFf40pIT1lJqS/z1F8OaSsUB3rpFJucQA4cOSuH2RVVVkFULN+En0Djgr29/jb4EQnedUo95KA== + dependencies: + "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "8.25.0" + "@typescript-eslint/type-utils" "8.25.0" + "@typescript-eslint/utils" "8.25.0" + "@typescript-eslint/visitor-keys" "8.25.0" + graphemer "^1.4.0" + ignore "^5.3.1" + natural-compare "^1.4.0" + ts-api-utils "^2.0.1" + +"@typescript-eslint/eslint-plugin@^8.24.1": version "8.24.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.1.tgz#d104c2a6212304c649105b18af2c110b4a1dd4ae" integrity sha512-ll1StnKtBigWIGqvYDVuDmXJHVH4zLVot1yQ4fJtLpL7qacwkxJc1T0bptqw+miBQ/QfUbhl1TcQ4accW5KUyA== @@ -530,7 +545,18 @@ natural-compare "^1.4.0" ts-api-utils "^2.0.1" -"@typescript-eslint/parser@8.24.1", "@typescript-eslint/parser@^8.24.1": +"@typescript-eslint/parser@8.25.0": + version "8.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.25.0.tgz#58fb81c7b7a35184ba17583f3d7ac6c4f3d95be8" + integrity sha512-4gbs64bnbSzu4FpgMiQ1A+D+urxkoJk/kqlDJ2W//5SygaEiAP2B4GoS7TEdxgwol2el03gckFV9lJ4QOMiiHg== + dependencies: + "@typescript-eslint/scope-manager" "8.25.0" + "@typescript-eslint/types" "8.25.0" + "@typescript-eslint/typescript-estree" "8.25.0" + "@typescript-eslint/visitor-keys" "8.25.0" + debug "^4.3.4" + +"@typescript-eslint/parser@^8.24.1": version "8.24.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.24.1.tgz#67965c2d2ddd7eadb2f094c395695db8334ef9a2" integrity sha512-Tqoa05bu+t5s8CTZFaGpCH2ub3QeT9YDkXbPd3uQ4SfsLoh1/vv2GEYAioPoxCWJJNsenXlC88tRjwoHNts1oQ== @@ -549,6 +575,14 @@ "@typescript-eslint/types" "8.24.1" "@typescript-eslint/visitor-keys" "8.24.1" +"@typescript-eslint/scope-manager@8.25.0": + version "8.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.25.0.tgz#ac3805077aade898e98ca824294c998545597df3" + integrity sha512-6PPeiKIGbgStEyt4NNXa2ru5pMzQ8OYKO1hX1z53HMomrmiSB+R5FmChgQAP1ro8jMtNawz+TRQo/cSXrauTpg== + dependencies: + "@typescript-eslint/types" "8.25.0" + "@typescript-eslint/visitor-keys" "8.25.0" + "@typescript-eslint/type-utils@8.24.1": version "8.24.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.24.1.tgz#99113e1df63d1571309d87eef68967344c78dd65" @@ -559,11 +593,26 @@ debug "^4.3.4" ts-api-utils "^2.0.1" +"@typescript-eslint/type-utils@8.25.0": + version "8.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.25.0.tgz#ee0d2f67c80af5ae74b5d6f977e0f8ded0059677" + integrity sha512-d77dHgHWnxmXOPJuDWO4FDWADmGQkN5+tt6SFRZz/RtCWl4pHgFl3+WdYCn16+3teG09DY6XtEpf3gGD0a186g== + dependencies: + "@typescript-eslint/typescript-estree" "8.25.0" + "@typescript-eslint/utils" "8.25.0" + debug "^4.3.4" + ts-api-utils "^2.0.1" + "@typescript-eslint/types@8.24.1", "@typescript-eslint/types@^8.11.0", "@typescript-eslint/types@^8.24.0": version "8.24.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.24.1.tgz#8777a024f3afc4ace5e48f9a804309c6dd38f95a" integrity sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A== +"@typescript-eslint/types@8.25.0": + version "8.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.25.0.tgz#f91512c2f532b1d6a8826cadd0b0e5cd53cf97e0" + integrity sha512-+vUe0Zb4tkNgznQwicsvLUJgZIRs6ITeWSCclX1q85pR1iOiaj+4uZJIUp//Z27QWu5Cseiw3O3AR8hVpax7Aw== + "@typescript-eslint/typescript-estree@8.24.1": version "8.24.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.1.tgz#3bb479401f8bd471b3c6dd3db89e7256977c54db" @@ -578,6 +627,20 @@ semver "^7.6.0" ts-api-utils "^2.0.1" +"@typescript-eslint/typescript-estree@8.25.0": + version "8.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.25.0.tgz#d8409c63abddd4cf5b93c031b24b9edc1c7c1299" + integrity sha512-ZPaiAKEZ6Blt/TPAx5Ot0EIB/yGtLI2EsGoY6F7XKklfMxYQyvtL+gT/UCqkMzO0BVFHLDlzvFqQzurYahxv9Q== + dependencies: + "@typescript-eslint/types" "8.25.0" + "@typescript-eslint/visitor-keys" "8.25.0" + debug "^4.3.4" + fast-glob "^3.3.2" + is-glob "^4.0.3" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^2.0.1" + "@typescript-eslint/utils@8.24.1", "@typescript-eslint/utils@^8.1.0", "@typescript-eslint/utils@^8.23.0", "@typescript-eslint/utils@^8.24.0": version "8.24.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.24.1.tgz#08d14eac33cfb3456feeee5a275b8ad3349e52ed" @@ -588,6 +651,16 @@ "@typescript-eslint/types" "8.24.1" "@typescript-eslint/typescript-estree" "8.24.1" +"@typescript-eslint/utils@8.25.0": + version "8.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.25.0.tgz#3ea2f9196a915ef4daa2c8eafd44adbd7d56d08a" + integrity sha512-syqRbrEv0J1wywiLsK60XzHnQe/kRViI3zwFALrNEgnntn1l24Ra2KvOAWwWbWZ1lBZxZljPDGOq967dsl6fkA== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@typescript-eslint/scope-manager" "8.25.0" + "@typescript-eslint/types" "8.25.0" + "@typescript-eslint/typescript-estree" "8.25.0" + "@typescript-eslint/visitor-keys@8.24.1": version "8.24.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.1.tgz#8bdfe47a89195344b34eb21ef61251562148202b" @@ -596,6 +669,14 @@ "@typescript-eslint/types" "8.24.1" eslint-visitor-keys "^4.2.0" +"@typescript-eslint/visitor-keys@8.25.0": + version "8.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.25.0.tgz#e8646324cd1793f96e02669cb717a05319403164" + integrity sha512-kCYXKAum9CecGVHGij7muybDfTS2sD3t0L4bJsEZLkyrXUImiCTq1M3LG2SRtOhiHFwMR9wAFplpT6XHYjTkwQ== + dependencies: + "@typescript-eslint/types" "8.25.0" + eslint-visitor-keys "^4.2.0" + "@vitest/eslint-plugin@^1.1.31": version "1.1.31" resolved "https://registry.yarnpkg.com/@vitest/eslint-plugin/-/eslint-plugin-1.1.31.tgz#a5336f2093d2806fb5b9f04ac8e57672691fcc1f" @@ -1243,20 +1324,20 @@ eslint-visitor-keys@^4.2.0: integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== eslint@^9.20.1: - version "9.20.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.20.1.tgz#923924c078f5226832449bac86662dd7e53c91d6" - integrity sha512-m1mM33o6dBUjxl2qb6wv6nGNwCAsns1eKtaQ4l/NPHeTvhiUPbtdfMyktxN4B3fgHIgsYh1VT3V9txblpQHq+g== + version "9.21.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.21.0.tgz#b1c9c16f5153ff219791f627b94ab8f11f811591" + integrity sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.12.1" - "@eslint/config-array" "^0.19.0" - "@eslint/core" "^0.11.0" - "@eslint/eslintrc" "^3.2.0" - "@eslint/js" "9.20.0" - "@eslint/plugin-kit" "^0.2.5" + "@eslint/config-array" "^0.19.2" + "@eslint/core" "^0.12.0" + "@eslint/eslintrc" "^3.3.0" + "@eslint/js" "9.21.0" + "@eslint/plugin-kit" "^0.2.7" "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" - "@humanwhocodes/retry" "^0.4.1" + "@humanwhocodes/retry" "^0.4.2" "@types/estree" "^1.0.6" "@types/json-schema" "^7.0.15" ajv "^6.12.4" @@ -1404,9 +1485,9 @@ fast-safe-stringify@^2.1.1: integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== fastq@^1.6.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.0.tgz#a82c6b7c2bb4e44766d865f07997785fecfdcb89" - integrity sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA== + version "1.19.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5" + integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ== dependencies: reusify "^1.0.4" @@ -2551,9 +2632,9 @@ prelude-ls@^1.2.1: integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== prettier@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.5.1.tgz#22fac9d0b18c0b92055ac8fb619ac1c7bef02fb7" - integrity sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw== + version "3.5.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.5.2.tgz#d066c6053200da0234bf8fa1ef45168abed8b914" + integrity sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg== process-warning@^4.0.0: version "4.0.1" @@ -2670,9 +2751,9 @@ restore-cursor@^5.0.0: signal-exit "^4.1.0" reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + version "1.1.0" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" + integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== rfdc@^1.4.1: version "1.4.1" @@ -2972,18 +3053,18 @@ type-fest@^4.6.0, type-fest@^4.7.1: integrity sha512-2/AwEFQDFEy30iOLjrvHDIH7e4HEWH+f1Yl1bI5XMqzuoCUqwYCdxachgsgv0og/JdVZUhbfjcJAoHj5L1753A== typescript-eslint@^8.24.1: - version "8.24.1" - resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.24.1.tgz#ce85d791392608a2a9f80c4b2530a214d16a2a47" - integrity sha512-cw3rEdzDqBs70TIcb0Gdzbt6h11BSs2pS0yaq7hDWDBtCCSei1pPSUXE9qUdQ/Wm9NgFg8mKtMt1b8fTHIl1jA== + version "8.25.0" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.25.0.tgz#73047c157cd70ee93cf2f9243f1599d21cf60239" + integrity sha512-TxRdQQLH4g7JkoFlYG3caW5v1S6kEkz8rqt80iQJZUYPq1zD1Ra7HfQBJJ88ABRaMvHAXnwRvRB4V+6sQ9xN5Q== dependencies: - "@typescript-eslint/eslint-plugin" "8.24.1" - "@typescript-eslint/parser" "8.24.1" - "@typescript-eslint/utils" "8.24.1" + "@typescript-eslint/eslint-plugin" "8.25.0" + "@typescript-eslint/parser" "8.25.0" + "@typescript-eslint/utils" "8.25.0" typescript@^5.7.3: - version "5.7.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.3.tgz#919b44a7dbb8583a9b856d162be24a54bf80073e" - integrity sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw== + version "5.8.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.2.tgz#8170b3702f74b79db2e5a96207c15e65807999e4" + integrity sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ== ufo@^1.5.4: version "1.5.4" -- 2.49.1