diff --git a/apps/api/package.json b/apps/api/package.json index 122cae83f..cb229ea96 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -38,11 +38,9 @@ "mongoose": "^8.5.2", "reflect-metadata": "^0.2.2", "rxjs": "^7.8.1", - "skia-canvas": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.30/skia-canvas-v0.9.30-linux-x64-glibc.tar.gz", - "toad-scheduler": "^3.0.1" + "skia-canvas": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.30/skia-canvas-v0.9.30-linux-x64-glibc.tar.gz" }, "devDependencies": { - "@nestjs/testing": "^11.1.6", "@types/luxon": "^3.4.2" }, "imports": { diff --git a/apps/discord-bot/package.json b/apps/discord-bot/package.json index e81f21f5b..4f399cf4c 100644 --- a/apps/discord-bot/package.json +++ b/apps/discord-bot/package.json @@ -21,12 +21,10 @@ "@statsify/schemas": "workspace:^", "@statsify/util": "workspace:^", "@swc/helpers": "^0.5.12", - "@typegoose/typegoose": "^12.6.0", "axios": "1.11.0", "discord-api-types": "^0.38.22", "fuse.js": "^7.0.0", "luxon": "^3.5.0", - "mongoose": "^8.5.2", "reflect-metadata": "^0.2.2", "skia-canvas": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.30/skia-canvas-v0.9.30-linux-x64-glibc.tar.gz", "tiny-discord": "https://github.com/timotejroiko/tiny-discord.git#f6d020085ea88e33ebaf6ce323930deffe74fb0d", diff --git a/apps/discord-bot/src/commands/target/target.command.ts b/apps/discord-bot/src/commands/target/target.command.ts new file mode 100644 index 000000000..638ef2436 --- /dev/null +++ b/apps/discord-bot/src/commands/target/target.command.ts @@ -0,0 +1,522 @@ +/** + * Copyright (c) Statsify + * + * This source code is licensed under the GNU GPL v3 license found in the + * LICENSE file in the root directory of this source tree. + * https://github.com/Statsify/statsify/blob/main/LICENSE + */ + +import { + type APIApplicationCommandOptionChoice, + ApplicationCommandOptionType, +} from "discord-api-types/v10"; +import { + AbstractArgument, + ApiService, + Command, + CommandContext, + EmbedBuilder, + ErrorMessage, + type LocalizationString, + PlayerArgument, + SubCommand, +} from "@statsify/discord"; +import { + type Constructor, + prettify, + removeFormatting, +} from "@statsify/util"; +import { Container } from "typedi"; +import { + LEADERBOARD_RATIOS, + MetadataScanner, + type Player, + PlayerStats, + type Ratio, +} from "@statsify/schemas"; +import { STATUS_COLORS } from "@statsify/logger"; + +type GameKey = keyof PlayerStats; + +interface TargetStat { + denominator?: string; + denominatorName?: string; + key: string; + name: string; + numerator?: string; + numeratorName?: string; + ratio?: Ratio; + type: "ratio" | "stat"; +} + +const apiService = Container.get(ApiService); +const DEFAULT_SETBACK = 15; + +const GAMES: [GameKey, name: string, group?: string][] = [ + ["arcade", "Arcade"], + ["arenabrawl", "Arena Brawl", "classic"], + ["bedwars", "BedWars"], + ["blitzsg", "BlitzSG"], + ["buildbattle", "Build Battle"], + ["challenges", "Challenges"], + ["copsandcrims", "Cops and Crims"], + ["duels", "Duels"], + ["general", "General"], + ["megawalls", "MegaWalls"], + ["murdermystery", "Murder Mystery"], + ["paintball", "Paintball", "classic"], + ["parkour", "Parkour"], + ["pit", "Pit"], + ["quake", "Quake", "classic"], + ["quests", "Quests"], + ["skywars", "SkyWars"], + ["smashheroes", "Smash Heroes"], + ["speeduhc", "Speed UHC"], + ["tntgames", "TNT Games"], + ["turbokartracers", "Turbo Kart Racers", "classic"], + ["uhc", "UHC"], + ["vampirez", "VampireZ", "classic"], + ["walls", "Walls", "classic"], + ["warlords", "Warlords"], + ["woolgames", "WoolGames"], +]; + +const GAME_NAMES = new Map(GAMES.map(([key, name]) => [key, name])); + +const getGameClass = (game: GameKey) => + Reflect.getMetadata("design:type", PlayerStats.prototype, game) as Constructor; + +const statCache = new Map(); + +const targetArgs = (game: GameKey) => [ + new TargetStatArgument(game), + new TargetArgument(), + new PlayerArgument(), + new SetbackArgument(), +]; + +class TargetStatArgument extends AbstractArgument { + public autocomplete = true; + public description: LocalizationString; + public name = "stat"; + public required = true; + public type = ApplicationCommandOptionType.String; + private readonly game: GameKey; + + public constructor(game: GameKey) { + super(); + this.description = (t) => t("arguments.target-stat"); + this.game = game; + } + + public autocompleteHandler( + context: CommandContext + ): APIApplicationCommandOptionChoice[] { + const currentValue = context.option(this.name, "").toLowerCase(); + const stats = getTargetStats(this.game); + + const filtered = currentValue ? + stats.filter((stat) => + [stat.key, stat.name] + .some((value) => value.toLowerCase().includes(currentValue)) + ) : + stats; + + return filtered + .slice(0, 25) + .map((stat) => ({ name: stat.name.slice(0, 100), value: stat.key })); + } +} + +class TargetArgument extends AbstractArgument { + public description: LocalizationString; + public min_value = 0; + public name = "target"; + public required = true; + public type = ApplicationCommandOptionType.Number; + + public constructor() { + super(); + this.description = (t) => t("arguments.target"); + } +} + +class SetbackArgument extends AbstractArgument { + public description: LocalizationString; + public min_value = 0; + public name = "setback"; + public required = false; + public type = ApplicationCommandOptionType.Integer; + + public constructor() { + super(); + this.description = (t) => t("arguments.target-setback"); + } +} + +@Command({ description: (t) => t("commands.target") }) +export class TargetCommand { + @SubCommand({ description: (t) => t("commands.target-arcade"), args: targetArgs("arcade") }) + public arcade(context: CommandContext) { + return runTarget(context, "arcade"); + } + + @SubCommand({ description: (t) => t("commands.target-arenabrawl"), args: targetArgs("arenabrawl"), group: "classic" }) + public arenabrawl(context: CommandContext) { + return runTarget(context, "arenabrawl"); + } + + @SubCommand({ description: (t) => t("commands.target-bedwars"), args: targetArgs("bedwars") }) + public bedwars(context: CommandContext) { + return runTarget(context, "bedwars"); + } + + @SubCommand({ description: (t) => t("commands.target-blitzsg"), args: targetArgs("blitzsg") }) + public blitzsg(context: CommandContext) { + return runTarget(context, "blitzsg"); + } + + @SubCommand({ description: (t) => t("commands.target-buildbattle"), args: targetArgs("buildbattle") }) + public buildbattle(context: CommandContext) { + return runTarget(context, "buildbattle"); + } + + @SubCommand({ description: (t) => t("commands.target-challenges"), args: targetArgs("challenges") }) + public challenges(context: CommandContext) { + return runTarget(context, "challenges"); + } + + @SubCommand({ description: (t) => t("commands.target-copsandcrims"), args: targetArgs("copsandcrims") }) + public copsandcrims(context: CommandContext) { + return runTarget(context, "copsandcrims"); + } + + @SubCommand({ description: (t) => t("commands.target-duels"), args: targetArgs("duels") }) + public duels(context: CommandContext) { + return runTarget(context, "duels"); + } + + @SubCommand({ description: (t) => t("commands.target-general"), args: targetArgs("general") }) + public general(context: CommandContext) { + return runTarget(context, "general"); + } + + @SubCommand({ description: (t) => t("commands.target-megawalls"), args: targetArgs("megawalls") }) + public megawalls(context: CommandContext) { + return runTarget(context, "megawalls"); + } + + @SubCommand({ description: (t) => t("commands.target-murdermystery"), args: targetArgs("murdermystery") }) + public murdermystery(context: CommandContext) { + return runTarget(context, "murdermystery"); + } + + @SubCommand({ description: (t) => t("commands.target-paintball"), args: targetArgs("paintball"), group: "classic" }) + public paintball(context: CommandContext) { + return runTarget(context, "paintball"); + } + + @SubCommand({ description: (t) => t("commands.target-parkour"), args: targetArgs("parkour") }) + public parkour(context: CommandContext) { + return runTarget(context, "parkour"); + } + + @SubCommand({ description: (t) => t("commands.target-pit"), args: targetArgs("pit") }) + public pit(context: CommandContext) { + return runTarget(context, "pit"); + } + + @SubCommand({ description: (t) => t("commands.target-quake"), args: targetArgs("quake"), group: "classic" }) + public quake(context: CommandContext) { + return runTarget(context, "quake"); + } + + @SubCommand({ description: (t) => t("commands.target-quests"), args: targetArgs("quests") }) + public quests(context: CommandContext) { + return runTarget(context, "quests"); + } + + @SubCommand({ description: (t) => t("commands.target-skywars"), args: targetArgs("skywars") }) + public skywars(context: CommandContext) { + return runTarget(context, "skywars"); + } + + @SubCommand({ description: (t) => t("commands.target-smashheroes"), args: targetArgs("smashheroes") }) + public smashheroes(context: CommandContext) { + return runTarget(context, "smashheroes"); + } + + @SubCommand({ description: (t) => t("commands.target-speeduhc"), args: targetArgs("speeduhc") }) + public speeduhc(context: CommandContext) { + return runTarget(context, "speeduhc"); + } + + @SubCommand({ description: (t) => t("commands.target-tntgames"), args: targetArgs("tntgames") }) + public tntgames(context: CommandContext) { + return runTarget(context, "tntgames"); + } + + @SubCommand({ description: (t) => t("commands.target-turbokartracers"), args: targetArgs("turbokartracers"), group: "classic" }) + public turbokartracers(context: CommandContext) { + return runTarget(context, "turbokartracers"); + } + + @SubCommand({ description: (t) => t("commands.target-uhc"), args: targetArgs("uhc") }) + public uhc(context: CommandContext) { + return runTarget(context, "uhc"); + } + + @SubCommand({ description: (t) => t("commands.target-vampirez"), args: targetArgs("vampirez"), group: "classic" }) + public vampirez(context: CommandContext) { + return runTarget(context, "vampirez"); + } + + @SubCommand({ description: (t) => t("commands.target-walls"), args: targetArgs("walls"), group: "classic" }) + public walls(context: CommandContext) { + return runTarget(context, "walls"); + } + + @SubCommand({ description: (t) => t("commands.target-warlords"), args: targetArgs("warlords") }) + public warlords(context: CommandContext) { + return runTarget(context, "warlords"); + } + + @SubCommand({ description: (t) => t("commands.target-woolgames"), args: targetArgs("woolgames") }) + public woolgames(context: CommandContext) { + return runTarget(context, "woolgames"); + } +} + +@Command({ name: "calculate", description: (t) => t("commands.calculate") }) +export class CalculateCommand extends TargetCommand {} + +async function runTarget(context: CommandContext, game: GameKey) { + const user = context.getUser(); + const player = await apiService.getPlayer(context.option("player"), user); + const target = context.option("target"); + const setback = context.option("setback", DEFAULT_SETBACK); + const stat = resolveTargetStat(game, context.option("stat")); + const gameStats = player.stats[game] as unknown as Record; + const level = getLevel(gameStats); + + if (stat.type === "ratio") { + return buildRatioResponse(player, game, gameStats, stat, target, setback, level); + } + + return buildStatResponse(player, game, gameStats, stat, target, level); +} + +function buildRatioResponse( + player: Player, + game: GameKey, + gameStats: Record, + stat: TargetStat, + target: number, + setback: number, + level?: string +) { + const numerator = getNumber(gameStats, stat.numerator!); + const denominator = getNumber(gameStats, stat.denominator!); + const current = denominator === 0 ? numerator : numerator / denominator; + const needed = Math.max(0, Math.ceil(target * denominator - numerator)); + const neededWithSetback = Math.max( + 0, + Math.ceil(target * (denominator + setback) - numerator) + ); + const numeratorName = stat.numeratorName!; + const denominatorName = singularize(stat.denominatorName!); + + const lines = [ + `Current: **${formatDecimal(current)} ${stat.name}**`, + `Needed: **${formatInteger(needed)} ${numeratorName}** without another ${denominatorName}`, + ]; + + if (setback > 0) { + lines.push( + `Or: **${formatInteger(neededWithSetback)} ${numeratorName}** if you take **${formatInteger(setback)} ${stat.denominatorName}**` + ); + } + + return { + embeds: [ + baseEmbed(player, game, level) + .title(`To reach ${formatDecimal(target)} ${stat.name}:`) + .description(lines.join("\n")), + ], + }; +} + +function buildStatResponse( + player: Player, + game: GameKey, + gameStats: Record, + stat: TargetStat, + target: number, + level?: string +) { + const current = getNumber(gameStats, stat.key); + const needed = Math.max(0, Math.ceil(target - current)); + const statName = statNameLower(stat.name); + + return { + embeds: [ + baseEmbed(player, game, level) + .title(`To reach ${formatTarget(target)} ${stat.name}:`) + .description( + [ + `Current: **${formatTarget(current)} ${stat.name}**`, + `Needed: **${formatInteger(needed)} ${statName}**${needed === 0 ? " (target reached)" : ""}`, + ].join("\n") + ), + ], + }; +} + +function baseEmbed(player: Player, game: GameKey, level?: string) { + const titleParts = [player.displayName]; + if (level) titleParts.push(level); + + return new EmbedBuilder() + .author(titleParts.join(" ")) + .footer(GAME_NAMES.get(game)!) + .color(STATUS_COLORS.info); +} + +function getTargetStats(game: GameKey) { + if (statCache.has(game)) return statCache.get(game)!; + + const metadata = MetadataScanner.scan(getGameClass(game)); + const numberFields = metadata + .filter(([, { type }]) => type.type === Number) + .map(([key, { leaderboard }]) => ({ + key, + name: cleanName(leaderboard.fieldName || leaderboard.name || prettify(key)), + })); + + const byKey = new Map(numberFields.map((field) => [field.key, field])); + const ratioKeys = new Set(LEADERBOARD_RATIOS.map((ratio) => ratio[2])); + const ratios: TargetStat[] = []; + + for (const [numerator, denominator, ratioKey, prettyName] of LEADERBOARD_RATIOS) { + for (const field of numberFields) { + if (lastPathPart(field.key) !== ratioKey) continue; + + const parent = parentPath(field.key); + const numeratorKey = pathWithParent(parent, numerator); + const denominatorKey = pathWithParent(parent, denominator); + const numeratorField = byKey.get(numeratorKey); + const denominatorField = byKey.get(denominatorKey); + + if (!numeratorField || !denominatorField) continue; + + ratios.push({ + denominator: denominatorKey, + denominatorName: statNameLower(denominatorField.name), + key: field.key, + name: parent === "overall" || !parent ? prettyName : `${cleanName(parent)} ${prettyName}`, + numerator: numeratorKey, + numeratorName: statNameLower(numeratorField.name), + ratio: [numerator, denominator, ratioKey, prettyName], + type: "ratio", + }); + } + } + + const stats: TargetStat[] = [ + ...ratios, + ...numberFields + .filter((field) => !ratioKeys.has(lastPathPart(field.key))) + .map((field) => ({ ...field, type: "stat" as const })), + ]; + + statCache.set(game, stats); + return stats; +} + +function resolveTargetStat(game: GameKey, input: string) { + const stats = getTargetStats(game); + const normalized = input.toLowerCase(); + const exact = stats.find((stat) => stat.key === input); + if (exact) return exact; + + const overall = stats.find( + (stat) => + stat.key.toLowerCase() === `overall.${normalized}` || + stat.name.toLowerCase() === normalized + ); + if (overall) return overall; + + const fallback = stats.find( + (stat) => + lastPathPart(stat.key).toLowerCase() === normalized || + stat.name.toLowerCase().includes(normalized) + ); + + if (!fallback) { + throw new ErrorMessage( + "Target stat not found", + `I couldn't find \`${input}\` for ${GAME_NAMES.get(game)}. Use the stat autocomplete to pick a supported target.` + ); + } + + return fallback; +} + +function getLevel(gameStats: Record) { + const formatted = gameStats.levelFormatted || gameStats.naturalLevelFormatted; + if (typeof formatted === "string") return removeFormatting(formatted); + + const level = gameStats.level; + if (typeof level === "number") return `Level ${formatDecimal(level)}`; + + return undefined; +} + +function getNumber(data: Record, path: string) { + const value = path + .split(".") + .reduce((acc, key) => (acc as Record | undefined)?.[key], data); + + return typeof value === "number" && Number.isFinite(value) ? value : 0; +} + +function cleanName(value: string) { + return removeFormatting(value) + .replace(/\s+/g, " ") + .trim(); +} + +function statNameLower(value: string) { + return cleanName(value).toLowerCase(); +} + +function singularize(value: string) { + return value.endsWith("s") ? value.slice(0, -1) : value; +} + +function formatDecimal(value: number) { + return value.toLocaleString("en-US", { + maximumFractionDigits: 2, + minimumFractionDigits: 2, + }); +} + +function formatInteger(value: number) { + return value.toLocaleString("en-US", { maximumFractionDigits: 0 }); +} + +function formatTarget(value: number) { + return Number.isInteger(value) ? formatInteger(value) : formatDecimal(value); +} + +function lastPathPart(path: string) { + return path.split(".").at(-1)!; +} + +function parentPath(path: string) { + return path.split(".").slice(0, -1).join("."); +} + +function pathWithParent(parent: string, key: string) { + return parent ? `${parent}.${key}` : key; +} diff --git a/apps/scripts/package.json b/apps/scripts/package.json index d883f2577..4f2284e14 100644 --- a/apps/scripts/package.json +++ b/apps/scripts/package.json @@ -26,13 +26,13 @@ "discord-bot": "workspace:^", "inquirer": "^10.1.8", "ioredis": "^5.7.0", - "skia-canvas": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.30/skia-canvas-v0.9.30-linux-x64-glibc.tar.gz", + "luxon": "^3.7.1", + "mongoose": "^8.18.0", "tiny-discord": "https://github.com/timotejroiko/tiny-discord.git#f6d020085ea88e33ebaf6ce323930deffe74fb0d", "toad-scheduler": "^3.0.1", "zod": "^4.1.5" }, "devDependencies": { - "@types/inquirer": "^9.0.7", "globals": "^16.3.0" } } \ No newline at end of file diff --git a/apps/support-bot/package.json b/apps/support-bot/package.json index 5f953fc9a..483881d20 100644 --- a/apps/support-bot/package.json +++ b/apps/support-bot/package.json @@ -21,9 +21,7 @@ "@statsify/util": "workspace:^", "@swc/helpers": "^0.5.12", "@typegoose/typegoose": "^12.6.0", - "axios": "1.11.0", "discord-api-types": "^0.38.22", - "luxon": "^3.5.0", "mongoose": "^8.5.2", "reflect-metadata": "^0.2.2", "skia-canvas": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.30/skia-canvas-v0.9.30-linux-x64-glibc.tar.gz", @@ -31,9 +29,6 @@ "toad-scheduler": "^3.0.1", "typedi": "^0.10.0" }, - "devDependencies": { - "@types/luxon": "^3.4.2" - }, "imports": { "#services": { "types": "./src/services/index.ts", diff --git a/knip.json b/knip.json new file mode 100644 index 000000000..69d3028f9 --- /dev/null +++ b/knip.json @@ -0,0 +1,117 @@ +{ + "$schema": "https://unpkg.com/knip@6/schema.json", + "ignoreExportsUsedInFile": true, + "ignoreDependencies": ["@swc/helpers"], + "ignoreBinaries": ["blur", "wasm-pack"], + "workspaces": { + ".": { + "entry": [ + "config.js", + "config.schema.js", + "eslint.config.js", + "vitest.shared.ts", + "vite.swc.ts", + "vitest.workspace.ts", + "pm2.config.cjs" + ], + "ignoreDependencies": [ + "commitizen", + "cz-conventional-changelog", + "@commitlint/cli", + "@vitest/coverage-v8" + ] + }, + "apps/api": { + "entry": [ + "src/index.ts", + "src/**/*.module.ts", + "src/**/*.controller.ts", + "src/**/*.service.ts", + "src/**/*.guard.ts", + "src/**/*.interceptor.ts", + "src/**/*.decorator.ts" + ] + }, + "apps/discord-bot": { + "entry": [ + "src/index.ts", + "src/commands/**/*.command.ts", + "src/commands/**/*.argument.ts", + "src/commands/**/*.subcommand.ts", + "src/commands/**/*.tsx", + "src/components/index.ts", + "src/services/index.ts", + "src/themes/index.ts", + "src/constants.ts", + "src/lib/*.ts" + ], + "ignoreDependencies": ["reflect-metadata"] + }, + "apps/scripts": { + "entry": ["src/*.js"], + "ignoreDependencies": ["globals", "@swc/core"] + }, + "apps/site": { + "entry": [ + "app/**/{page,layout,loading,error,not-found,template,default,providers,route}.{ts,tsx}", + "app/**/*.{ts,tsx}", + "components/**/*.{ts,tsx}", + "hooks/**/*.{ts,tsx}", + "lib/**/*.{ts,tsx}", + "localize/**/*.{ts,tsx}", + "next.config.ts", + "eslint.config.mjs" + ], + "ignoreDependencies": [ + "tailwindcss", + "eslint-config-next", + "mongoose" + ] + }, + "apps/support-bot": { + "entry": [ + "src/index.ts", + "src/commands/**/*.command.ts", + "src/events/**/*.event.{ts,tsx}", + "src/lib/index.ts", + "src/services/index.ts" + ] + }, + "apps/verify-server": { + "entry": ["src/index.ts"] + }, + "assets/private": { + "entry": ["blur.mjs"] + }, + "assets/public": { + "entry": ["blur.mjs"] + }, + "packages/api-client": { + "entry": ["src/**/*.ts"] + }, + "packages/assets": { + "entry": ["src/**/*.ts"] + }, + "packages/discord": { + "entry": ["src/**/*.ts"] + }, + "packages/logger": { + "entry": ["src/**/*.ts"] + }, + "packages/math": { + "entry": ["src/**/*.ts"] + }, + "packages/rendering": { + "entry": ["src/**/*.ts"] + }, + "packages/schemas": { + "entry": ["src/**/*.ts"] + }, + "packages/skin-renderer": { + "ignore": ["index.cjs"] + }, + "packages/util": { + "entry": ["src/**/*.ts"] + } + } +} diff --git a/locales/en-US/default.json b/locales/en-US/default.json index b66f3e884..5e94dcc89 100644 --- a/locales/en-US/default.json +++ b/locales/en-US/default.json @@ -14,6 +14,9 @@ "server": "A Minecraft server name or a server IP", "tags-content": "The content of the tag", "tags-name": "The name of the tag", + "target": "The goal you want to reach", + "target-setback": "How many denominator stats to include in the alternate calculation", + "target-stat": "The stat or ratio you want to target", "text": "A message", "user": "Choose a Discord user" }, @@ -31,6 +34,7 @@ "buildbattle": "$t(commands.hypixel-command, { \"name\": \"Build Battle\" })", "cape": "View someone's Minecraft and Optifine capes", "challenges": "$t(commands.hypixel-command, { \"name\": \"Challenge\" })", + "calculate": "$t(commands.target)", "quests-command": "View your {{name}} questing stats", "quests": "$t(commands.hypixel-command, { \"name\": \"Questing\" })", "quests-overall": "$t(commands.quests-command, { \"name\": \"Overall\" })", @@ -212,6 +216,34 @@ "tags-delete": "Delete a support tag", "tags-rename": "Rename a support tag", "text": "Generate Minecraft text", + "target": "Calculate what you need to reach a stat target", + "target-arcade": "$t(commands.target-command, { \"name\": \"Arcade\" })", + "target-arenabrawl": "$t(commands.target-command, { \"name\": \"Arena Brawl\" })", + "target-bedwars": "$t(commands.target-command, { \"name\": \"BedWars\" })", + "target-blitzsg": "$t(commands.target-command, { \"name\": \"BlitzSG\" })", + "target-buildbattle": "$t(commands.target-command, { \"name\": \"Build Battle\" })", + "target-command": "Calculate a {{name}} stat target", + "target-challenges": "$t(commands.target-command, { \"name\": \"Challenges\" })", + "target-copsandcrims": "$t(commands.target-command, { \"name\": \"Cops and Crims\" })", + "target-duels": "$t(commands.target-command, { \"name\": \"Duels\" })", + "target-general": "$t(commands.target-command, { \"name\": \"General\" })", + "target-megawalls": "$t(commands.target-command, { \"name\": \"MegaWalls\" })", + "target-murdermystery": "$t(commands.target-command, { \"name\": \"Murder Mystery\" })", + "target-paintball": "$t(commands.target-command, { \"name\": \"Paintball\" })", + "target-parkour": "$t(commands.target-command, { \"name\": \"Parkour\" })", + "target-pit": "$t(commands.target-command, { \"name\": \"Pit\" })", + "target-quake": "$t(commands.target-command, { \"name\": \"Quake\" })", + "target-quests": "$t(commands.target-command, { \"name\": \"Quests\" })", + "target-skywars": "$t(commands.target-command, { \"name\": \"SkyWars\" })", + "target-smashheroes": "$t(commands.target-command, { \"name\": \"Smash Heroes\" })", + "target-speeduhc": "$t(commands.target-command, { \"name\": \"Speed UHC\" })", + "target-tntgames": "$t(commands.target-command, { \"name\": \"TNT Games\" })", + "target-turbokartracers": "$t(commands.target-command, { \"name\": \"Turbo Kart Racers\" })", + "target-uhc": "$t(commands.target-command, { \"name\": \"UHC\" })", + "target-vampirez": "$t(commands.target-command, { \"name\": \"VampireZ\" })", + "target-walls": "$t(commands.target-command, { \"name\": \"Walls\" })", + "target-warlords": "$t(commands.target-command, { \"name\": \"Warlords\" })", + "target-woolgames": "$t(commands.target-command, { \"name\": \"WoolGames\" })", "theme": "Change your theme for every profile", "theme-boxes": "Change the appearance of the profile boxes", "theme-font": "Change the font of the profiles", diff --git a/package.json b/package.json index 4b886a783..5fdfc7062 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,8 @@ "support-bot": "pnpm --filter support-bot", "site": "pnpm --filter site", "scripts": "pnpm --filter scripts", - "verify-server": "pnpm --filter verify-server" + "verify-server": "pnpm --filter verify-server", + "knip": "knip" }, "packageManager": "pnpm@10.15.0", "pnpm": { @@ -41,7 +42,6 @@ "@stylistic/eslint-plugin": "^5.2.3", "@swc/cli": "^0.7.8", "@swc/core": "1.13.5", - "@types/eslint__js": "^9.14.0", "@types/node": "^24.3.0", "@vitest/coverage-v8": "^3.0.4", "@vitest/ui": "^3.0.4", @@ -51,6 +51,7 @@ "eslint-plugin-license-header": "^0.8.0", "eslint-plugin-unicorn": "^60.0.0", "eslint-plugin-unused-imports": "^4.1.4", + "knip": "^6.15.0", "pm2": "^6.0.8", "turbo": "^2.4.0", "typescript": "^5.7.3", diff --git a/packages/assets/package.json b/packages/assets/package.json index e68ff387f..ca48a5613 100644 --- a/packages/assets/package.json +++ b/packages/assets/package.json @@ -10,10 +10,8 @@ "lint": "eslint" }, "dependencies": { - "@statsify/logger": "workspace:^", "@statsify/schemas": "workspace:^", "@swc/helpers": "^0.5.12", - "axios": "1.11.0", "skia-canvas": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.30/skia-canvas-v0.9.30-linux-x64-glibc.tar.gz" } } \ No newline at end of file diff --git a/packages/discord/package.json b/packages/discord/package.json index 2e4cb9919..40dcaa5f1 100644 --- a/packages/discord/package.json +++ b/packages/discord/package.json @@ -26,9 +26,6 @@ "tiny-discord": "https://github.com/timotejroiko/tiny-discord.git#f6d020085ea88e33ebaf6ce323930deffe74fb0d", "typedi": "^0.10.0" }, - "devDependencies": { - "@types/i18next-fs-backend": "^1.1.5" - }, "imports": { "#arguments": { "types": "./src/arguments/index.ts", diff --git a/packages/rendering/package.json b/packages/rendering/package.json index 8acf09b38..2dba38782 100644 --- a/packages/rendering/package.json +++ b/packages/rendering/package.json @@ -20,7 +20,6 @@ }, "dependencies": { "@sentry/node": "^7.118.0", - "@statsify/assets": "workspace:^", "@statsify/util": "workspace:^", "@swc/helpers": "^0.5.12", "axios": "1.11.0", diff --git a/packages/rendering/src/jsx-runtime/index.ts b/packages/rendering/src/jsx-runtime/index.ts index 7f0ca48e6..af8f6cd4a 100644 --- a/packages/rendering/src/jsx-runtime/index.ts +++ b/packages/rendering/src/jsx-runtime/index.ts @@ -40,4 +40,5 @@ export const jsx = (type: IntrinsicElement | FC, props: Props): ElementNode | nu throw new Error(`Unknown JSX element, with type ${type}`); }; -export const jsxs = jsx; +// jsxs is identical to jsx in this runtime (no static-children optimisation) +export const jsxs: typeof jsx = (type, props) => jsx(type, props); diff --git a/packages/schemas/package.json b/packages/schemas/package.json index 5aac15176..31fecb88e 100644 --- a/packages/schemas/package.json +++ b/packages/schemas/package.json @@ -11,7 +11,6 @@ }, "dependencies": { "@nestjs/swagger": "^11.2.0", - "@statsify/logger": "workspace:^", "@statsify/math": "workspace:^", "@statsify/util": "workspace:^", "@swc/helpers": "^0.5.12", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e289028fb..7384a0401 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,25 +22,22 @@ importers: version: 9.34.0 '@j4cobi/eslint-plugin-sort-imports': specifier: ^1.0.2 - version: 1.0.2(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2) + version: 1.0.2(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) '@napi-rs/cli': specifier: ^3.1.5 - version: 3.1.5(@emnapi/runtime@1.7.1)(@types/node@24.3.0) + version: 3.1.5(@emnapi/runtime@1.10.0)(@types/node@24.3.0) '@rollup/pluginutils': specifier: ^5.1.0 version: 5.2.0(rollup@4.49.0) '@stylistic/eslint-plugin': specifier: ^5.2.3 - version: 5.2.3(eslint@9.34.0(jiti@2.6.1)) + version: 5.2.3(eslint@9.34.0(jiti@2.7.0)) '@swc/cli': specifier: ^0.7.8 version: 0.7.8(@swc/core@1.13.5(@swc/helpers@0.5.17)) '@swc/core': specifier: 1.13.5 version: 1.13.5(@swc/helpers@0.5.17) - '@types/eslint__js': - specifier: ^9.14.0 - version: 9.14.0 '@types/node': specifier: ^24.3.0 version: 24.3.0 @@ -58,16 +55,19 @@ importers: version: 3.3.0(@types/node@24.3.0)(typescript@5.9.2) eslint: specifier: ^9.19.0 - version: 9.34.0(jiti@2.6.1) + version: 9.34.0(jiti@2.7.0) eslint-plugin-license-header: specifier: ^0.8.0 version: 0.8.0 eslint-plugin-unicorn: specifier: ^60.0.0 - version: 60.0.0(eslint@9.34.0(jiti@2.6.1)) + version: 60.0.0(eslint@9.34.0(jiti@2.7.0)) eslint-plugin-unused-imports: specifier: ^4.1.4 - version: 4.2.0(@typescript-eslint/eslint-plugin@8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.6.1)) + version: 4.2.0(@typescript-eslint/eslint-plugin@8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0)) + knip: + specifier: ^6.15.0 + version: 6.15.0 pm2: specifier: ^6.0.8 version: 6.0.8 @@ -79,13 +79,13 @@ importers: version: 5.9.2 typescript-eslint: specifier: ^8.22.0 - version: 8.41.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2) + version: 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) unplugin: specifier: ^2.1.2 version: 2.3.8 vitest: specifier: ^3.0.4 - version: 3.2.4(@types/node@24.3.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(lightningcss@1.30.2) + version: 3.2.4(@types/node@24.3.0)(@vitest/ui@3.2.4)(jiti@2.7.0)(lightningcss@1.30.2)(yaml@2.9.0) apps/api: dependencies: @@ -173,13 +173,7 @@ importers: skia-canvas: specifier: 3.0.8 version: 3.0.8 - toad-scheduler: - specifier: ^3.0.1 - version: 3.1.0 devDependencies: - '@nestjs/testing': - specifier: ^11.1.6 - version: 11.1.6(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2)) '@types/luxon': specifier: ^3.4.2 version: 3.7.1 @@ -216,9 +210,6 @@ importers: '@swc/helpers': specifier: ^0.5.12 version: 0.5.17 - '@typegoose/typegoose': - specifier: ^12.6.0 - version: 12.19.0(mongoose@8.18.0(socks@2.8.7)) axios: specifier: 1.11.0 version: 1.11.0 @@ -231,9 +222,6 @@ importers: luxon: specifier: ^3.5.0 version: 3.7.1 - mongoose: - specifier: ^8.5.2 - version: 8.18.0(socks@2.8.7) reflect-metadata: specifier: ^0.2.2 version: 0.2.2 @@ -289,9 +277,12 @@ importers: ioredis: specifier: ^5.7.0 version: 5.7.0 - skia-canvas: - specifier: 3.0.8 - version: 3.0.8 + luxon: + specifier: ^3.7.1 + version: 3.7.1 + mongoose: + specifier: ^8.18.0 + version: 8.18.0(socks@2.8.7) tiny-discord: specifier: https://github.com/timotejroiko/tiny-discord.git#f6d020085ea88e33ebaf6ce323930deffe74fb0d version: https://codeload.github.com/timotejroiko/tiny-discord/tar.gz/f6d020085ea88e33ebaf6ce323930deffe74fb0d @@ -302,9 +293,6 @@ importers: specifier: ^4.1.5 version: 4.1.5 devDependencies: - '@types/inquirer': - specifier: ^9.0.7 - version: 9.0.9 globals: specifier: ^16.3.0 version: 16.3.0 @@ -371,10 +359,10 @@ importers: version: 19.2.3(@types/react@19.2.7) eslint: specifier: ^9.19.0 - version: 9.34.0(jiti@2.6.1) + version: 9.34.0(jiti@2.7.0) eslint-config-next: specifier: 15.5.2 - version: 15.5.2(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2) + version: 15.5.2(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) mongoose: specifier: ^8.18.0 version: 8.18.0(socks@2.8.7) @@ -420,15 +408,9 @@ importers: '@typegoose/typegoose': specifier: ^12.6.0 version: 12.19.0(mongoose@8.18.0(socks@2.8.7)) - axios: - specifier: 1.11.0 - version: 1.11.0 discord-api-types: specifier: ^0.38.22 version: 0.38.22 - luxon: - specifier: ^3.5.0 - version: 3.7.1 mongoose: specifier: ^8.5.2 version: 8.18.0(socks@2.8.7) @@ -447,10 +429,6 @@ importers: typedi: specifier: ^0.10.0 version: 0.10.0 - devDependencies: - '@types/luxon': - specifier: ^3.4.2 - version: 3.7.1 apps/verify-server: dependencies: @@ -542,18 +520,12 @@ importers: packages/assets: dependencies: - '@statsify/logger': - specifier: workspace:^ - version: link:../logger '@statsify/schemas': specifier: workspace:^ version: link:../schemas '@swc/helpers': specifier: ^0.5.12 version: 0.5.17 - axios: - specifier: 1.11.0 - version: 1.11.0 skia-canvas: specifier: 3.0.8 version: 3.0.8 @@ -605,10 +577,6 @@ importers: typedi: specifier: ^0.10.0 version: 0.10.0 - devDependencies: - '@types/i18next-fs-backend': - specifier: ^1.1.5 - version: 1.2.0 packages/logger: dependencies: @@ -649,9 +617,6 @@ importers: '@sentry/node': specifier: ^7.118.0 version: 7.120.4 - '@statsify/assets': - specifier: workspace:^ - version: link:../assets '@statsify/util': specifier: workspace:^ version: link:../util @@ -673,9 +638,6 @@ importers: '@nestjs/swagger': specifier: ^11.2.0 version: 11.2.0(@fastify/static@8.2.0)(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2))(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2) - '@statsify/logger': - specifier: workspace:^ - version: link:../logger '@statsify/math': specifier: workspace:^ version: link:../math @@ -687,7 +649,7 @@ importers: version: 0.5.17 '@typegoose/typegoose': specifier: ^12.6.0 - version: 12.19.0(mongoose@8.18.0(socks@2.8.7)) + version: 12.19.0(mongoose@9.6.3(socks@2.8.7)) class-validator: specifier: ^0.14.1 version: 0.14.2 @@ -826,9 +788,15 @@ packages: resolution: {integrity: sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw==} engines: {node: '>=v18'} + '@emnapi/core@1.10.0': + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} + '@emnapi/core@1.5.0': resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==} + '@emnapi/runtime@1.10.0': + resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} + '@emnapi/runtime@1.5.0': resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} @@ -838,6 +806,9 @@ packages: '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} + '@esbuild/aix-ppc64@0.25.6': resolution: {integrity: sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==} engines: {node: '>=18'} @@ -1863,6 +1834,12 @@ packages: '@napi-rs/wasm-runtime@1.0.3': resolution: {integrity: sha512-rZxtMsLwjdXkMUGC3WwsPwLNVqVqnTJT6MNIB6e+5fhMcSCPP0AOsNWuMQ5mdCq6HNjs/ZeWAEchpqeprqBD2Q==} + '@napi-rs/wasm-runtime@1.1.4': + resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 + '@napi-rs/wasm-tools-android-arm-eabi@1.0.1': resolution: {integrity: sha512-lr07E/l571Gft5v4aA1dI8koJEmF1F0UigBbsqg9OWNzg80H3lDPO+auv85y3T/NHE3GirDk7x/D3sLO57vayw==} engines: {node: '>= 10'} @@ -2025,19 +2002,6 @@ packages: class-validator: optional: true - '@nestjs/testing@11.1.6': - resolution: {integrity: sha512-srYzzDNxGvVCe1j0SpTS9/ix75PKt6Sn6iMaH1rpJ6nj2g8vwNrhK0CoJJXvpCYgrnI+2WES2pprYnq8rAMYHA==} - peerDependencies: - '@nestjs/common': ^11.0.0 - '@nestjs/core': ^11.0.0 - '@nestjs/microservices': ^11.0.0 - '@nestjs/platform-express': ^11.0.0 - peerDependenciesMeta: - '@nestjs/microservices': - optional: true - '@nestjs/platform-express': - optional: true - '@next/env@16.0.7': resolution: {integrity: sha512-gpaNgUh5nftFKRkRQGnVi5dpcYSKGcZZkQffZ172OrG/XkrnS7UBTQ648YY+8ME92cC4IojpI2LqTC8sTDhAaw==} @@ -2165,6 +2129,223 @@ packages: '@octokit/types@14.1.0': resolution: {integrity: sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==} + '@oxc-parser/binding-android-arm-eabi@0.133.0': + resolution: {integrity: sha512-l/44caGse+VpnY9gx0yvvc5QnnG3yG1FO3KZgYvNL1GZrfK86zIwAOgGEVlxDyRymzrU/KHiblPFpevKOmJmUA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxc-parser/binding-android-arm64@0.133.0': + resolution: {integrity: sha512-KUHmPMziLBp4u+zbrLdB7iWS7KshuZe+RAp7ELnY9SI9nNXBZ+dp8fiBqWOxhXqn+FQg3a4UcQhwmsJOKV8Jjg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxc-parser/binding-darwin-arm64@0.133.0': + resolution: {integrity: sha512-q8dWmnU/8ea2tga9w2f1PinQ5rcMPDUGkF64T189b65YMjUomET4oy5oRldOr4AwOQkneOG/Zttnz1Dvrc62wg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxc-parser/binding-darwin-x64@0.133.0': + resolution: {integrity: sha512-cOKeIELIB2bJnCKwqx4Rdj+1Lss/U6uCbLxRySZrhyOOQa1flKhwZFjEHRHxk8fU1NKmhK5OnTdPQ4CpjuFuVw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxc-parser/binding-freebsd-x64@0.133.0': + resolution: {integrity: sha512-OpaSv4pW3KgFrMYQxTaS0aOE4T1DQF3qZE/4B6uqqv1KgPWWd4UQhJALi8PJPX1RRV5K7ThKXRfF7qGg2+3l1A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxc-parser/binding-linux-arm-gnueabihf@0.133.0': + resolution: {integrity: sha512-JGK1wlGrGwxBIlVSF7KWTX1/ru6BEtf28fRROztDRkLfiW+Kxa4onnriezMIiogfn9hVw2KzYcKiLjkLR2ns8A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxc-parser/binding-linux-arm-musleabihf@0.133.0': + resolution: {integrity: sha512-yuZO533Ftonxn/iyoqQzURzLQHMspvsIyfiCSNi1t/ER4eIQaR0SsmUOUm5b/lmSig7IWIUa5/BrbEkAPwcilQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxc-parser/binding-linux-arm64-gnu@0.133.0': + resolution: {integrity: sha512-hvpbqT5pN2rR+3+xtWeizwfR/aZ0vGceg6TqYMl+ToxMpk9/tmnX7kSvQnfEUkoua8mhogzvIKsAkn0wxgblBA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@oxc-parser/binding-linux-arm64-musl@0.133.0': + resolution: {integrity: sha512-wJQGamIosQBoJHW9+S5XxrtKRo3eyJxsnS1XCPrqN0LHi8uw1pTqqTfn3t/NVuvbBg7Pumn4ez9Eidgcn0xbEg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@oxc-parser/binding-linux-ppc64-gnu@0.133.0': + resolution: {integrity: sha512-Koaz32/O5+abIfrNGdyndgRvdOZ9jEf5/z3Ep9h3h2QWpdDiUQpVwgH0OcMXCs+l9aXxPLtkupqyVig9W6FDKw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + + '@oxc-parser/binding-linux-riscv64-gnu@0.133.0': + resolution: {integrity: sha512-R4vOjWzxhnNWHnVLeiB6jNuIifdy9vcMXZGPc7StXcxBovI+U2zg1QhZ9o8OjV80oGivs1lX5NfPLzk4IPqlRA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + + '@oxc-parser/binding-linux-riscv64-musl@0.133.0': + resolution: {integrity: sha512-iwgBNUTHiMdxARLYuM0SBlnYeb19iw1Ea5M+4ERZupCsBMLArti6FyZ6UfFjJxIiTDr2oW2DGQFxlQVQ/dW9rA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + + '@oxc-parser/binding-linux-s390x-gnu@0.133.0': + resolution: {integrity: sha512-ZwZNo8FZmB/gVfboQl+wXilBigGl+6nQQs+nITOeAP/HcAOjiHl6XZJL9F/KXNEspODQcbjAiyjUbeCJd9a0fA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + + '@oxc-parser/binding-linux-x64-gnu@0.133.0': + resolution: {integrity: sha512-govCvWx1dBlED3uu4qXctxpRcouu9I8Kn+DBktGCl760JtlGJzc9l/OmPJKlYWSbrRqKkMZehNeZ/4Wfma7uSA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxc-parser/binding-linux-x64-musl@0.133.0': + resolution: {integrity: sha512-ssTlpXD5Mq9uCssDJPzlRWqBt4Y7Zzd9i+XZhWmK/9Y6KUIuAxVYTYiI8lxcGWi0+3/Cz4A8q9UrD4NK9Y2j7g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxc-parser/binding-openharmony-arm64@0.133.0': + resolution: {integrity: sha512-51aByfXhPtLEdWG4a2Ihdw6cPWV1ei1AarALpFdDP8MLWDLE2NuUMgbo3DERR2Kt8fT/ok1GUvBiLxVGke9uUQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxc-parser/binding-wasm32-wasi@0.133.0': + resolution: {integrity: sha512-2e16tkKp+wDO2GTAmXfxbBcCmGEaFPIJEIRBBmVKNVXSc8/fJsSIaBGyFTPHM9ST5GNWgJcYIt94rDTks+PLwA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + + '@oxc-parser/binding-win32-arm64-msvc@0.133.0': + resolution: {integrity: sha512-KPTNDKbxH1cglrqTyVeXHb4Pk4oksz8EcE1/v8zqU7N4UXbiHfA/IwtXZ2U77fnRAWBbgVkl/lZbL7o3hRdejg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxc-parser/binding-win32-ia32-msvc@0.133.0': + resolution: {integrity: sha512-Una1bNYv9zCavQrfnDR9wuZVB3itLjCEH4Oz7i6CwAJN/Xq9b+zbbcxmvdkKvvJt4Ngc/MBmIYlbLo3zS4TQ0A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxc-parser/binding-win32-x64-msvc@0.133.0': + resolution: {integrity: sha512-kjBhCiOGSYTwDJQuuZa7a94JbP8htWu7J0X1KwH74kV2K5eYf6eyJRYmkpCDvr0XEL8tMxYI4WU1VekblFCLgg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@oxc-project/types@0.133.0': + resolution: {integrity: sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==} + + '@oxc-resolver/binding-android-arm-eabi@11.20.0': + resolution: {integrity: sha512-IjfWOXRgJFNdORDl+Uf1aibNgZY2guOD3zmOhx1BGVb/MIiqlFTdmjpQNplSN58lhWehnX4UNqC3QwpUo8pjJg==} + cpu: [arm] + os: [android] + + '@oxc-resolver/binding-android-arm64@11.20.0': + resolution: {integrity: sha512-QqslZAuFQG8Q9xm7JuIn8JUbvywhSBMVhuQHtYW+auirZJloS41oxUUaBXk7uUhZJgp44c5zQLeVvmFaDQB+2Q==} + cpu: [arm64] + os: [android] + + '@oxc-resolver/binding-darwin-arm64@11.20.0': + resolution: {integrity: sha512-MUcavykj2ewlR+kc5arpg4tC2RvzJkUxWtNv74pf7lcNk00GpIpN43vXMj+j6r4eMmfZhlb8hueKoIb8e9kAGQ==} + cpu: [arm64] + os: [darwin] + + '@oxc-resolver/binding-darwin-x64@11.20.0': + resolution: {integrity: sha512-BGB16nRUK5Etiv//ihPyzj8Lj1px0mhh4YIfe0FDf045ywknfSm0GEbiRESpr6Q4K82AvnyaRIhhluHByvS4bg==} + cpu: [x64] + os: [darwin] + + '@oxc-resolver/binding-freebsd-x64@11.20.0': + resolution: {integrity: sha512-JZgtePaqj3qmD5XFHJaSLWzHRxQu0LaPkdoM1KJXYADvAaa83ijXHclV3ej3CueeW0wxfIAbGCZVP45J0CA7uQ==} + cpu: [x64] + os: [freebsd] + + '@oxc-resolver/binding-linux-arm-gnueabihf@11.20.0': + resolution: {integrity: sha512-hOQ/p3ry3v3SchUBXicrrnszaI/UmYzM4wtS4RGfwgVUX7a+HbyQSzJ5aOzu+o6XZkFkS3ZXN4PZAzhOb77OSg==} + cpu: [arm] + os: [linux] + + '@oxc-resolver/binding-linux-arm-musleabihf@11.20.0': + resolution: {integrity: sha512-2ArPksaw0AqeuGBfoS715VF+JvJQAhD2niWgjE5hVO+L+nAfikVQopvngCMX9x4BD8itWoQ3dnikrQyl5Ho5Jg==} + cpu: [arm] + os: [linux] + + '@oxc-resolver/binding-linux-arm64-gnu@11.20.0': + resolution: {integrity: sha512-0bJnmYFp62JdZ4nVMDUZ/C58BCZOCcqgKtnUlp7L9Ojf/czIN+3j72YlLPeWLkzlr6SlYvIQA4SGV/HyO0d+qg==} + cpu: [arm64] + os: [linux] + + '@oxc-resolver/binding-linux-arm64-musl@11.20.0': + resolution: {integrity: sha512-wKHHzPKZo7Ufhv/Bt6yxT7FOgnIgW4gwXcJUipkShGp68W3wGVqvr1Sr0fY65lN0Oy6y41+g2kIDvkgZaMMUkw==} + cpu: [arm64] + os: [linux] + + '@oxc-resolver/binding-linux-ppc64-gnu@11.20.0': + resolution: {integrity: sha512-RN8goF7Ie0B79L4i4G6OeBocTgSC56vJbQ65VJje+oXnldVpLnOU7j/AQ/dP94TcCS+Yh6WG8u3Qt4ETteXFNQ==} + cpu: [ppc64] + os: [linux] + + '@oxc-resolver/binding-linux-riscv64-gnu@11.20.0': + resolution: {integrity: sha512-5l1yU6/xQEqLZRzxqmMxJfWPslpwCmBsdDGaBvABPehxquCXDC7dd7oraNdKSJUMDXSM7VvVj8H2D2FTjU7oWw==} + cpu: [riscv64] + os: [linux] + + '@oxc-resolver/binding-linux-riscv64-musl@11.20.0': + resolution: {integrity: sha512-xHEvkbgz6UC+A3JOyDQy76LkUaxsNSfIr3/GV8slwZsnuooJiIB34gzJfsyvR4JdCYNUUPsRJc/w/oWkODu+hg==} + cpu: [riscv64] + os: [linux] + + '@oxc-resolver/binding-linux-s390x-gnu@11.20.0': + resolution: {integrity: sha512-aWPDUUmSeyHvlW+SoEUd+JIJsQhVhu6a5tBpDRMu058naPAchTgAVGCFy35zjbnFlt0i8hLWziff6HX0D3LU4g==} + cpu: [s390x] + os: [linux] + + '@oxc-resolver/binding-linux-x64-gnu@11.20.0': + resolution: {integrity: sha512-x2YeSimvhJjKLVD8KSu8f/rqU1potcdEMkApIPJqjZWN7c2Fpt4g2X32WDg1p+XDAmyT7nuQGe0vnhvXeLbH+g==} + cpu: [x64] + os: [linux] + + '@oxc-resolver/binding-linux-x64-musl@11.20.0': + resolution: {integrity: sha512-kcRLEIxpZefeYfLChjpgFf3ilBzRDZ+yobMrpRsQlSrxuFGtm3U6PMU7AaEpMqo3NfDGVyJJseAjnRLzMFHjwQ==} + cpu: [x64] + os: [linux] + + '@oxc-resolver/binding-openharmony-arm64@11.20.0': + resolution: {integrity: sha512-HHcfnApSZGtKhTiHqe8OZruOZe5XuFQH5/E0Yhj3u8fnFvzkM4/k6WjacUf4SvA0SPEAbfbgYmVPuo0VX/fIBQ==} + cpu: [arm64] + os: [openharmony] + + '@oxc-resolver/binding-wasm32-wasi@11.20.0': + resolution: {integrity: sha512-Tn0y1XOFYHNfK1wp1Z5QK8Rcld/bsOwRISQXfqAZ5IBpv8Gz1IvV39fUWNprqNdRizgcvFhOzWwFun2zkJsyBg==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@oxc-resolver/binding-win32-arm64-msvc@11.20.0': + resolution: {integrity: sha512-qPi25YNPe4YenS8MgsQU2+bIFHxxpLx1LVna2444cEHqNPhNjvWf9zqj4aWE43H9LpAsTmkkAlA3eL5ElBU3mA==} + cpu: [arm64] + os: [win32] + + '@oxc-resolver/binding-win32-x64-msvc@11.20.0': + resolution: {integrity: sha512-Wb14jWEW8huH6It9F6sXd9vrYmIS7pMrgkU6sxpLxkP+9z+wRgs71hUEhRpcn8FOXAFa27FVWfY2tRpbfTzfLw==} + cpu: [x64] + os: [win32] + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -2870,6 +3051,9 @@ packages: '@tybys/wasm-util@0.10.0': resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==} + '@tybys/wasm-util@0.10.2': + resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} + '@typegoose/typegoose@12.19.0': resolution: {integrity: sha512-rsHMd3M6Rj6YYw6ecZU6YtXjiBzCqO3zJtgrrVCau1bEp6na8sbMcqRy8kNbTRyA2QCBAGEvM7nXTM8hdxeEiQ==} engines: {node: '>=16.20.1'} @@ -2885,23 +3069,12 @@ packages: '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - '@types/eslint__js@9.14.0': - resolution: {integrity: sha512-s0jepCjOJWB/GKcuba4jISaVpBudw3ClXJ3fUK4tugChUMQsp6kSwuA8Dcx6wFd/JsJqcY8n4rEpa5RTHs5ypA==} - deprecated: This is a stub types definition. @eslint/js provides its own type definitions, so you do not need this installed. - '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} '@types/http-cache-semantics@4.0.4': resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} - '@types/i18next-fs-backend@1.2.0': - resolution: {integrity: sha512-30XnjBF+SLndemvooRQRtcoD5xmF2nNNTa5RqE63+OWssaZOxN9r895ZvXUMbkk8YZr1Cy3scpQBZ6YXLH+jEg==} - deprecated: This is a stub types definition. i18next-fs-backend provides its own type definitions, so you do not need this installed. - - '@types/inquirer@9.0.9': - resolution: {integrity: sha512-/mWx5136gts2Z2e5izdoRCo46lPp5TMs9R15GTSsgg/XnZyxDWVqoVU3R9lWnccKpqwsJLvRoxbCjoJtZB7DSw==} - '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -2934,9 +3107,6 @@ packages: '@types/readable-stream@4.0.21': resolution: {integrity: sha512-19eKVv9tugr03IgfXlA9UVUVRbW6IuqRO5B92Dl4a6pT7K8uaGrNS0GkxiZD0BOk6PLuXl5FhWl//eX/pzYdTQ==} - '@types/through@0.0.33': - resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==} - '@types/validator@13.15.2': resolution: {integrity: sha512-y7pa/oEJJ4iGYBxOpfAKn5b9+xuihvzDVnC/OSvlVnGxVg0pOqmjiMafiJ1KVNQEaPZf9HsEp5icEwGg8uIe5Q==} @@ -2946,6 +3116,9 @@ packages: '@types/whatwg-url@11.0.5': resolution: {integrity: sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==} + '@types/whatwg-url@13.0.0': + resolution: {integrity: sha512-N8WXpbE6Wgri7KUSvrmQcqrMllKZ9uxkYWMt+mCSGwNc0Hsw9VQTW7ApqI4XNrx6/SaM2QQJCzMPDEXE058s+Q==} + '@types/wrap-ansi@3.0.0': resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} @@ -3532,6 +3705,10 @@ packages: resolution: {integrity: sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==} engines: {node: '>=16.20.1'} + bson@7.2.0: + resolution: {integrity: sha512-YCEo7KjMlbNlyHhz7zAZNDpIpQbd+wOEHJYezv0nMYTn4x31eIUM2yomNNubclAt63dObUzKHWsBLJ9QcZNSnQ==} + engines: {node: '>=20.19.0'} + buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} @@ -4287,6 +4464,9 @@ packages: fclone@1.0.11: resolution: {integrity: sha512-GDqVQezKzRABdeqflsgMr7ktzgF9CyS+p2oe0jJqUY6izSSbhPIQJDpoU4PtGcD7VPM9xh/dVrTu6z1nwgmEGw==} + fd-package-json@2.0.0: + resolution: {integrity: sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==} + fdir@6.4.6: resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} peerDependencies: @@ -4295,6 +4475,15 @@ packages: picomatch: optional: true + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + fflate@0.8.2: resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} @@ -4388,6 +4577,11 @@ packages: resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} engines: {node: '>= 6'} + formatly@0.3.0: + resolution: {integrity: sha512-9XNj/o4wrRFyhSMJOvsuyMwy8aUfBaZ1VrqHVfohyXf0Sw0e+yfKG+xZaY3arGCOMdwFsqObtzVOc1gU9KiT9w==} + engines: {node: '>=18.3.0'} + hasBin: true + framer-motion@12.23.25: resolution: {integrity: sha512-gUHGl2e4VG66jOcH0JHhuJQr6ZNwrET9g31ZG0xdXzT0CznP7fHX4P8Bcvuc4MiUB90ysNnWX2ukHRIggkl6hQ==} peerDependencies: @@ -4455,6 +4649,9 @@ packages: get-tsconfig@4.10.1: resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + get-tsconfig@4.14.0: + resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} + get-uri@6.0.5: resolution: {integrity: sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==} engines: {node: '>= 14'} @@ -4876,14 +5073,14 @@ packages: resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} engines: {node: 20 || >=22} - jiti@2.5.1: - resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} - hasBin: true - jiti@2.6.1: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} + hasBin: true + js-git@0.7.8: resolution: {integrity: sha512-+E5ZH/HeRnoc/LW0AmAyhU+mNcWBzAKE+30+IDMLSLbbK+Tdt02AdkOKq9u15rlJsDEGFqtgckc8ZM59LhhiUA==} @@ -4957,6 +5154,10 @@ packages: resolution: {integrity: sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==} engines: {node: '>=12.0.0'} + kareem@3.3.0: + resolution: {integrity: sha512-kpSuLD3/7RenBnjnJdOHXCKC8dTd1JzeOiJhN0necWWci6cC+qX+VuwPnMVgb+a4+KNJSfgqahpnfWaeDXCimw==} + engines: {node: '>=18.0.0'} + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -4964,6 +5165,11 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} + knip@6.15.0: + resolution: {integrity: sha512-uBaKFEGcu/HG4EY2gWFBMr+fBF43Jftoc2riJX51TKME1Z46C8UQIbNEusenYbEWihphxe2PY0Kns0yPvPYz4A==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + language-subtag-registry@0.3.23: resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} @@ -5293,6 +5499,10 @@ packages: mongodb-connection-string-url@3.0.2: resolution: {integrity: sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA==} + mongodb-connection-string-url@7.0.1: + resolution: {integrity: sha512-h0AZ9A7IDVwwHyMxmdMXKy+9oNlF0zFoahHiX3vQ8e3KFcSP3VmsmfvtRSuLPxmyv2vjIDxqty8smTgie/SNRQ==} + engines: {node: '>=20.19.0'} + mongodb@6.18.0: resolution: {integrity: sha512-fO5ttN9VC8P0F5fqtQmclAkgXZxbIkYRTUi1j8JO6IYwvamkhtYDilJr35jOPELR49zqCJgXZWwCtW7B+TM8vQ==} engines: {node: '>=16.20.1'} @@ -5320,10 +5530,41 @@ packages: socks: optional: true + mongodb@7.2.0: + resolution: {integrity: sha512-F/2+BMZtLVhY30ioZp0dAmZ+IRZMBqI+nrv6t5+9/1AIwCa8sMRC3jBf81lpxMhnZgqq8CoUD503Z1oZWq1/sw==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@aws-sdk/credential-providers': ^3.806.0 + '@mongodb-js/zstd': ^7.0.0 + gcp-metadata: ^7.0.1 + kerberos: ^7.0.0 + mongodb-client-encryption: '>=7.0.0 <7.1.0' + snappy: ^7.3.2 + socks: ^2.8.6 + peerDependenciesMeta: + '@aws-sdk/credential-providers': + optional: true + '@mongodb-js/zstd': + optional: true + gcp-metadata: + optional: true + kerberos: + optional: true + mongodb-client-encryption: + optional: true + snappy: + optional: true + socks: + optional: true + mongoose@8.18.0: resolution: {integrity: sha512-3TixPihQKBdyaYDeJqRjzgb86KbilEH07JmzV8SoSjgoskNTpa6oTBmDxeoF9p8YnWQoz7shnCyPkSV/48y3yw==} engines: {node: '>=16.20.1'} + mongoose@9.6.3: + resolution: {integrity: sha512-vI6dTTlQnfMCyyQ5TrvhG0bCRs4dq5e1uFNPtOOWsOhn0fSg8AoIHjfyyCYr8aybyvPs845dRHGxsC3w/fHcBA==} + engines: {node: '>=20.19.0'} + moo@0.5.2: resolution: {integrity: sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==} @@ -5355,6 +5596,10 @@ packages: resolution: {integrity: sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==} engines: {node: '>=14.0.0'} + mquery@6.0.0: + resolution: {integrity: sha512-b2KQNsmgtkscfeDgkYMcWGn9vZI9YoXh802VDEwE6qc50zxBFQ0Oo8ROkawbPAsXCY1/Z1yp0MagqsZStPWJjw==} + engines: {node: '>=20.19.0'} + mrmime@2.0.1: resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} engines: {node: '>=10'} @@ -5510,6 +5755,13 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} + oxc-parser@0.133.0: + resolution: {integrity: sha512-661RSx+ZcjBmjBYid+Fpp/2F5EbtildpeoZh5HdgnGs+jZ03nqQEQW8yGkt4BGyOC3OMPDQQRl8M5kqD2/g6jw==} + engines: {node: ^20.19.0 || >=22.12.0} + + oxc-resolver@11.20.0: + resolution: {integrity: sha512-CblytBiV/a/ZXY34dsVU2NxhIOxMXst8CvDCtyBelVITgd7PLrKzbEbA6oKLdPjvDKDzCiW48qzmzZ+mYaqn+g==} + p-cancelable@3.0.0: resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} engines: {node: '>=12.20'} @@ -5611,6 +5863,10 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + pidusage@2.0.21: resolution: {integrity: sha512-cv3xAQos+pugVX+BfXpHsbyz/dLzX+lr44zNMsYiGxUw+kV5sgQCIcLd1z+0vq+KyC7dJ+/ts2PsfgWfSC3WXA==} engines: {node: '>=8'} @@ -6078,6 +6334,10 @@ packages: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + smol-toml@1.6.1: + resolution: {integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==} + engines: {node: '>= 18'} + socks-proxy-agent@8.0.5: resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} engines: {node: '>= 14'} @@ -6217,6 +6477,10 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + strip-json-comments@5.0.3: + resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==} + engines: {node: '>=14.16'} + strip-literal@3.0.0: resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} @@ -6305,6 +6569,10 @@ packages: resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} engines: {node: '>=12.0.0'} + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + tinypool@1.1.1: resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} engines: {node: ^18.0.0 || >=20.0.0} @@ -6462,6 +6730,10 @@ packages: resolution: {integrity: sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==} engines: {node: '>=18'} + unbash@3.0.0: + resolution: {integrity: sha512-FeFPZ/WFT0mbRCuydiZzpPFlrYN8ZUpphQKoq4EeElVIYjYyGzPMxQR/simUwCOJIyVhpFk4RbtyO7RuMpMnHA==} + engines: {node: '>=14'} + unbox-primitive@1.1.0: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} @@ -6530,6 +6802,7 @@ packages: uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true validator@13.15.15: @@ -6613,6 +6886,10 @@ packages: resolution: {integrity: sha512-sfAcO2yeSU0CSPFI/DmZp3FsFE9T+8913nv1xWBOyzODv13fwkn6Vl7HqxGpkr9F608M+8SuFId3s+BlZqfXww==} engines: {node: '>=4.0'} + walk-up-path@4.0.0: + resolution: {integrity: sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==} + engines: {node: 20 || >=22} + wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} @@ -6704,6 +6981,11 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yaml@2.9.0: + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} + engines: {node: '>= 14.6'} + hasBin: true + yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} @@ -6734,6 +7016,9 @@ packages: zod@4.1.5: resolution: {integrity: sha512-rcUUZqlLJgBC33IT3PNMgsCq6TzLQEG/Ei/KTCU0PedSWRMAXoOUN+4t/0H+Q8bdnLPdqUYnvboJT0bn/229qg==} + zod@4.4.3: + resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} + snapshots: '@alloc/quick-lru@5.2.0': {} @@ -6886,12 +7171,23 @@ snapshots: '@types/conventional-commits-parser': 5.0.1 chalk: 5.6.0 + '@emnapi/core@1.10.0': + dependencies: + '@emnapi/wasi-threads': 1.2.1 + tslib: 2.8.1 + optional: true + '@emnapi/core@1.5.0': dependencies: '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 optional: true + '@emnapi/runtime@1.10.0': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/runtime@1.5.0': dependencies: tslib: 2.8.1 @@ -6907,6 +7203,11 @@ snapshots: tslib: 2.8.1 optional: true + '@emnapi/wasi-threads@1.2.1': + dependencies: + tslib: 2.8.1 + optional: true + '@esbuild/aix-ppc64@0.25.6': optional: true @@ -6985,9 +7286,9 @@ snapshots: '@esbuild/win32-x64@0.25.6': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.34.0(jiti@2.6.1))': + '@eslint-community/eslint-utils@4.7.0(eslint@9.34.0(jiti@2.7.0))': dependencies: - eslint: 9.34.0(jiti@2.6.1) + eslint: 9.34.0(jiti@2.7.0) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -7460,9 +7761,9 @@ snapshots: '@istanbuljs/schema@0.1.3': {} - '@j4cobi/eslint-plugin-sort-imports@1.0.2(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2)': + '@j4cobi/eslint-plugin-sort-imports@1.0.2(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)': dependencies: - '@typescript-eslint/utils': 8.37.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.37.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) transitivePeerDependencies: - eslint - supports-color @@ -7517,7 +7818,7 @@ snapshots: dependencies: sparse-bitfield: 3.0.3 - '@napi-rs/cli@3.1.5(@emnapi/runtime@1.7.1)(@types/node@24.3.0)': + '@napi-rs/cli@3.1.5(@emnapi/runtime@1.10.0)(@types/node@24.3.0)': dependencies: '@inquirer/prompts': 7.8.4(@types/node@24.3.0) '@napi-rs/cross-toolchain': 1.0.3 @@ -7532,7 +7833,7 @@ snapshots: semver: 7.7.2 typanion: 3.14.0 optionalDependencies: - '@emnapi/runtime': 1.7.1 + '@emnapi/runtime': 1.10.0 transitivePeerDependencies: - '@napi-rs/cross-toolchain-arm64-target-aarch64' - '@napi-rs/cross-toolchain-arm64-target-armv7' @@ -7783,6 +8084,13 @@ snapshots: '@tybys/wasm-util': 0.10.0 optional: true + '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.10.2 + optional: true + '@napi-rs/wasm-tools-android-arm-eabi@1.0.1': optional: true @@ -7913,12 +8221,6 @@ snapshots: class-transformer: 0.5.1 class-validator: 0.14.2 - '@nestjs/testing@11.1.6(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2))': - dependencies: - '@nestjs/common': 11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': 11.1.6(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2) - tslib: 2.8.1 - '@next/env@16.0.7': {} '@next/eslint-plugin-next@15.5.2': @@ -8029,6 +8331,133 @@ snapshots: dependencies: '@octokit/openapi-types': 25.1.0 + '@oxc-parser/binding-android-arm-eabi@0.133.0': + optional: true + + '@oxc-parser/binding-android-arm64@0.133.0': + optional: true + + '@oxc-parser/binding-darwin-arm64@0.133.0': + optional: true + + '@oxc-parser/binding-darwin-x64@0.133.0': + optional: true + + '@oxc-parser/binding-freebsd-x64@0.133.0': + optional: true + + '@oxc-parser/binding-linux-arm-gnueabihf@0.133.0': + optional: true + + '@oxc-parser/binding-linux-arm-musleabihf@0.133.0': + optional: true + + '@oxc-parser/binding-linux-arm64-gnu@0.133.0': + optional: true + + '@oxc-parser/binding-linux-arm64-musl@0.133.0': + optional: true + + '@oxc-parser/binding-linux-ppc64-gnu@0.133.0': + optional: true + + '@oxc-parser/binding-linux-riscv64-gnu@0.133.0': + optional: true + + '@oxc-parser/binding-linux-riscv64-musl@0.133.0': + optional: true + + '@oxc-parser/binding-linux-s390x-gnu@0.133.0': + optional: true + + '@oxc-parser/binding-linux-x64-gnu@0.133.0': + optional: true + + '@oxc-parser/binding-linux-x64-musl@0.133.0': + optional: true + + '@oxc-parser/binding-openharmony-arm64@0.133.0': + optional: true + + '@oxc-parser/binding-wasm32-wasi@0.133.0': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + optional: true + + '@oxc-parser/binding-win32-arm64-msvc@0.133.0': + optional: true + + '@oxc-parser/binding-win32-ia32-msvc@0.133.0': + optional: true + + '@oxc-parser/binding-win32-x64-msvc@0.133.0': + optional: true + + '@oxc-project/types@0.133.0': {} + + '@oxc-resolver/binding-android-arm-eabi@11.20.0': + optional: true + + '@oxc-resolver/binding-android-arm64@11.20.0': + optional: true + + '@oxc-resolver/binding-darwin-arm64@11.20.0': + optional: true + + '@oxc-resolver/binding-darwin-x64@11.20.0': + optional: true + + '@oxc-resolver/binding-freebsd-x64@11.20.0': + optional: true + + '@oxc-resolver/binding-linux-arm-gnueabihf@11.20.0': + optional: true + + '@oxc-resolver/binding-linux-arm-musleabihf@11.20.0': + optional: true + + '@oxc-resolver/binding-linux-arm64-gnu@11.20.0': + optional: true + + '@oxc-resolver/binding-linux-arm64-musl@11.20.0': + optional: true + + '@oxc-resolver/binding-linux-ppc64-gnu@11.20.0': + optional: true + + '@oxc-resolver/binding-linux-riscv64-gnu@11.20.0': + optional: true + + '@oxc-resolver/binding-linux-riscv64-musl@11.20.0': + optional: true + + '@oxc-resolver/binding-linux-s390x-gnu@11.20.0': + optional: true + + '@oxc-resolver/binding-linux-x64-gnu@11.20.0': + optional: true + + '@oxc-resolver/binding-linux-x64-musl@11.20.0': + optional: true + + '@oxc-resolver/binding-openharmony-arm64@11.20.0': + optional: true + + '@oxc-resolver/binding-wasm32-wasi@11.20.0': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + optional: true + + '@oxc-resolver/binding-win32-arm64-msvc@11.20.0': + optional: true + + '@oxc-resolver/binding-win32-x64-msvc@11.20.0': + optional: true + '@pkgjs/parseargs@0.11.0': optional: true @@ -8446,11 +8875,11 @@ snapshots: '@sindresorhus/is@5.6.0': {} - '@stylistic/eslint-plugin@5.2.3(eslint@9.34.0(jiti@2.6.1))': + '@stylistic/eslint-plugin@5.2.3(eslint@9.34.0(jiti@2.7.0))': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.7.0)) '@typescript-eslint/types': 8.41.0 - eslint: 9.34.0(jiti@2.6.1) + eslint: 9.34.0(jiti@2.7.0) eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 @@ -8629,6 +9058,11 @@ snapshots: tslib: 2.8.1 optional: true + '@tybys/wasm-util@0.10.2': + dependencies: + tslib: 2.8.1 + optional: true + '@typegoose/typegoose@12.19.0(mongoose@8.18.0(socks@2.8.7))': dependencies: lodash: 4.17.21 @@ -8638,6 +9072,15 @@ snapshots: semver: 7.7.2 tslib: 2.8.1 + '@typegoose/typegoose@12.19.0(mongoose@9.6.3(socks@2.8.7))': + dependencies: + lodash: 4.17.21 + loglevel: 1.9.2 + mongoose: 9.6.3(socks@2.8.7) + reflect-metadata: 0.2.2 + semver: 7.7.2 + tslib: 2.8.1 + '@types/chai@5.2.2': dependencies: '@types/deep-eql': 4.0.2 @@ -8648,23 +9091,10 @@ snapshots: '@types/deep-eql@4.0.2': {} - '@types/eslint__js@9.14.0': - dependencies: - '@eslint/js': 9.34.0 - '@types/estree@1.0.8': {} '@types/http-cache-semantics@4.0.4': {} - '@types/i18next-fs-backend@1.2.0': - dependencies: - i18next-fs-backend: 2.6.0 - - '@types/inquirer@9.0.9': - dependencies: - '@types/through': 0.0.33 - rxjs: 7.8.2 - '@types/json-schema@7.0.15': {} '@types/json5@0.0.29': {} @@ -8699,10 +9129,6 @@ snapshots: dependencies: '@types/node': 24.3.0 - '@types/through@0.0.33': - dependencies: - '@types/node': 24.3.0 - '@types/validator@13.15.2': {} '@types/webidl-conversions@7.0.3': {} @@ -8711,17 +9137,21 @@ snapshots: dependencies: '@types/webidl-conversions': 7.0.3 + '@types/whatwg-url@13.0.0': + dependencies: + '@types/webidl-conversions': 7.0.3 + '@types/wrap-ansi@3.0.0': {} - '@typescript-eslint/eslint-plugin@8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.41.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2) + '@typescript-eslint/parser': 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) '@typescript-eslint/scope-manager': 8.41.0 - '@typescript-eslint/type-utils': 8.41.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2) - '@typescript-eslint/utils': 8.41.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2) + '@typescript-eslint/type-utils': 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + '@typescript-eslint/utils': 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) '@typescript-eslint/visitor-keys': 8.41.0 - eslint: 9.34.0(jiti@2.6.1) + eslint: 9.34.0(jiti@2.7.0) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -8730,14 +9160,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2)': + '@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)': dependencies: '@typescript-eslint/scope-manager': 8.41.0 '@typescript-eslint/types': 8.41.0 '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.9.2) '@typescript-eslint/visitor-keys': 8.41.0 debug: 4.4.1 - eslint: 9.34.0(jiti@2.6.1) + eslint: 9.34.0(jiti@2.7.0) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -8778,13 +9208,13 @@ snapshots: dependencies: typescript: 5.9.2 - '@typescript-eslint/type-utils@8.41.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2)': + '@typescript-eslint/type-utils@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)': dependencies: '@typescript-eslint/types': 8.41.0 '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.41.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) debug: 4.4.1 - eslint: 9.34.0(jiti@2.6.1) + eslint: 9.34.0(jiti@2.7.0) ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 transitivePeerDependencies: @@ -8826,24 +9256,24 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.37.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2)': + '@typescript-eslint/utils@8.37.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.7.0)) '@typescript-eslint/scope-manager': 8.37.0 '@typescript-eslint/types': 8.37.0 '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.9.2) - eslint: 9.34.0(jiti@2.6.1) + eslint: 9.34.0(jiti@2.7.0) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2)': + '@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.7.0)) '@typescript-eslint/scope-manager': 8.41.0 '@typescript-eslint/types': 8.41.0 '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.9.2) - eslint: 9.34.0(jiti@2.6.1) + eslint: 9.34.0(jiti@2.7.0) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -8942,7 +9372,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@24.3.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(lightningcss@1.30.2) + vitest: 3.2.4(@types/node@24.3.0)(@vitest/ui@3.2.4)(jiti@2.7.0)(lightningcss@1.30.2)(yaml@2.9.0) transitivePeerDependencies: - supports-color @@ -8954,13 +9384,13 @@ snapshots: chai: 5.2.1 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.0.4(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.2))': + '@vitest/mocker@3.2.4(vite@7.0.4(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.30.2)(yaml@2.9.0))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 7.0.4(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.2) + vite: 7.0.4(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.30.2)(yaml@2.9.0) '@vitest/pretty-format@3.2.4': dependencies: @@ -8991,7 +9421,7 @@ snapshots: sirv: 3.0.1 tinyglobby: 0.2.14 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@24.3.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(lightningcss@1.30.2) + vitest: 3.2.4(@types/node@24.3.0)(@vitest/ui@3.2.4)(jiti@2.7.0)(lightningcss@1.30.2)(yaml@2.9.0) '@vitest/utils@3.2.4': dependencies: @@ -9357,6 +9787,8 @@ snapshots: bson@6.10.4: {} + bson@7.2.0: {} + buffer-crc32@0.2.13: {} buffer-equal-constant-time@1.0.1: {} @@ -9594,7 +10026,7 @@ snapshots: dependencies: '@types/node': 24.3.0 cosmiconfig: 9.0.0(typescript@5.9.2) - jiti: 2.5.1 + jiti: 2.6.1 typescript: 5.9.2 cosmiconfig@9.0.0(typescript@5.9.2): @@ -9925,19 +10357,19 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-next@15.5.2(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2): + eslint-config-next@15.5.2(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2): dependencies: '@next/eslint-plugin-next': 15.5.2 '@rushstack/eslint-patch': 1.12.0 - '@typescript-eslint/eslint-plugin': 8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2) - '@typescript-eslint/parser': 8.41.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2) - eslint: 9.34.0(jiti@2.6.1) + '@typescript-eslint/eslint-plugin': 8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + '@typescript-eslint/parser': 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + eslint: 9.34.0(jiti@2.7.0) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.34.0(jiti@2.6.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.6.1)) - eslint-plugin-jsx-a11y: 6.10.2(eslint@9.34.0(jiti@2.6.1)) - eslint-plugin-react: 7.37.5(eslint@9.34.0(jiti@2.6.1)) - eslint-plugin-react-hooks: 5.2.0(eslint@9.34.0(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.34.0(jiti@2.7.0)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.7.0)) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.34.0(jiti@2.7.0)) + eslint-plugin-react: 7.37.5(eslint@9.34.0(jiti@2.7.0)) + eslint-plugin-react-hooks: 5.2.0(eslint@9.34.0(jiti@2.7.0)) optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: @@ -9953,33 +10385,33 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.34.0(jiti@2.6.1)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.34.0(jiti@2.7.0)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.1 - eslint: 9.34.0(jiti@2.6.1) + eslint: 9.34.0(jiti@2.7.0) get-tsconfig: 4.10.1 is-bun-module: 2.0.0 stable-hash: 0.0.5 tinyglobby: 0.2.14 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.7.0)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.7.0)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.41.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2) - eslint: 9.34.0(jiti@2.6.1) + '@typescript-eslint/parser': 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + eslint: 9.34.0(jiti@2.7.0) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.34.0(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.34.0(jiti@2.7.0)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.7.0)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -9988,9 +10420,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.34.0(jiti@2.6.1) + eslint: 9.34.0(jiti@2.7.0) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.7.0)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -10002,13 +10434,13 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.41.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2) + '@typescript-eslint/parser': 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.10.2(eslint@9.34.0(jiti@2.6.1)): + eslint-plugin-jsx-a11y@6.10.2(eslint@9.34.0(jiti@2.7.0)): dependencies: aria-query: 5.3.2 array-includes: 3.1.9 @@ -10018,7 +10450,7 @@ snapshots: axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 9.34.0(jiti@2.6.1) + eslint: 9.34.0(jiti@2.7.0) hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -10031,11 +10463,11 @@ snapshots: dependencies: requireindex: 1.2.0 - eslint-plugin-react-hooks@5.2.0(eslint@9.34.0(jiti@2.6.1)): + eslint-plugin-react-hooks@5.2.0(eslint@9.34.0(jiti@2.7.0)): dependencies: - eslint: 9.34.0(jiti@2.6.1) + eslint: 9.34.0(jiti@2.7.0) - eslint-plugin-react@7.37.5(eslint@9.34.0(jiti@2.6.1)): + eslint-plugin-react@7.37.5(eslint@9.34.0(jiti@2.7.0)): dependencies: array-includes: 3.1.9 array.prototype.findlast: 1.2.5 @@ -10043,7 +10475,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 9.34.0(jiti@2.6.1) + eslint: 9.34.0(jiti@2.7.0) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -10057,16 +10489,16 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-unicorn@60.0.0(eslint@9.34.0(jiti@2.6.1)): + eslint-plugin-unicorn@60.0.0(eslint@9.34.0(jiti@2.7.0)): dependencies: '@babel/helper-validator-identifier': 7.27.1 - '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.7.0)) '@eslint/plugin-kit': 0.3.5 change-case: 5.4.4 ci-info: 4.3.0 clean-regexp: 1.0.0 core-js-compat: 3.45.1 - eslint: 9.34.0(jiti@2.6.1) + eslint: 9.34.0(jiti@2.7.0) esquery: 1.6.0 find-up-simple: 1.0.1 globals: 16.3.0 @@ -10079,11 +10511,11 @@ snapshots: semver: 7.7.2 strip-indent: 4.0.0 - eslint-plugin-unused-imports@4.2.0(@typescript-eslint/eslint-plugin@8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.6.1)): + eslint-plugin-unused-imports@4.2.0(@typescript-eslint/eslint-plugin@8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0)): dependencies: - eslint: 9.34.0(jiti@2.6.1) + eslint: 9.34.0(jiti@2.7.0) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2) + '@typescript-eslint/eslint-plugin': 8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) eslint-scope@8.4.0: dependencies: @@ -10094,9 +10526,9 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.34.0(jiti@2.6.1): + eslint@9.34.0(jiti@2.7.0): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.7.0)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.0 '@eslint/config-helpers': 0.3.1 @@ -10132,7 +10564,7 @@ snapshots: natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: - jiti: 2.6.1 + jiti: 2.7.0 transitivePeerDependencies: - supports-color @@ -10302,10 +10734,18 @@ snapshots: fclone@1.0.11: {} + fd-package-json@2.0.0: + dependencies: + walk-up-path: 4.0.0 + fdir@6.4.6(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 + fdir@6.5.0(picomatch@4.0.4): + optionalDependencies: + picomatch: 4.0.4 + fflate@0.8.2: {} figures@3.2.0: @@ -10415,6 +10855,10 @@ snapshots: hasown: 2.0.2 mime-types: 2.1.35 + formatly@0.3.0: + dependencies: + fd-package-json: 2.0.0 + framer-motion@12.23.25(react-dom@19.2.1(react@19.2.1))(react@19.2.1): dependencies: motion-dom: 12.23.23 @@ -10485,6 +10929,10 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + get-tsconfig@4.14.0: + dependencies: + resolve-pkg-maps: 1.0.0 + get-uri@6.0.5: dependencies: basic-ftp: 5.0.5 @@ -10947,10 +11395,10 @@ snapshots: dependencies: '@isaacs/cliui': 8.0.2 - jiti@2.5.1: {} - jiti@2.6.1: {} + jiti@2.7.0: {} + js-git@0.7.8: dependencies: bodec: 0.1.0 @@ -11032,12 +11480,31 @@ snapshots: kareem@2.6.3: {} + kareem@3.3.0: {} + keyv@4.5.4: dependencies: json-buffer: 3.0.1 kind-of@6.0.3: {} + knip@6.15.0: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + formatly: 0.3.0 + get-tsconfig: 4.14.0 + jiti: 2.7.0 + minimist: 1.2.8 + oxc-parser: 0.133.0 + oxc-resolver: 11.20.0 + picomatch: 4.0.4 + smol-toml: 1.6.1 + strip-json-comments: 5.0.3 + tinyglobby: 0.2.17 + unbash: 3.0.0 + yaml: 2.9.0 + zod: 4.4.3 + language-subtag-registry@0.3.23: {} language-tags@1.0.9: @@ -11310,6 +11777,11 @@ snapshots: '@types/whatwg-url': 11.0.5 whatwg-url: 14.2.0 + mongodb-connection-string-url@7.0.1: + dependencies: + '@types/whatwg-url': 13.0.0 + whatwg-url: 14.2.0 + mongodb@6.18.0(socks@2.8.7): dependencies: '@mongodb-js/saslprep': 1.3.0 @@ -11318,6 +11790,14 @@ snapshots: optionalDependencies: socks: 2.8.7 + mongodb@7.2.0(socks@2.8.7): + dependencies: + '@mongodb-js/saslprep': 1.3.0 + bson: 7.2.0 + mongodb-connection-string-url: 7.0.1 + optionalDependencies: + socks: 2.8.7 + mongoose@8.18.0(socks@2.8.7): dependencies: bson: 6.10.4 @@ -11337,6 +11817,23 @@ snapshots: - socks - supports-color + mongoose@9.6.3(socks@2.8.7): + dependencies: + kareem: 3.3.0 + mongodb: 7.2.0(socks@2.8.7) + mpath: 0.9.0 + mquery: 6.0.0 + ms: 2.1.3 + sift: 17.1.3 + transitivePeerDependencies: + - '@aws-sdk/credential-providers' + - '@mongodb-js/zstd' + - gcp-metadata + - kerberos + - mongodb-client-encryption + - snappy + - socks + moo@0.5.2: {} motion-dom@12.23.23: @@ -11361,6 +11858,8 @@ snapshots: transitivePeerDependencies: - supports-color + mquery@6.0.0: {} + mrmime@2.0.1: {} ms@2.1.3: {} @@ -11518,6 +12017,53 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 + oxc-parser@0.133.0: + dependencies: + '@oxc-project/types': 0.133.0 + optionalDependencies: + '@oxc-parser/binding-android-arm-eabi': 0.133.0 + '@oxc-parser/binding-android-arm64': 0.133.0 + '@oxc-parser/binding-darwin-arm64': 0.133.0 + '@oxc-parser/binding-darwin-x64': 0.133.0 + '@oxc-parser/binding-freebsd-x64': 0.133.0 + '@oxc-parser/binding-linux-arm-gnueabihf': 0.133.0 + '@oxc-parser/binding-linux-arm-musleabihf': 0.133.0 + '@oxc-parser/binding-linux-arm64-gnu': 0.133.0 + '@oxc-parser/binding-linux-arm64-musl': 0.133.0 + '@oxc-parser/binding-linux-ppc64-gnu': 0.133.0 + '@oxc-parser/binding-linux-riscv64-gnu': 0.133.0 + '@oxc-parser/binding-linux-riscv64-musl': 0.133.0 + '@oxc-parser/binding-linux-s390x-gnu': 0.133.0 + '@oxc-parser/binding-linux-x64-gnu': 0.133.0 + '@oxc-parser/binding-linux-x64-musl': 0.133.0 + '@oxc-parser/binding-openharmony-arm64': 0.133.0 + '@oxc-parser/binding-wasm32-wasi': 0.133.0 + '@oxc-parser/binding-win32-arm64-msvc': 0.133.0 + '@oxc-parser/binding-win32-ia32-msvc': 0.133.0 + '@oxc-parser/binding-win32-x64-msvc': 0.133.0 + + oxc-resolver@11.20.0: + optionalDependencies: + '@oxc-resolver/binding-android-arm-eabi': 11.20.0 + '@oxc-resolver/binding-android-arm64': 11.20.0 + '@oxc-resolver/binding-darwin-arm64': 11.20.0 + '@oxc-resolver/binding-darwin-x64': 11.20.0 + '@oxc-resolver/binding-freebsd-x64': 11.20.0 + '@oxc-resolver/binding-linux-arm-gnueabihf': 11.20.0 + '@oxc-resolver/binding-linux-arm-musleabihf': 11.20.0 + '@oxc-resolver/binding-linux-arm64-gnu': 11.20.0 + '@oxc-resolver/binding-linux-arm64-musl': 11.20.0 + '@oxc-resolver/binding-linux-ppc64-gnu': 11.20.0 + '@oxc-resolver/binding-linux-riscv64-gnu': 11.20.0 + '@oxc-resolver/binding-linux-riscv64-musl': 11.20.0 + '@oxc-resolver/binding-linux-s390x-gnu': 11.20.0 + '@oxc-resolver/binding-linux-x64-gnu': 11.20.0 + '@oxc-resolver/binding-linux-x64-musl': 11.20.0 + '@oxc-resolver/binding-openharmony-arm64': 11.20.0 + '@oxc-resolver/binding-wasm32-wasi': 11.20.0 + '@oxc-resolver/binding-win32-arm64-msvc': 11.20.0 + '@oxc-resolver/binding-win32-x64-msvc': 11.20.0 + p-cancelable@3.0.0: {} p-limit@3.1.0: @@ -11607,6 +12153,8 @@ snapshots: picomatch@4.0.3: {} + picomatch@4.0.4: {} + pidusage@2.0.21: dependencies: safe-buffer: 5.2.1 @@ -12235,6 +12783,8 @@ snapshots: smart-buffer@4.2.0: {} + smol-toml@1.6.1: {} + socks-proxy-agent@8.0.5: dependencies: agent-base: 7.1.4 @@ -12398,6 +12948,8 @@ snapshots: strip-json-comments@3.1.1: {} + strip-json-comments@5.0.3: {} + strip-literal@3.0.0: dependencies: js-tokens: 9.0.1 @@ -12471,6 +13023,11 @@ snapshots: fdir: 6.4.6(picomatch@4.0.3) picomatch: 4.0.3 + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + tinypool@1.1.1: {} tinyrainbow@2.0.0: {} @@ -12599,13 +13156,13 @@ snapshots: typedi@0.10.0: {} - typescript-eslint@8.41.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2): + typescript-eslint@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2) - '@typescript-eslint/parser': 8.41.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2) + '@typescript-eslint/eslint-plugin': 8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + '@typescript-eslint/parser': 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.41.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.9.2) - eslint: 9.34.0(jiti@2.6.1) + '@typescript-eslint/utils': 8.41.0(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2) + eslint: 9.34.0(jiti@2.7.0) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -12621,6 +13178,8 @@ snapshots: uint8array-extras@1.5.0: {} + unbash@3.0.0: {} + unbox-primitive@1.1.0: dependencies: call-bound: 1.0.4 @@ -12709,13 +13268,13 @@ snapshots: validator@13.15.15: {} - vite-node@3.2.4(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.2): + vite-node@3.2.4(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.30.2)(yaml@2.9.0): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.0.4(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.2) + vite: 7.0.4(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.30.2)(yaml@2.9.0) transitivePeerDependencies: - '@types/node' - jiti @@ -12730,7 +13289,7 @@ snapshots: - tsx - yaml - vite@7.0.4(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.2): + vite@7.0.4(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.30.2)(yaml@2.9.0): dependencies: esbuild: 0.25.6 fdir: 6.4.6(picomatch@4.0.3) @@ -12741,14 +13300,15 @@ snapshots: optionalDependencies: '@types/node': 24.3.0 fsevents: 2.3.3 - jiti: 2.6.1 + jiti: 2.7.0 lightningcss: 1.30.2 + yaml: 2.9.0 - vitest@3.2.4(@types/node@24.3.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(lightningcss@1.30.2): + vitest@3.2.4(@types/node@24.3.0)(@vitest/ui@3.2.4)(jiti@2.7.0)(lightningcss@1.30.2)(yaml@2.9.0): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.0.4(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.2)) + '@vitest/mocker': 3.2.4(vite@7.0.4(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.30.2)(yaml@2.9.0)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -12766,8 +13326,8 @@ snapshots: tinyglobby: 0.2.14 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.0.4(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.2) - vite-node: 3.2.4(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.2) + vite: 7.0.4(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.30.2)(yaml@2.9.0) + vite-node: 3.2.4(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.30.2)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.3.0 @@ -12793,6 +13353,8 @@ snapshots: ini: 1.3.8 js-git: 0.7.8 + walk-up-path@4.0.0: {} + wcwidth@1.0.1: dependencies: defaults: 1.0.4 @@ -12897,6 +13459,8 @@ snapshots: yallist@4.0.0: {} + yaml@2.9.0: {} + yargs-parser@21.1.1: {} yargs@17.7.2: @@ -12928,3 +13492,5 @@ snapshots: yoctocolors-cjs@2.1.3: {} zod@4.1.5: {} + + zod@4.4.3: {}