From 843689ee05bd00612f5a6b6d1111de4eab3dba6b Mon Sep 17 00:00:00 2001 From: Antoine Moreaux Date: Mon, 6 Oct 2025 17:08:16 +0200 Subject: [PATCH] chore(twenty-website): upgrade next (#14917) Standardized `PageProps` usage across multiple pages. Upgraded `next`, `eslint-config-next`, and related dependencies to `^15.5.4` for compatibility and performance improvements. --- packages/twenty-website/package.json | 8 +- .../app/(public)/contributors/[slug]/page.tsx | 18 +- .../app/(public)/developers/[slug]/page.tsx | 20 +- .../src/app/(public)/developers/page.tsx | 1 - .../section/[folder]/[documentation]/page.tsx | 24 +- .../developers/section/[folder]/page.tsx | 20 +- .../app/(public)/twenty-ui/[slug]/page.tsx | 20 +- .../section/[folder]/[documentation]/page.tsx | 28 +- .../twenty-ui/section/[folder]/page.tsx | 24 +- .../app/(public)/user-guide/[slug]/page.tsx | 24 +- .../section/[folder]/[documentation]/page.tsx | 28 +- .../user-guide/section/[folder]/page.tsx | 24 +- ...try.js => emotion-root-style-registry.tsx} | 8 +- packages/twenty-website/tsconfig.json | 4 +- yarn.lock | 465 +++++++++++++++++- 15 files changed, 550 insertions(+), 166 deletions(-) rename packages/twenty-website/src/app/{emotion-root-style-registry.js => emotion-root-style-registry.tsx} (89%) diff --git a/packages/twenty-website/package.json b/packages/twenty-website/package.json index 0c7a0c34544..6f2ceda2671 100644 --- a/packages/twenty-website/package.json +++ b/packages/twenty-website/package.json @@ -23,16 +23,16 @@ "drizzle-kit": "^0.20.14", "facepaint": "^1.2.1", "gray-matter": "^4.0.3", - "next": "^14.2.0", + "next": "^15.5.4", "next-mdx-remote": "^4.4.1", - "next-runtime-env": "^3.2.2", + "next-runtime-env": "^3.3.0", "postgres": "^3.4.3", "react-tooltip": "^5.13.1", "twenty-ui": "workspace:*" }, "devDependencies": { - "@next/eslint-plugin-next": "^14.1.4", + "@next/eslint-plugin-next": "^15.5.4", "@types/facepaint": "^1.2.5", - "eslint-config-next": "^15.1.0" + "eslint-config-next": "^15.5.4" } } diff --git a/packages/twenty-website/src/app/(public)/contributors/[slug]/page.tsx b/packages/twenty-website/src/app/(public)/contributors/[slug]/page.tsx index 1b11ef2dcec..2bf7c29b622 100644 --- a/packages/twenty-website/src/app/(public)/contributors/[slug]/page.tsx +++ b/packages/twenty-website/src/app/(public)/contributors/[slug]/page.tsx @@ -13,27 +13,25 @@ import { PullRequests } from '@/app/_components/contributors/PullRequests'; import { ThankYou } from '@/app/_components/contributors/ThankYou'; import { Background } from '@/app/_components/oss-friends/Background'; -export function generateMetadata({ - params, -}: { - params: { slug: string }; -}): Metadata { +export async function generateMetadata(props: PageProps<'/contributors/[slug]'>): Promise { + const { slug } = await props.params; return { metadataBase: new URL(`https://twenty.com`), - title: 'Twenty - ' + params.slug, + title: 'Twenty - ' + slug, description: 'Explore the impactful contributions of ' + - params.slug + + slug + ' on the Twenty Github Repo. Discover their merged pull requests, ongoing work, and top ranking. Join and contribute to the #1 Open-Source CRM thriving community!', openGraph: { - images: [`https://twenty.com/api/contributors/${params.slug}/og.png`], + images: [`https://twenty.com/api/contributors/${slug}/og.png`], }, }; } -export default async function ({ params }: { params: { slug: string } }) { +export default async function Page(props: PageProps<'/contributors/[slug]'>) { + const { slug } = await props.params; try { - const contributorActivity = await getContributorActivity(params.slug); + const contributorActivity = await getContributorActivity(slug); if (contributorActivity) { const { firstContributionAt, diff --git a/packages/twenty-website/src/app/(public)/developers/[slug]/page.tsx b/packages/twenty-website/src/app/(public)/developers/[slug]/page.tsx index 663b9e64b87..18091875e4f 100644 --- a/packages/twenty-website/src/app/(public)/developers/[slug]/page.tsx +++ b/packages/twenty-website/src/app/(public)/developers/[slug]/page.tsx @@ -5,27 +5,21 @@ import DocsContent from '@/app/_components/docs/DocsContent'; import { fetchArticleFromSlug } from '@/shared-utils/fetchArticleFromSlug'; import { formatSlug } from '@/shared-utils/formatSlug'; -export async function generateMetadata({ - params, -}: { - params: { slug: string }; -}): Promise { - const formattedSlug = formatSlug(params.slug); +export async function generateMetadata(props: PageProps<'/developers/[slug]'>): Promise { + const { slug } = await props.params; + const formattedSlug = formatSlug(slug); const basePath = '/src/content/developers'; - const mainPost = await fetchArticleFromSlug(params.slug, basePath); + const mainPost = await fetchArticleFromSlug(slug, basePath); return { title: 'Twenty - ' + formattedSlug, description: mainPost?.itemInfo?.info, }; } -export default async function DocsSlug({ - params, -}: { - params: { slug: string }; -}) { +export default async function DocsSlug(props: PageProps<'/developers/[slug]'>) { + const { slug } = await props.params; const basePath = '/src/content/developers'; - const mainPost = await fetchArticleFromSlug(params.slug, basePath); + const mainPost = await fetchArticleFromSlug(slug, basePath); if (!mainPost) { notFound(); } diff --git a/packages/twenty-website/src/app/(public)/developers/page.tsx b/packages/twenty-website/src/app/(public)/developers/page.tsx index c2de5a6f7ad..c69b3500e09 100644 --- a/packages/twenty-website/src/app/(public)/developers/page.tsx +++ b/packages/twenty-website/src/app/(public)/developers/page.tsx @@ -6,7 +6,6 @@ export const metadata = { description: 'Twenty is a CRM designed to fit your unique business needs.', icons: '/images/core/logo.svg', }; - export default async function DocsHome() { const filePath = 'src/content/developers/'; const docsArticleCards = getDocsArticles(filePath); diff --git a/packages/twenty-website/src/app/(public)/developers/section/[folder]/[documentation]/page.tsx b/packages/twenty-website/src/app/(public)/developers/section/[folder]/[documentation]/page.tsx index f92f448c365..7c447df5513 100644 --- a/packages/twenty-website/src/app/(public)/developers/section/[folder]/[documentation]/page.tsx +++ b/packages/twenty-website/src/app/(public)/developers/section/[folder]/[documentation]/page.tsx @@ -7,27 +7,21 @@ import { formatSlug } from '@/shared-utils/formatSlug'; export const dynamic = 'force-dynamic'; -export async function generateMetadata({ - params, -}: { - params: { folder: string; documentation: string }; -}): Promise { - const basePath = `/src/content/developers/${params.folder}`; - const formattedSlug = formatSlug(params.documentation); - const mainPost = await fetchArticleFromSlug(params.documentation, basePath); +export async function generateMetadata(props: PageProps<'/developers/section/[folder]/[documentation]'>): Promise { + const { folder, documentation } = await props.params; + const basePath = `/src/content/developers/${folder}`; + const formattedSlug = formatSlug(documentation); + const mainPost = await fetchArticleFromSlug(documentation, basePath); return { title: 'Twenty - ' + formattedSlug, description: mainPost?.itemInfo?.info, }; } -export default async function DocsSlug({ - params, -}: { - params: { documentation: string; folder: string }; -}) { - const basePath = `/src/content/developers/${params.folder}`; - const mainPost = await fetchArticleFromSlug(params.documentation, basePath); +export default async function DocsSlug(props: PageProps<'/developers/section/[folder]/[documentation]'>) { + const { folder, documentation } = await props.params; + const basePath = `/src/content/developers/${folder}`; + const mainPost = await fetchArticleFromSlug(documentation, basePath); if (!mainPost) { notFound(); } diff --git a/packages/twenty-website/src/app/(public)/developers/section/[folder]/page.tsx b/packages/twenty-website/src/app/(public)/developers/section/[folder]/page.tsx index faa5b6c2a03..b3b8eff6a3e 100644 --- a/packages/twenty-website/src/app/(public)/developers/section/[folder]/page.tsx +++ b/packages/twenty-website/src/app/(public)/developers/section/[folder]/page.tsx @@ -6,26 +6,20 @@ import { getDocsArticles } from '@/content/user-guide/constants/getDocsArticles' import { fetchArticleFromSlug } from '@/shared-utils/fetchArticleFromSlug'; import { formatSlug } from '@/shared-utils/formatSlug'; -export async function generateMetadata({ - params, -}: { - params: { folder: string }; -}): Promise { - const formattedSlug = formatSlug(params.folder); +export async function generateMetadata(props: PageProps<'/developers/section/[folder]'>): Promise { + const { folder } = await props.params; + const formattedSlug = formatSlug(folder); const basePath = '/src/content/developers'; - const mainPost = await fetchArticleFromSlug(params.folder, basePath); + const mainPost = await fetchArticleFromSlug(folder, basePath); return { title: 'Twenty - ' + formattedSlug, description: mainPost?.itemInfo?.info, }; } -export default async function DocsSlug({ - params, -}: { - params: { folder: string }; -}) { - const filePath = `src/content/developers/${params.folder}/`; +export default async function DocsSlug(props: PageProps<'/developers/section/[folder]'>) { + const { folder } = await props.params; + const filePath = `src/content/developers/${folder}/`; const docsArticleCards = getDocsArticles(filePath); const isSection = true; const hasOnlyEmptySections = docsArticleCards.every( diff --git a/packages/twenty-website/src/app/(public)/twenty-ui/[slug]/page.tsx b/packages/twenty-website/src/app/(public)/twenty-ui/[slug]/page.tsx index 8e9a0551a07..ba531d4bc16 100644 --- a/packages/twenty-website/src/app/(public)/twenty-ui/[slug]/page.tsx +++ b/packages/twenty-website/src/app/(public)/twenty-ui/[slug]/page.tsx @@ -7,27 +7,21 @@ import { formatSlug } from '@/shared-utils/formatSlug'; export const dynamic = 'force-dynamic'; -export async function generateMetadata({ - params, -}: { - params: { slug: string }; -}): Promise { - const formattedSlug = formatSlug(params.slug); +export async function generateMetadata(props: PageProps<'/twenty-ui/[slug]'>): Promise { + const { slug } = await props.params; + const formattedSlug = formatSlug(slug); const basePath = '/src/content/twenty-ui'; - const mainPost = await fetchArticleFromSlug(params.slug, basePath); + const mainPost = await fetchArticleFromSlug(slug, basePath); return { title: 'Twenty - ' + formattedSlug, description: mainPost?.itemInfo?.info, }; } -export default async function TwentyUISlug({ - params, -}: { - params: { slug: string }; -}) { +export default async function TwentyUISlug(props: PageProps<'/twenty-ui/[slug]'>) { + const { slug } = await props.params; const basePath = '/src/content/twenty-ui'; - const mainPost = await fetchArticleFromSlug(params.slug, basePath); + const mainPost = await fetchArticleFromSlug(slug, basePath); if (!mainPost) { notFound(); } diff --git a/packages/twenty-website/src/app/(public)/twenty-ui/section/[folder]/[documentation]/page.tsx b/packages/twenty-website/src/app/(public)/twenty-ui/section/[folder]/[documentation]/page.tsx index 34de11bd50a..9d5893c9e75 100644 --- a/packages/twenty-website/src/app/(public)/twenty-ui/section/[folder]/[documentation]/page.tsx +++ b/packages/twenty-website/src/app/(public)/twenty-ui/section/[folder]/[documentation]/page.tsx @@ -7,27 +7,25 @@ import { formatSlug } from '@/shared-utils/formatSlug'; export const dynamic = 'force-dynamic'; -export async function generateMetadata({ - params, -}: { - params: { folder: string; documentation: string }; -}): Promise { - const basePath = `/src/content/twenty-ui/${params.folder}`; - const formattedSlug = formatSlug(params.documentation); - const mainPost = await fetchArticleFromSlug(params.documentation, basePath); +export async function generateMetadata( + props: PageProps<'/twenty-ui/section/[folder]/[documentation]'>, +): Promise { + const { folder, documentation } = await props.params; + const basePath = `/src/content/twenty-ui/${folder}`; + const formattedSlug = formatSlug(documentation); + const mainPost = await fetchArticleFromSlug(documentation, basePath); return { title: 'Twenty - ' + formattedSlug, description: mainPost?.itemInfo?.info, }; } -export default async function TwentyUISlug({ - params, -}: { - params: { documentation: string; folder: string }; -}) { - const basePath = `/src/content/twenty-ui/${params.folder}`; - const mainPost = await fetchArticleFromSlug(params.documentation, basePath); +export default async function TwentyUISlug( + props: PageProps<'/twenty-ui/section/[folder]/[documentation]'>, +) { + const { folder, documentation } = await props.params; + const basePath = `/src/content/twenty-ui/${folder}`; + const mainPost = await fetchArticleFromSlug(documentation, basePath); if (!mainPost) { notFound(); } diff --git a/packages/twenty-website/src/app/(public)/twenty-ui/section/[folder]/page.tsx b/packages/twenty-website/src/app/(public)/twenty-ui/section/[folder]/page.tsx index fc7f39acec5..0fd1459ebe0 100644 --- a/packages/twenty-website/src/app/(public)/twenty-ui/section/[folder]/page.tsx +++ b/packages/twenty-website/src/app/(public)/twenty-ui/section/[folder]/page.tsx @@ -8,26 +8,24 @@ import { formatSlug } from '@/shared-utils/formatSlug'; export const dynamic = 'force-dynamic'; -export async function generateMetadata({ - params, -}: { - params: { folder: string }; -}): Promise { - const formattedSlug = formatSlug(params.folder); +export async function generateMetadata( + props: PageProps<'/twenty-ui/section/[folder]'>, +): Promise { + const { folder } = await props.params; + const formattedSlug = formatSlug(folder); const basePath = '/src/content/twenty-ui'; - const mainPost = await fetchArticleFromSlug(params.folder, basePath); + const mainPost = await fetchArticleFromSlug(folder, basePath); return { title: 'Twenty - ' + formattedSlug, description: mainPost?.itemInfo?.info, }; } -export default async function TwentyUISlug({ - params, -}: { - params: { folder: string }; -}) { - const filePath = `src/content/twenty-ui/${params.folder}/`; +export default async function TwentyUISlug( + props: PageProps<'/twenty-ui/section/[folder]'>, +) { + const { folder } = await props.params; + const filePath = `src/content/twenty-ui/${folder}/`; const docsArticleCards = getDocsArticles(filePath); const isSection = true; const hasOnlyEmptySections = docsArticleCards.every( diff --git a/packages/twenty-website/src/app/(public)/user-guide/[slug]/page.tsx b/packages/twenty-website/src/app/(public)/user-guide/[slug]/page.tsx index 06b5ddceab4..9e391bdf171 100644 --- a/packages/twenty-website/src/app/(public)/user-guide/[slug]/page.tsx +++ b/packages/twenty-website/src/app/(public)/user-guide/[slug]/page.tsx @@ -5,27 +5,25 @@ import DocsContent from '@/app/_components/docs/DocsContent'; import { fetchArticleFromSlug } from '@/shared-utils/fetchArticleFromSlug'; import { formatSlug } from '@/shared-utils/formatSlug'; -export async function generateMetadata({ - params, -}: { - params: { slug: string }; -}): Promise { - const formattedSlug = formatSlug(params.slug); +export async function generateMetadata( + props: PageProps<'/user-guide/[slug]'>, +): Promise { + const { slug } = await props.params; + const formattedSlug = formatSlug(slug); const basePath = '/src/content/user-guide'; - const mainPost = await fetchArticleFromSlug(params.slug, basePath); + const mainPost = await fetchArticleFromSlug(slug, basePath); return { title: 'Twenty - ' + formattedSlug, description: mainPost?.itemInfo?.info, }; } -export default async function UserGuideSlug({ - params, -}: { - params: { slug: string }; -}) { +export default async function UserGuideSlug( + props: PageProps<'/user-guide/[slug]'>, +) { + const { slug } = await props.params; const basePath = '/src/content/user-guide'; - const mainPost = await fetchArticleFromSlug(params.slug, basePath); + const mainPost = await fetchArticleFromSlug(slug, basePath); if (!mainPost) { notFound(); } diff --git a/packages/twenty-website/src/app/(public)/user-guide/section/[folder]/[documentation]/page.tsx b/packages/twenty-website/src/app/(public)/user-guide/section/[folder]/[documentation]/page.tsx index efe68d9f705..2ecb54a30a3 100644 --- a/packages/twenty-website/src/app/(public)/user-guide/section/[folder]/[documentation]/page.tsx +++ b/packages/twenty-website/src/app/(public)/user-guide/section/[folder]/[documentation]/page.tsx @@ -5,27 +5,25 @@ import DocsContent from '@/app/_components/docs/DocsContent'; import { fetchArticleFromSlug } from '@/shared-utils/fetchArticleFromSlug'; import { formatSlug } from '@/shared-utils/formatSlug'; -export async function generateMetadata({ - params, -}: { - params: { folder: string; documentation: string }; -}): Promise { - const basePath = `/src/content/user-guide/${params.folder}`; - const formattedSlug = formatSlug(params.documentation); - const mainPost = await fetchArticleFromSlug(params.documentation, basePath); +export async function generateMetadata( + props: PageProps<'/user-guide/section/[folder]/[documentation]'>, +): Promise { + const { folder, documentation } = await props.params; + const basePath = `/src/content/user-guide/${folder}`; + const formattedSlug = formatSlug(documentation); + const mainPost = await fetchArticleFromSlug(documentation, basePath); return { title: 'Twenty - ' + formattedSlug, description: mainPost?.itemInfo?.info, }; } -export default async function UserGuideSlug({ - params, -}: { - params: { documentation: string; folder: string }; -}) { - const basePath = `/src/content/user-guide/${params.folder}`; - const mainPost = await fetchArticleFromSlug(params.documentation, basePath); +export default async function UserGuideSlug( + props: PageProps<'/user-guide/section/[folder]/[documentation]'>, +) { + const { folder, documentation } = await props.params; + const basePath = `/src/content/user-guide/${folder}`; + const mainPost = await fetchArticleFromSlug(documentation, basePath); if (!mainPost) { notFound(); } diff --git a/packages/twenty-website/src/app/(public)/user-guide/section/[folder]/page.tsx b/packages/twenty-website/src/app/(public)/user-guide/section/[folder]/page.tsx index a75fcf4af90..40d1dc0be50 100644 --- a/packages/twenty-website/src/app/(public)/user-guide/section/[folder]/page.tsx +++ b/packages/twenty-website/src/app/(public)/user-guide/section/[folder]/page.tsx @@ -8,26 +8,24 @@ import { formatSlug } from '@/shared-utils/formatSlug'; export const dynamic = 'force-dynamic'; -export async function generateMetadata({ - params, -}: { - params: { folder: string }; -}): Promise { - const formattedSlug = formatSlug(params.folder); +export async function generateMetadata( + props: PageProps<'/user-guide/section/[folder]'>, +): Promise { + const { folder } = await props.params; + const formattedSlug = formatSlug(folder); const basePath = '/src/content/user-guide'; - const mainPost = await fetchArticleFromSlug(params.folder, basePath); + const mainPost = await fetchArticleFromSlug(folder, basePath); return { title: 'Twenty - ' + formattedSlug, description: mainPost?.itemInfo?.info, }; } -export default async function UserGuideSlug({ - params, -}: { - params: { folder: string }; -}) { - const filePath = `src/content/user-guide/${params.folder}/`; +export default async function UserGuideSlug( + props: PageProps<'/user-guide/section/[folder]'>, +) { + const { folder } = await props.params; + const filePath = `src/content/user-guide/${folder}/`; const docsArticleCards = getDocsArticles(filePath); const isSection = true; const hasOnlyEmptySections = docsArticleCards.every( diff --git a/packages/twenty-website/src/app/emotion-root-style-registry.js b/packages/twenty-website/src/app/emotion-root-style-registry.tsx similarity index 89% rename from packages/twenty-website/src/app/emotion-root-style-registry.js rename to packages/twenty-website/src/app/emotion-root-style-registry.tsx index 3ecca2c6575..44eab80b900 100644 --- a/packages/twenty-website/src/app/emotion-root-style-registry.js +++ b/packages/twenty-website/src/app/emotion-root-style-registry.tsx @@ -5,12 +5,16 @@ import createCache from '@emotion/cache'; import { CacheProvider } from '@emotion/react'; import { useServerInsertedHTML } from 'next/navigation'; -export default function RootStyleRegistry({ children }) { +export default function RootStyleRegistry({ + children, +}: { + children: React.ReactNode; +}) { const [{ cache, flush }] = useState(() => { const cache = createCache({ key: 'emotion-cache' }); cache.compat = true; const prevInsert = cache.insert; - let inserted = []; + let inserted: Array = []; cache.insert = (...args) => { const serialized = args[1]; if (cache.inserted[serialized.name] === undefined) { diff --git a/packages/twenty-website/tsconfig.json b/packages/twenty-website/tsconfig.json index a477416c552..f9d72fad435 100644 --- a/packages/twenty-website/tsconfig.json +++ b/packages/twenty-website/tsconfig.json @@ -22,6 +22,8 @@ "@/*": ["./src/*"] } }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", "src/app/emotion-root-style-registry.js"], + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", + "src/app/emotion-root-style-registry" + ], "exclude": ["node_modules"] } diff --git a/yarn.lock b/yarn.lock index e9c40ab87b6..70eac6a5ff9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4175,6 +4175,15 @@ __metadata: languageName: node linkType: hard +"@emnapi/runtime@npm:^1.5.0": + version: 1.5.0 + resolution: "@emnapi/runtime@npm:1.5.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/a85c9fc4e3af49cbe41e5437e5be2551392a931910cd0a5b5d3572532786927810c9cc1db11b232ec8f9657b33d4e6f7c4f985f1a052917d7cd703b5b2a20faa + languageName: node + linkType: hard + "@emnapi/wasi-threads@npm:1.0.4": version: 1.0.4 resolution: "@emnapi/wasi-threads@npm:1.0.4" @@ -7187,6 +7196,13 @@ __metadata: languageName: node linkType: hard +"@img/colour@npm:^1.0.0": + version: 1.0.0 + resolution: "@img/colour@npm:1.0.0" + checksum: 10c0/02261719c1e0d7aa5a2d585981954f2ac126f0c432400aa1a01b925aa2c41417b7695da8544ee04fd29eba7ecea8eaf9b8bef06f19dc8faba78f94eeac40667d + languageName: node + linkType: hard + "@img/sharp-darwin-arm64@npm:0.33.5": version: 0.33.5 resolution: "@img/sharp-darwin-arm64@npm:0.33.5" @@ -7199,6 +7215,18 @@ __metadata: languageName: node linkType: hard +"@img/sharp-darwin-arm64@npm:0.34.4": + version: 0.34.4 + resolution: "@img/sharp-darwin-arm64@npm:0.34.4" + dependencies: + "@img/sharp-libvips-darwin-arm64": "npm:1.2.3" + dependenciesMeta: + "@img/sharp-libvips-darwin-arm64": + optional: true + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@img/sharp-darwin-x64@npm:0.33.5": version: 0.33.5 resolution: "@img/sharp-darwin-x64@npm:0.33.5" @@ -7211,6 +7239,18 @@ __metadata: languageName: node linkType: hard +"@img/sharp-darwin-x64@npm:0.34.4": + version: 0.34.4 + resolution: "@img/sharp-darwin-x64@npm:0.34.4" + dependencies: + "@img/sharp-libvips-darwin-x64": "npm:1.2.3" + dependenciesMeta: + "@img/sharp-libvips-darwin-x64": + optional: true + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@img/sharp-libvips-darwin-arm64@npm:1.0.4": version: 1.0.4 resolution: "@img/sharp-libvips-darwin-arm64@npm:1.0.4" @@ -7218,6 +7258,13 @@ __metadata: languageName: node linkType: hard +"@img/sharp-libvips-darwin-arm64@npm:1.2.3": + version: 1.2.3 + resolution: "@img/sharp-libvips-darwin-arm64@npm:1.2.3" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@img/sharp-libvips-darwin-x64@npm:1.0.4": version: 1.0.4 resolution: "@img/sharp-libvips-darwin-x64@npm:1.0.4" @@ -7225,6 +7272,13 @@ __metadata: languageName: node linkType: hard +"@img/sharp-libvips-darwin-x64@npm:1.2.3": + version: 1.2.3 + resolution: "@img/sharp-libvips-darwin-x64@npm:1.2.3" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@img/sharp-libvips-linux-arm64@npm:1.0.4": version: 1.0.4 resolution: "@img/sharp-libvips-linux-arm64@npm:1.0.4" @@ -7232,6 +7286,13 @@ __metadata: languageName: node linkType: hard +"@img/sharp-libvips-linux-arm64@npm:1.2.3": + version: 1.2.3 + resolution: "@img/sharp-libvips-linux-arm64@npm:1.2.3" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + "@img/sharp-libvips-linux-arm@npm:1.0.5": version: 1.0.5 resolution: "@img/sharp-libvips-linux-arm@npm:1.0.5" @@ -7239,6 +7300,20 @@ __metadata: languageName: node linkType: hard +"@img/sharp-libvips-linux-arm@npm:1.2.3": + version: 1.2.3 + resolution: "@img/sharp-libvips-linux-arm@npm:1.2.3" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-libvips-linux-ppc64@npm:1.2.3": + version: 1.2.3 + resolution: "@img/sharp-libvips-linux-ppc64@npm:1.2.3" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + "@img/sharp-libvips-linux-s390x@npm:1.0.4": version: 1.0.4 resolution: "@img/sharp-libvips-linux-s390x@npm:1.0.4" @@ -7246,6 +7321,13 @@ __metadata: languageName: node linkType: hard +"@img/sharp-libvips-linux-s390x@npm:1.2.3": + version: 1.2.3 + resolution: "@img/sharp-libvips-linux-s390x@npm:1.2.3" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + "@img/sharp-libvips-linux-x64@npm:1.0.4": version: 1.0.4 resolution: "@img/sharp-libvips-linux-x64@npm:1.0.4" @@ -7253,6 +7335,13 @@ __metadata: languageName: node linkType: hard +"@img/sharp-libvips-linux-x64@npm:1.2.3": + version: 1.2.3 + resolution: "@img/sharp-libvips-linux-x64@npm:1.2.3" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + "@img/sharp-libvips-linuxmusl-arm64@npm:1.0.4": version: 1.0.4 resolution: "@img/sharp-libvips-linuxmusl-arm64@npm:1.0.4" @@ -7260,6 +7349,13 @@ __metadata: languageName: node linkType: hard +"@img/sharp-libvips-linuxmusl-arm64@npm:1.2.3": + version: 1.2.3 + resolution: "@img/sharp-libvips-linuxmusl-arm64@npm:1.2.3" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + "@img/sharp-libvips-linuxmusl-x64@npm:1.0.4": version: 1.0.4 resolution: "@img/sharp-libvips-linuxmusl-x64@npm:1.0.4" @@ -7267,6 +7363,13 @@ __metadata: languageName: node linkType: hard +"@img/sharp-libvips-linuxmusl-x64@npm:1.2.3": + version: 1.2.3 + resolution: "@img/sharp-libvips-linuxmusl-x64@npm:1.2.3" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + "@img/sharp-linux-arm64@npm:0.33.5": version: 0.33.5 resolution: "@img/sharp-linux-arm64@npm:0.33.5" @@ -7279,6 +7382,18 @@ __metadata: languageName: node linkType: hard +"@img/sharp-linux-arm64@npm:0.34.4": + version: 0.34.4 + resolution: "@img/sharp-linux-arm64@npm:0.34.4" + dependencies: + "@img/sharp-libvips-linux-arm64": "npm:1.2.3" + dependenciesMeta: + "@img/sharp-libvips-linux-arm64": + optional: true + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + "@img/sharp-linux-arm@npm:0.33.5": version: 0.33.5 resolution: "@img/sharp-linux-arm@npm:0.33.5" @@ -7291,6 +7406,30 @@ __metadata: languageName: node linkType: hard +"@img/sharp-linux-arm@npm:0.34.4": + version: 0.34.4 + resolution: "@img/sharp-linux-arm@npm:0.34.4" + dependencies: + "@img/sharp-libvips-linux-arm": "npm:1.2.3" + dependenciesMeta: + "@img/sharp-libvips-linux-arm": + optional: true + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-linux-ppc64@npm:0.34.4": + version: 0.34.4 + resolution: "@img/sharp-linux-ppc64@npm:0.34.4" + dependencies: + "@img/sharp-libvips-linux-ppc64": "npm:1.2.3" + dependenciesMeta: + "@img/sharp-libvips-linux-ppc64": + optional: true + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + "@img/sharp-linux-s390x@npm:0.33.5": version: 0.33.5 resolution: "@img/sharp-linux-s390x@npm:0.33.5" @@ -7303,6 +7442,18 @@ __metadata: languageName: node linkType: hard +"@img/sharp-linux-s390x@npm:0.34.4": + version: 0.34.4 + resolution: "@img/sharp-linux-s390x@npm:0.34.4" + dependencies: + "@img/sharp-libvips-linux-s390x": "npm:1.2.3" + dependenciesMeta: + "@img/sharp-libvips-linux-s390x": + optional: true + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + "@img/sharp-linux-x64@npm:0.33.5": version: 0.33.5 resolution: "@img/sharp-linux-x64@npm:0.33.5" @@ -7315,6 +7466,18 @@ __metadata: languageName: node linkType: hard +"@img/sharp-linux-x64@npm:0.34.4": + version: 0.34.4 + resolution: "@img/sharp-linux-x64@npm:0.34.4" + dependencies: + "@img/sharp-libvips-linux-x64": "npm:1.2.3" + dependenciesMeta: + "@img/sharp-libvips-linux-x64": + optional: true + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + "@img/sharp-linuxmusl-arm64@npm:0.33.5": version: 0.33.5 resolution: "@img/sharp-linuxmusl-arm64@npm:0.33.5" @@ -7327,6 +7490,18 @@ __metadata: languageName: node linkType: hard +"@img/sharp-linuxmusl-arm64@npm:0.34.4": + version: 0.34.4 + resolution: "@img/sharp-linuxmusl-arm64@npm:0.34.4" + dependencies: + "@img/sharp-libvips-linuxmusl-arm64": "npm:1.2.3" + dependenciesMeta: + "@img/sharp-libvips-linuxmusl-arm64": + optional: true + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + "@img/sharp-linuxmusl-x64@npm:0.33.5": version: 0.33.5 resolution: "@img/sharp-linuxmusl-x64@npm:0.33.5" @@ -7339,6 +7514,18 @@ __metadata: languageName: node linkType: hard +"@img/sharp-linuxmusl-x64@npm:0.34.4": + version: 0.34.4 + resolution: "@img/sharp-linuxmusl-x64@npm:0.34.4" + dependencies: + "@img/sharp-libvips-linuxmusl-x64": "npm:1.2.3" + dependenciesMeta: + "@img/sharp-libvips-linuxmusl-x64": + optional: true + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + "@img/sharp-wasm32@npm:0.33.5": version: 0.33.5 resolution: "@img/sharp-wasm32@npm:0.33.5" @@ -7348,6 +7535,22 @@ __metadata: languageName: node linkType: hard +"@img/sharp-wasm32@npm:0.34.4": + version: 0.34.4 + resolution: "@img/sharp-wasm32@npm:0.34.4" + dependencies: + "@emnapi/runtime": "npm:^1.5.0" + conditions: cpu=wasm32 + languageName: node + linkType: hard + +"@img/sharp-win32-arm64@npm:0.34.4": + version: 0.34.4 + resolution: "@img/sharp-win32-arm64@npm:0.34.4" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@img/sharp-win32-ia32@npm:0.33.5": version: 0.33.5 resolution: "@img/sharp-win32-ia32@npm:0.33.5" @@ -7355,6 +7558,13 @@ __metadata: languageName: node linkType: hard +"@img/sharp-win32-ia32@npm:0.34.4": + version: 0.34.4 + resolution: "@img/sharp-win32-ia32@npm:0.34.4" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@img/sharp-win32-x64@npm:0.33.5": version: 0.33.5 resolution: "@img/sharp-win32-x64@npm:0.33.5" @@ -7362,6 +7572,13 @@ __metadata: languageName: node linkType: hard +"@img/sharp-win32-x64@npm:0.34.4": + version: 0.34.4 + resolution: "@img/sharp-win32-x64@npm:0.34.4" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@inquirer/checkbox@npm:^2.5.0": version: 2.5.0 resolution: "@inquirer/checkbox@npm:2.5.0" @@ -10211,21 +10428,19 @@ __metadata: languageName: node linkType: hard -"@next/eslint-plugin-next@npm:15.4.6": - version: 15.4.6 - resolution: "@next/eslint-plugin-next@npm:15.4.6" - dependencies: - fast-glob: "npm:3.3.1" - checksum: 10c0/5a1a216474882bdeedf2033e6cae52c3add92436a9f781e3b68dccc7b9f2d24373536d8fd2d934cc5535352d7ca17529281fb6f61859cec5bed6366ee9c372cc +"@next/env@npm:15.5.4": + version: 15.5.4 + resolution: "@next/env@npm:15.5.4" + checksum: 10c0/bcf043a353e601321e6d4fb190796d7f098a08007fe2039b6a6b384df641782abfaa8e1d1d9c85ab6987323979f4f75cd4fefd3fd17d2400b881541481bee474 languageName: node linkType: hard -"@next/eslint-plugin-next@npm:^14.1.4": - version: 14.2.5 - resolution: "@next/eslint-plugin-next@npm:14.2.5" +"@next/eslint-plugin-next@npm:15.5.4, @next/eslint-plugin-next@npm:^15.5.4": + version: 15.5.4 + resolution: "@next/eslint-plugin-next@npm:15.5.4" dependencies: - glob: "npm:10.3.10" - checksum: 10c0/13eefc2a17e37925ded8e43ae2446a73cbc5a23ade7a73c33adb75d3d2907ec75cedd8534f89a361ce8e63b5141d7e2d38aed40abd8b4eb3e7c21ba84f6bda8a + fast-glob: "npm:3.3.1" + checksum: 10c0/dc90be5e86d06d61b8b5b495ed2073981ef672f707016611b47af04f15fbd6fb7c7a209d773290370e06b6409cb32b5d02146d909b3e4960750869d994b55a7b languageName: node linkType: hard @@ -10243,6 +10458,13 @@ __metadata: languageName: node linkType: hard +"@next/swc-darwin-arm64@npm:15.5.4": + version: 15.5.4 + resolution: "@next/swc-darwin-arm64@npm:15.5.4" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@next/swc-darwin-x64@npm:14.2.31": version: 14.2.31 resolution: "@next/swc-darwin-x64@npm:14.2.31" @@ -10257,6 +10479,13 @@ __metadata: languageName: node linkType: hard +"@next/swc-darwin-x64@npm:15.5.4": + version: 15.5.4 + resolution: "@next/swc-darwin-x64@npm:15.5.4" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@next/swc-linux-arm64-gnu@npm:14.2.31": version: 14.2.31 resolution: "@next/swc-linux-arm64-gnu@npm:14.2.31" @@ -10271,6 +10500,13 @@ __metadata: languageName: node linkType: hard +"@next/swc-linux-arm64-gnu@npm:15.5.4": + version: 15.5.4 + resolution: "@next/swc-linux-arm64-gnu@npm:15.5.4" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + "@next/swc-linux-arm64-musl@npm:14.2.31": version: 14.2.31 resolution: "@next/swc-linux-arm64-musl@npm:14.2.31" @@ -10285,6 +10521,13 @@ __metadata: languageName: node linkType: hard +"@next/swc-linux-arm64-musl@npm:15.5.4": + version: 15.5.4 + resolution: "@next/swc-linux-arm64-musl@npm:15.5.4" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + "@next/swc-linux-x64-gnu@npm:14.2.31": version: 14.2.31 resolution: "@next/swc-linux-x64-gnu@npm:14.2.31" @@ -10299,6 +10542,13 @@ __metadata: languageName: node linkType: hard +"@next/swc-linux-x64-gnu@npm:15.5.4": + version: 15.5.4 + resolution: "@next/swc-linux-x64-gnu@npm:15.5.4" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + "@next/swc-linux-x64-musl@npm:14.2.31": version: 14.2.31 resolution: "@next/swc-linux-x64-musl@npm:14.2.31" @@ -10313,6 +10563,13 @@ __metadata: languageName: node linkType: hard +"@next/swc-linux-x64-musl@npm:15.5.4": + version: 15.5.4 + resolution: "@next/swc-linux-x64-musl@npm:15.5.4" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + "@next/swc-win32-arm64-msvc@npm:14.2.31": version: 14.2.31 resolution: "@next/swc-win32-arm64-msvc@npm:14.2.31" @@ -10327,6 +10584,13 @@ __metadata: languageName: node linkType: hard +"@next/swc-win32-arm64-msvc@npm:15.5.4": + version: 15.5.4 + resolution: "@next/swc-win32-arm64-msvc@npm:15.5.4" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@next/swc-win32-ia32-msvc@npm:14.2.31": version: 14.2.31 resolution: "@next/swc-win32-ia32-msvc@npm:14.2.31" @@ -10348,6 +10612,13 @@ __metadata: languageName: node linkType: hard +"@next/swc-win32-x64-msvc@npm:15.5.4": + version: 15.5.4 + resolution: "@next/swc-win32-x64-msvc@npm:15.5.4" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@nivo/annotations@npm:0.99.0": version: 0.99.0 resolution: "@nivo/annotations@npm:0.99.0" @@ -30252,6 +30523,13 @@ __metadata: languageName: node linkType: hard +"detect-libc@npm:^2.1.0": + version: 2.1.2 + resolution: "detect-libc@npm:2.1.2" + checksum: 10c0/acc675c29a5649fa1fb6e255f993b8ee829e510b6b56b0910666949c80c364738833417d0edb5f90e4e46be17228b0f2b66a010513984e18b15deeeac49369c4 + languageName: node + linkType: hard + "detect-newline@npm:^3.0.0, detect-newline@npm:^3.1.0": version: 3.1.0 resolution: "detect-newline@npm:3.1.0" @@ -31950,11 +32228,11 @@ __metadata: languageName: node linkType: hard -"eslint-config-next@npm:^15.1.0": - version: 15.4.6 - resolution: "eslint-config-next@npm:15.4.6" +"eslint-config-next@npm:^15.5.4": + version: 15.5.4 + resolution: "eslint-config-next@npm:15.5.4" dependencies: - "@next/eslint-plugin-next": "npm:15.4.6" + "@next/eslint-plugin-next": "npm:15.5.4" "@rushstack/eslint-patch": "npm:^1.10.3" "@typescript-eslint/eslint-plugin": "npm:^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0" "@typescript-eslint/parser": "npm:^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0" @@ -31970,7 +32248,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/06d139af13a03d196509a905375730280f928e9609d79934d8be49126899739580117a28473ba4fbaad47a3dfd6b0623c1cd5b73c9f3be910bcae4ff03d5a340 + checksum: 10c0/5e2065ca17f16a85fdde7791b593890f8180e9c8cba7ecff12248d76afdb8f3de2c1f6f0440ac54d9fd0d2e86dbddb968bc263e77f663edaa6cc30b2a8c43b1f languageName: node linkType: hard @@ -43283,16 +43561,16 @@ __metadata: languageName: node linkType: hard -"next-runtime-env@npm:^3.2.2": - version: 3.2.2 - resolution: "next-runtime-env@npm:3.2.2" +"next-runtime-env@npm:^3.3.0": + version: 3.3.0 + resolution: "next-runtime-env@npm:3.3.0" dependencies: next: "npm:^14" react: "npm:^18" peerDependencies: next: ^14 react: ^18 - checksum: 10c0/9ac2649fd765b82f340af5d77083f851a4e865acc9e32e9df092ba06cf5f4066b94ee7a3994677ef362d59802457f5becad8d49f3c9a75e77b68179e65c5ecee + checksum: 10c0/7e59dfd138badc7925cd3f42ff826d7121f8e53399957f61906d1e10957a855b1f21f750984431cb448c9371f400170898e5e3125beef58ac7e9d1b74e073a87 languageName: node linkType: hard @@ -43364,7 +43642,7 @@ __metadata: languageName: node linkType: hard -"next@npm:^14, next@npm:^14.2.0": +"next@npm:^14": version: 14.2.31 resolution: "next@npm:14.2.31" dependencies: @@ -43422,6 +43700,65 @@ __metadata: languageName: node linkType: hard +"next@npm:^15.5.4": + version: 15.5.4 + resolution: "next@npm:15.5.4" + dependencies: + "@next/env": "npm:15.5.4" + "@next/swc-darwin-arm64": "npm:15.5.4" + "@next/swc-darwin-x64": "npm:15.5.4" + "@next/swc-linux-arm64-gnu": "npm:15.5.4" + "@next/swc-linux-arm64-musl": "npm:15.5.4" + "@next/swc-linux-x64-gnu": "npm:15.5.4" + "@next/swc-linux-x64-musl": "npm:15.5.4" + "@next/swc-win32-arm64-msvc": "npm:15.5.4" + "@next/swc-win32-x64-msvc": "npm:15.5.4" + "@swc/helpers": "npm:0.5.15" + caniuse-lite: "npm:^1.0.30001579" + postcss: "npm:8.4.31" + sharp: "npm:^0.34.3" + styled-jsx: "npm:5.1.6" + peerDependencies: + "@opentelemetry/api": ^1.1.0 + "@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 + sass: ^1.3.0 + dependenciesMeta: + "@next/swc-darwin-arm64": + optional: true + "@next/swc-darwin-x64": + optional: true + "@next/swc-linux-arm64-gnu": + optional: true + "@next/swc-linux-arm64-musl": + optional: true + "@next/swc-linux-x64-gnu": + optional: true + "@next/swc-linux-x64-musl": + optional: true + "@next/swc-win32-arm64-msvc": + optional: true + "@next/swc-win32-x64-msvc": + optional: true + sharp: + optional: true + peerDependenciesMeta: + "@opentelemetry/api": + optional: true + "@playwright/test": + optional: true + babel-plugin-react-compiler: + optional: true + sass: + optional: true + bin: + next: dist/bin/next + checksum: 10c0/3b5f04ed86d863bd5942b8ffb1ba8343da707579e720225c262d833d1b36c0daa0dbc3e6b24192280d0e02b066ac006a2b78673bbced19ca829de09bb4a2d73c + languageName: node + linkType: hard + "nice-napi@npm:^1.0.2": version: 1.0.2 resolution: "nice-napi@npm:1.0.2" @@ -49617,6 +49954,84 @@ __metadata: languageName: node linkType: hard +"sharp@npm:^0.34.3": + version: 0.34.4 + resolution: "sharp@npm:0.34.4" + dependencies: + "@img/colour": "npm:^1.0.0" + "@img/sharp-darwin-arm64": "npm:0.34.4" + "@img/sharp-darwin-x64": "npm:0.34.4" + "@img/sharp-libvips-darwin-arm64": "npm:1.2.3" + "@img/sharp-libvips-darwin-x64": "npm:1.2.3" + "@img/sharp-libvips-linux-arm": "npm:1.2.3" + "@img/sharp-libvips-linux-arm64": "npm:1.2.3" + "@img/sharp-libvips-linux-ppc64": "npm:1.2.3" + "@img/sharp-libvips-linux-s390x": "npm:1.2.3" + "@img/sharp-libvips-linux-x64": "npm:1.2.3" + "@img/sharp-libvips-linuxmusl-arm64": "npm:1.2.3" + "@img/sharp-libvips-linuxmusl-x64": "npm:1.2.3" + "@img/sharp-linux-arm": "npm:0.34.4" + "@img/sharp-linux-arm64": "npm:0.34.4" + "@img/sharp-linux-ppc64": "npm:0.34.4" + "@img/sharp-linux-s390x": "npm:0.34.4" + "@img/sharp-linux-x64": "npm:0.34.4" + "@img/sharp-linuxmusl-arm64": "npm:0.34.4" + "@img/sharp-linuxmusl-x64": "npm:0.34.4" + "@img/sharp-wasm32": "npm:0.34.4" + "@img/sharp-win32-arm64": "npm:0.34.4" + "@img/sharp-win32-ia32": "npm:0.34.4" + "@img/sharp-win32-x64": "npm:0.34.4" + detect-libc: "npm:^2.1.0" + semver: "npm:^7.7.2" + dependenciesMeta: + "@img/sharp-darwin-arm64": + optional: true + "@img/sharp-darwin-x64": + optional: true + "@img/sharp-libvips-darwin-arm64": + optional: true + "@img/sharp-libvips-darwin-x64": + optional: true + "@img/sharp-libvips-linux-arm": + optional: true + "@img/sharp-libvips-linux-arm64": + optional: true + "@img/sharp-libvips-linux-ppc64": + optional: true + "@img/sharp-libvips-linux-s390x": + optional: true + "@img/sharp-libvips-linux-x64": + optional: true + "@img/sharp-libvips-linuxmusl-arm64": + optional: true + "@img/sharp-libvips-linuxmusl-x64": + optional: true + "@img/sharp-linux-arm": + optional: true + "@img/sharp-linux-arm64": + optional: true + "@img/sharp-linux-ppc64": + optional: true + "@img/sharp-linux-s390x": + optional: true + "@img/sharp-linux-x64": + optional: true + "@img/sharp-linuxmusl-arm64": + optional: true + "@img/sharp-linuxmusl-x64": + optional: true + "@img/sharp-wasm32": + optional: true + "@img/sharp-win32-arm64": + optional: true + "@img/sharp-win32-ia32": + optional: true + "@img/sharp-win32-x64": + optional: true + checksum: 10c0/c2d8afab823a53bb720c42aaddde2031d7a1e25b7f1bd123e342b6b77ffce5e2730017fd52282cadf6109b325bc16f35be4771caa040cf2855978b709be35f05 + languageName: node + linkType: hard + "shasum-object@npm:^1.0.0": version: 1.0.0 resolution: "shasum-object@npm:1.0.0" @@ -52839,17 +53254,17 @@ __metadata: "@keystatic/core": "npm:^0.5.45" "@keystatic/next": "npm:^5.0.3" "@markdoc/markdoc": "npm:^0.5.1" - "@next/eslint-plugin-next": "npm:^14.1.4" + "@next/eslint-plugin-next": "npm:^15.5.4" "@nivo/calendar": "npm:^0.99.0" "@types/facepaint": "npm:^1.2.5" date-fns: "npm:^2.30.0" drizzle-kit: "npm:^0.20.14" - eslint-config-next: "npm:^15.1.0" + eslint-config-next: "npm:^15.5.4" facepaint: "npm:^1.2.1" gray-matter: "npm:^4.0.3" - next: "npm:^14.2.0" + next: "npm:^15.5.4" next-mdx-remote: "npm:^4.4.1" - next-runtime-env: "npm:^3.2.2" + next-runtime-env: "npm:^3.3.0" postgres: "npm:^3.4.3" react-tooltip: "npm:^5.13.1" twenty-ui: "workspace:*"