From bef580ff92eaab7be9d7a52d6ddc0b29299621f3 Mon Sep 17 00:00:00 2001 From: KM Koushik Date: Sun, 14 Dec 2025 20:29:53 +1100 Subject: [PATCH] use turbo in dev mode (#321) --- apps/marketing/package.json | 2 +- apps/web/next.config.js | 7 +- apps/web/package.json | 7 +- apps/web/tailwind.config.ts | 7 +- package.json | 5 + packages/ui/src/calendar.tsx | 40 +++--- pnpm-lock.yaml | 259 +++++++---------------------------- 7 files changed, 89 insertions(+), 238 deletions(-) diff --git a/apps/marketing/package.json b/apps/marketing/package.json index 64ce299..1f3a064 100644 --- a/apps/marketing/package.json +++ b/apps/marketing/package.json @@ -17,7 +17,7 @@ "@usesend/email-editor": "workspace:*", "@usesend/ui": "workspace:*", "iconoir-react": "^7.11.0", - "next": "15.3.7", + "next": "15.5.8", "react": "19.1.0", "react-dom": "19.1.0" }, diff --git a/apps/web/next.config.js b/apps/web/next.config.js index 721fa51..46fe310 100644 --- a/apps/web/next.config.js +++ b/apps/web/next.config.js @@ -7,11 +7,8 @@ await import("./src/env.js"); /** @type {import("next").NextConfig} */ const config = { output: process.env.DOCKER_OUTPUT ? "standalone" : undefined, - experimental: { - instrumentationHook: true, - serverComponentsExternalPackages: ["bullmq"], - esmExternals: "loose", - }, + serverExternalPackages: ["bullmq"], + transpilePackages: ["@usesend/ui", "@usesend/email-editor"], images: { remotePatterns: [ { diff --git a/apps/web/package.json b/apps/web/package.json index 89f5d3b..894a3d7 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -4,7 +4,7 @@ "private": true, "type": "module", "scripts": { - "dev": "next dev -p 3000", + "dev": "next dev -p 3000 --turbopack", "build": "next build", "start": "next start", "lint": "eslint . --max-warnings 0", @@ -52,7 +52,7 @@ "lucide-react": "^0.503.0", "mime-types": "^3.0.1", "nanoid": "^5.1.5", - "next": "15.3.7", + "next": "15.5.8", "next-auth": "^4.24.11", "nodemailer": "^7.0.3", "pino": "^9.7.0", @@ -65,12 +65,13 @@ "react-hook-form": "^7.56.1", "recharts": "^2.15.3", "server-only": "^0.0.1", + "shiki": "^3.3.0", "stripe": "^18.0.0", "superjson": "^2.2.2", "tldts": "^7.0.4", "ua-parser-js": "^2.0.3", - "usesend-js": "workspace:*", "use-debounce": "^10.0.4", + "usesend-js": "workspace:*", "zod": "^3.24.3", "zustand": "^5.0.8" }, diff --git a/apps/web/tailwind.config.ts b/apps/web/tailwind.config.ts index b9725fa..4e1841b 100644 --- a/apps/web/tailwind.config.ts +++ b/apps/web/tailwind.config.ts @@ -1,12 +1,15 @@ import { type Config } from "tailwindcss"; import sharedConfig from "@usesend/tailwind-config/tailwind.config"; import path from "path"; +import { fileURLToPath } from "url"; + +const here = path.dirname(fileURLToPath(import.meta.url)); export default { ...sharedConfig, content: [ "./src/**/*.tsx", - `${path.join(require.resolve("@usesend/ui"), "..")}/**/*.{ts,tsx}`, - `${path.join(require.resolve("@usesend/email-editor"), "..")}/**/*.{ts,tsx}`, + path.join(here, "../../packages/ui/src/**/*.{ts,tsx}"), + path.join(here, "../../packages/email-editor/src/**/*.{ts,tsx}"), ], } satisfies Config; diff --git a/package.json b/package.json index 2f98975..092f97a 100644 --- a/package.json +++ b/package.json @@ -40,5 +40,10 @@ }, "dependencies": { "turbo": "^2.5.2" + }, + "pnpm": { + "overrides": { + "shiki": "3.3.0" + } } } diff --git a/packages/ui/src/calendar.tsx b/packages/ui/src/calendar.tsx index 37599c1..66f65b6 100644 --- a/packages/ui/src/calendar.tsx +++ b/packages/ui/src/calendar.tsx @@ -29,10 +29,10 @@ function Calendar({ svg]:rotate-180`, String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`, - className + className, )} captionLayout={captionLayout} formatters={{ @@ -44,82 +44,82 @@ function Calendar({ root: cn("w-fit", defaultClassNames.root), months: cn( "flex gap-4 flex-col md:flex-row relative", - defaultClassNames.months + defaultClassNames.months, ), month: cn("flex flex-col w-full gap-4", defaultClassNames.month), nav: cn( "flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between", - defaultClassNames.nav + defaultClassNames.nav, ), button_previous: cn( buttonVariants({ variant: buttonVariant }), "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none", - defaultClassNames.button_previous + defaultClassNames.button_previous, ), button_next: cn( buttonVariants({ variant: buttonVariant }), "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none", - defaultClassNames.button_next + defaultClassNames.button_next, ), month_caption: cn( "flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)", - defaultClassNames.month_caption + defaultClassNames.month_caption, ), dropdowns: cn( "w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5", - defaultClassNames.dropdowns + defaultClassNames.dropdowns, ), dropdown_root: cn( "relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md", - defaultClassNames.dropdown_root + defaultClassNames.dropdown_root, ), dropdown: cn( "absolute bg-popover inset-0 opacity-0", - defaultClassNames.dropdown + defaultClassNames.dropdown, ), caption_label: cn( "select-none font-medium", captionLayout === "label" ? "text-sm" : "rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5", - defaultClassNames.caption_label + defaultClassNames.caption_label, ), table: "w-full border-collapse", weekdays: cn("flex", defaultClassNames.weekdays), weekday: cn( "text-muted-foreground rounded-md flex-1 font-normal text-[0.8rem] select-none", - defaultClassNames.weekday + defaultClassNames.weekday, ), week: cn("flex w-full mt-2", defaultClassNames.week), week_number_header: cn( "select-none w-(--cell-size)", - defaultClassNames.week_number_header + defaultClassNames.week_number_header, ), week_number: cn( "text-[0.8rem] select-none text-muted-foreground", - defaultClassNames.week_number + defaultClassNames.week_number, ), day: cn( "relative w-full h-full p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none", - defaultClassNames.day + defaultClassNames.day, ), range_start: cn( "rounded-l-md bg-accent", - defaultClassNames.range_start + defaultClassNames.range_start, ), range_middle: cn("rounded-none", defaultClassNames.range_middle), range_end: cn("rounded-r-md bg-accent", defaultClassNames.range_end), today: cn( "bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none", - defaultClassNames.today + defaultClassNames.today, ), outside: cn( "text-muted-foreground aria-selected:text-muted-foreground", - defaultClassNames.outside + defaultClassNames.outside, ), disabled: cn( "text-muted-foreground opacity-50", - defaultClassNames.disabled + defaultClassNames.disabled, ), hidden: cn("invisible", defaultClassNames.hidden), ...classNames, @@ -203,7 +203,7 @@ function CalendarDayButton({ className={cn( "data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70", defaultClassNames.day, - className + className, )} {...props} /> diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d94fdde..91e7d57 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,9 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + shiki: 3.3.0 + importers: .: @@ -52,8 +55,8 @@ importers: specifier: ^7.11.0 version: 7.11.0(react@19.1.0) next: - specifier: 15.3.7 - version: 15.3.7(@babel/core@7.26.10)(react-dom@19.1.0)(react@19.1.0) + specifier: 15.5.8 + version: 15.5.8(@babel/core@7.26.10)(react-dom@19.1.0)(react@19.1.0) react: specifier: 19.1.0 version: 19.1.0 @@ -193,7 +196,7 @@ importers: version: 11.1.1(@trpc/server@11.1.1)(typescript@5.8.3) '@trpc/next': specifier: ^11.1.1 - version: 11.1.1(@tanstack/react-query@5.74.4)(@trpc/client@11.1.1)(@trpc/react-query@11.1.1)(@trpc/server@11.1.1)(next@15.3.7)(react-dom@19.1.0)(react@19.1.0)(typescript@5.8.3) + version: 11.1.1(@tanstack/react-query@5.74.4)(@trpc/client@11.1.1)(@trpc/react-query@11.1.1)(@trpc/server@11.1.1)(next@15.5.8)(react-dom@19.1.0)(react@19.1.0)(typescript@5.8.3) '@trpc/react-query': specifier: ^11.1.1 version: 11.1.1(@tanstack/react-query@5.74.4)(@trpc/client@11.1.1)(@trpc/server@11.1.1)(react-dom@19.1.0)(react@19.1.0)(typescript@5.8.3) @@ -243,11 +246,11 @@ importers: specifier: ^5.1.5 version: 5.1.5 next: - specifier: 15.3.7 - version: 15.3.7(@babel/core@7.26.10)(react-dom@19.1.0)(react@19.1.0) + specifier: 15.5.8 + version: 15.5.8(@babel/core@7.26.10)(react-dom@19.1.0)(react@19.1.0) next-auth: specifier: ^4.24.11 - version: 4.24.11(next@15.3.7)(nodemailer@7.0.3)(react-dom@19.1.0)(react@19.1.0) + version: 4.24.11(next@15.5.8)(nodemailer@7.0.3)(react-dom@19.1.0)(react@19.1.0) nodemailer: specifier: ^7.0.3 version: 7.0.3 @@ -281,6 +284,9 @@ importers: server-only: specifier: ^0.0.1 version: 0.0.1 + shiki: + specifier: 3.3.0 + version: 3.3.0 stripe: specifier: ^18.0.0 version: 18.0.0 @@ -436,7 +442,7 @@ importers: specifier: ^5.6.1 version: 5.6.1(react-dom@19.1.0)(react@19.1.0) shiki: - specifier: ^3.3.0 + specifier: 3.3.0 version: 3.3.0 tippy.js: specifier: ^6.3.7 @@ -651,7 +657,7 @@ importers: specifier: ^2.15.3 version: 2.15.3(react-dom@19.1.0)(react@19.1.0) shiki: - specifier: ^3.3.0 + specifier: 3.3.0 version: 3.3.0 sonner: specifier: ^2.0.3 @@ -3973,7 +3979,7 @@ packages: remark-gfm: 4.0.1 remark-math: 6.0.0 remark-smartypants: 3.0.2 - shiki: 3.13.0 + shiki: 3.3.0 unified: 11.0.5 unist-util-visit: 5.0.0 transitivePeerDependencies: @@ -4198,8 +4204,8 @@ packages: dev: true optional: true - /@next/env@15.3.7: - resolution: {integrity: sha512-1fzTVgpRoCwd0zo0/Xs5dt0vM4Ir7/uoeC3FjmuluNALQlllIPQ1zCOL6GMV8QTwK92e9htZTwqaRedzudD7Bg==} + /@next/env@15.5.8: + resolution: {integrity: sha512-ejZHa3ogTxcy851dFoNtfB5B2h7AbSAtHbR5CymUlnz4yW1QjHNufVpvTu8PTnWBKFKjrd4k6Gbi2SsCiJKvxw==} dev: false /@next/eslint-plugin-next@15.3.1: @@ -4224,8 +4230,8 @@ packages: source-map: 0.7.4 dev: false - /@next/swc-darwin-arm64@15.3.5: - resolution: {integrity: sha512-lM/8tilIsqBq+2nq9kbTW19vfwFve0NR7MxfkuSUbRSgXlMQoJYg+31+++XwKVSXk4uT23G2eF/7BRIKdn8t8w==} + /@next/swc-darwin-arm64@15.5.7: + resolution: {integrity: sha512-IZwtxCEpI91HVU/rAUOOobWSZv4P2DeTtNaCdHqLcTJU4wdNXgAySvKa/qJCgR5m6KI8UsKDXtO2B31jcaw1Yw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -4233,8 +4239,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@15.3.5: - resolution: {integrity: sha512-WhwegPQJ5IfoUNZUVsI9TRAlKpjGVK0tpJTL6KeiC4cux9774NYE9Wu/iCfIkL/5J8rPAkqZpG7n+EfiAfidXA==} + /@next/swc-darwin-x64@15.5.7: + resolution: {integrity: sha512-UP6CaDBcqaCBuiq/gfCEJw7sPEoX1aIjZHnBWN9v9qYHQdMKvCKcAVs4OX1vIjeE+tC5EIuwDTVIoXpUes29lg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -4242,8 +4248,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@15.3.5: - resolution: {integrity: sha512-LVD6uMOZ7XePg3KWYdGuzuvVboxujGjbcuP2jsPAN3MnLdLoZUXKRc6ixxfs03RH7qBdEHCZjyLP/jBdCJVRJQ==} + /@next/swc-linux-arm64-gnu@15.5.7: + resolution: {integrity: sha512-NCslw3GrNIw7OgmRBxHtdWFQYhexoUCq+0oS2ccjyYLtcn1SzGzeM54jpTFonIMUjNbHmpKpziXnpxhSWLcmBA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -4251,8 +4257,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@15.3.5: - resolution: {integrity: sha512-k8aVScYZ++BnS2P69ClK7v4nOu702jcF9AIHKu6llhHEtBSmM2zkPGl9yoqbSU/657IIIb0QHpdxEr0iW9z53A==} + /@next/swc-linux-arm64-musl@15.5.7: + resolution: {integrity: sha512-nfymt+SE5cvtTrG9u1wdoxBr9bVB7mtKTcj0ltRn6gkP/2Nu1zM5ei8rwP9qKQP0Y//umK+TtkKgNtfboBxRrw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -4260,8 +4266,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@15.3.5: - resolution: {integrity: sha512-2xYU0DI9DGN/bAHzVwADid22ba5d/xrbrQlr2U+/Q5WkFUzeL0TDR963BdrtLS/4bMmKZGptLeg6282H/S2i8A==} + /@next/swc-linux-x64-gnu@15.5.7: + resolution: {integrity: sha512-hvXcZvCaaEbCZcVzcY7E1uXN9xWZfFvkNHwbe/n4OkRhFWrs1J1QV+4U1BN06tXLdaS4DazEGXwgqnu/VMcmqw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -4269,8 +4275,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@15.3.5: - resolution: {integrity: sha512-TRYIqAGf1KCbuAB0gjhdn5Ytd8fV+wJSM2Nh2is/xEqR8PZHxfQuaiNhoF50XfY90sNpaRMaGhF6E+qjV1b9Tg==} + /@next/swc-linux-x64-musl@15.5.7: + resolution: {integrity: sha512-4IUO539b8FmF0odY6/SqANJdgwn1xs1GkPO5doZugwZ3ETF6JUdckk7RGmsfSf7ws8Qb2YB5It33mvNL/0acqA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -4278,8 +4284,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@15.3.5: - resolution: {integrity: sha512-h04/7iMEUSMY6fDGCvdanKqlO1qYvzNxntZlCzfE8i5P0uqzVQWQquU1TIhlz0VqGQGXLrFDuTJVONpqGqjGKQ==} + /@next/swc-win32-arm64-msvc@15.5.7: + resolution: {integrity: sha512-CpJVTkYI3ZajQkC5vajM7/ApKJUOlm6uP4BknM3XKvJ7VXAvCqSjSLmM0LKdYzn6nBJVSjdclx8nYJSa3xlTgQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -4287,8 +4293,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@15.3.5: - resolution: {integrity: sha512-5fhH6fccXxnX2KhllnGhkYMndhOiLOLEiVGYjP2nizqeGWkN10sA9taATlXwake2E2XMvYZjjz0Uj7T0y+z1yw==} + /@next/swc-win32-x64-msvc@15.5.7: + resolution: {integrity: sha512-gMzgBX164I6DN+9/PGA+9dQiwmTkE4TloBNx8Kv9UiGARsr9Nba7IpcBRA1iTV9vwlYnrE3Uy6I7Aj6qLjQuqw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -6509,17 +6515,6 @@ packages: selderee: 0.11.0 dev: false - /@shikijs/core@1.29.2: - resolution: {integrity: sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==} - dependencies: - '@shikijs/engine-javascript': 1.29.2 - '@shikijs/engine-oniguruma': 1.29.2 - '@shikijs/types': 1.29.2 - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 - hast-util-to-html: 9.0.5 - dev: false - /@shikijs/core@3.13.0: resolution: {integrity: sha512-3P8rGsg2Eh2qIHekwuQjzWhKI4jV97PhvYjYUzGqjvJfqdQPz+nMlfWahU24GZAyW1FxFI1sYjyhfh5CoLmIUA==} dependencies: @@ -6536,88 +6531,29 @@ packages: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - dev: false - - /@shikijs/engine-javascript@1.29.2: - resolution: {integrity: sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==} - dependencies: - '@shikijs/types': 1.29.2 - '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 2.3.0 - dev: false - - /@shikijs/engine-javascript@3.13.0: - resolution: {integrity: sha512-Ty7xv32XCp8u0eQt8rItpMs6rU9Ki6LJ1dQOW3V/56PKDcpvfHPnYFbsx5FFUP2Yim34m/UkazidamMNVR4vKg==} - dependencies: - '@shikijs/types': 3.13.0 - '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 4.3.3 - dev: true /@shikijs/engine-javascript@3.3.0: resolution: {integrity: sha512-XlhnFGv0glq7pfsoN0KyBCz9FJU678LZdQ2LqlIdAj6JKsg5xpYKay3DkazXWExp3DTJJK9rMOuGzU2911pg7Q==} dependencies: '@shikijs/types': 3.3.0 '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 4.3.1 - dev: false - - /@shikijs/engine-oniguruma@1.29.2: - resolution: {integrity: sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==} - dependencies: - '@shikijs/types': 1.29.2 - '@shikijs/vscode-textmate': 10.0.2 - dev: false - - /@shikijs/engine-oniguruma@3.13.0: - resolution: {integrity: sha512-O42rBGr4UDSlhT2ZFMxqM7QzIU+IcpoTMzb3W7AlziI1ZF7R8eS2M0yt5Ry35nnnTX/LTLXFPUjRFCIW+Operg==} - dependencies: - '@shikijs/types': 3.13.0 - '@shikijs/vscode-textmate': 10.0.2 - dev: true + oniguruma-to-es: 4.3.3 /@shikijs/engine-oniguruma@3.3.0: resolution: {integrity: sha512-l0vIw+GxeNU7uGnsu6B+Crpeqf+WTQ2Va71cHb5ZYWEVEPdfYwY5kXwYqRJwHrxz9WH+pjSpXQz+TJgAsrkA5A==} dependencies: '@shikijs/types': 3.3.0 '@shikijs/vscode-textmate': 10.0.2 - dev: false - - /@shikijs/langs@1.29.2: - resolution: {integrity: sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==} - dependencies: - '@shikijs/types': 1.29.2 - dev: false - - /@shikijs/langs@3.13.0: - resolution: {integrity: sha512-672c3WAETDYHwrRP0yLy3W1QYB89Hbpj+pO4KhxK6FzIrDI2FoEXNiNCut6BQmEApYLfuYfpgOZaqbY+E9b8wQ==} - dependencies: - '@shikijs/types': 3.13.0 - dev: true /@shikijs/langs@3.3.0: resolution: {integrity: sha512-zt6Kf/7XpBQKSI9eqku+arLkAcDQ3NHJO6zFjiChI8w0Oz6Jjjay7pToottjQGjSDCFk++R85643WbyINcuL+g==} dependencies: '@shikijs/types': 3.3.0 - dev: false - - /@shikijs/themes@1.29.2: - resolution: {integrity: sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==} - dependencies: - '@shikijs/types': 1.29.2 - dev: false - - /@shikijs/themes@3.13.0: - resolution: {integrity: sha512-Vxw1Nm1/Od8jyA7QuAenaV78BG2nSr3/gCGdBkLpfLscddCkzkL36Q5b67SrLLfvAJTOUzW39x4FHVCFriPVgg==} - dependencies: - '@shikijs/types': 3.13.0 - dev: true /@shikijs/themes@3.3.0: resolution: {integrity: sha512-tXeCvLXBnqq34B0YZUEaAD1lD4lmN6TOHAhnHacj4Owh7Ptb/rf5XCDeROZt2rEOk5yuka3OOW2zLqClV7/SOg==} dependencies: '@shikijs/types': 3.3.0 - dev: false /@shikijs/transformers@3.13.0: resolution: {integrity: sha512-833lcuVzcRiG+fXvgslWsM2f4gHpjEgui1ipIknSizRuTgMkNZupiXE5/TVJ6eSYfhNBFhBZKkReKWO2GgYmqA==} @@ -6639,13 +6575,6 @@ packages: - supports-color dev: true - /@shikijs/types@1.29.2: - resolution: {integrity: sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==} - dependencies: - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 - dev: false - /@shikijs/types@3.13.0: resolution: {integrity: sha512-oM9P+NCFri/mmQ8LoFGVfVyemm5Hi27330zuOBp0annwJdKH1kOLndw3zCtAVDehPLg9fKqoEx3Ht/wNZxolfw==} dependencies: @@ -6658,7 +6587,6 @@ packages: dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 - dev: false /@shikijs/vscode-textmate@10.0.2: resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -7689,10 +7617,6 @@ packages: tslib: 2.8.1 dev: true - /@swc/counter@0.1.3: - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - dev: false - /@swc/helpers@0.5.15: resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} dependencies: @@ -8117,7 +8041,7 @@ packages: typescript: 5.8.3 dev: false - /@trpc/next@11.1.1(@tanstack/react-query@5.74.4)(@trpc/client@11.1.1)(@trpc/react-query@11.1.1)(@trpc/server@11.1.1)(next@15.3.7)(react-dom@19.1.0)(react@19.1.0)(typescript@5.8.3): + /@trpc/next@11.1.1(@tanstack/react-query@5.74.4)(@trpc/client@11.1.1)(@trpc/react-query@11.1.1)(@trpc/server@11.1.1)(next@15.5.8)(react-dom@19.1.0)(react@19.1.0)(typescript@5.8.3): resolution: {integrity: sha512-4uz4S+QtpVGPENm4Kp7HSvMW+nXocBvI+A+dkwVvM3R9MIU3lIQ35H1fQ1aN/O+PlR4LOs5FceCwC1LjWkScZQ==} peerDependencies: '@tanstack/react-query': ^5.59.15 @@ -8138,7 +8062,7 @@ packages: '@trpc/client': 11.1.1(@trpc/server@11.1.1)(typescript@5.8.3) '@trpc/react-query': 11.1.1(@tanstack/react-query@5.74.4)(@trpc/client@11.1.1)(@trpc/server@11.1.1)(react-dom@19.1.0)(react@19.1.0)(typescript@5.8.3) '@trpc/server': 11.1.1(typescript@5.8.3) - next: 15.3.7(@babel/core@7.26.10)(react-dom@19.1.0)(react@19.1.0) + next: 15.5.8(@babel/core@7.26.10)(react-dom@19.1.0)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) typescript: 5.8.3 @@ -9674,13 +9598,6 @@ packages: load-tsconfig: 0.2.5 dev: true - /busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} - dependencies: - streamsearch: 1.1.0 - dev: false - /bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -10641,10 +10558,6 @@ packages: react: 19.1.0 dev: false - /emoji-regex-xs@1.0.0: - resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} - dev: false - /emoji-regex@10.5.0: resolution: {integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==} dev: true @@ -13340,7 +13253,7 @@ packages: react-router-dom: 7.0.1(react-dom@19.1.0)(react@19.1.0) rehype: 13.0.2 rehype-stringify: 10.0.1 - shiki: 1.29.2 + shiki: 3.3.0 source-map-support: 0.5.21 std-env: 3.9.0 tailwindcss: 3.4.15 @@ -14470,7 +14383,7 @@ packages: engines: {node: '>= 0.4.0'} dev: true - /next-auth@4.24.11(next@15.3.7)(nodemailer@7.0.3)(react-dom@19.1.0)(react@19.1.0): + /next-auth@4.24.11(next@15.5.8)(nodemailer@7.0.3)(react-dom@19.1.0)(react@19.1.0): resolution: {integrity: sha512-pCFXzIDQX7xmHFs4KVH4luCjaCbuPRtZ9oBUjUhOk84mZ9WVPf94n87TxYI4rSRf9HmfHEF8Yep3JrYDVOo3Cw==} peerDependencies: '@auth/core': 0.34.2 @@ -14488,7 +14401,7 @@ packages: '@panva/hkdf': 1.2.1 cookie: 0.7.2 jose: 4.15.9 - next: 15.3.7(@babel/core@7.26.10)(react-dom@19.1.0)(react@19.1.0) + next: 15.5.8(@babel/core@7.26.10)(react-dom@19.1.0)(react@19.1.0) nodemailer: 7.0.3 oauth: 0.9.15 openid-client: 5.7.1 @@ -14531,13 +14444,14 @@ packages: react-dom: 19.1.0(react@19.1.0) dev: false - /next@15.3.7(@babel/core@7.26.10)(react-dom@19.1.0)(react@19.1.0): - resolution: {integrity: sha512-7dzkjUftt7PAtspscMY+n7dx6Gg+/si89AwwwEMiupSd5bozpQNEbkYczzcIVaYloohZUTsGImq96FGrh0rFUw==} + /next@15.5.8(@babel/core@7.26.10)(react-dom@19.1.0)(react@19.1.0): + resolution: {integrity: sha512-Tma2R50eiM7Fx6fbDeHiThq7sPgl06mBr76j6Ga0lMFGrmaLitFsy31kykgb8Z++DR2uIEKi2RZ0iyjIwFd15Q==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} + deprecated: This version has a security vulnerability. Please upgrade to a patched version. See https://nextjs.org/blog/security-update-2025-12-11 for more details. hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 - '@playwright/test': ^1.41.2 + '@playwright/test': ^1.51.1 babel-plugin-react-compiler: '*' react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 @@ -14552,24 +14466,22 @@ packages: sass: optional: true dependencies: - '@next/env': 15.3.7 - '@swc/counter': 0.1.3 + '@next/env': 15.5.8 '@swc/helpers': 0.5.15 - busboy: 1.6.0 caniuse-lite: 1.0.30001715 postcss: 8.4.31 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) styled-jsx: 5.1.6(@babel/core@7.26.10)(react@19.1.0) optionalDependencies: - '@next/swc-darwin-arm64': 15.3.5 - '@next/swc-darwin-x64': 15.3.5 - '@next/swc-linux-arm64-gnu': 15.3.5 - '@next/swc-linux-arm64-musl': 15.3.5 - '@next/swc-linux-x64-gnu': 15.3.5 - '@next/swc-linux-x64-musl': 15.3.5 - '@next/swc-win32-arm64-msvc': 15.3.5 - '@next/swc-win32-x64-msvc': 15.3.5 + '@next/swc-darwin-arm64': 15.5.7 + '@next/swc-darwin-x64': 15.5.7 + '@next/swc-linux-arm64-gnu': 15.5.7 + '@next/swc-linux-arm64-musl': 15.5.7 + '@next/swc-linux-x64-gnu': 15.5.7 + '@next/swc-linux-x64-musl': 15.5.7 + '@next/swc-win32-arm64-msvc': 15.5.7 + '@next/swc-win32-x64-msvc': 15.5.7 sharp: 0.34.4 transitivePeerDependencies: - '@babel/core' @@ -14804,29 +14716,8 @@ packages: mimic-fn: 2.1.0 dev: true - /oniguruma-parser@0.12.0: - resolution: {integrity: sha512-fD9o5ebCmEAA9dLysajdQvuKzLL7cj+w7DQjuO3Cb6IwafENfx6iL+RGkmyW82pVRsvgzixsWinHvgxTMJvdIA==} - dev: false - /oniguruma-parser@0.12.1: resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} - dev: true - - /oniguruma-to-es@2.3.0: - resolution: {integrity: sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==} - dependencies: - emoji-regex-xs: 1.0.0 - regex: 5.1.1 - regex-recursion: 5.1.1 - dev: false - - /oniguruma-to-es@4.3.1: - resolution: {integrity: sha512-VtX1kepWO+7HG7IWV5v72JhiqofK7XsiHmtgnvurnNOTdIvE5mrdWYtsOrQyrXCv1L2Ckm08hywp+MFO7rC4Ug==} - dependencies: - oniguruma-parser: 0.12.0 - regex: 6.0.1 - regex-recursion: 6.0.2 - dev: false /oniguruma-to-es@4.3.3: resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==} @@ -14834,7 +14725,6 @@ packages: oniguruma-parser: 0.12.1 regex: 6.0.1 regex-recursion: 6.0.2 - dev: true /open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} @@ -16255,13 +16145,6 @@ packages: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} dev: false - /regex-recursion@5.1.1: - resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==} - dependencies: - regex: 5.1.1 - regex-utilities: 2.3.0 - dev: false - /regex-recursion@6.0.2: resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} dependencies: @@ -16270,12 +16153,6 @@ packages: /regex-utilities@2.3.0: resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} - /regex@5.1.1: - resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} - dependencies: - regex-utilities: 2.3.0 - dev: false - /regex@6.0.1: resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} dependencies: @@ -17025,32 +16902,6 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - /shiki@1.29.2: - resolution: {integrity: sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==} - dependencies: - '@shikijs/core': 1.29.2 - '@shikijs/engine-javascript': 1.29.2 - '@shikijs/engine-oniguruma': 1.29.2 - '@shikijs/langs': 1.29.2 - '@shikijs/themes': 1.29.2 - '@shikijs/types': 1.29.2 - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 - dev: false - - /shiki@3.13.0: - resolution: {integrity: sha512-aZW4l8Og16CokuCLf8CF8kq+KK2yOygapU5m3+hoGw0Mdosc6fPitjM+ujYarppj5ZIKGyPDPP1vqmQhr+5/0g==} - dependencies: - '@shikijs/core': 3.13.0 - '@shikijs/engine-javascript': 3.13.0 - '@shikijs/engine-oniguruma': 3.13.0 - '@shikijs/langs': 3.13.0 - '@shikijs/themes': 3.13.0 - '@shikijs/types': 3.13.0 - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 - dev: true - /shiki@3.3.0: resolution: {integrity: sha512-j0Z1tG5vlOFGW8JVj0Cpuatzvshes7VJy5ncDmmMaYcmnGW0Js1N81TOW98ivTFNZfKRn9uwEg/aIm638o368g==} dependencies: @@ -17062,7 +16913,6 @@ packages: '@shikijs/types': 3.3.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 - dev: false /side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} @@ -17347,11 +17197,6 @@ packages: resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} dev: false - /streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - dev: false - /streamx@2.22.0: resolution: {integrity: sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==} dependencies: