diff --git a/.github/workflows/release-packages.yml b/.github/workflows/release-packages.yml index b33b570d7b6..1bac0bb8f33 100644 --- a/.github/workflows/release-packages.yml +++ b/.github/workflows/release-packages.yml @@ -284,7 +284,18 @@ jobs: for changelog_path in "${possible_paths[@]}"; do if [ -f "$changelog_path" ]; then echo "Found changelog at: $changelog_path" - changelog_content=$(head -100 "$changelog_path") + changelog_content=$(awk -v version="${{ steps.extract-info.outputs.version }}" ' + BEGIN { capture=0 } + /^## / || /^# / || /^v[0-9]+\./ { + if (capture) exit + if ($0 ~ "(^|[^0-9.])" version "([^0-9.]|$)") { + capture=1 + next + } + } + capture { print } + ' "$changelog_path" | sed '/^$/d' | head -50) + if [ -n "$changelog_content" ]; then release_body="$changelog_content" break diff --git a/apps/api/package.json b/apps/api/package.json index c181540c3d7..a363ce249ff 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -1,6 +1,6 @@ { "name": "@novu/api-service", - "version": "3.11.0", + "version": "3.12.0", "description": "description", "author": "", "private": "true", diff --git a/apps/dashboard/package.json b/apps/dashboard/package.json index a29a71a2633..957ed4d88a8 100644 --- a/apps/dashboard/package.json +++ b/apps/dashboard/package.json @@ -1,7 +1,7 @@ { "name": "@novu/dashboard", "private": true, - "version": "3.11.4", + "version": "3.12.0", "type": "module", "scripts": { "start": "vite", diff --git a/apps/dashboard/src/hooks/use-fetch-layouts.tsx b/apps/dashboard/src/hooks/use-fetch-layouts.tsx index d49c53ad07e..9767c09ddc9 100644 --- a/apps/dashboard/src/hooks/use-fetch-layouts.tsx +++ b/apps/dashboard/src/hooks/use-fetch-layouts.tsx @@ -22,12 +22,14 @@ export const useFetchLayouts = ({ refetchOnWindowFocus = true, }: UseLayoutsParams = {}) => { const { currentEnvironment } = useEnvironment(); + const environmentId = currentEnvironment?._id; + const params = { limit, offset, query, orderBy, orderDirection }; const layoutsQuery = useQuery({ - queryKey: [QueryKeys.fetchLayouts, currentEnvironment?._id, { limit, offset, query, orderBy, orderDirection }], - queryFn: () => getLayouts({ environment: currentEnvironment!, limit, offset, query, orderBy, orderDirection }), + queryKey: [QueryKeys.fetchLayouts, environmentId, params], + queryFn: () => getLayouts({ environment: currentEnvironment!, ...params }), placeholderData: keepPreviousData, - enabled: !!currentEnvironment?._id, + enabled: !!environmentId, refetchOnWindowFocus, }); diff --git a/apps/web/package.json b/apps/web/package.json index 365ea39a338..0a5c0a26760 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,6 +1,6 @@ { "name": "@novu/web", - "version": "2.1.22", + "version": "2.1.23", "private": true, "scripts": { "start": "DISABLE_ESLINT_PLUGIN=true pnpm panda --watch & cross-env NODE_OPTIONS=--max_old_space_size=8192 PORT=4200 react-app-rewired start", diff --git a/apps/webhook/package.json b/apps/webhook/package.json index 02dbb3a66ad..4c5f05d8514 100644 --- a/apps/webhook/package.json +++ b/apps/webhook/package.json @@ -1,6 +1,6 @@ { "name": "@novu/webhook", - "version": "3.11.0", + "version": "3.12.0", "description": "", "author": "", "private": true, diff --git a/apps/worker/package.json b/apps/worker/package.json index f847c36d8c3..e0ba31b7683 100644 --- a/apps/worker/package.json +++ b/apps/worker/package.json @@ -1,6 +1,6 @@ { "name": "@novu/worker", - "version": "3.11.0", + "version": "3.12.0", "description": "description", "author": "", "private": "true", diff --git a/apps/ws/package.json b/apps/ws/package.json index 08ae6eda774..c90783e9d95 100644 --- a/apps/ws/package.json +++ b/apps/ws/package.json @@ -1,6 +1,6 @@ { "name": "@novu/ws", - "version": "3.11.0", + "version": "3.12.0", "description": "", "author": "", "private": true, diff --git a/libs/application-generic/src/factories/mail/handlers/sendgrid.handler.ts b/libs/application-generic/src/factories/mail/handlers/sendgrid.handler.ts index 6827d27820a..d0dcaa29992 100644 --- a/libs/application-generic/src/factories/mail/handlers/sendgrid.handler.ts +++ b/libs/application-generic/src/factories/mail/handlers/sendgrid.handler.ts @@ -15,6 +15,7 @@ export class SendgridHandler extends BaseEmailHandler { senderName: credentials.senderName, ipPoolName: credentials.ipPoolName, webhookPublicKey: credentials.inboundWebhookSigningKey, + region: credentials.region, }); } } diff --git a/package.json b/package.json index 02a854b68c7..3e88e5fe06e 100644 --- a/package.json +++ b/package.json @@ -196,7 +196,9 @@ "vite@>=5.0.0 <5.4.15": "^5.4.21", "vite@<4.5.10": "^4.5.10", "node-forge@<1.3.2": "^1.3.2", - "ws@>=8.0.0 <8.17.1": "^8.17.1" + "ws@>=8.0.0 <8.17.1": "^8.17.1", + "next@>=13.0.0 <14.2.32": "^14.2.35", + "next@>=15.0.0 <15.4.7": "^15.4.10" }, "onlyBuiltDependencies": [ "@clerk/shared", diff --git a/packages/js/CHANGELOG.md b/packages/js/CHANGELOG.md index 9fcf634e28b..b030684d0ca 100644 --- a/packages/js/CHANGELOG.md +++ b/packages/js/CHANGELOG.md @@ -1,3 +1,18 @@ +## v3.12.0 (2026-01-07) + +### 🚀 Features + +- **js,react:** Italics formatting support in content fixes NV-7025 ([#9789](https://github.com/novuhq/novu/pull/9789)) + +### 🩹 Fixes + +- **js:** inbox doubled notifications issue fixes NV-7014 ([#9773](https://github.com/novuhq/novu/pull/9773)) + +### ❤️ Thank You + +- Dima Grossman @scopsy +- Paweł Tymczuk @LetItRock + ## v3.11.2 (2025-12-24) ### 🚀 Features diff --git a/packages/js/package.json b/packages/js/package.json index 5044321c8e9..aaf071b1cfe 100644 --- a/packages/js/package.json +++ b/packages/js/package.json @@ -1,6 +1,6 @@ { "name": "@novu/js", - "version": "3.11.2", + "version": "3.12.0", "repository": "https://github.com/novuhq/novu", "description": "Novu JavaScript SDK for ", "author": "", diff --git a/packages/nextjs/CHANGELOG.md b/packages/nextjs/CHANGELOG.md index f271eda9d51..52cf241a361 100644 --- a/packages/nextjs/CHANGELOG.md +++ b/packages/nextjs/CHANGELOG.md @@ -1,3 +1,7 @@ +## v3.12.0 (2026-01-07) + +This was a version bump only for @novu/nextjs to align it with other projects, there were no code changes. + ## v3.11.2 (2025-12-24) ### 🚀 Features diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index 2c5a0cc548f..bd50c45321c 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@novu/nextjs", - "version": "3.11.2", + "version": "3.12.0", "repository": { "type": "git", "url": "https://github.com/novuhq/novu", diff --git a/packages/providers/src/lib/email/sendgrid/sendgrid.provider.spec.ts b/packages/providers/src/lib/email/sendgrid/sendgrid.provider.spec.ts index 94ccef9ee85..737ddc7c1cb 100644 --- a/packages/providers/src/lib/email/sendgrid/sendgrid.provider.spec.ts +++ b/packages/providers/src/lib/email/sendgrid/sendgrid.provider.spec.ts @@ -1,3 +1,4 @@ +import { Client } from '@sendgrid/client'; import { MailService } from '@sendgrid/mail'; import { expect, test, vi } from 'vitest'; import { SendgridEmailProvider } from './sendgrid.provider'; @@ -168,3 +169,35 @@ test('should override credentials with mail data', async () => { }); expect(sendMock).toHaveBeenCalledWith(expect.objectContaining({ ipPoolName: 'ip_from_mail_data' })); }); + +test('should set EU data residency when region is eu', async () => { + const setDataResidencySpy = vi.spyOn(Client.prototype, 'setDataResidency'); + + new SendgridEmailProvider({ + ...mockConfig, + region: 'eu', + }); + + expect(setDataResidencySpy).toHaveBeenCalledWith('eu'); +}); + +test('should not set data residency when region is global', async () => { + const setDataResidencySpy = vi.spyOn(Client.prototype, 'setDataResidency'); + setDataResidencySpy.mockClear(); + + new SendgridEmailProvider({ + ...mockConfig, + region: 'global', + }); + + expect(setDataResidencySpy).not.toHaveBeenCalled(); +}); + +test('should not set data residency when region is not provided', async () => { + const setDataResidencySpy = vi.spyOn(Client.prototype, 'setDataResidency'); + setDataResidencySpy.mockClear(); + + new SendgridEmailProvider(mockConfig); + + expect(setDataResidencySpy).not.toHaveBeenCalled(); +}); diff --git a/packages/providers/src/lib/email/sendgrid/sendgrid.provider.ts b/packages/providers/src/lib/email/sendgrid/sendgrid.provider.ts index 8db0c992100..e0f4b5e0b06 100644 --- a/packages/providers/src/lib/email/sendgrid/sendgrid.provider.ts +++ b/packages/providers/src/lib/email/sendgrid/sendgrid.provider.ts @@ -9,7 +9,7 @@ import { IEmailProvider, ISendMessageSuccessResponse, } from '@novu/stateless'; -import sgClient from '@sendgrid/client'; +import { Client } from '@sendgrid/client'; // cspell:disable-next-line import { EventWebhook } from '@sendgrid/eventwebhook'; import { MailDataRequired, MailService } from '@sendgrid/mail'; @@ -23,7 +23,7 @@ export class SendgridEmailProvider extends BaseProvider implements IEmailProvide protected casing: CasingEnum = CasingEnum.CAMEL_CASE; channelType = ChannelTypeEnum.EMAIL as ChannelTypeEnum.EMAIL; private sendgridMail: MailService; - private sendgridClient: typeof sgClient; + private client: Client; constructor( private config: { @@ -32,13 +32,20 @@ export class SendgridEmailProvider extends BaseProvider implements IEmailProvide senderName: string; ipPoolName?: string; webhookPublicKey?: string; + region?: string; } ) { super(); + this.client = new Client(); + + if (this.config.region === 'eu') { + this.client.setDataResidency('eu'); + } + + this.client.setApiKey(this.config.apiKey); + this.sendgridMail = new MailService(); - this.sendgridMail.setApiKey(this.config.apiKey); - this.sendgridClient = sgClient; - this.sendgridClient.setApiKey(this.config.apiKey); + this.sendgridMail.setClient(this.client); } async sendMessage( @@ -210,7 +217,7 @@ export class SendgridEmailProvider extends BaseProvider implements IEmailProvide }> { try { // Step 1: Create a new Event Webhook - const [createResponse, createBody] = await this.sendgridClient.request({ + const [createResponse, createBody] = await this.client.request({ url: '/v3/user/webhooks/event/settings', method: 'POST' as const, body: { @@ -237,7 +244,7 @@ export class SendgridEmailProvider extends BaseProvider implements IEmailProvide const webhookId = createBody.id; // Step 2: Enable Signature Verification - const [enableSignatureResponse, enableSignatureBody] = await this.sendgridClient.request({ + const [enableSignatureResponse, enableSignatureBody] = await this.client.request({ url: `/v3/user/webhooks/event/settings/signed/${webhookId}`, method: 'PATCH' as const, body: { diff --git a/packages/react-native/CHANGELOG.md b/packages/react-native/CHANGELOG.md index 5cdfe9f22db..45c25a90c4f 100644 --- a/packages/react-native/CHANGELOG.md +++ b/packages/react-native/CHANGELOG.md @@ -1,3 +1,7 @@ +## v3.12.0 (2026-01-07) + +This was a version bump only for @novu/react-native to align it with other projects, there were no code changes. + ## v3.11.2 (2025-12-24) ### 🚀 Features diff --git a/packages/react-native/package.json b/packages/react-native/package.json index 38eb334fe4b..e249351618a 100644 --- a/packages/react-native/package.json +++ b/packages/react-native/package.json @@ -1,6 +1,6 @@ { "name": "@novu/react-native", - "version": "3.11.2", + "version": "3.12.0", "repository": "https://github.com/novuhq/novu", "description": "Novu's React Native SDK for building custom inbox notification experiences", "author": "", diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index a8a9128f542..41eabf17896 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -1,3 +1,7 @@ +## v3.12.0 (2026-01-07) + +This was a version bump only for @novu/react to align it with other projects, there were no code changes. + ## v3.11.2 (2025-12-24) ### 🚀 Features diff --git a/packages/react/package.json b/packages/react/package.json index 501172cb75b..553f13fdceb 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@novu/react", - "version": "3.11.2", + "version": "3.12.0", "repository": { "type": "git", "url": "https://github.com/novuhq/novu", diff --git a/packages/shared/src/consts/providers/credentials/provider-credentials.ts b/packages/shared/src/consts/providers/credentials/provider-credentials.ts index d8cda74f68b..2756ecd1e00 100644 --- a/packages/shared/src/consts/providers/credentials/provider-credentials.ts +++ b/packages/shared/src/consts/providers/credentials/provider-credentials.ts @@ -201,6 +201,18 @@ export const sendgridConfig: IConfigCredential[] = [ type: 'string', required: true, }, + { + key: CredentialsKeyEnum.Region, + displayName: 'Region', + description: 'Select EU if your SendGrid account is hosted in the EU data center', + type: 'dropdown', + required: false, + value: 'global', + dropdown: [ + { name: 'Global (US)', value: 'global' }, + { name: 'EU', value: 'eu' }, + ], + }, { key: CredentialsKeyEnum.IpPoolName, displayName: 'IP Pool Name', diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6f6f92a970a..7d390b82221 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,6 +39,8 @@ overrides: vite@<4.5.10: ^4.5.10 node-forge@<1.3.2: ^1.3.2 ws@>=8.0.0 <8.17.1: ^8.17.1 + next@>=13.0.0 <14.2.32: ^14.2.35 + next@>=15.0.0 <15.4.7: ^15.4.10 importers: @@ -2748,7 +2750,7 @@ importers: version: 16.5.0 jest: specifier: ^27.1.0 - version: 27.5.1(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@20.19.10)(typescript@5.6.2)) + version: 27.5.1(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.6.2)) npm-run-all: specifier: ^4.1.5 version: 4.1.5 @@ -2763,16 +2765,16 @@ importers: version: 9.2.4 ts-jest: specifier: ^27.0.5 - version: 27.1.5(@babel/core@7.28.0)(@types/jest@29.5.2)(babel-jest@27.5.1(@babel/core@7.28.0))(esbuild@0.23.1)(jest@27.5.1(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@20.19.10)(typescript@5.6.2)))(typescript@5.6.2) + version: 27.1.5(@babel/core@7.28.0)(@types/jest@29.5.2)(babel-jest@27.5.1(@babel/core@7.28.0))(esbuild@0.23.1)(jest@27.5.1(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.6.2)))(typescript@5.6.2) ts-node: specifier: ~10.9.1 - version: 10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@20.19.10)(typescript@5.6.2) + version: 10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.6.2) typescript: specifier: 5.6.2 version: 5.6.2 vitest: specifier: ^2.1.9 - version: 2.1.9(@edge-runtime/vm@4.0.2)(@types/node@20.19.10)(happy-dom@20.0.11)(jsdom@25.0.0)(less@4.2.0)(lightningcss@1.29.2)(sass@1.77.8)(sugarss@4.0.1(postcss@8.4.47))(terser@5.31.6) + version: 2.1.9(@edge-runtime/vm@4.0.2)(@types/node@22.15.13)(happy-dom@20.0.11)(jsdom@25.0.0)(less@4.2.0)(lightningcss@1.29.2)(sass@1.77.8)(sugarss@4.0.1(postcss@8.4.47))(terser@5.31.6) optionalDependencies: '@novu/ee-shared-services': specifier: workspace:* @@ -3256,7 +3258,7 @@ importers: devDependencies: '@tailwindcss/typography': specifier: ^0.5.15 - version: 0.5.19(tailwindcss@3.4.16(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@20.19.10)(typescript@5.6.2))) + version: 0.5.19(tailwindcss@3.4.16(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.8.3))) autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.47) @@ -3265,13 +3267,13 @@ importers: version: 8.4.47 tailwind-scrollbar: specifier: ^3.1.0 - version: 3.1.0(tailwindcss@3.4.16(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@20.19.10)(typescript@5.6.2))) + version: 3.1.0(tailwindcss@3.4.16(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.8.3))) tailwindcss: specifier: ^3.4.14 - version: 3.4.16(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@20.19.10)(typescript@5.6.2)) + version: 3.4.16(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.8.3)) tailwindcss-animate: specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.4.16(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@20.19.10)(typescript@5.6.2))) + version: 1.0.7(tailwindcss@3.4.16(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.8.3))) libs/maily-tsconfig: {} @@ -3556,13 +3558,13 @@ importers: version: 5.0.10 ts-node: specifier: ^10.9.1 - version: 10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@20.19.10)(typescript@5.8.3) + version: 10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.8.3) typescript: specifier: ^5.0.0 version: 5.8.3 vitest: specifier: ^2.1.9 - version: 2.1.9(@edge-runtime/vm@4.0.2)(@types/node@20.19.10)(happy-dom@20.0.11)(jsdom@25.0.0)(less@4.2.0)(lightningcss@1.29.2)(sass@1.77.8)(sugarss@4.0.1(postcss@8.4.47))(terser@5.31.6) + version: 2.1.9(@edge-runtime/vm@4.0.2)(@types/node@22.15.13)(happy-dom@20.0.11)(jsdom@25.0.0)(less@4.2.0)(lightningcss@1.29.2)(sass@1.77.8)(sugarss@4.0.1(postcss@8.4.47))(terser@5.31.6) packages/framework: dependencies: @@ -3806,8 +3808,8 @@ importers: specifier: workspace:* version: link:../react next: - specifier: '>=13.5.2 || ^14.0.0 || ^15.0.0' - version: 13.5.6(@babel/core@7.28.0)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.8) + specifier: ^14.2.35 + version: 14.2.35(@babel/core@7.28.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.46.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.8) react: specifier: ^18.0.0 || ^19.0.0 || ^19.0.0-0 version: 18.3.1 @@ -3944,13 +3946,13 @@ importers: version: 3.0.1 ts-node: specifier: ~10.9.1 - version: 10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@20.19.10)(typescript@5.6.2) + version: 10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.6.2) typescript: specifier: 5.6.2 version: 5.6.2 vitest: specifier: ^1.2.1 - version: 1.6.1(@edge-runtime/vm@4.0.2)(@types/node@20.19.10)(happy-dom@20.0.11)(jsdom@25.0.0)(less@4.2.0)(lightningcss@1.29.2)(sass@1.77.8)(sugarss@4.0.1(postcss@8.4.47))(terser@5.31.6) + version: 1.6.1(@edge-runtime/vm@4.0.2)(@types/node@22.15.13)(happy-dom@20.0.11)(jsdom@25.0.0)(less@4.2.0)(lightningcss@1.29.2)(sass@1.77.8)(sugarss@4.0.1(postcss@8.4.47))(terser@5.31.6) packages/providers: dependencies: @@ -4125,7 +4127,7 @@ importers: version: 3.0.2 ts-node: specifier: ~10.9.1 - version: 10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@20.19.10)(typescript@5.6.2) + version: 10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.6.2) typedoc: specifier: ^0.24.0 version: 0.24.6(typescript@5.6.2) @@ -4134,7 +4136,7 @@ importers: version: 5.6.2 vitest: specifier: 2.1.9 - version: 2.1.9(@edge-runtime/vm@4.0.2)(@types/node@20.19.10)(happy-dom@20.0.11)(jsdom@25.0.0)(less@4.2.0)(lightningcss@1.29.2)(sass@1.77.8)(sugarss@4.0.1(postcss@8.4.47))(terser@5.31.6) + version: 2.1.9(@edge-runtime/vm@4.0.2)(@types/node@22.15.13)(happy-dom@20.0.11)(jsdom@25.0.0)(less@4.2.0)(lightningcss@1.29.2)(sass@1.77.8)(sugarss@4.0.1(postcss@8.4.47))(terser@5.31.6) packages/react: dependencies: @@ -9462,30 +9464,12 @@ packages: resolution: {integrity: sha512-gfqcM1hO/FF8oEfiyByN+XerctJZ9w3h2EtL6xCU6ccq3YWi6wFtJ6/AaA/6LTN3JEvT9sLf9Vd9MVHWIYj7lQ==} engines: {node: '>=18', npm: '>=6.0.0'} - '@next/env@13.5.6': - resolution: {integrity: sha512-Yac/bV5sBGkkEXmAX5FWPS9Mmo2rthrOPRQQNfycJPkjUAUclomCPH7QFVCDQ4Mp2k2K1SSM6m0zrxYrOwtFQw==} - - '@next/env@14.2.10': - resolution: {integrity: sha512-dZIu93Bf5LUtluBXIv4woQw2cZVZ2DJTjax5/5DOs3lzEOeKLy7GxRSr4caK9/SCPdaW6bCgpye6+n4Dh9oJPw==} - '@next/env@14.2.35': resolution: {integrity: sha512-DuhvCtj4t9Gwrx80dmz2F4t/zKQ4ktN8WrMwOuVzkJfBilwAwGr6v16M5eI8yCuZ63H9TTuEU09Iu2HqkzFPVQ==} '@next/env@15.4.10': resolution: {integrity: sha512-knhmoJ0Vv7VRf6pZEPSnciUG1S4bIhWx+qTYBW/AjxEtlzsiNORPk8sFDCEvqLfmKuey56UB9FL1UdHEV3uBrg==} - '@next/swc-darwin-arm64@13.5.6': - resolution: {integrity: sha512-5nvXMzKtZfvcu4BhtV0KH1oGv4XEW+B+jOfmBdpFI3C7FrB/MfujRpWYSBBO64+qbW8pkZiSyQv9eiwnn5VIQA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@next/swc-darwin-arm64@14.2.10': - resolution: {integrity: sha512-V3z10NV+cvMAfxQUMhKgfQnPbjw+Ew3cnr64b0lr8MDiBJs3eLnM6RpGC46nhfMZsiXgQngCJKWGTC/yDcgrDQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - '@next/swc-darwin-arm64@14.2.33': resolution: {integrity: sha512-HqYnb6pxlsshoSTubdXKu15g3iivcbsMXg4bYpjL2iS/V6aQot+iyF4BUc2qA/J/n55YtvE4PHMKWBKGCF/+wA==} engines: {node: '>= 10'} @@ -9498,18 +9482,6 @@ packages: cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@13.5.6': - resolution: {integrity: sha512-6cgBfxg98oOCSr4BckWjLLgiVwlL3vlLj8hXg2b+nDgm4bC/qVXXLfpLB9FHdoDu4057hzywbxKvmYGmi7yUzA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@next/swc-darwin-x64@14.2.10': - resolution: {integrity: sha512-Y0TC+FXbFUQ2MQgimJ/7Ina2mXIKhE7F+GUe1SgnzRmwFY3hX2z8nyVCxE82I2RicspdkZnSWMn4oTjIKz4uzA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - '@next/swc-darwin-x64@14.2.33': resolution: {integrity: sha512-8HGBeAE5rX3jzKvF593XTTFg3gxeU4f+UWnswa6JPhzaR6+zblO5+fjltJWIZc4aUalqTclvN2QtTC37LxvZAA==} engines: {node: '>= 10'} @@ -9522,20 +9494,6 @@ packages: cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@13.5.6': - resolution: {integrity: sha512-txagBbj1e1w47YQjcKgSU4rRVQ7uF29YpnlHV5xuVUsgCUf2FmyfJ3CPjZUvpIeXCJAoMCFAoGnbtX86BK7+sg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@next/swc-linux-arm64-gnu@14.2.10': - resolution: {integrity: sha512-ZfQ7yOy5zyskSj9rFpa0Yd7gkrBnJTkYVSya95hX3zeBG9E55Z6OTNPn1j2BTFWvOVVj65C3T+qsjOyVI9DQpA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@next/swc-linux-arm64-gnu@14.2.33': resolution: {integrity: sha512-JXMBka6lNNmqbkvcTtaX8Gu5by9547bukHQvPoLe9VRBx1gHwzf5tdt4AaezW85HAB3pikcvyqBToRTDA4DeLw==} engines: {node: '>= 10'} @@ -9550,20 +9508,6 @@ packages: os: [linux] libc: [glibc] - '@next/swc-linux-arm64-musl@13.5.6': - resolution: {integrity: sha512-cGd+H8amifT86ZldVJtAKDxUqeFyLWW+v2NlBULnLAdWsiuuN8TuhVBt8ZNpCqcAuoruoSWynvMWixTFcroq+Q==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@next/swc-linux-arm64-musl@14.2.10': - resolution: {integrity: sha512-n2i5o3y2jpBfXFRxDREr342BGIQCJbdAUi/K4q6Env3aSx8erM9VuKXHw5KNROK9ejFSPf0LhoSkU/ZiNdacpQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - libc: [musl] - '@next/swc-linux-arm64-musl@14.2.33': resolution: {integrity: sha512-Bm+QulsAItD/x6Ih8wGIMfRJy4G73tu1HJsrccPW6AfqdZd0Sfm5Imhgkgq2+kly065rYMnCOxTBvmvFY1BKfg==} engines: {node: '>= 10'} @@ -9578,20 +9522,6 @@ packages: os: [linux] libc: [musl] - '@next/swc-linux-x64-gnu@13.5.6': - resolution: {integrity: sha512-Mc2b4xiIWKXIhBy2NBTwOxGD3nHLmq4keFk+d4/WL5fMsB8XdJRdtUlL87SqVCTSaf1BRuQQf1HvXZcy+rq3Nw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@next/swc-linux-x64-gnu@14.2.10': - resolution: {integrity: sha512-GXvajAWh2woTT0GKEDlkVhFNxhJS/XdDmrVHrPOA83pLzlGPQnixqxD8u3bBB9oATBKB//5e4vpACnx5Vaxdqg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [glibc] - '@next/swc-linux-x64-gnu@14.2.33': resolution: {integrity: sha512-FnFn+ZBgsVMbGDsTqo8zsnRzydvsGV8vfiWwUo1LD8FTmPTdV+otGSWKc4LJec0oSexFnCYVO4hX8P8qQKaSlg==} engines: {node: '>= 10'} @@ -9606,20 +9536,6 @@ packages: os: [linux] libc: [glibc] - '@next/swc-linux-x64-musl@13.5.6': - resolution: {integrity: sha512-CFHvP9Qz98NruJiUnCe61O6GveKKHpJLloXbDSWRhqhkJdZD2zU5hG+gtVJR//tyW897izuHpM6Gtf6+sNgJPQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [musl] - - '@next/swc-linux-x64-musl@14.2.10': - resolution: {integrity: sha512-opFFN5B0SnO+HTz4Wq4HaylXGFV+iHrVxd3YvREUX9K+xfc4ePbRrxqOuPOFjtSuiVouwe6uLeDtabjEIbkmDA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [musl] - '@next/swc-linux-x64-musl@14.2.33': resolution: {integrity: sha512-345tsIWMzoXaQndUTDv1qypDRiebFxGYx9pYkhwY4hBRaOLt8UGfiWKr9FSSHs25dFIf8ZqIFaPdy5MljdoawA==} engines: {node: '>= 10'} @@ -9634,18 +9550,6 @@ packages: os: [linux] libc: [musl] - '@next/swc-win32-arm64-msvc@13.5.6': - resolution: {integrity: sha512-aFv1ejfkbS7PUa1qVPwzDHjQWQtknzAZWGTKYIAaS4NMtBlk3VyA6AYn593pqNanlicewqyl2jUhQAaFV/qXsg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@next/swc-win32-arm64-msvc@14.2.10': - resolution: {integrity: sha512-9NUzZuR8WiXTvv+EiU/MXdcQ1XUvFixbLIMNQiVHuzs7ZIFrJDLJDaOF1KaqttoTujpcxljM/RNAOmw1GhPPQQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - '@next/swc-win32-arm64-msvc@14.2.33': resolution: {integrity: sha512-nscpt0G6UCTkrT2ppnJnFsYbPDQwmum4GNXYTeoTIdsmMydSKFz9Iny2jpaRupTb+Wl298+Rh82WKzt9LCcqSQ==} engines: {node: '>= 10'} @@ -9658,36 +9562,12 @@ packages: cpu: [arm64] os: [win32] - '@next/swc-win32-ia32-msvc@13.5.6': - resolution: {integrity: sha512-XqqpHgEIlBHvzwG8sp/JXMFkLAfGLqkbVsyN+/Ih1mR8INb6YCc2x/Mbwi6hsAgUnqQztz8cvEbHJUbSl7RHDg==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - - '@next/swc-win32-ia32-msvc@14.2.10': - resolution: {integrity: sha512-fr3aEbSd1GeW3YUMBkWAu4hcdjZ6g4NBl1uku4gAn661tcxd1bHs1THWYzdsbTRLcCKLjrDZlNp6j2HTfrw+Bg==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - '@next/swc-win32-ia32-msvc@14.2.33': resolution: {integrity: sha512-pc9LpGNKhJ0dXQhZ5QMmYxtARwwmWLpeocFmVG5Z0DzWq5Uf0izcI8tLc+qOpqxO1PWqZ5A7J1blrUIKrIFc7Q==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] - '@next/swc-win32-x64-msvc@13.5.6': - resolution: {integrity: sha512-Cqfe1YmOS7k+5mGu92nl5ULkzpKuxJrP3+4AEuPmrpFZ3BHxTY3TnHmU1On3bFmFFs6FbTcdF58CCUProGpIGQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - '@next/swc-win32-x64-msvc@14.2.10': - resolution: {integrity: sha512-UjeVoRGKNL2zfbcQ6fscmgjBAS/inHBh63mjIlfPg/NG8Yn2ztqylXt5qilYb6hoHIwaU2ogHknHWWmahJjgZQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - '@next/swc-win32-x64-msvc@14.2.33': resolution: {integrity: sha512-nOjfZMy8B94MdisuzZo9/57xuFVLHJaDj5e/xrduJp9CV2/HrfxTRH2fbyLe+K9QT41WBLUd4iXX3R7jBp0EUg==} engines: {node: '>= 10'} @@ -14497,9 +14377,6 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - '@swc/helpers@0.5.2': - resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} - '@swc/helpers@0.5.5': resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} @@ -24653,41 +24530,6 @@ packages: react: ^16.8 || ^17 || ^18 react-dom: ^16.8 || ^17 || ^18 - next@13.5.6: - resolution: {integrity: sha512-Y2wTcTbO4WwEsVb4A8VSnOsG1I9ok+h74q0ZdxkwM3EODqrs4pasq7O0iUxbcS9VtWMicG7f3+HAj0r1+NtKSw==} - engines: {node: '>=16.14.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 - react: ^18.2.0 - react-dom: ^18.2.0 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - sass: - optional: true - - next@14.2.10: - resolution: {integrity: sha512-sDDExXnh33cY3RkS9JuFEKaS4HmlWmDKP1VJioucCG6z5KuA008DPsDZOzi8UfqEk3Ii+2NCQSJrfbEWtZZfww==} - engines: {node: '>=18.17.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 - react: ^18.2.0 - react-dom: ^18.2.0 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - '@playwright/test': - optional: true - sass: - optional: true - next@14.2.35: resolution: {integrity: sha512-KhYd2Hjt/O1/1aZVX3dCwGXM1QmOV4eNM2UTacK5gipDdPN/oHHK/4oVGy7X8GMfPMsUTUEmGlsy0EY1YGAkig==} engines: {node: '>=18.17.0'} @@ -32160,8 +32002,8 @@ snapshots: '@aws-crypto/sha1-browser': 3.0.0 '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sso-oidc': 3.575.0(@aws-sdk/client-sts@3.575.0) - '@aws-sdk/client-sts': 3.575.0 + '@aws-sdk/client-sso-oidc': 3.575.0 + '@aws-sdk/client-sts': 3.575.0(@aws-sdk/client-sso-oidc@3.575.0) '@aws-sdk/core': 3.575.0 '@aws-sdk/credential-provider-node': 3.575.0(@aws-sdk/client-sso-oidc@3.575.0)(@aws-sdk/client-sts@3.575.0) '@aws-sdk/middleware-bucket-endpoint': 3.575.0 @@ -32435,11 +32277,11 @@ snapshots: - aws-crt optional: true - '@aws-sdk/client-sso-oidc@3.575.0(@aws-sdk/client-sts@3.575.0)': + '@aws-sdk/client-sso-oidc@3.575.0': dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.575.0 + '@aws-sdk/client-sts': 3.575.0(@aws-sdk/client-sso-oidc@3.575.0) '@aws-sdk/core': 3.575.0 '@aws-sdk/credential-provider-node': 3.575.0(@aws-sdk/client-sso-oidc@3.575.0)(@aws-sdk/client-sts@3.575.0) '@aws-sdk/middleware-host-header': 3.575.0 @@ -32478,7 +32320,6 @@ snapshots: '@smithy/util-utf8': 3.0.0 tslib: 2.8.1 transitivePeerDependencies: - - '@aws-sdk/client-sts' - aws-crt '@aws-sdk/client-sso-oidc@3.637.0(@aws-sdk/client-sts@3.637.0)': @@ -32997,11 +32838,11 @@ snapshots: - aws-crt optional: true - '@aws-sdk/client-sts@3.575.0': + '@aws-sdk/client-sts@3.575.0(@aws-sdk/client-sso-oidc@3.575.0)': dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sso-oidc': 3.575.0(@aws-sdk/client-sts@3.575.0) + '@aws-sdk/client-sso-oidc': 3.575.0 '@aws-sdk/core': 3.575.0 '@aws-sdk/credential-provider-node': 3.575.0(@aws-sdk/client-sso-oidc@3.575.0)(@aws-sdk/client-sts@3.575.0) '@aws-sdk/middleware-host-header': 3.575.0 @@ -33040,6 +32881,7 @@ snapshots: '@smithy/util-utf8': 3.0.0 tslib: 2.8.1 transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' - aws-crt '@aws-sdk/client-sts@3.637.0': @@ -33349,7 +33191,7 @@ snapshots: '@aws-sdk/credential-provider-ini@3.575.0(@aws-sdk/client-sso-oidc@3.575.0)(@aws-sdk/client-sts@3.575.0)': dependencies: - '@aws-sdk/client-sts': 3.575.0 + '@aws-sdk/client-sts': 3.575.0(@aws-sdk/client-sso-oidc@3.575.0) '@aws-sdk/credential-provider-env': 3.575.0 '@aws-sdk/credential-provider-process': 3.575.0 '@aws-sdk/credential-provider-sso': 3.575.0(@aws-sdk/client-sso-oidc@3.575.0) @@ -33882,7 +33724,7 @@ snapshots: '@aws-sdk/credential-provider-web-identity@3.575.0(@aws-sdk/client-sts@3.575.0)': dependencies: - '@aws-sdk/client-sts': 3.575.0 + '@aws-sdk/client-sts': 3.575.0(@aws-sdk/client-sso-oidc@3.575.0) '@aws-sdk/types': 3.575.0 '@smithy/property-provider': 3.1.3 '@smithy/types': 3.3.0 @@ -34416,7 +34258,7 @@ snapshots: '@aws-sdk/token-providers@3.575.0(@aws-sdk/client-sso-oidc@3.575.0)': dependencies: - '@aws-sdk/client-sso-oidc': 3.575.0(@aws-sdk/client-sts@3.575.0) + '@aws-sdk/client-sso-oidc': 3.575.0 '@aws-sdk/types': 3.575.0 '@smithy/property-provider': 3.1.3 '@smithy/shared-ini-file-loader': 3.1.4 @@ -34425,7 +34267,7 @@ snapshots: '@aws-sdk/token-providers@3.614.0(@aws-sdk/client-sso-oidc@3.575.0)': dependencies: - '@aws-sdk/client-sso-oidc': 3.575.0(@aws-sdk/client-sts@3.575.0) + '@aws-sdk/client-sso-oidc': 3.575.0 '@aws-sdk/types': 3.609.0 '@smithy/property-provider': 3.1.3 '@smithy/shared-ini-file-loader': 3.1.4 @@ -38414,6 +38256,43 @@ snapshots: - ts-node - utf-8-validate + '@jest/core@27.5.1(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.6.2))': + dependencies: + '@jest/console': 27.5.1 + '@jest/reporters': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 20.19.10 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.8.1 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 27.5.1 + jest-config: 27.5.1(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.6.2)) + jest-haste-map: 27.5.1 + jest-message-util: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-resolve-dependencies: 27.5.1 + jest-runner: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + jest-watcher: 27.5.1 + micromatch: 4.0.8 + rimraf: 3.0.2 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@20.19.10)(typescript@5.6.2))': dependencies: '@jest/console': 29.7.0 @@ -39767,113 +39646,55 @@ snapshots: - supports-color - utf-8-validate - '@next/env@13.5.6': {} - - '@next/env@14.2.10': {} - '@next/env@14.2.35': {} '@next/env@15.4.10': {} - '@next/swc-darwin-arm64@13.5.6': - optional: true - - '@next/swc-darwin-arm64@14.2.10': - optional: true - '@next/swc-darwin-arm64@14.2.33': optional: true '@next/swc-darwin-arm64@15.4.8': optional: true - '@next/swc-darwin-x64@13.5.6': - optional: true - - '@next/swc-darwin-x64@14.2.10': - optional: true - '@next/swc-darwin-x64@14.2.33': optional: true '@next/swc-darwin-x64@15.4.8': optional: true - '@next/swc-linux-arm64-gnu@13.5.6': - optional: true - - '@next/swc-linux-arm64-gnu@14.2.10': - optional: true - '@next/swc-linux-arm64-gnu@14.2.33': optional: true '@next/swc-linux-arm64-gnu@15.4.8': optional: true - '@next/swc-linux-arm64-musl@13.5.6': - optional: true - - '@next/swc-linux-arm64-musl@14.2.10': - optional: true - '@next/swc-linux-arm64-musl@14.2.33': optional: true '@next/swc-linux-arm64-musl@15.4.8': optional: true - '@next/swc-linux-x64-gnu@13.5.6': - optional: true - - '@next/swc-linux-x64-gnu@14.2.10': - optional: true - '@next/swc-linux-x64-gnu@14.2.33': optional: true '@next/swc-linux-x64-gnu@15.4.8': optional: true - '@next/swc-linux-x64-musl@13.5.6': - optional: true - - '@next/swc-linux-x64-musl@14.2.10': - optional: true - '@next/swc-linux-x64-musl@14.2.33': optional: true '@next/swc-linux-x64-musl@15.4.8': optional: true - '@next/swc-win32-arm64-msvc@13.5.6': - optional: true - - '@next/swc-win32-arm64-msvc@14.2.10': - optional: true - '@next/swc-win32-arm64-msvc@14.2.33': optional: true '@next/swc-win32-arm64-msvc@15.4.8': optional: true - '@next/swc-win32-ia32-msvc@13.5.6': - optional: true - - '@next/swc-win32-ia32-msvc@14.2.10': - optional: true - '@next/swc-win32-ia32-msvc@14.2.33': optional: true - '@next/swc-win32-x64-msvc@13.5.6': - optional: true - - '@next/swc-win32-x64-msvc@14.2.10': - optional: true - '@next/swc-win32-x64-msvc@14.2.33': optional: true @@ -46170,10 +45991,6 @@ snapshots: dependencies: tslib: 2.8.1 - '@swc/helpers@0.5.2': - dependencies: - tslib: 2.8.1 - '@swc/helpers@0.5.5': dependencies: '@swc/counter': 0.1.3 @@ -46249,10 +46066,10 @@ snapshots: postcss: 8.4.47 tailwindcss: 4.0.12 - '@tailwindcss/typography@0.5.19(tailwindcss@3.4.16(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@20.19.10)(typescript@5.6.2)))': + '@tailwindcss/typography@0.5.19(tailwindcss@3.4.16(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.8.3)))': dependencies: postcss-selector-parser: 6.0.10 - tailwindcss: 3.4.16(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@20.19.10)(typescript@5.6.2)) + tailwindcss: 3.4.16(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.8.3)) '@tanem/svg-injector@10.1.68': dependencies: @@ -56122,6 +55939,27 @@ snapshots: - ts-node - utf-8-validate + jest-cli@27.5.1(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.6.2)): + dependencies: + '@jest/core': 27.5.1(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.6.2)) + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + import-local: 3.1.0 + jest-config: 27.5.1(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.6.2)) + jest-util: 27.5.1 + jest-validate: 27.5.1 + prompts: 2.4.2 + yargs: 16.2.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + jest-cli@29.7.0(@types/node@20.19.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@20.19.10)(typescript@5.6.2)): dependencies: '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@20.19.10)(typescript@5.6.2)) @@ -56194,6 +56032,40 @@ snapshots: - supports-color - utf-8-validate + jest-config@27.5.1(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.6.2)): + dependencies: + '@babel/core': 7.28.0 + '@jest/test-sequencer': 27.5.1 + '@jest/types': 27.5.1 + babel-jest: 27.5.1(@babel/core@7.28.0) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 27.5.1 + jest-environment-jsdom: 27.5.1 + jest-environment-node: 27.5.1 + jest-get-type: 27.5.1 + jest-jasmine2: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-runner: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 27.5.1 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + ts-node: 10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.6.2) + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + jest-config@29.7.0(@types/node@20.19.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@20.19.10)(typescript@5.6.2)): dependencies: '@babel/core': 7.28.0 @@ -57051,6 +56923,18 @@ snapshots: - ts-node - utf-8-validate + jest@27.5.1(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.6.2)): + dependencies: + '@jest/core': 27.5.1(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.6.2)) + import-local: 3.1.0 + jest-cli: 27.5.1(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.6.2)) + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + jest@29.7.0(@types/node@20.19.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@20.19.10)(typescript@5.6.2)): dependencies: '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@20.19.10)(typescript@5.6.2)) @@ -59540,36 +59424,9 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - next@13.5.6(@babel/core@7.28.0)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.8): + next@14.2.35(@babel/core@7.28.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.46.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.8): dependencies: - '@next/env': 13.5.6 - '@swc/helpers': 0.5.2 - busboy: 1.6.0 - caniuse-lite: 1.0.30001653 - postcss: 8.4.31 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - styled-jsx: 5.1.1(@babel/core@7.28.0)(babel-plugin-macros@3.1.0)(react@18.3.1) - watchpack: 2.4.0 - optionalDependencies: - '@next/swc-darwin-arm64': 13.5.6 - '@next/swc-darwin-x64': 13.5.6 - '@next/swc-linux-arm64-gnu': 13.5.6 - '@next/swc-linux-arm64-musl': 13.5.6 - '@next/swc-linux-x64-gnu': 13.5.6 - '@next/swc-linux-x64-musl': 13.5.6 - '@next/swc-win32-arm64-msvc': 13.5.6 - '@next/swc-win32-ia32-msvc': 13.5.6 - '@next/swc-win32-x64-msvc': 13.5.6 - '@opentelemetry/api': 1.9.0 - sass: 1.77.8 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros - - next@14.2.10(@babel/core@7.28.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.46.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.8): - dependencies: - '@next/env': 14.2.10 + '@next/env': 14.2.35 '@swc/helpers': 0.5.5 busboy: 1.6.0 caniuse-lite: 1.0.30001734 @@ -59579,15 +59436,15 @@ snapshots: react-dom: 18.3.1(react@18.3.1) styled-jsx: 5.1.1(@babel/core@7.28.0)(babel-plugin-macros@3.1.0)(react@18.3.1) optionalDependencies: - '@next/swc-darwin-arm64': 14.2.10 - '@next/swc-darwin-x64': 14.2.10 - '@next/swc-linux-arm64-gnu': 14.2.10 - '@next/swc-linux-arm64-musl': 14.2.10 - '@next/swc-linux-x64-gnu': 14.2.10 - '@next/swc-linux-x64-musl': 14.2.10 - '@next/swc-win32-arm64-msvc': 14.2.10 - '@next/swc-win32-ia32-msvc': 14.2.10 - '@next/swc-win32-x64-msvc': 14.2.10 + '@next/swc-darwin-arm64': 14.2.33 + '@next/swc-darwin-x64': 14.2.33 + '@next/swc-linux-arm64-gnu': 14.2.33 + '@next/swc-linux-arm64-musl': 14.2.33 + '@next/swc-linux-x64-gnu': 14.2.33 + '@next/swc-linux-x64-musl': 14.2.33 + '@next/swc-win32-arm64-msvc': 14.2.33 + '@next/swc-win32-ia32-msvc': 14.2.33 + '@next/swc-win32-x64-msvc': 14.2.33 '@opentelemetry/api': 1.9.0 '@playwright/test': 1.46.1 sass: 1.77.8 @@ -61282,6 +61139,14 @@ snapshots: postcss: 8.4.47 ts-node: 10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.6.2) + postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.8.3)): + dependencies: + lilconfig: 3.1.3 + yaml: 2.6.1 + optionalDependencies: + postcss: 8.4.47 + ts-node: 10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.8.3) + postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.4.47)(tsx@4.16.2)(yaml@2.6.1): dependencies: lilconfig: 3.1.3 @@ -62851,7 +62716,7 @@ snapshots: glob: 10.3.4 log-symbols: 4.1.0 mime-types: 2.1.35 - next: 14.2.10(@babel/core@7.28.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.46.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.8) + next: 14.2.35(@babel/core@7.28.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.46.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.8) normalize-path: 3.0.0 ora: 5.4.1 socket.io: 4.8.0 @@ -65568,9 +65433,9 @@ snapshots: tailwind-merge@2.6.0: {} - tailwind-scrollbar@3.1.0(tailwindcss@3.4.16(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@20.19.10)(typescript@5.6.2))): + tailwind-scrollbar@3.1.0(tailwindcss@3.4.16(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.8.3))): dependencies: - tailwindcss: 3.4.16(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@20.19.10)(typescript@5.6.2)) + tailwindcss: 3.4.16(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.8.3)) tailwind-variants@0.3.0(tailwindcss@3.4.16(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.6.2))): dependencies: @@ -65585,6 +65450,10 @@ snapshots: dependencies: tailwindcss: 3.4.16(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.6.2)) + tailwindcss-animate@1.0.7(tailwindcss@3.4.16(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.8.3))): + dependencies: + tailwindcss: 3.4.16(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.8.3)) + tailwindcss-animate@1.0.7(tailwindcss@4.0.12): dependencies: tailwindcss: 4.0.12 @@ -65643,6 +65512,33 @@ snapshots: transitivePeerDependencies: - ts-node + tailwindcss@3.4.16(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.8.3)): + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.6 + lilconfig: 3.1.3 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.1.1 + postcss: 8.4.47 + postcss-import: 15.1.0(postcss@8.4.47) + postcss-js: 4.0.1(postcss@8.4.47) + postcss-load-config: 4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.8.3)) + postcss-nested: 6.2.0(postcss@8.4.47) + postcss-selector-parser: 6.1.2 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + tailwindcss@4.0.12: {} tapable@1.1.3: {} @@ -66117,6 +66013,24 @@ snapshots: babel-jest: 27.5.1(@babel/core@7.28.0) esbuild: 0.23.1 + ts-jest@27.1.5(@babel/core@7.28.0)(@types/jest@29.5.2)(babel-jest@27.5.1(@babel/core@7.28.0))(esbuild@0.23.1)(jest@27.5.1(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.6.2)))(typescript@5.6.2): + dependencies: + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 27.5.1(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.6.2)) + jest-util: 27.5.1 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.6.3 + typescript: 5.6.2 + yargs-parser: 20.2.9 + optionalDependencies: + '@babel/core': 7.28.0 + '@types/jest': 29.5.2 + babel-jest: 27.5.1(@babel/core@7.28.0) + esbuild: 0.23.1 + ts-jest@27.1.5(@babel/core@7.28.0)(@types/jest@30.0.0)(babel-jest@27.5.1(@babel/core@7.28.0))(esbuild@0.23.1)(jest@30.0.5(@types/node@20.19.10)(babel-plugin-macros@3.1.0)(esbuild-register@3.5.0(esbuild@0.23.1))(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@20.19.10)(typescript@5.6.2)))(typescript@5.6.2): dependencies: bs-logger: 0.2.6 @@ -66265,27 +66179,27 @@ snapshots: optionalDependencies: '@swc/core': 1.7.26(@swc/helpers@0.5.15) - ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@20.19.10)(typescript@5.8.3): + ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.6.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 20.19.10 + '@types/node': 22.15.13 acorn: 8.11.3 acorn-walk: 8.3.2 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.8.3 + typescript: 5.6.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: '@swc/core': 1.7.26(@swc/helpers@0.5.15) - ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.6.2): + ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.15))(@types/node@22.15.13)(typescript@5.8.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 @@ -66299,12 +66213,11 @@ snapshots: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.6.2 + typescript: 5.8.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: '@swc/core': 1.7.26(@swc/helpers@0.5.15) - optional: true ts-node@9.1.1(typescript@5.6.2): dependencies: @@ -67301,6 +67214,24 @@ snapshots: - supports-color - terser + vite-node@1.6.1(@types/node@22.15.13)(less@4.2.0)(lightningcss@1.29.2)(sass@1.77.8)(sugarss@4.0.1(postcss@8.4.47))(terser@5.31.6): + dependencies: + cac: 6.7.14 + debug: 4.4.0(supports-color@8.1.1) + pathe: 1.1.2 + picocolors: 1.1.1 + vite: 5.4.21(@types/node@22.15.13)(less@4.2.0)(lightningcss@1.29.2)(sass@1.77.8)(sugarss@4.0.1(postcss@8.4.47))(terser@5.31.6) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + vite-node@2.1.9(@types/node@20.19.10)(less@4.2.0)(lightningcss@1.29.2)(sass@1.77.8)(sugarss@4.0.1(postcss@8.4.47))(terser@5.31.6): dependencies: cac: 6.7.14 @@ -67497,6 +67428,43 @@ snapshots: - supports-color - terser + vitest@1.6.1(@edge-runtime/vm@4.0.2)(@types/node@22.15.13)(happy-dom@20.0.11)(jsdom@25.0.0)(less@4.2.0)(lightningcss@1.29.2)(sass@1.77.8)(sugarss@4.0.1(postcss@8.4.47))(terser@5.31.6): + dependencies: + '@vitest/expect': 1.6.1 + '@vitest/runner': 1.6.1 + '@vitest/snapshot': 1.6.1 + '@vitest/spy': 1.6.1 + '@vitest/utils': 1.6.1 + acorn-walk: 8.3.2 + chai: 4.4.1 + debug: 4.4.0(supports-color@8.1.1) + execa: 8.0.1 + local-pkg: 0.5.1 + magic-string: 0.30.17 + pathe: 1.1.2 + picocolors: 1.1.1 + std-env: 3.9.0 + strip-literal: 2.1.1 + tinybench: 2.9.0 + tinypool: 0.8.4 + vite: 5.4.21(@types/node@22.15.13)(less@4.2.0)(lightningcss@1.29.2)(sass@1.77.8)(sugarss@4.0.1(postcss@8.4.47))(terser@5.31.6) + vite-node: 1.6.1(@types/node@22.15.13)(less@4.2.0)(lightningcss@1.29.2)(sass@1.77.8)(sugarss@4.0.1(postcss@8.4.47))(terser@5.31.6) + why-is-node-running: 2.3.0 + optionalDependencies: + '@edge-runtime/vm': 4.0.2 + '@types/node': 22.15.13 + happy-dom: 20.0.11 + jsdom: 25.0.0 + transitivePeerDependencies: + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + vitest@2.1.9(@edge-runtime/vm@4.0.2)(@types/node@20.19.10)(happy-dom@20.0.11)(jsdom@25.0.0)(less@4.2.0)(lightningcss@1.29.2)(sass@1.77.8)(sugarss@4.0.1(postcss@8.4.47))(terser@5.31.6): dependencies: '@vitest/expect': 2.1.9