From eb4cb1fbfee7ac6b431ade3af404ee6895bb3eaf Mon Sep 17 00:00:00 2001 From: tresabhi Date: Thu, 24 Aug 2023 00:08:08 +0000 Subject: [PATCH 1/3] feat: removed inDevelopment --- src/commands/debug.ts | 1 - src/commands/eligible.ts | 1 - src/commands/evolution.tsx | 1 - src/commands/fullStats.tsx | 1 - src/commands/help.ts | 1 - src/commands/inactive.tsx | 1 - src/commands/ownedTanks.tsx | 1 - src/commands/ping.ts | 1 - src/commands/playerAchievements.ts | 1 - src/commands/playerInfo.ts | 1 - src/commands/ratings.tsx | 1 - src/commands/searchClans.ts | 1 - src/commands/searchPlayers.ts | 1 - src/commands/searchTanks.ts | 1 - src/commands/stats.tsx | 1 - src/commands/today.tsx | 1 - src/commands/verify.ts | 1 - src/events/interactionCreate/index.ts | 13 +++++-------- src/routes/stats.tsx | 1 - src/routes/today.tsx | 1 - src/server.ts | 3 --- 21 files changed, 5 insertions(+), 30 deletions(-) diff --git a/src/commands/debug.ts b/src/commands/debug.ts index 238f42962..e3afbe119 100644 --- a/src/commands/debug.ts +++ b/src/commands/debug.ts @@ -12,7 +12,6 @@ const executionStart = new Date().getTime(); export const debugCommand: CommandRegistry = { inProduction: true, - inDevelopment: true, inPublic: true, command: new SlashCommandBuilder() diff --git a/src/commands/eligible.ts b/src/commands/eligible.ts index eadb83c0b..619f31af4 100644 --- a/src/commands/eligible.ts +++ b/src/commands/eligible.ts @@ -26,7 +26,6 @@ export const SKILLED_CLANS: Record = { export const eligibleCommand: CommandRegistry = { inProduction: true, - inDevelopment: true, inPublic: false, command: new SlashCommandBuilder() diff --git a/src/commands/evolution.tsx b/src/commands/evolution.tsx index 31c4db287..2bab316f7 100644 --- a/src/commands/evolution.tsx +++ b/src/commands/evolution.tsx @@ -29,7 +29,6 @@ export const evolutionCommand = new Promise( resolve({ inProduction: true, - inDevelopment: true, inPublic: true, command, diff --git a/src/commands/fullStats.tsx b/src/commands/fullStats.tsx index 37fcc658e..bbfef0c27 100644 --- a/src/commands/fullStats.tsx +++ b/src/commands/fullStats.tsx @@ -29,7 +29,6 @@ export const fullStatsCommand = new Promise( resolve({ inProduction: true, - inDevelopment: true, inPublic: true, command, diff --git a/src/commands/help.ts b/src/commands/help.ts index a85d83319..fab71fe7e 100644 --- a/src/commands/help.ts +++ b/src/commands/help.ts @@ -30,7 +30,6 @@ function addDocsSubcommands(option: SlashCommandSubcommandsOnlyBuilder) { export const helpCommand: CommandRegistry = { inProduction: true, - inDevelopment: true, inPublic: true, command: addDocsSubcommands( diff --git a/src/commands/inactive.tsx b/src/commands/inactive.tsx index 6d2ccb712..a003cd75e 100644 --- a/src/commands/inactive.tsx +++ b/src/commands/inactive.tsx @@ -16,7 +16,6 @@ const DEFAULT_THRESHOLD = 7; export const inactiveCommand: CommandRegistry = { inProduction: true, - inDevelopment: true, inPublic: true, command: new SlashCommandBuilder() diff --git a/src/commands/ownedTanks.tsx b/src/commands/ownedTanks.tsx index dcbc391ab..3fbd82023 100644 --- a/src/commands/ownedTanks.tsx +++ b/src/commands/ownedTanks.tsx @@ -46,7 +46,6 @@ const COMP_TANKS = [ export const ownedTanksCommand: CommandRegistry = { inProduction: true, - inDevelopment: true, inPublic: true, command: new SlashCommandBuilder() diff --git a/src/commands/ping.ts b/src/commands/ping.ts index a9fcd5146..bb93c57dc 100644 --- a/src/commands/ping.ts +++ b/src/commands/ping.ts @@ -3,7 +3,6 @@ import { CommandRegistry } from '../events/interactionCreate'; export const pingCommand: CommandRegistry = { inProduction: true, - inDevelopment: true, inPublic: true, handlesInteraction: true, diff --git a/src/commands/playerAchievements.ts b/src/commands/playerAchievements.ts index 2a81a2d2d..e6f178238 100644 --- a/src/commands/playerAchievements.ts +++ b/src/commands/playerAchievements.ts @@ -16,7 +16,6 @@ type SortBy = 'name' | 'count'; export const playerAchievementsCommand: CommandRegistry = { inProduction: true, - inDevelopment: true, inPublic: true, command: new SlashCommandBuilder() diff --git a/src/commands/playerInfo.ts b/src/commands/playerInfo.ts index ce26234c5..c65c181cf 100644 --- a/src/commands/playerInfo.ts +++ b/src/commands/playerInfo.ts @@ -12,7 +12,6 @@ import { AccountInfo } from '../types/accountInfo'; export const playerInfoCommand: CommandRegistry = { inProduction: true, - inDevelopment: true, inPublic: true, command: new SlashCommandBuilder() diff --git a/src/commands/ratings.tsx b/src/commands/ratings.tsx index 6493edcc3..4e56a16ec 100644 --- a/src/commands/ratings.tsx +++ b/src/commands/ratings.tsx @@ -162,7 +162,6 @@ export const ratingsCommand = new Promise( resolve({ inProduction: true, - inDevelopment: true, inPublic: true, command, diff --git a/src/commands/searchClans.ts b/src/commands/searchClans.ts index a7ca4e6f8..f02e70fc4 100644 --- a/src/commands/searchClans.ts +++ b/src/commands/searchClans.ts @@ -11,7 +11,6 @@ import { ClanList } from '../types/clanList'; export const searchClansCommand: CommandRegistry = { inProduction: true, - inDevelopment: true, inPublic: true, command: new SlashCommandBuilder() diff --git a/src/commands/searchPlayers.ts b/src/commands/searchPlayers.ts index b6c62b6d2..645ba217e 100644 --- a/src/commands/searchPlayers.ts +++ b/src/commands/searchPlayers.ts @@ -12,7 +12,6 @@ import { AccountList } from '../types/accountList'; export const searchPlayersCommand: CommandRegistry = { inProduction: true, - inDevelopment: true, inPublic: true, command: new SlashCommandBuilder() diff --git a/src/commands/searchTanks.ts b/src/commands/searchTanks.ts index 20e5ff5c5..441443b92 100644 --- a/src/commands/searchTanks.ts +++ b/src/commands/searchTanks.ts @@ -8,7 +8,6 @@ import { CommandRegistry } from '../events/interactionCreate'; export const searchTanksCommand: CommandRegistry = { inProduction: true, - inDevelopment: true, inPublic: true, command: new SlashCommandBuilder() diff --git a/src/commands/stats.tsx b/src/commands/stats.tsx index 6913b08dd..f20a5da70 100644 --- a/src/commands/stats.tsx +++ b/src/commands/stats.tsx @@ -27,7 +27,6 @@ export const statsCommand = new Promise(async (resolve) => { resolve({ inProduction: true, - inDevelopment: true, inPublic: true, command, diff --git a/src/commands/today.tsx b/src/commands/today.tsx index 12cf88dd1..6c4960e9b 100644 --- a/src/commands/today.tsx +++ b/src/commands/today.tsx @@ -15,7 +15,6 @@ import { AccountInfo } from '../types/accountInfo'; export const todayCommand: CommandRegistry = { inProduction: true, - inDevelopment: true, inPublic: true, command: new SlashCommandBuilder() diff --git a/src/commands/verify.ts b/src/commands/verify.ts index c6682c1cf..560afb22a 100644 --- a/src/commands/verify.ts +++ b/src/commands/verify.ts @@ -14,7 +14,6 @@ import { PlayerClanData } from '../types/playerClanData'; export const verifyCommand: CommandRegistry = { inProduction: true, - inDevelopment: true, inPublic: true, command: new SlashCommandBuilder() diff --git a/src/events/interactionCreate/index.ts b/src/events/interactionCreate/index.ts index 6664952cc..d068efca2 100644 --- a/src/events/interactionCreate/index.ts +++ b/src/events/interactionCreate/index.ts @@ -50,7 +50,6 @@ export type InteractionReturnable = | Promise; export interface Registry { - inDevelopment: boolean; inProduction: boolean; } @@ -122,14 +121,12 @@ export const publicCommands: RESTPostAPIChatInputApplicationCommandsJSONBody[] = commands.then((awaitedCommands) => { Object.entries(awaitedCommands).forEach(([, registry]) => { - if (isDev() ? registry.inDevelopment : registry.inProduction) { - const json = registry.command.toJSON(); + const json = registry.command.toJSON(); - if (registry.inPublic) { - publicCommands.push(json); - } else { - guildCommands.push(json); - } + if (registry.inPublic) { + publicCommands.push(json); + } else { + guildCommands.push(json); } }); diff --git a/src/routes/stats.tsx b/src/routes/stats.tsx index a096d4181..8c04f2eec 100644 --- a/src/routes/stats.tsx +++ b/src/routes/stats.tsx @@ -6,7 +6,6 @@ import { RouteRegistry } from '../server'; export const statsRoute: RouteRegistry = { route: '/stats/:type/:period', inProduction: true, - inDevelopment: true, async handler(req) { const type = req.params.type as StatType; diff --git a/src/routes/today.tsx b/src/routes/today.tsx index bb66e12d7..f070df620 100644 --- a/src/routes/today.tsx +++ b/src/routes/today.tsx @@ -5,7 +5,6 @@ import { RouteRegistry } from '../server'; export const todayRoute: RouteRegistry = { route: '/today', inProduction: true, - inDevelopment: true, async handler(req) { const player = resolvePlayerFromRequest(req); diff --git a/src/server.ts b/src/server.ts index 1d249786f..6fdc3df6f 100644 --- a/src/server.ts +++ b/src/server.ts @@ -1,7 +1,6 @@ import express, { Request, Response } from 'express'; import normalizeRouteReturnable from './core/express/normalizeRouteReturnable'; import withAutoRefresh from './core/express/withAutoRefresh'; -import isDev from './core/node/isDev'; import { Registry } from './events/interactionCreate'; import { statsRoute } from './routes/stats'; import { todayRoute } from './routes/today'; @@ -22,8 +21,6 @@ export interface RouteRegistry const app = express(); ([statsRoute, todayRoute] as RouteRegistry[]).forEach((registry) => { - if (!(isDev() ? registry.inDevelopment : registry.inProduction)) return; - app.get(registry.route, async (req, res) => { console.log(req.originalUrl); From d0f91df95b1541c86670c3de30c6bdc8b02f408e Mon Sep 17 00:00:00 2001 From: tresabhi Date: Mon, 4 Sep 2023 16:49:38 +0000 Subject: [PATCH 2/3] feat: split bot and server builds --- package.json | 3 +- scripts/build.js | 78 ++++++++++++++++-------------------------------- 2 files changed, 27 insertions(+), 54 deletions(-) diff --git a/package.json b/package.json index 41e635bac..c2ff2ca79 100644 --- a/package.json +++ b/package.json @@ -5,11 +5,12 @@ "main": "src/server.ts", "type": "module", "scripts": { + "build": "node scripts/build", "build:bot": "node scripts/build --build=bot", "build:server": "node scripts/build --build=server", + "build:website": "", "build:docs": "vitepress build docs", "build:ratingsleaderboard": "vite-node --script scripts/buildRatingsLeaderboard", - "build": "node scripts/build --build=all", "dev:bot": "yarn build:bot --dev && yarn start:bot", "dev:server": "yarn build:server --dev && yarn start:server", "dev:docs": "vitepress dev docs", diff --git a/scripts/build.js b/scripts/build.js index eae8ca6f5..d334ec3a6 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -1,63 +1,35 @@ import { build } from 'esbuild'; -import { copyFile, mkdirSync, rmSync } from 'fs'; import { argv } from 'process'; -const isProd = !argv.includes('--dev'); -const buildAll = argv.includes('--build=all'); -const buildBot = argv.includes('--build=bot') || buildAll; -const buildServer = argv.includes('--build=server') || buildAll; +const targetFile = argv + .find((arg) => arg.startsWith('--build=')) + ?.split('=')[1]; +const files = targetFile ? [targetFile] : ['bot', 'server']; -if (isProd) { - // only remove in production to ensure no time is wasted in dev - console.log('Removing dist...'); - rmSync('dist', { recursive: true, force: true }); - console.log('Dist removed'); +// copyFile('package.dist.json', 'dist/package.json', () => +// console.log('package.json copied'), +// ); - console.log('Creating dist...'); - mkdirSync('dist'); - console.log('Dist created'); +files.forEach(async (file) => { + console.log(`Building ${file}...`); - console.log('Copying package.json...'); - copyFile('package.dist.json', 'dist/package.json', () => - console.log('package.json copied'), - ); -} + await build({ + entryPoints: [`src/${file}.ts`], + outfile: `dist/${file}/index.cjs`, -const commonOptions = { - platform: 'node', - loader: { - '.node': 'copy', - '.ttf': 'file', - }, - format: 'cjs', + platform: 'node', + loader: { + '.node': 'copy', + '.ttf': 'file', + }, + format: 'cjs', - bundle: true, - sourcemap: true, - minifyIdentifiers: false, // causes errors - minifySyntax: isProd, - minifyWhitespace: isProd, + bundle: true, + sourcemap: true, + minify: true, - logLevel: isProd ? 'info' : 'silent', -}; - -if (buildBot) { - console.log('Building bot...'); - build({ - ...commonOptions, - - entryPoints: ['src/bot.ts'], - outfile: 'dist/bot.cjs', - }).then(() => console.log('Bot built')); -} - -if (buildServer) { - console.log('Building server...'); - build({ - ...commonOptions, - - entryPoints: ['src/server.ts'], - outfile: 'dist/server.cjs', - }).then(() => { - console.log('Server built'); + logLevel: 'info', }); -} + + console.log(`Built ${file}`); +}); From ee44b1b1d85a03fbf6e242332f290bdc83a9b48a Mon Sep 17 00:00:00 2001 From: tresabhi Date: Thu, 7 Sep 2023 01:13:03 +0000 Subject: [PATCH 3/3] feat: next js --- .gitignore | 4 +- next-env.d.ts | 5 + next.config.js | 7 ++ package.json | 17 ++-- scripts/buildRatingsLeaderboard.ts | 13 ++- src/app/layout.tsx | 31 ++++++ src/app/page.tsx | 3 + src/components/Navbar.tsx | 5 + tsconfig.json | 24 ++++- yarn.lock | 153 ++++++++++++++++++++++++++++- 10 files changed, 247 insertions(+), 15 deletions(-) create mode 100644 next-env.d.ts create mode 100644 next.config.js create mode 100644 src/app/layout.tsx create mode 100644 src/app/page.tsx create mode 100644 src/components/Navbar.tsx diff --git a/.gitignore b/.gitignore index c0550b4f9..bcad84bac 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,8 @@ dist.* yarn-error.log commands.txt /test.* +test.* /docs/.vitepress/dist /docs/.vitepress/cache -servers.csv \ No newline at end of file +servers.csv +.next/ \ No newline at end of file diff --git a/next-env.d.ts b/next-env.d.ts new file mode 100644 index 000000000..4f11a03dc --- /dev/null +++ b/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/next.config.js b/next.config.js new file mode 100644 index 000000000..32d0d29a9 --- /dev/null +++ b/next.config.js @@ -0,0 +1,7 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + /* config options here */ + distDir: 'dist/website', +}; + +export default nextConfig; diff --git a/package.json b/package.json index c2ff2ca79..7e3054a9b 100644 --- a/package.json +++ b/package.json @@ -5,21 +5,24 @@ "main": "src/server.ts", "type": "module", "scripts": { - "build": "node scripts/build", + "build": "node scripts/build && yarn build:website", "build:bot": "node scripts/build --build=bot", "build:server": "node scripts/build --build=server", - "build:website": "", + "build:website": "next build", "build:docs": "vitepress build docs", "build:ratingsleaderboard": "vite-node --script scripts/buildRatingsLeaderboard", - "dev:bot": "yarn build:bot --dev && yarn start:bot", - "dev:server": "yarn build:server --dev && yarn start:server", + "dev:bot": "yarn build:bot && yarn start:bot", + "dev:server": "yarn build:server && yarn start:server", "dev:docs": "vitepress dev docs", - "start:bot": "node --enable-source-maps --trace-warnings dist/bot.cjs", - "start:server": "node --enable-source-maps --trace-warnings dist/server.cjs", + "dev:website": "next dev", + "start:bot": "node --enable-source-maps --trace-warnings dist/bot/index.cjs", + "start:server": "node --enable-source-maps --trace-warnings dist/server/index.cjs", + "start:website": "next start", "host:docs": "vitepress preview docs", "publish:ratingsleaderboard": "vite-node --script scripts/buildRatingsLeaderboard --publish", "zip": "zip -r dist.zip dist", "lint": "npx tsc", + "lint:website": "next lint", "format": "prettier --write \"**/*.@(json|js|jsx|css|md|ts|tsx|html|xml|yml|gltf)\"", "knip": "knip", "update": "yarn upgrade --latest" @@ -36,7 +39,9 @@ "fuzzysort": "^2.0.4", "lodash": "^4.17.21", "markdown-escape": "^2.0.0", + "next": "^13.4.19", "react": "^18.2.0", + "react-dom": "^18.2.0", "satori": "^0.10.3", "vite-node": "^0.34.2", "vitepress-plugin-auto-sidebar": "^1.1.0" diff --git a/scripts/buildRatingsLeaderboard.ts b/scripts/buildRatingsLeaderboard.ts index 3e8ee6c26..72e850404 100644 --- a/scripts/buildRatingsLeaderboard.ts +++ b/scripts/buildRatingsLeaderboard.ts @@ -31,7 +31,11 @@ const PLAYERS = await fetch( `https://${server}.wotblitz.com/en/api/rating-leaderboards/season/`, ) .then((response) => response.json() as Promise) - .then((data) => data.count); + .then((data) => (data.detail === undefined ? data.count : undefined)); + +if (PLAYERS === undefined) { + throw new Error('No current ratings season running'); +} const players: Record = {}; const leaderboard: BlitzkriegRatingsLeaderboard = []; @@ -60,7 +64,7 @@ async function branchFromPlayer(id: number) { console.log( `Registered ${registered} / ${PLAYERS} (${( - (registered / PLAYERS) * + (registered / PLAYERS!) * 100 ).toFixed(2)}%)`, ); @@ -109,7 +113,10 @@ if (publish) { const info = await fetch( `https://${server}.wotblitz.com/en/api/rating-leaderboards/season/`, - ).then((response) => response.json() as Promise); + ).then( + (response) => + response.json() as Promise, + ); const normalizedServer = server === 'na' ? 'com' : server; const infoPath = `${normalizedServer}/ratings/${info.current_season}/info.json`; diff --git a/src/app/layout.tsx b/src/app/layout.tsx new file mode 100644 index 000000000..b39a82a2a --- /dev/null +++ b/src/app/layout.tsx @@ -0,0 +1,31 @@ +import { ReactNode } from 'react'; +import Navbar from '../components/Navbar'; + +interface RootLayoutProps { + children: ReactNode; +} + +export default function RootLayout({ children }: RootLayoutProps) { + return ( + + +
+ + + {children} +
+ + + ); +} diff --git a/src/app/page.tsx b/src/app/page.tsx new file mode 100644 index 000000000..e85d5092c --- /dev/null +++ b/src/app/page.tsx @@ -0,0 +1,3 @@ +export default function Page() { + return

Hello, Next.js!

; +} diff --git a/src/components/Navbar.tsx b/src/components/Navbar.tsx new file mode 100644 index 000000000..ba2fdc2d6 --- /dev/null +++ b/src/components/Navbar.tsx @@ -0,0 +1,5 @@ +export default function Navbar() { + return ( +
+ ); +} diff --git a/tsconfig.json b/tsconfig.json index 65c75994f..5bff02fd7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,7 +9,27 @@ "skipLibCheck": true, "noEmit": true, "resolveJsonModule": true, - "jsx": "react-jsx" + "jsx": "preserve", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "incremental": true, + "isolatedModules": true, + "plugins": [ + { + "name": "next" + } + ] }, - "include": ["src/**/*.ts", "src/components/Tanks/components/Row.tsx"] + "include": [ + "src/**/*", + ".next/types/**/*.ts", + "dist/website/types/**/*.ts" + ], + "exclude": [ + "node_modules" + ] } diff --git a/yarn.lock b/yarn.lock index 141aabb54..71bafde00 100644 --- a/yarn.lock +++ b/yarn.lock @@ -458,6 +458,56 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== +"@next/env@13.4.19": + version "13.4.19" + resolved "https://registry.yarnpkg.com/@next/env/-/env-13.4.19.tgz#46905b4e6f62da825b040343cbc233144e9578d3" + integrity sha512-FsAT5x0jF2kkhNkKkukhsyYOrRqtSxrEhfliniIq0bwWbuXLgyt3Gv0Ml+b91XwjwArmuP7NxCiGd++GGKdNMQ== + +"@next/swc-darwin-arm64@13.4.19": + version "13.4.19" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.19.tgz#77ad462b5ced4efdc26cb5a0053968d2c7dac1b6" + integrity sha512-vv1qrjXeGbuF2mOkhkdxMDtv9np7W4mcBtaDnHU+yJG+bBwa6rYsYSCI/9Xm5+TuF5SbZbrWO6G1NfTh1TMjvQ== + +"@next/swc-darwin-x64@13.4.19": + version "13.4.19" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.19.tgz#aebe38713a4ce536ee5f2a291673e14b715e633a" + integrity sha512-jyzO6wwYhx6F+7gD8ddZfuqO4TtpJdw3wyOduR4fxTUCm3aLw7YmHGYNjS0xRSYGAkLpBkH1E0RcelyId6lNsw== + +"@next/swc-linux-arm64-gnu@13.4.19": + version "13.4.19" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.19.tgz#ec54db65b587939c7b94f9a84800f003a380f5a6" + integrity sha512-vdlnIlaAEh6H+G6HrKZB9c2zJKnpPVKnA6LBwjwT2BTjxI7e0Hx30+FoWCgi50e+YO49p6oPOtesP9mXDRiiUg== + +"@next/swc-linux-arm64-musl@13.4.19": + version "13.4.19" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.19.tgz#1f5e2c1ea6941e7d530d9f185d5d64be04279d86" + integrity sha512-aU0HkH2XPgxqrbNRBFb3si9Ahu/CpaR5RPmN2s9GiM9qJCiBBlZtRTiEca+DC+xRPyCThTtWYgxjWHgU7ZkyvA== + +"@next/swc-linux-x64-gnu@13.4.19": + version "13.4.19" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.19.tgz#96b0882492a2f7ffcce747846d3680730f69f4d1" + integrity sha512-htwOEagMa/CXNykFFeAHHvMJeqZfNQEoQvHfsA4wgg5QqGNqD5soeCer4oGlCol6NGUxknrQO6VEustcv+Md+g== + +"@next/swc-linux-x64-musl@13.4.19": + version "13.4.19" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.19.tgz#f276b618afa321d2f7b17c81fc83f429fb0fd9d8" + integrity sha512-4Gj4vvtbK1JH8ApWTT214b3GwUh9EKKQjY41hH/t+u55Knxi/0wesMzwQRhppK6Ddalhu0TEttbiJ+wRcoEj5Q== + +"@next/swc-win32-arm64-msvc@13.4.19": + version "13.4.19" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.19.tgz#1599ae0d401da5ffca0947823dac577697cce577" + integrity sha512-bUfDevQK4NsIAHXs3/JNgnvEY+LRyneDN788W2NYiRIIzmILjba7LaQTfihuFawZDhRtkYCv3JDC3B4TwnmRJw== + +"@next/swc-win32-ia32-msvc@13.4.19": + version "13.4.19" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.19.tgz#55cdd7da90818f03e4da16d976f0cb22045d16fd" + integrity sha512-Y5kikILFAr81LYIFaw6j/NrOtmiM4Sf3GtOc0pn50ez2GCkr+oejYuKGcwAwq3jiTKuzF6OF4iT2INPoxRycEA== + +"@next/swc-win32-x64-msvc@13.4.19": + version "13.4.19" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.19.tgz#648f79c4e09279212ac90d871646ae12d80cdfce" + integrity sha512-YzA78jBDXMYiINdPdJJwGgPNT3YqBNNGhsthsDoWHL9p24tEJn9ViQf/ZqTbwSpX/RrkPupLfuuTH2sf73JBAw== + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -714,6 +764,13 @@ ignore "^5.1.8" p-map "^4.0.0" +"@swc/helpers@0.5.1": + version "0.5.1" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.1.tgz#e9031491aa3f26bfcc974a67f48bd456c8a5357a" + integrity sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg== + dependencies: + tslib "^2.4.0" + "@total-typescript/ts-reset@^0.5.1": version "0.5.1" resolved "https://registry.yarnpkg.com/@total-typescript/ts-reset/-/ts-reset-0.5.1.tgz#93b0535d00faa588518bcfb0db30182e63e4f7af" @@ -1158,7 +1215,7 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -busboy@^1.6.0: +busboy@1.6.0, busboy@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== @@ -1188,6 +1245,11 @@ camelize@^1.0.0: resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== +caniuse-lite@^1.0.30001406: + version "1.0.30001525" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001525.tgz#d2e8fdec6116ffa36284ca2c33ef6d53612fe1c8" + integrity sha512-/3z+wB4icFt3r0USMwxujAqRvaD/B7rvGTsKhbhSQErVrJvkZCLhgNLJxU8MevahQVH6hCU9FsHdNUFbiwmE7Q== + chalk@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" @@ -1203,6 +1265,11 @@ clean-stack@^2.0.0: resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== +client-only@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" + integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== + clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" @@ -1695,6 +1762,11 @@ glob-parent@^5.1.2: dependencies: is-glob "^4.0.1" +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + glob@^10.2.2: version "10.3.3" resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.3.tgz#8360a4ffdd6ed90df84aa8d52f21f452e86a123b" @@ -1717,6 +1789,11 @@ globby@^13.1.3: merge2 "^1.4.1" slash "^4.0.0" +graceful-fs@^4.1.2: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + has-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" @@ -2067,7 +2144,7 @@ nan@^2.14.0, nan@^2.17.0: resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== -nanoid@^3.3.6: +nanoid@^3.3.4, nanoid@^3.3.6: version "3.3.6" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== @@ -2082,6 +2159,30 @@ negotiator@0.6.3: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== +next@^13.4.19: + version "13.4.19" + resolved "https://registry.yarnpkg.com/next/-/next-13.4.19.tgz#2326e02aeedee2c693d4f37b90e4f0ed6882b35f" + integrity sha512-HuPSzzAbJ1T4BD8e0bs6B9C1kWQ6gv8ykZoRWs5AQoiIuqbGHHdQO7Ljuvg05Q0Z24E2ABozHe6FxDvI6HfyAw== + dependencies: + "@next/env" "13.4.19" + "@swc/helpers" "0.5.1" + busboy "1.6.0" + caniuse-lite "^1.0.30001406" + postcss "8.4.14" + styled-jsx "5.1.1" + watchpack "2.4.0" + zod "3.21.4" + optionalDependencies: + "@next/swc-darwin-arm64" "13.4.19" + "@next/swc-darwin-x64" "13.4.19" + "@next/swc-linux-arm64-gnu" "13.4.19" + "@next/swc-linux-arm64-musl" "13.4.19" + "@next/swc-linux-x64-gnu" "13.4.19" + "@next/swc-linux-x64-musl" "13.4.19" + "@next/swc-win32-arm64-msvc" "13.4.19" + "@next/swc-win32-ia32-msvc" "13.4.19" + "@next/swc-win32-x64-msvc" "13.4.19" + node-abi@^2.7.0: version "2.30.1" resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.30.1.tgz#c437d4b1fe0e285aaf290d45b45d4d7afedac4cf" @@ -2227,6 +2328,15 @@ postcss-value-parser@^4.0.2, postcss-value-parser@^4.2.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== +postcss@8.4.14: + version "8.4.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" + integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + postcss@^8.1.10, postcss@^8.4.27: version "8.4.28" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.28.tgz#c6cc681ed00109072816e1557f889ef51cf950a5" @@ -2350,6 +2460,14 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" +react-dom@^18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.0" + react@^18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" @@ -2437,6 +2555,13 @@ satori@^0.10.3: postcss-value-parser "^4.2.0" yoga-wasm-web "^0.3.3" +scheduler@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" + integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== + dependencies: + loose-envify "^1.1.0" + semver@^5.4.1: version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" @@ -2573,6 +2698,7 @@ streamsearch@^1.1.0: integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== "string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0: + name string-width-cjs version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -2619,6 +2745,7 @@ string_decoder@~1.1.1: safe-buffer "~5.1.0" "strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: + name strip-ansi-cjs version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -2649,6 +2776,13 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== +styled-jsx@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.1.tgz#839a1c3aaacc4e735fed0781b8619ea5d0009d1f" + integrity sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw== + dependencies: + client-only "0.0.1" + summary@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/summary/-/summary-2.1.0.tgz#be8a49a0aa34eb6ceea56042cae88f8add4b0885" @@ -2718,7 +2852,7 @@ ts-mixer@^6.0.3: resolved "https://registry.yarnpkg.com/ts-mixer/-/ts-mixer-6.0.3.tgz#69bd50f406ff39daa369885b16c77a6194c7cae6" integrity sha512-k43M7uCG1AkTyxgnmI5MPwKoUvS/bRvLvUb7+Pgpdlmok8AoqmUaZxUUw8zKM5B1lqZrt41GjYgnvAi0fppqgQ== -tslib@^2.6.1: +tslib@^2.4.0, tslib@^2.6.1: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== @@ -2861,6 +2995,14 @@ vue@^3.3.4: "@vue/server-renderer" "3.3.4" "@vue/shared" "3.3.4" +watchpack@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" @@ -2930,6 +3072,11 @@ zod-validation-error@^1.5.0: resolved "https://registry.yarnpkg.com/zod-validation-error/-/zod-validation-error-1.5.0.tgz#2b355007a1c3b7fb04fa476bfad4e7b3fd5491e3" integrity sha512-/7eFkAI4qV0tcxMBB/3+d2c1P6jzzZYdYSlBuAklzMuCrJu5bzJfHS0yVAS87dRHVlhftd6RFJDIvv03JgkSbw== +zod@3.21.4: + version "3.21.4" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.21.4.tgz#10882231d992519f0a10b5dd58a38c9dabbb64db" + integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw== + zod@^3.22.2: version "3.22.2" resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.2.tgz#3add8c682b7077c05ac6f979fea6998b573e157b"