diff --git a/apps/www/_blog/2025-09-30-postgrest-13-release.mdx b/apps/www/_blog/2025-09-30-postgrest-13-release.mdx new file mode 100644 index 00000000000..d729893ebfc --- /dev/null +++ b/apps/www/_blog/2025-09-30-postgrest-13-release.mdx @@ -0,0 +1,204 @@ +--- +title: PostgREST 13 +description: New features and changes in PostgREST version 13. +author: steve_chavez,laurenceisla,avallete +image: 2025-09-30-postgrest-13-release/postgrest-13-release.png +thumb: 2025-09-30-postgrest-13-release/postgrest-13-release.png +categories: + - postgres +tags: + - postgres + - postgrest + - release-notes +date: '2025-09-30' +--- + +PostgREST 13 is out! It comes with API and Observabilty improvements. In this post, we'll see what's new. + +## Spread To-Many relationships + +This new feature allows you to represent one-to-many and many-to-many relationships as flat JSON arrays. + +For example, if you have database similar to IMDB and you’d like to represent it as a hierarchical JSON structure for your frontend, like so: + +```json +[ + { + "title": "The Shawshank Redemption", + "actors": ["Tim Robbins", "Morgan Freeman"], + "genres": ["Drama"] + }, + { + "title": "The Godfather", + "actors": ["Marlon Brando", "Al Pacino"], + "genres": ["Drama", "Crime"] + }, + { + "title": "The Dark Knight", + "actors": ["Christian Bale", "Heath Ledger"], + "genres": ["Drama", "Crime", "Action"] + } +] +``` + +You can now do it this way: + +<$CodeTabs> + +```js name=JavaScript +const { data, error } = await supabase.from('titles').select(` + title:primary_title, + ...people(actors:primary_name), + ...genres(genres:name) +`) +``` + +```bash name=Bash +curl --get 'https:///titles' + -d "select=title:primary_title,...people(actors:primary_name),...genres(genres:name)" + -H "Authorization: Bearer " +``` + +```swift name=Swift +try await supabase.from("titles").select( +""" + title:primary_title, + ...people(actors:primary_name), + ...genres(genres:name) +""") +``` + + + +The above `...people` is “spreading” the many-to-many relationship between `titles` and `people`, forming a flat array only consisting of the `primary_name` column. This flat array is then renamed to `actors`. We do a similar process for `genres` , which also forms a many-to-many relationship with `people`. + +You can see the data model used for this example on this [gist](https://gist.github.com/steve-chavez/93f7ae04b4323e1952710af7129b32cf). There are more details about this feature on the [official docs](https://docs.postgrest.org/en/v13/references/api/resource_embedding.html#spread-to-many-relationships). + +## Automatic tsvector convertion + +Previously you could only use the full text search operator on `tsvector` columns, now you can do it on `text` and `json/jsonb` columns too: + +<$CodeTabs> + +```js name=JavaScript +const { data, error } = await supabase.from('titles').textSearch('primary_name', `'god' & 'father'`) +``` + +```bash name=Bash +curl --get 'https:///titles' + -d "primary_name=fts.'god'%26'father" + -H "Authorization: Bearer " +``` + +```swift name=Swift +try await supabase + .from("titles") + .fts("primary_name",value: "'god' & 'father'") +``` + + + +This works because `text` and `json/jsonb` columns will be automatically converted with `to_tsvector`. + +To ensure this operation is fast, add an index: + +```sql +create index idx_titles on people +using gin (to_tsvector('english', primary_name)); +``` + +## Max Affected + +You can now limit to the amount of rows affected by an `update` or `delete` operation with `maxAffected`: + +<$CodeTabs> + +```js name=JavaScript +const { data, error } = await supabase + .from('people') + .update({ primary_name: 'Marlon Brando Jr.' }) + .eq('nconst', 'nm0000008') + .maxAffected(1) + +// This is available starting from supabase-js version 2.56.0 +``` + +```bash name=Bash +curl -X PATCH 'https:///people' \ + -d "nconst=eq.nm0000008" \ + -H "Authorization: Bearer " \ + -H "Prefer: handling=strict, max-affected=1" \ + -H "Content-Type: application/json" \ + -d @- < + +If the rows affected by the operation surpass the limit in `maxAffected`, an error will be thrown. + +This also works with `rpc()`, given that it modifies rows and returns the affected rows. More on details on the [official docs](https://docs.postgrest.org/en/v13/references/api/preferences.html#max-affected). + +## Content-Length header + +For observability, you can now verify the response body size in bytes in the `Content-Length` header. + +```bash +HTTP/1.1 200 OK +Content-Length: 104 +Content-Location: /items +``` + +This helps in cases where you want to know which requests consume the most traffic to avoid exceeding egress limits. + +## Proxy-Status header + +The PostgREST error code is now present in the `Proxy-Status` header. + +```bash +HTTP/1.1 406 Not Acceptable +Proxy-Status: PostgREST; error=PGRST116 +``` + +You can check the `Proxy-Status` and `Content-Length` headers in the Supabase Logs Explorer. + +## Breaking Changes + +### JWT `kid` validation + +PostgREST now validates the JWT `kid` claim. If your JWT contains a Key ID (`kid`), it will try to match this with one of the `kid`'s in the configured JSON Web Key Set. Check the [official docs](https://docs.postgrest.org/en/v13/references/auth.html#jwk-kid-validation) for more details. + +If you use Supabase Auth or the CLI to create JSON Web Keys, you shouldn’t worry about this change as both systems will ensure `kid`'s are present in the JSON Web Key Set. + +For users that integrate with other Auth systems, make sure that both your JWT and JWKS follow the above rules. + +### Schema validation in PostgREST search path + +The schemas inside `db-schemas` and `db-extra-search-path` are now validated. This means you cannot put a nonexistent schema there, if you do PostgREST will fail with an error message. + +If you drop a schema during a migration, you should make sure this is synced with the PostgREST search path, which is possible thanks to postgres transactional DDL: + +```sql +begin; +drop schema old_schema; +alter role authenticator set pgrst.db_schemas = 'public, pg_graphql, others'; -- make sure old_schema is not present here +commit; +``` + +## Try it out + +PostgREST v13 is now available for all new projects on the Supabase platform, old projects can upgrade to get this new version. + +You can look at the full changelog on the [release notes](https://github.com/PostgREST/postgrest/releases/tag/v13.0.0). diff --git a/apps/www/app/blog/[slug]/page.tsx b/apps/www/app/blog/[slug]/page.tsx index dd3ce29f66f..d5f50513a30 100644 --- a/apps/www/app/blog/[slug]/page.tsx +++ b/apps/www/app/blog/[slug]/page.tsx @@ -39,7 +39,7 @@ async function getCMSPostFromAPI( const response = await fetch(url.toString(), fetchOptions) if (!response.ok) { - console.error('[getCMSPostFromAPI] Non-OK response:', response.status) + console.warn('[getCMSPostFromAPI] Non-OK response:', response.status) return null } @@ -47,7 +47,7 @@ async function getCMSPostFromAPI( return data.success ? data.post : null } catch (error) { - console.error('[getCMSPostFromAPI] Error:', error) + console.warn('[getCMSPostFromAPI] Error:', error) return null } } @@ -295,7 +295,7 @@ export default async function BlogPostPage({ params }: { params: Promise try { processedContent = await processCMSContent(cmsPost.richContent || cmsPost.content, tocDepth) } catch (error) { - console.error('Error processing CMS content, falling back to legacy processing:', error) + console.warn('Error processing CMS content, falling back to legacy processing:', error) // Fallback to legacy processing const mdxSource = await mdxSerialize(cmsPost.content || '', { tocDepth }) processedContent = { diff --git a/apps/www/components/CodeBlock/CodeBlock.tsx b/apps/www/components/CodeBlock/CodeBlock.tsx index 7e333ab0d4b..e411aec300f 100644 --- a/apps/www/components/CodeBlock/CodeBlock.tsx +++ b/apps/www/components/CodeBlock/CodeBlock.tsx @@ -13,9 +13,10 @@ import sql from 'react-syntax-highlighter/dist/cjs/languages/hljs/sql' import yaml from 'react-syntax-highlighter/dist/cjs/languages/hljs/yaml' import json from 'react-syntax-highlighter/dist/cjs/languages/hljs/json' import { Button, cn } from 'ui' -import monokaiCustomTheme from './CodeBlock.utils' +import monokaiCustomTheme, { codeHikeTheme } from './CodeBlock.utils' export type LANG = 'js' | 'sql' | 'py' | 'bash' | 'ts' | 'tsx' | 'kotlin' | 'yaml' | 'json' + export interface CodeBlockProps { lang: LANG startingLineNumber?: number @@ -25,11 +26,13 @@ export interface CodeBlockProps { children?: string size?: 'small' | 'medium' | 'large' background?: string + filename?: string + theme?: 'monokai' | 'code-hike' } function CodeBlock(props: CodeBlockProps) { const { resolvedTheme } = useTheme() - const isDarkTheme = resolvedTheme?.includes('dark')! + const isDarkTheme = resolvedTheme?.includes('dark') ?? false const [copied, setCopied] = useState(false) const [mounted, setMounted] = useState(false) @@ -51,6 +54,8 @@ function CodeBlock(props: CodeBlockProps) { }, 1000) } + const isCodeHikeTheme = props.theme === 'code-hike' + let lang = props.lang ? props.lang : props.className @@ -111,7 +116,15 @@ function CodeBlock(props: CodeBlockProps) { {/* @ts-ignore */} diff --git a/apps/www/components/CodeBlock/CodeBlock.utils.js b/apps/www/components/CodeBlock/CodeBlock.utils.js index 7eea1da69ce..4a3da382c65 100644 --- a/apps/www/components/CodeBlock/CodeBlock.utils.js +++ b/apps/www/components/CodeBlock/CodeBlock.utils.js @@ -229,4 +229,237 @@ const monokaiCustomTheme = { }, } +// CodeHike theme based on the colors from code-hike.scss +const codeHikeTheme = { + dark: { + hljs: { + display: 'block', + overflowX: 'auto', + padding: '0.5em', + background: '#2a2929', // --ch-16 dark + color: '#f8f8f2', // --ch-4 + }, + 'hljs-tag': { + color: '#79c0ff', // --ch-2 + }, + 'hljs-keyword': { + color: '#79c0ff', // --ch-2 + fontWeight: 'normal', + }, + 'hljs-selector-tag': { + color: '#79c0ff', // --ch-2 + fontWeight: 'normal', + }, + 'hljs-literal': { + color: '#79c0ff', // --ch-2 + fontWeight: 'normal', + }, + 'hljs-strong': { + color: '#79c0ff', // --ch-2 + }, + 'hljs-name': { + color: '#79c0ff', // --ch-2 + }, + 'hljs-code': { + color: '#569cd6', // --ch-7 + }, + 'hljs-class .hljs-title': { + color: '#8b949e', // --ch-1 + }, + 'hljs-attribute': { + color: '#bda4ff', // --ch-5 + }, + 'hljs-symbol': { + color: '#bda4ff', // --ch-5 + }, + 'hljs-regexp': { + color: '#bda4ff', // --ch-5 + }, + 'hljs-link': { + color: '#bda4ff', // --ch-5 + }, + 'hljs-string': { + color: '#ffcda1', // --ch-3 + }, + 'hljs-bullet': { + color: '#ffcda1', // --ch-3 + }, + 'hljs-subst': { + color: '#ffcda1', // --ch-3 + }, + 'hljs-title': { + color: '#ffcda1', // --ch-3 + fontWeight: 'normal', + }, + 'hljs-section': { + color: '#ffcda1', // --ch-3 + fontWeight: 'normal', + }, + 'hljs-emphasis': { + color: '#ffcda1', // --ch-3 + }, + 'hljs-type': { + color: '#ffcda1', // --ch-3 + fontWeight: 'normal', + }, + 'hljs-built_in': { + color: '#ffcda1', // --ch-3 + }, + 'hljs-builtin-name': { + color: '#ffcda1', // --ch-3 + }, + 'hljs-selector-attr': { + color: '#ffcda1', // --ch-3 + }, + 'hljs-selector-pseudo': { + color: '#ffcda1', // --ch-3 + }, + 'hljs-addition': { + color: '#ffcda1', // --ch-3 + }, + 'hljs-variable': { + color: '#ffcda1', // --ch-3 + }, + 'hljs-template-tag': { + color: '#ffcda1', // --ch-3 + }, + 'hljs-template-variable': { + color: '#ffcda1', // --ch-3 + }, + 'hljs-comment': { + color: '#8b949e', // --ch-1 + }, + 'hljs-quote': { + color: '#8b949e', // --ch-1 + }, + 'hljs-deletion': { + color: '#8b949e', // --ch-1 + }, + 'hljs-meta': { + color: '#8b949e', // --ch-1 + }, + 'hljs-doctag': { + fontWeight: 'normal', + }, + 'hljs-selector-id': { + fontWeight: 'normal', + }, + }, + light: { + hljs: { + display: 'block', + overflowX: 'auto', + padding: '0.5em', + background: '#eeeeee', // --ch-16 light + color: '#24292f', // --ch-4 + }, + 'hljs-tag': { + color: '#0550ae', // --ch-2 + }, + 'hljs-keyword': { + color: '#0550ae', // --ch-2 + fontWeight: 'normal', + }, + 'hljs-selector-tag': { + color: '#0550ae', // --ch-2 + fontWeight: 'normal', + }, + 'hljs-literal': { + color: '#0550ae', // --ch-2 + fontWeight: 'normal', + }, + 'hljs-strong': { + color: '#0550ae', // --ch-2 + }, + 'hljs-name': { + color: '#0550ae', // --ch-2 + }, + 'hljs-code': { + color: '#cf222e', // --ch-7 + }, + 'hljs-class .hljs-title': { + color: '#6e7781', // --ch-1 + }, + 'hljs-attribute': { + color: '#8250df', // --ch-5 + }, + 'hljs-symbol': { + color: '#8250df', // --ch-5 + }, + 'hljs-regexp': { + color: '#8250df', // --ch-5 + }, + 'hljs-link': { + color: '#8250df', // --ch-5 + }, + 'hljs-string': { + color: '#953800', // --ch-3 + }, + 'hljs-bullet': { + color: '#953800', // --ch-3 + }, + 'hljs-subst': { + color: '#953800', // --ch-3 + }, + 'hljs-title': { + color: '#953800', // --ch-3 + fontWeight: 'normal', + }, + 'hljs-section': { + color: '#953800', // --ch-3 + fontWeight: 'normal', + }, + 'hljs-emphasis': { + color: '#953800', // --ch-3 + }, + 'hljs-type': { + color: '#953800', // --ch-3 + fontWeight: 'normal', + }, + 'hljs-built_in': { + color: '#953800', // --ch-3 + }, + 'hljs-builtin-name': { + color: '#953800', // --ch-3 + }, + 'hljs-selector-attr': { + color: '#953800', // --ch-3 + }, + 'hljs-selector-pseudo': { + color: '#953800', // --ch-3 + }, + 'hljs-addition': { + color: '#953800', // --ch-3 + }, + 'hljs-variable': { + color: '#953800', // --ch-3 + }, + 'hljs-template-tag': { + color: '#953800', // --ch-3 + }, + 'hljs-template-variable': { + color: '#953800', // --ch-3 + }, + 'hljs-comment': { + color: '#6e7781', // --ch-1 + }, + 'hljs-quote': { + color: '#6e7781', // --ch-1 + }, + 'hljs-deletion': { + color: '#6e7781', // --ch-1 + }, + 'hljs-meta': { + color: '#6e7781', // --ch-1 + }, + 'hljs-doctag': { + fontWeight: 'normal', + }, + 'hljs-selector-id': { + fontWeight: 'normal', + }, + }, +} + +export { codeHikeTheme } export default monokaiCustomTheme diff --git a/apps/www/components/CodeTabs/CodeTabs.components.tsx b/apps/www/components/CodeTabs/CodeTabs.components.tsx new file mode 100644 index 00000000000..b15f0d9ba74 --- /dev/null +++ b/apps/www/components/CodeTabs/CodeTabs.components.tsx @@ -0,0 +1,21 @@ +import type { PropsWithChildren } from 'react' + +import { cn } from 'ui' + +export function NamedCodeBlock({ name, children }: PropsWithChildren<{ name: string }>) { + return ( +
+
+ {name} +
+ {children} +
+ ) +} diff --git a/apps/www/components/CodeTabs/index.ts b/apps/www/components/CodeTabs/index.ts new file mode 100644 index 00000000000..3366febfa06 --- /dev/null +++ b/apps/www/components/CodeTabs/index.ts @@ -0,0 +1,2 @@ +export { NamedCodeBlock } from './CodeTabs.components' +export { preprocessMdxWithCodeTabs } from './utils' diff --git a/apps/www/components/CodeTabs/simple-transform.ts b/apps/www/components/CodeTabs/simple-transform.ts new file mode 100644 index 00000000000..8b85b9fb042 --- /dev/null +++ b/apps/www/components/CodeTabs/simple-transform.ts @@ -0,0 +1,48 @@ +/** + * Simple string-based transformation for CodeTabs + * This avoids the complex AST manipulation that's causing issues + */ + +export function transformCodeTabs(mdx: string): string { + // Pattern to match <$CodeTabs>... blocks + const codeTabsPattern = /<\$CodeTabs>([\s\S]*?)<\/\$CodeTabs>/g + + return mdx.replace(codeTabsPattern, (match, content) => { + // Extract code blocks from the content + const codeBlockPattern = /```(\w+)(?:\s+name=([^\s]+))?\s*\n([\s\S]*?)\n```/g + const codeBlocks: Array<{ lang: string; name?: string; content: string }> = [] + + let blockMatch: RegExpExecArray | null + // biome-ignore lint/suspicious/noAssignInExpressions: required for regex loop + while ((blockMatch = codeBlockPattern.exec(content)) !== null) { + const [, lang, name, blockContent] = blockMatch + codeBlocks.push({ + lang, + name: name || `${lang}.${lang === 'bash' ? 'sh' : lang}`, + content: blockContent.trim(), + }) + } + + if (codeBlocks.length === 0) { + return match // Return original if no code blocks found + } + + // Generate the Tabs structure + const tabPanels = codeBlocks + .map( + (block) => ` + + +\`\`\`${block.lang} +${block.content} +\`\`\` + + ` + ) + .join('') + + return ` +${tabPanels} +` + }) +} diff --git a/apps/www/components/CodeTabs/utils.ts b/apps/www/components/CodeTabs/utils.ts new file mode 100644 index 00000000000..e5befcfc12e --- /dev/null +++ b/apps/www/components/CodeTabs/utils.ts @@ -0,0 +1,13 @@ +import { transformCodeTabs } from './simple-transform' + +export function preprocessMdxWithCodeTabs(mdx: string) { + try { + // Use simple string-based transformation + const transformed = transformCodeTabs(mdx) + return Promise.resolve(transformed) + } catch (error) { + console.error('preprocessMdxWithCodeTabs error:', error) + // Fallback to returning the original MDX + return Promise.resolve(mdx) + } +} diff --git a/apps/www/components/Tabs/Tabs.tsx b/apps/www/components/Tabs/Tabs.tsx new file mode 100644 index 00000000000..4811f9fca94 --- /dev/null +++ b/apps/www/components/Tabs/Tabs.tsx @@ -0,0 +1,77 @@ +'use client' + +import { useState, useEffect } from 'react' +import { cn, Tabs_Shadcn_, TabsList_Shadcn_, TabsTrigger_Shadcn_, TabsContent_Shadcn_ } from 'ui' + +export interface TabsProps { + children: React.ReactNode + className?: string + defaultActiveId?: string + listClassNames?: string +} + +export interface TabPanelProps { + children: React.ReactNode + id: string + label: string + className?: string +} + +function Tabs({ children, className, defaultActiveId, listClassNames }: TabsProps) { + const [mounted, setMounted] = useState(false) + const [activeTab, setActiveTab] = useState(defaultActiveId) + + useEffect(() => { + setMounted(true) + }, []) + + if (!mounted) return null + + // Extract tab panels from children + const tabPanels = Array.isArray(children) ? children : [children] + const validTabPanels = tabPanels.filter( + (child) => child && typeof child === 'object' && 'props' in child && child.props.id + ) + + if (validTabPanels.length === 0) return null + + const currentActiveTab = activeTab || validTabPanels[0]?.props?.id + + return ( +
+ + + {validTabPanels.map((panel) => ( + + {panel.props.label} + + ))} + + {validTabPanels.map((panel) => ( + + {panel.props.children} + + ))} + +
+ ) +} + +function TabPanel({ children, id, label, className }: TabPanelProps) { + return ( +
+ {children} +
+ ) +} + +export { Tabs, TabPanel } +export default Tabs diff --git a/apps/www/components/Tabs/index.ts b/apps/www/components/Tabs/index.ts new file mode 100644 index 00000000000..2b7eec56a13 --- /dev/null +++ b/apps/www/components/Tabs/index.ts @@ -0,0 +1,2 @@ +export { Tabs, TabPanel } from './Tabs' +export type { TabsProps, TabPanelProps } from './Tabs' diff --git a/apps/www/lib/authors.json b/apps/www/lib/authors.json index 4940276eb0c..6e5af52174d 100644 --- a/apps/www/lib/authors.json +++ b/apps/www/lib/authors.json @@ -106,6 +106,14 @@ "author_url": "https://github.com/laurenceisla", "author_image_url": "https://github.com/laurenceisla.png" }, + { + "author_id": "avallete", + "author": "Andrew Valleteau", + "username": "avallete", + "position": "Engineering", + "author_url": "https://github.com/avallete", + "author_image_url": "https://github.com/avallete.png" + }, { "author_id": "supabase", "author": "Supabase", diff --git a/apps/www/lib/mdx/mdxComponents.tsx b/apps/www/lib/mdx/mdxComponents.tsx index 90a00a1908c..2e391394b8a 100644 --- a/apps/www/lib/mdx/mdxComponents.tsx +++ b/apps/www/lib/mdx/mdxComponents.tsx @@ -1,6 +1,5 @@ 'use client' -import { PropsWithChildren } from 'react' import { CH } from '@code-hike/mdx/components' import dynamic from 'next/dynamic' import { ArrowUpRight, Triangle } from 'lucide-react' @@ -14,11 +13,26 @@ import { Image, } from 'ui' import { Admonition } from 'ui-patterns/admonition' +import type { PropsWithChildren } from 'react' import type { ImageProps } from 'ui/src/components/Image/Image' const Avatar = dynamic(() => import('~/components/Avatar')) const Chart = dynamic(() => import('~/components/Charts/PGCharts')) const CodeBlock = dynamic(() => import('~/components/CodeBlock/CodeBlock')) +const Tabs = dynamic(() => import('~/components/Tabs/Tabs'), { ssr: false }) +const TabPanel = dynamic( + () => import('~/components/Tabs/Tabs').then((mod) => ({ default: mod.TabPanel })), + { ssr: false } +) +const NamedCodeBlock = dynamic( + () => + import('~/components/CodeTabs').then((mod) => ({ + default: mod.NamedCodeBlock, + })), + { + ssr: false, + } +) const ImageFadeStack = dynamic(() => import('~/components/ImageFadeStack')) const ImageGrid = dynamic(() => import('~/components/ImageGrid')) const InlineCodeTag = dynamic(() => import('~/components/InlineCode')) @@ -73,6 +87,9 @@ const BlogCollapsible = ({ export default function mdxComponents(type?: 'blog' | 'lp' | undefined) { const components = { CodeBlock, + Tabs, + TabPanel, + NamedCodeBlock, CH, h1: (props: any) => , h2: (props: any) => , @@ -110,6 +127,7 @@ export default function mdxComponents(type?: 'blog' | 'lp' | undefined) { /> ) } + // biome-ignore lint/a11y/useAltText: provided in props return }, Img: ({ zoomable = true, className, ...props }: ImageProps & { wide?: boolean }) => ( diff --git a/apps/www/lib/mdx/mdxSerialize.ts b/apps/www/lib/mdx/mdxSerialize.ts index 35a43940b50..7e4b6d7cd29 100644 --- a/apps/www/lib/mdx/mdxSerialize.ts +++ b/apps/www/lib/mdx/mdxSerialize.ts @@ -2,8 +2,9 @@ import { serialize } from 'next-mdx-remote/serialize' import rehypeSlug from 'rehype-slug' import remarkGfm from 'remark-gfm' -import { CodeHikeConfig, remarkCodeHike } from '@code-hike/mdx' +import { type CodeHikeConfig, remarkCodeHike } from '@code-hike/mdx' import codeHikeTheme from 'config/code-hike.theme.json' with { type: 'json' } +import { preprocessMdxWithCodeTabs } from '~/components/CodeTabs' // mdx2 needs self-closing tags. // dragging an image onto a GitHub discussion creates an @@ -64,13 +65,18 @@ function createRemarkCollectToc(maxDepth: number) { walk(tree) // Attach to tree data for retrieval post-serialize - ;(tree.data || (tree.data = {})).__collectedToc = items + if (!tree.data) { + tree.data = {} + } + tree.data.__collectedToc = items } } } export async function mdxSerialize(source: string, options?: { tocDepth?: number }) { const formattedSource = addSelfClosingTags(source) + // Preprocess MDX to handle CodeTabs transformation + const preprocessedSource = await preprocessMdxWithCodeTabs(formattedSource) const codeHikeOptions: CodeHikeConfig = { theme: codeHikeTheme, lineNumbers: true, @@ -82,7 +88,7 @@ export async function mdxSerialize(source: string, options?: { tocDepth?: number const tocDepth = options?.tocDepth ?? 2 let collectedToc: TocItem[] = [] - const mdxSource: any = await serialize(formattedSource, { + const mdxSource = await serialize(preprocessedSource, { scope: { chCodeConfig: codeHikeOptions, }, @@ -91,10 +97,10 @@ export async function mdxSerialize(source: string, options?: { tocDepth?: number [remarkCodeHike, codeHikeOptions], remarkGfm, // Collect headings into a simple TOC structure - function () { + () => { const plugin = createRemarkCollectToc(tocDepth) const transformer = (plugin as any)() - return function (tree: any) { + return (tree: any) => { transformer(tree) if (tree?.data?.__collectedToc) { collectedToc = tree.data.__collectedToc as TocItem[] diff --git a/apps/www/package.json b/apps/www/package.json index 45fbe5561ab..ad034c28b75 100644 --- a/apps/www/package.json +++ b/apps/www/package.json @@ -26,11 +26,11 @@ "@next/bundle-analyzer": "15.3.1", "@next/mdx": "15.3.1", "@octokit/auth-app": "^7.0.0", - "@payloadcms/live-preview-react": "^3.0.0", "@octokit/core": "^6.0.0", "@octokit/graphql": "^8.0.0", "@octokit/plugin-paginate-graphql": "^4.0.0", "@octokit/rest": "^21.0.0", + "@payloadcms/live-preview-react": "^3.0.0", "@radix-ui/react-dialog": "^1.0.5", "@sentry/nextjs": "^10", "@supabase/supabase-js": "catalog:", @@ -52,6 +52,13 @@ "icons": "workspace:*", "lucide-react": "*", "markdown-toc": "^1.2.0", + "mdast-util-from-markdown": "^2.0.2", + "mdast-util-gfm": "^2.0.2", + "mdast-util-mdx": "^2.0.1", + "mdast-util-mdx-jsx": "^2.1.4", + "mdast-util-to-markdown": "^1.5.0", + "micromark-extension-gfm": "^2.0.3", + "micromark-extension-mdxjs": "^1.0.1", "next": "catalog:", "next-mdx-remote": "^4.4.1", "next-seo": "^6.5.0", @@ -86,6 +93,7 @@ "@types/animejs": "^3.1.12", "@types/classnames": "^2.3.1", "@types/common-tags": "^1.8.4", + "@types/mdast": "^4.0.4", "@types/mdx-js__react": "^1.5.6", "@types/parse-numeric-range": "^0.0.1", "@types/react": "catalog:", @@ -97,7 +105,9 @@ "api-types": "workspace:*", "postcss": "^8.5.3", "react-hook-form": "^7.45.0", + "tailwindcss": "^3.4.1", "tsconfig": "workspace:*", + "unist-util-visit-parents": "5.1.3", "uuid": "^9.0.1", "zod": "catalog:" }, diff --git a/apps/www/public/images/blog/2025-09-30-postgrest-13-release/postgrest-13-release.png b/apps/www/public/images/blog/2025-09-30-postgrest-13-release/postgrest-13-release.png new file mode 100644 index 00000000000..12d899045e4 Binary files /dev/null and b/apps/www/public/images/blog/2025-09-30-postgrest-13-release/postgrest-13-release.png differ diff --git a/apps/www/public/sitemap_www.xml b/apps/www/public/sitemap_www.xml index 944e53e64b6..b27b5658648 100644 --- a/apps/www/public/sitemap_www.xml +++ b/apps/www/public/sitemap_www.xml @@ -2162,6 +2162,18 @@ 0.5 + + https://supabase.com/blog/defense-in-depth-mcp + weekly + 0.5 + + + + https://supabase.com/blog/postgrest-13-release + weekly + 0.5 + + https://supabase.com/customers/asap-work weekly diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d39f2183939..41bbae33039 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -237,10 +237,10 @@ importers: version: 1.2.0 next: specifier: 'catalog:' - version: 15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4) + version: 15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4) next-contentlayer2: specifier: 0.4.6 - version: 0.4.6(contentlayer2@0.4.6(esbuild@0.25.2)(markdown-wasm@1.2.0)(supports-color@8.1.1))(esbuild@0.25.2)(markdown-wasm@1.2.0)(next@15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@8.1.1) + version: 0.4.6(contentlayer2@0.4.6(esbuild@0.25.2)(markdown-wasm@1.2.0)(supports-color@8.1.1))(esbuild@0.25.2)(markdown-wasm@1.2.0)(next@15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@8.1.1) next-themes: specifier: ^0.3.0 version: 0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -382,13 +382,13 @@ importers: version: 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@sentry/nextjs': specifier: ^10.3.0 - version: 10.3.0(@opentelemetry/context-async-hooks@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1)(supports-color@8.1.1)(webpack@5.94.0) + version: 10.3.0(@opentelemetry/context-async-hooks@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1)(supports-color@8.1.1)(webpack@5.94.0) '@supabase/supabase-js': specifier: 'catalog:' version: 2.49.3 '@tailwindcss/container-queries': specifier: ^0.1.1 - version: 0.1.1(tailwindcss@3.4.1(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.9.2))) + version: 0.1.1(tailwindcss@4.1.13) '@tanstack/react-query': specifier: ^5.13.4 version: 5.13.4(react@18.3.1) @@ -797,7 +797,7 @@ importers: version: 1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@sentry/nextjs': specifier: ^10.3.0 - version: 10.3.0(@opentelemetry/context-async-hooks@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1)(supports-color@8.1.1)(webpack@5.94.0) + version: 10.3.0(@opentelemetry/context-async-hooks@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1)(supports-color@8.1.1)(webpack@5.94.0) '@std/path': specifier: npm:@jsr/std__path@^1.0.8 version: '@jsr/std__path@1.0.8' @@ -932,13 +932,13 @@ importers: version: 0.52.2 next: specifier: 'catalog:' - version: 15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4) + version: 15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4) next-themes: specifier: ^0.3.0 version: 0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) nuqs: specifier: ^2.4.1 - version: 2.4.1(next@15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react-router@7.5.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + version: 2.4.1(next@15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react-router@7.5.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) openai: specifier: ^4.75.1 version: 4.104.0(encoding@0.1.13)(ws@8.18.3)(zod@3.25.76) @@ -1209,7 +1209,7 @@ importers: version: 2.4.11(typescript@5.9.2) next-router-mock: specifier: ^0.9.13 - version: 0.9.13(next@15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1) + version: 0.9.13(next@15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1) node-mocks-http: specifier: ^1.17.2 version: 1.17.2(@types/node@22.13.14) @@ -1573,7 +1573,7 @@ importers: version: 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@sentry/nextjs': specifier: ^10 - version: 10.3.0(@opentelemetry/context-async-hooks@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1)(supports-color@8.1.1)(webpack@5.94.0) + version: 10.3.0(@opentelemetry/context-async-hooks@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1)(supports-color@8.1.1)(webpack@5.94.0) '@supabase/supabase-js': specifier: 'catalog:' version: 2.49.3 @@ -1631,6 +1631,27 @@ importers: markdown-toc: specifier: ^1.2.0 version: 1.2.0 + mdast-util-from-markdown: + specifier: ^2.0.2 + version: 2.0.2(supports-color@8.1.1) + mdast-util-gfm: + specifier: ^2.0.2 + version: 2.0.2(supports-color@8.1.1) + mdast-util-mdx: + specifier: ^2.0.1 + version: 2.0.1(supports-color@8.1.1) + mdast-util-mdx-jsx: + specifier: ^2.1.4 + version: 2.1.4(supports-color@8.1.1) + mdast-util-to-markdown: + specifier: ^1.5.0 + version: 1.5.0 + micromark-extension-gfm: + specifier: ^2.0.3 + version: 2.0.3 + micromark-extension-mdxjs: + specifier: ^1.0.1 + version: 1.0.1 next: specifier: 'catalog:' version: 15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4) @@ -1728,6 +1749,9 @@ importers: '@types/common-tags': specifier: ^1.8.4 version: 1.8.4 + '@types/mdast': + specifier: ^4.0.4 + version: 4.0.4 '@types/mdx-js__react': specifier: ^1.5.6 version: 1.5.6 @@ -1761,9 +1785,15 @@ importers: react-hook-form: specifier: ^7.45.0 version: 7.47.0(react@18.3.1) + tailwindcss: + specifier: ^3.4.1 + version: 3.4.1(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.9.2)) tsconfig: specifier: workspace:* version: link:../../packages/tsconfig + unist-util-visit-parents: + specifier: 5.1.3 + version: 5.1.3 uuid: specifier: ^9.0.1 version: 9.0.1 @@ -2514,7 +2544,7 @@ importers: version: link:../api-types next-router-mock: specifier: ^0.9.13 - version: 0.9.13(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1) + version: 0.9.13(next@15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1) tsx: specifier: ^4.19.3 version: 4.19.3 @@ -4125,6 +4155,7 @@ packages: '@graphql-tools/prisma-loader@8.0.17': resolution: {integrity: sha512-fnuTLeQhqRbA156pAyzJYN0KxCjKYRU5bz1q/SKOwElSnAU4k7/G1kyVsWLh7fneY78LoMNH5n+KlFV8iQlnyg==} engines: {node: '>=16.0.0'} + deprecated: 'This package was intended to be used with an older versions of Prisma.\nThe newer versions of Prisma has a different approach to GraphQL integration.\nTherefore, this package is no longer needed and has been deprecated and removed.\nLearn more: https://www.prisma.io/graphql' peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 @@ -9452,6 +9483,9 @@ packages: '@types/mdast@4.0.1': resolution: {integrity: sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==} + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + '@types/mdx-js__react@1.5.6': resolution: {integrity: sha512-NPQSvm0NiUzagIWkqY8wcHILt61dI/FerbX5ZIilFpCmDBtRii20CtGdzXrbAZXOk49BziT69xBlOzOuROAAEw==} @@ -10633,9 +10667,6 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001695: - resolution: {integrity: sha512-vHyLade6wTgI2u1ec3WQBxv+2BrTERV28UXQu9LO6lZ9pYeMk34vjXFLOxo1A4UBA8XTL4njRQZdno/yYaSmWw==} - caniuse-lite@1.0.30001743: resolution: {integrity: sha512-e6Ojr7RV14Un7dz6ASD0aZDmQPT/A+eZU+nuTNfjqmRrmkmQlnTNWH0SKmqagx9PeW87UVqapSurtAXifmtdmw==} @@ -12565,14 +12596,6 @@ packages: fbjs@3.0.5: resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} - fdir@6.4.6: - resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -14027,10 +14050,6 @@ packages: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true - jiti@2.4.2: - resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} - hasBin: true - jiti@2.5.1: resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} hasBin: true @@ -16145,10 +16164,6 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} - engines: {node: '>=12'} - picomatch@4.0.3: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} @@ -18348,6 +18363,9 @@ packages: engines: {node: '>=14.0.0'} hasBin: true + tailwindcss@4.1.13: + resolution: {integrity: sha512-i+zidfmTqtwquj4hMEwdjshYYgMbOrPzb9a0M3ZgNa0JMoZeFC6bxZvO8yr8ozS6ix2SDz0+mvryPeBs2TFE+w==} + tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -20021,8 +20039,8 @@ snapshots: '@ampproject/remapping@2.3.0': dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 '@antfu/ni@23.3.1': {} @@ -20035,7 +20053,7 @@ snapshots: '@ardatan/relay-compiler@12.0.3(encoding@0.1.13)(graphql@16.11.0)': dependencies: '@babel/generator': 7.27.0 - '@babel/parser': 7.27.0 + '@babel/parser': 7.28.4 '@babel/runtime': 7.26.10 chalk: 4.1.2 fb-watchman: 2.0.2 @@ -21334,7 +21352,7 @@ snapshots: '@babel/traverse': 7.27.0(supports-color@8.1.1) '@babel/types': 7.27.0 convert-source-map: 2.0.0 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -21354,7 +21372,7 @@ snapshots: '@babel/types': 7.28.4 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -21379,7 +21397,7 @@ snapshots: '@babel/helper-annotate-as-pure@7.25.9': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@babel/helper-annotate-as-pure@7.27.3': dependencies: @@ -21429,23 +21447,23 @@ snapshots: '@babel/helper-environment-visitor@7.24.7': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@babel/helper-function-name@7.24.7': dependencies: '@babel/template': 7.27.0 - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@babel/helper-globals@7.28.0': {} '@babel/helper-hoist-variables@7.24.7': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@babel/helper-member-expression-to-functions@7.25.9(supports-color@8.1.1)': dependencies: '@babel/traverse': 7.27.0(supports-color@8.1.1) - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color @@ -21459,7 +21477,7 @@ snapshots: '@babel/helper-module-imports@7.25.9(supports-color@8.1.1)': dependencies: '@babel/traverse': 7.27.0(supports-color@8.1.1) - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color @@ -21490,7 +21508,7 @@ snapshots: '@babel/helper-optimise-call-expression@7.25.9': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@babel/helper-optimise-call-expression@7.27.1': dependencies: @@ -21521,7 +21539,7 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers@7.25.9(supports-color@8.1.1)': dependencies: '@babel/traverse': 7.27.0(supports-color@8.1.1) - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color @@ -21534,7 +21552,7 @@ snapshots: '@babel/helper-split-export-declaration@7.24.7': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@babel/helper-string-parser@7.24.7': {} @@ -21555,7 +21573,7 @@ snapshots: '@babel/helpers@7.26.10': dependencies: '@babel/template': 7.27.0 - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@babel/helpers@7.28.4': dependencies: @@ -21685,7 +21703,7 @@ snapshots: '@babel/helper-split-export-declaration': 7.24.7 '@babel/parser': 7.27.0 '@babel/types': 7.27.0 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -21697,7 +21715,7 @@ snapshots: '@babel/parser': 7.27.0 '@babel/template': 7.27.0 '@babel/types': 7.27.0 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -21710,7 +21728,7 @@ snapshots: '@babel/parser': 7.28.4 '@babel/template': 7.27.2 '@babel/types': 7.28.4 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -22198,7 +22216,7 @@ snapshots: '@esbuild-plugins/node-resolve@0.2.2(esbuild@0.25.2)(supports-color@8.1.1)': dependencies: '@types/resolve': 1.20.6 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) esbuild: 0.25.2 escape-string-regexp: 4.0.0 resolve: 1.22.10 @@ -22297,7 +22315,7 @@ snapshots: '@eslint/eslintrc@2.1.4(supports-color@8.1.1)': dependencies: ajv: 6.12.6 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) espree: 9.6.1 globals: 13.24.0 ignore: 5.2.4 @@ -22857,10 +22875,10 @@ snapshots: '@graphql-tools/graphql-tag-pluck@8.3.19(graphql@16.11.0)(supports-color@8.1.1)': dependencies: '@babel/core': 7.26.10(supports-color@8.1.1) - '@babel/parser': 7.27.0 + '@babel/parser': 7.28.4 '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.26.10(supports-color@8.1.1)) '@babel/traverse': 7.27.0(supports-color@8.1.1) - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@graphql-tools/utils': 10.8.6(graphql@16.11.0) graphql: 16.11.0 tslib: 2.8.1 @@ -23079,7 +23097,7 @@ snapshots: '@humanwhocodes/config-array@0.11.14(supports-color@8.1.1)': dependencies: '@humanwhocodes/object-schema': 2.0.2 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -23257,19 +23275,19 @@ snapshots: '@jridgewell/gen-mapping@0.3.13': dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/gen-mapping@0.3.8': dependencies: '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/remapping@2.3.5': dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/resolve-uri@3.1.2': {} @@ -23277,8 +23295,8 @@ snapshots: '@jridgewell/source-map@0.3.6': dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/sourcemap-codec@1.5.0': {} @@ -23287,12 +23305,12 @@ snapshots: '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping@0.3.9': dependencies: @@ -27425,10 +27443,6 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.9-commit.d91dfb5': {} - '@rollup/plugin-alias@5.1.1(rollup@4.38.0)': - optionalDependencies: - rollup: 4.38.0 - '@rollup/plugin-alias@5.1.1(rollup@4.50.2)': optionalDependencies: rollup: 4.50.2 @@ -27438,45 +27452,37 @@ snapshots: '@rollup/pluginutils': 5.1.4(rollup@4.38.0) commondir: 1.0.1 estree-walker: 2.0.2 - fdir: 6.4.6(picomatch@4.0.2) + fdir: 6.5.0(picomatch@4.0.3) is-reference: 1.2.1 - magic-string: 0.30.17 - picomatch: 4.0.2 + magic-string: 0.30.19 + picomatch: 4.0.3 optionalDependencies: rollup: 4.38.0 - '@rollup/plugin-commonjs@28.0.3(rollup@4.38.0)': + '@rollup/plugin-commonjs@28.0.3(rollup@4.50.2)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.38.0) + '@rollup/pluginutils': 5.1.4(rollup@4.50.2) commondir: 1.0.1 estree-walker: 2.0.2 - fdir: 6.4.6(picomatch@4.0.2) + fdir: 6.5.0(picomatch@4.0.3) is-reference: 1.2.1 - magic-string: 0.30.17 - picomatch: 4.0.2 + magic-string: 0.30.19 + picomatch: 4.0.3 optionalDependencies: - rollup: 4.38.0 + rollup: 4.50.2 '@rollup/plugin-commonjs@28.0.6(rollup@4.50.2)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.50.2) commondir: 1.0.1 estree-walker: 2.0.2 - fdir: 6.4.6(picomatch@4.0.2) + fdir: 6.5.0(picomatch@4.0.3) is-reference: 1.2.1 magic-string: 0.30.19 - picomatch: 4.0.2 + picomatch: 4.0.3 optionalDependencies: rollup: 4.50.2 - '@rollup/plugin-inject@5.0.5(rollup@4.38.0)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.38.0) - estree-walker: 2.0.2 - magic-string: 0.30.19 - optionalDependencies: - rollup: 4.38.0 - '@rollup/plugin-inject@5.0.5(rollup@4.50.2)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.50.2) @@ -27485,28 +27491,12 @@ snapshots: optionalDependencies: rollup: 4.50.2 - '@rollup/plugin-json@6.1.0(rollup@4.38.0)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.38.0) - optionalDependencies: - rollup: 4.38.0 - '@rollup/plugin-json@6.1.0(rollup@4.50.2)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.50.2) optionalDependencies: rollup: 4.50.2 - '@rollup/plugin-node-resolve@16.0.1(rollup@4.38.0)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.38.0) - '@types/resolve': 1.20.2 - deepmerge: 4.3.1 - is-module: 1.0.0 - resolve: 1.22.10 - optionalDependencies: - rollup: 4.38.0 - '@rollup/plugin-node-resolve@16.0.1(rollup@4.50.2)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.50.2) @@ -27517,13 +27507,6 @@ snapshots: optionalDependencies: rollup: 4.50.2 - '@rollup/plugin-replace@6.0.2(rollup@4.38.0)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.38.0) - magic-string: 0.30.19 - optionalDependencies: - rollup: 4.38.0 - '@rollup/plugin-replace@6.0.2(rollup@4.50.2)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.50.2) @@ -27531,14 +27514,6 @@ snapshots: optionalDependencies: rollup: 4.50.2 - '@rollup/plugin-terser@0.4.4(rollup@4.38.0)': - dependencies: - serialize-javascript: 6.0.2 - smob: 1.5.0 - terser: 5.39.0 - optionalDependencies: - rollup: 4.38.0 - '@rollup/plugin-terser@0.4.4(rollup@4.50.2)': dependencies: serialize-javascript: 6.0.2 @@ -27551,7 +27526,7 @@ snapshots: dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 - picomatch: 4.0.2 + picomatch: 4.0.3 optionalDependencies: rollup: 4.38.0 @@ -27559,7 +27534,7 @@ snapshots: dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 - picomatch: 4.0.2 + picomatch: 4.0.3 optionalDependencies: rollup: 4.50.2 @@ -27778,33 +27753,7 @@ snapshots: '@sentry/core@10.3.0': {} - '@sentry/nextjs@10.3.0(@opentelemetry/context-async-hooks@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1)(supports-color@8.1.1)(webpack@5.94.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.36.0 - '@rollup/plugin-commonjs': 28.0.1(rollup@4.38.0) - '@sentry-internal/browser-utils': 10.3.0 - '@sentry/core': 10.3.0 - '@sentry/node': 10.3.0(supports-color@8.1.1) - '@sentry/opentelemetry': 10.3.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.36.0) - '@sentry/react': 10.3.0(react@18.3.1) - '@sentry/vercel-edge': 10.3.0 - '@sentry/webpack-plugin': 4.0.2(encoding@0.1.13)(supports-color@8.1.1)(webpack@5.94.0) - chalk: 3.0.0 - next: 15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4) - resolve: 1.22.8 - rollup: 4.38.0 - stacktrace-parser: 0.1.10 - transitivePeerDependencies: - - '@opentelemetry/context-async-hooks' - - '@opentelemetry/core' - - '@opentelemetry/sdk-trace-base' - - encoding - - react - - supports-color - - webpack - - '@sentry/nextjs@10.3.0(@opentelemetry/context-async-hooks@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1)(supports-color@8.1.1)(webpack@5.94.0)': + '@sentry/nextjs@10.3.0(@opentelemetry/context-async-hooks@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1)(supports-color@8.1.1)(webpack@5.94.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/semantic-conventions': 1.36.0 @@ -28745,6 +28694,10 @@ snapshots: dependencies: tailwindcss: 3.4.1(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.9.2)) + '@tailwindcss/container-queries@0.1.1(tailwindcss@4.1.13)': + dependencies: + tailwindcss: 4.1.13 + '@tailwindcss/forms@0.5.6(tailwindcss@3.4.1(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.9.2)))': dependencies: mini-svg-data-uri: 1.4.4 @@ -28766,7 +28719,7 @@ snapshots: '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10(supports-color@8.1.1)) '@babel/template': 7.27.0 '@babel/traverse': 7.27.0(supports-color@8.1.1) - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@tanstack/router-utils': 1.114.12 babel-dead-code-elimination: 1.0.9(supports-color@8.1.1) dedent: 1.5.3(babel-plugin-macros@3.1.0) @@ -28965,7 +28918,7 @@ snapshots: '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10(supports-color@8.1.1)) '@babel/template': 7.27.0 '@babel/traverse': 7.27.0(supports-color@8.1.1) - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@tanstack/router-utils': 1.114.12 babel-dead-code-elimination: 1.0.9(supports-color@8.1.1) tiny-invariant: 1.3.3 @@ -29150,7 +29103,7 @@ snapshots: '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10(supports-color@8.1.1)) '@babel/template': 7.27.0 '@babel/traverse': 7.27.0(supports-color@8.1.1) - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@tanstack/router-core': 1.114.25 '@tanstack/router-generator': 1.114.27(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@tanstack/router-utils': 1.114.12 @@ -29172,7 +29125,7 @@ snapshots: '@tanstack/router-utils@1.114.12': dependencies: '@babel/generator': 7.27.0 - '@babel/parser': 7.27.0 + '@babel/parser': 7.28.4 ansis: 3.17.0 diff: 7.0.0 @@ -29184,7 +29137,7 @@ snapshots: '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10(supports-color@8.1.1)) '@babel/template': 7.27.0 '@babel/traverse': 7.27.0(supports-color@8.1.1) - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@tanstack/directive-functions-plugin': 1.114.12(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.5.1)(sass@1.77.4)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.1) babel-dead-code-elimination: 1.0.9(supports-color@8.1.1) dedent: 1.5.3(babel-plugin-macros@3.1.0) @@ -29472,17 +29425,17 @@ snapshots: '@types/babel__generator@7.6.5': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@types/babel__template@7.4.2': dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 '@types/babel__traverse@7.20.2': dependencies: @@ -29490,7 +29443,7 @@ snapshots: '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.28.4 '@types/braces@3.0.5': {} @@ -29745,6 +29698,10 @@ snapshots: dependencies: '@types/unist': 2.0.8 + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 2.0.8 + '@types/mdx-js__react@1.5.6': dependencies: '@types/react': 18.3.3 @@ -29974,7 +29931,7 @@ snapshots: '@typescript-eslint/types': 7.2.0 '@typescript-eslint/typescript-estree': 7.2.0(supports-color@8.1.1)(typescript@5.9.2) '@typescript-eslint/visitor-keys': 7.2.0 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) eslint: 8.57.0(supports-color@8.1.1) optionalDependencies: typescript: 5.9.2 @@ -29985,7 +29942,7 @@ snapshots: dependencies: '@typescript-eslint/tsconfig-utils': 8.34.1(typescript@5.9.2) '@typescript-eslint/types': 8.34.1 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -30008,7 +29965,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 8.34.1(supports-color@8.1.1)(typescript@5.9.2) '@typescript-eslint/utils': 8.34.1(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2) - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) eslint: 8.57.0(supports-color@8.1.1) ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 @@ -30023,7 +29980,7 @@ snapshots: dependencies: '@typescript-eslint/types': 7.2.0 '@typescript-eslint/visitor-keys': 7.2.0 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 @@ -30040,7 +29997,7 @@ snapshots: '@typescript-eslint/tsconfig-utils': 8.34.1(typescript@5.9.2) '@typescript-eslint/types': 8.34.1 '@typescript-eslint/visitor-keys': 8.34.1 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 @@ -30105,10 +30062,10 @@ snapshots: optionalDependencies: '@aws-sdk/credential-provider-web-identity': 3.830.0 - '@vercel/nft@0.29.2(rollup@4.38.0)(supports-color@8.1.1)': + '@vercel/nft@0.29.2(rollup@4.50.2)(supports-color@8.1.1)': dependencies: '@mapbox/node-pre-gyp': 2.0.0(encoding@0.1.13)(supports-color@8.1.1) - '@rollup/pluginutils': 5.1.4(rollup@4.38.0) + '@rollup/pluginutils': 5.1.4(rollup@4.50.2) acorn: 8.14.1 acorn-import-attributes: 1.9.5(acorn@8.14.1) async-sema: 3.1.1 @@ -30117,7 +30074,7 @@ snapshots: glob: 10.4.5 graceful-fs: 4.2.11 node-gyp-build: 4.8.4 - picomatch: 4.0.2 + picomatch: 4.0.3 resolve-from: 5.0.0 transitivePeerDependencies: - encoding @@ -30136,7 +30093,7 @@ snapshots: glob: 10.4.5 graceful-fs: 4.2.11 node-gyp-build: 4.8.4 - picomatch: 4.0.2 + picomatch: 4.0.3 resolve-from: 5.0.0 transitivePeerDependencies: - encoding @@ -30164,7 +30121,7 @@ snapshots: mlly: 1.7.4 node-forge: 1.3.1 pathe: 1.1.2 - std-env: 3.8.1 + std-env: 3.9.0 ufo: 1.5.4 untun: 0.1.3 uqr: 0.1.2 @@ -30202,14 +30159,14 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6(supports-color@8.1.1) istanbul-reports: 3.1.7 - magic-string: 0.30.17 + magic-string: 0.30.19 magicast: 0.3.5 - std-env: 3.8.1 + std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 vitest: 3.0.9(@types/node@22.13.14)(jiti@2.5.1)(jsdom@20.0.3(supports-color@8.1.1))(msw@2.7.3(@types/node@22.13.14)(typescript@5.9.2))(sass@1.77.4)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.1) @@ -30220,14 +30177,14 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6(supports-color@8.1.1) istanbul-reports: 3.1.7 - magic-string: 0.30.17 + magic-string: 0.30.19 magicast: 0.3.5 - std-env: 3.8.1 + std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 vitest: 3.0.9(@types/node@22.13.14)(@vitest/ui@3.0.4)(jiti@2.5.1)(jsdom@20.0.3(supports-color@8.1.1))(msw@2.7.3(@types/node@22.13.14)(typescript@5.9.2))(sass@1.77.4)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.20.3)(yaml@2.8.1) @@ -30238,14 +30195,14 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6(supports-color@8.1.1) istanbul-reports: 3.1.7 - magic-string: 0.30.17 + magic-string: 0.30.19 magicast: 0.3.5 - std-env: 3.8.1 + std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 vitest: 3.0.9(@types/node@22.13.14)(@vitest/ui@3.0.4)(jiti@2.5.1)(jsdom@20.0.3(supports-color@8.1.1))(msw@2.4.11(typescript@5.9.2))(sass@1.77.4)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.1) @@ -30632,10 +30589,6 @@ snapshots: dependencies: acorn: 8.15.0 - acorn-jsx@5.3.2(acorn@8.11.3): - dependencies: - acorn: 8.11.3 - acorn-jsx@5.3.2(acorn@8.14.1): dependencies: acorn: 8.14.1 @@ -30658,7 +30611,7 @@ snapshots: agent-base@6.0.2(supports-color@8.1.1): dependencies: - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -31128,7 +31081,7 @@ snapshots: dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) http-errors: 2.0.0 iconv-lite: 0.6.3 on-finished: 2.4.1 @@ -31170,7 +31123,7 @@ snapshots: browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001695 + caniuse-lite: 1.0.30001743 electron-to-chromium: 1.5.88 node-releases: 2.0.19 update-browserslist-db: 1.1.2(browserslist@4.24.4) @@ -31232,7 +31185,7 @@ snapshots: dotenv: 16.5.0 exsolve: 1.0.4 giget: 2.0.0 - jiti: 2.4.2 + jiti: 2.5.1 ohash: 2.0.11 pathe: 2.0.3 perfect-debounce: 1.0.0 @@ -31341,12 +31294,10 @@ snapshots: caniuse-api@3.0.0: dependencies: browserslist: 4.26.2 - caniuse-lite: 1.0.30001695 + caniuse-lite: 1.0.30001743 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001695: {} - caniuse-lite@1.0.30001743: {} capital-case@1.0.4: @@ -32201,18 +32152,18 @@ snapshots: optionalDependencies: supports-color: 8.1.1 - debug@4.4.0(supports-color@9.4.0): - dependencies: - ms: 2.1.3 - optionalDependencies: - supports-color: 9.4.0 - debug@4.4.3(supports-color@8.1.1): dependencies: ms: 2.1.3 optionalDependencies: supports-color: 8.1.1 + debug@4.4.3(supports-color@9.4.0): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 9.4.0 + decimal.js-light@2.5.1: {} decimal.js@10.5.0: @@ -32694,7 +32645,7 @@ snapshots: esbuild-register@3.6.0(esbuild@0.25.2)(supports-color@8.1.1): dependencies: - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) esbuild: 0.25.2 transitivePeerDependencies: - supports-color @@ -32841,7 +32792,7 @@ snapshots: eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9(supports-color@8.1.1))(eslint-plugin-import@2.31.0)(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1): dependencies: - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) enhanced-resolve: 5.18.1 eslint: 8.57.0(supports-color@8.1.1) eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9(supports-color@8.1.1))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1) @@ -33193,7 +33144,7 @@ snapshots: content-type: 1.0.5 cookie: 0.7.2 cookie-signature: 1.2.2 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -33384,10 +33335,6 @@ snapshots: transitivePeerDependencies: - encoding - fdir@6.4.6(picomatch@4.0.2): - optionalDependencies: - picomatch: 4.0.2 - fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -33443,7 +33390,7 @@ snapshots: finalhandler@2.1.0(supports-color@8.1.1): dependencies: - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 @@ -33917,7 +33864,7 @@ snapshots: '@graphql-tools/utils': 10.8.6(graphql@16.11.0) cosmiconfig: 9.0.0(typescript@5.9.2) graphql: 16.11.0 - jiti: 2.4.2 + jiti: 2.5.1 minimatch: 10.0.1 string-env-interpolation: 1.0.1 tslib: 2.8.1 @@ -34391,7 +34338,7 @@ snapshots: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2(supports-color@8.1.1) - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -34407,7 +34354,7 @@ snapshots: http-proxy-agent@7.0.2(supports-color@8.1.1): dependencies: agent-base: 7.1.3 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -34428,35 +34375,35 @@ snapshots: https-proxy-agent@5.0.1(supports-color@8.1.1): dependencies: agent-base: 6.0.2(supports-color@8.1.1) - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color https-proxy-agent@6.2.1(supports-color@8.1.1): dependencies: agent-base: 7.1.3 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color https-proxy-agent@7.0.4(supports-color@8.1.1): dependencies: agent-base: 7.1.3 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color https-proxy-agent@7.0.6(supports-color@8.1.1): dependencies: agent-base: 7.1.3 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color https-proxy-agent@7.0.6(supports-color@9.4.0): dependencies: agent-base: 7.1.3 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.3(supports-color@9.4.0) transitivePeerDependencies: - supports-color @@ -34619,7 +34566,7 @@ snapshots: dependencies: '@ioredis/commands': 1.2.0 cluster-key-slot: 1.1.2 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) denque: 2.1.0 lodash.defaults: 4.2.0 lodash.isarguments: 3.1.0 @@ -34633,7 +34580,7 @@ snapshots: dependencies: '@ioredis/commands': 1.4.0 cluster-key-slot: 1.1.2 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) denque: 2.1.0 lodash.defaults: 4.2.0 lodash.isarguments: 3.1.0 @@ -34856,7 +34803,7 @@ snapshots: is-reference@3.0.3: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 is-regex@1.1.4: dependencies: @@ -35014,8 +34961,8 @@ snapshots: istanbul-lib-source-maps@5.0.6(supports-color@8.1.1): dependencies: - '@jridgewell/trace-mapping': 0.3.25 - debug: 4.4.0(supports-color@8.1.1) + '@jridgewell/trace-mapping': 0.3.31 + debug: 4.4.3(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color @@ -35075,8 +35022,6 @@ snapshots: jiti@1.21.7: {} - jiti@2.4.2: {} - jiti@2.5.1: {} jose@5.9.6: {} @@ -35186,7 +35131,7 @@ snapshots: json-schema-resolver@2.0.0(supports-color@8.1.1): dependencies: - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) rfdc: 1.4.1 uri-js: 4.4.1 transitivePeerDependencies: @@ -35581,12 +35526,12 @@ snapshots: magic-string@0.30.8: dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 magicast@0.3.5: dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 source-map-js: 1.2.1 make-dir@3.1.0: @@ -35712,7 +35657,7 @@ snapshots: mdast-util-find-and-replace@3.0.1: dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 escape-string-regexp: 5.0.0 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 @@ -35736,7 +35681,7 @@ snapshots: mdast-util-from-markdown@2.0.0(supports-color@8.1.1): dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 '@types/unist': 3.0.3 decode-named-character-reference: 1.0.2 devlop: 1.1.0 @@ -35753,7 +35698,7 @@ snapshots: mdast-util-from-markdown@2.0.2(supports-color@8.1.1): dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 '@types/unist': 3.0.3 decode-named-character-reference: 1.0.2 devlop: 1.1.0 @@ -35770,7 +35715,7 @@ snapshots: mdast-util-frontmatter@2.0.1(supports-color@8.1.1): dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 devlop: 1.1.0 escape-string-regexp: 5.0.0 mdast-util-from-markdown: 2.0.2(supports-color@8.1.1) @@ -35788,7 +35733,7 @@ snapshots: mdast-util-gfm-autolink-literal@2.0.0: dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 ccount: 2.0.1 devlop: 1.1.0 mdast-util-find-and-replace: 3.0.1 @@ -35802,7 +35747,7 @@ snapshots: mdast-util-gfm-footnote@2.0.0(supports-color@8.1.1): dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.2(supports-color@8.1.1) mdast-util-to-markdown: 2.1.0 @@ -35817,7 +35762,7 @@ snapshots: mdast-util-gfm-strikethrough@2.0.0(supports-color@8.1.1): dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 mdast-util-from-markdown: 2.0.2(supports-color@8.1.1) mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: @@ -35834,7 +35779,7 @@ snapshots: mdast-util-gfm-table@2.0.0(supports-color@8.1.1): dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 devlop: 1.1.0 markdown-table: 3.0.3 mdast-util-from-markdown: 2.0.2(supports-color@8.1.1) @@ -35849,7 +35794,7 @@ snapshots: mdast-util-gfm-task-list-item@2.0.0(supports-color@8.1.1): dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.2(supports-color@8.1.1) mdast-util-to-markdown: 2.1.0 @@ -35883,7 +35828,7 @@ snapshots: mdast-util-math@3.0.0(supports-color@8.1.1): dependencies: '@types/hast': 3.0.4 - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 devlop: 1.1.0 longest-streak: 3.1.0 mdast-util-from-markdown: 2.0.2(supports-color@8.1.1) @@ -35906,7 +35851,7 @@ snapshots: dependencies: '@types/estree-jsx': 1.0.1 '@types/hast': 3.0.4 - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.2(supports-color@8.1.1) mdast-util-to-markdown: 2.1.0 @@ -35934,7 +35879,7 @@ snapshots: dependencies: '@types/estree-jsx': 1.0.1 '@types/hast': 3.0.4 - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 '@types/unist': 3.0.3 ccount: 2.0.1 devlop: 1.1.0 @@ -35981,7 +35926,7 @@ snapshots: dependencies: '@types/estree-jsx': 1.0.1 '@types/hast': 3.0.4 - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.2(supports-color@8.1.1) mdast-util-to-markdown: 2.1.0 @@ -35995,7 +35940,7 @@ snapshots: mdast-util-phrasing@4.1.0: dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 unist-util-is: 6.0.0 mdast-util-to-hast@12.3.0: @@ -36012,7 +35957,7 @@ snapshots: mdast-util-to-hast@13.2.0: dependencies: '@types/hast': 3.0.4 - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 '@ungap/structured-clone': 1.2.0 devlop: 1.1.0 micromark-util-sanitize-uri: 2.0.1 @@ -36034,7 +35979,7 @@ snapshots: mdast-util-to-markdown@2.1.0: dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 '@types/unist': 3.0.3 longest-streak: 3.1.0 mdast-util-phrasing: 4.1.0 @@ -36049,7 +35994,7 @@ snapshots: mdast-util-to-string@4.0.0: dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 mdast-util-toc@6.1.1: dependencies: @@ -36377,8 +36322,8 @@ snapshots: micromark-extension-mdxjs@1.0.1: dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) micromark-extension-mdx-expression: 1.0.8 micromark-extension-mdx-jsx: 1.0.5 micromark-extension-mdx-md: 1.0.1 @@ -36628,7 +36573,7 @@ snapshots: micromark@3.2.0(supports-color@8.1.1): dependencies: '@types/debug': 4.1.9 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) decode-named-character-reference: 1.0.2 micromark-core-commonmark: 1.1.0 micromark-factory-space: 1.1.0 @@ -36650,7 +36595,7 @@ snapshots: micromark@4.0.0(supports-color@8.1.1): dependencies: '@types/debug': 4.1.9 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) decode-named-character-reference: 1.0.2 devlop: 1.1.0 micromark-core-commonmark: 2.0.1 @@ -36967,6 +36912,20 @@ snapshots: neo-async@2.6.2: {} + next-contentlayer2@0.4.6(contentlayer2@0.4.6(esbuild@0.25.2)(markdown-wasm@1.2.0)(supports-color@8.1.1))(esbuild@0.25.2)(markdown-wasm@1.2.0)(next@15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@8.1.1): + dependencies: + '@contentlayer2/core': 0.4.3(esbuild@0.25.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) + '@contentlayer2/utils': 0.4.3 + contentlayer2: 0.4.6(esbuild@0.25.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) + next: 15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@effect-ts/otel-node' + - esbuild + - markdown-wasm + - supports-color + next-contentlayer2@0.4.6(contentlayer2@0.4.6(esbuild@0.25.2)(markdown-wasm@1.2.0)(supports-color@8.1.1))(esbuild@0.25.2)(markdown-wasm@1.2.0)(next@15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@8.1.1): dependencies: '@contentlayer2/core': 0.4.3(esbuild@0.25.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) @@ -36996,12 +36955,7 @@ snapshots: dependencies: js-yaml-loader: 1.2.2 - next-router-mock@0.9.13(next@15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1): - dependencies: - next: 15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4) - react: 18.3.1 - - next-router-mock@0.9.13(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1): + next-router-mock@0.9.13(next@15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react@18.3.1): dependencies: next: 15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4) react: 18.3.1 @@ -37023,7 +36977,7 @@ snapshots: dependencies: '@next/env': 15.5.2 '@swc/helpers': 0.5.15 - caniuse-lite: 1.0.30001695 + caniuse-lite: 1.0.30001743 postcss: 8.4.31 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -37049,7 +37003,7 @@ snapshots: dependencies: '@next/env': 15.5.2 '@swc/helpers': 0.5.15 - caniuse-lite: 1.0.30001695 + caniuse-lite: 1.0.30001743 postcss: 8.4.31 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -37077,14 +37031,14 @@ snapshots: dependencies: '@cloudflare/kv-asset-handler': 0.4.0 '@netlify/functions': 3.0.4 - '@rollup/plugin-alias': 5.1.1(rollup@4.38.0) - '@rollup/plugin-commonjs': 28.0.3(rollup@4.38.0) - '@rollup/plugin-inject': 5.0.5(rollup@4.38.0) - '@rollup/plugin-json': 6.1.0(rollup@4.38.0) - '@rollup/plugin-node-resolve': 16.0.1(rollup@4.38.0) - '@rollup/plugin-replace': 6.0.2(rollup@4.38.0) - '@rollup/plugin-terser': 0.4.4(rollup@4.38.0) - '@vercel/nft': 0.29.2(rollup@4.38.0)(supports-color@8.1.1) + '@rollup/plugin-alias': 5.1.1(rollup@4.50.2) + '@rollup/plugin-commonjs': 28.0.3(rollup@4.50.2) + '@rollup/plugin-inject': 5.0.5(rollup@4.50.2) + '@rollup/plugin-json': 6.1.0(rollup@4.50.2) + '@rollup/plugin-node-resolve': 16.0.1(rollup@4.50.2) + '@rollup/plugin-replace': 6.0.2(rollup@4.50.2) + '@rollup/plugin-terser': 0.4.4(rollup@4.50.2) + '@vercel/nft': 0.29.2(rollup@4.50.2)(supports-color@8.1.1) archiver: 7.0.1 c12: 3.0.2(magicast@0.3.5) chokidar: 4.0.3 @@ -37109,11 +37063,11 @@ snapshots: hookable: 5.5.3 httpxy: 0.1.7 ioredis: 5.6.0(supports-color@8.1.1) - jiti: 2.4.2 + jiti: 2.5.1 klona: 2.0.6 knitwork: 1.2.0 listhen: 1.9.0 - magic-string: 0.30.17 + magic-string: 0.30.19 magicast: 0.3.5 mime: 4.0.6 mlly: 1.7.4 @@ -37127,14 +37081,14 @@ snapshots: pkg-types: 2.1.0 pretty-bytes: 6.1.1 radix3: 1.1.2 - rollup: 4.38.0 - rollup-plugin-visualizer: 5.14.0(rollup@4.38.0) + rollup: 4.50.2 + rollup-plugin-visualizer: 5.14.0(rollup@4.50.2) scule: 1.3.0 semver: 7.7.2 serve-placeholder: 2.0.2 serve-static: 1.16.2(supports-color@8.1.1) source-map: 0.7.4 - std-env: 3.8.1 + std-env: 3.9.0 ufo: 1.5.4 ultrahtml: 1.5.3 uncrypto: 0.1.3 @@ -37497,12 +37451,12 @@ snapshots: mitt: 3.0.1 next: 15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4) - nuqs@2.4.1(next@15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react-router@7.5.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1): + nuqs@2.4.1(next@15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4))(react-router@7.5.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1): dependencies: mitt: 3.0.1 react: 18.3.1 optionalDependencies: - next: 15.5.2(@babel/core@7.26.10(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4) + next: 15.5.2(@babel/core@7.28.4(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.4) react-router: 7.5.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) nuxt@4.1.2(@electric-sql/pglite@0.2.15)(@parcel/watcher@2.5.1)(@types/node@22.13.14)(@vue/compiler-sfc@3.5.21)(aws4fetch@1.0.20)(db0@0.3.2(@electric-sql/pglite@0.2.15)(drizzle-orm@0.44.2(@electric-sql/pglite@0.2.15)(@opentelemetry/api@1.9.0)(@types/pg@8.15.4)(pg@8.16.3)))(drizzle-orm@0.44.2(@electric-sql/pglite@0.2.15)(@opentelemetry/api@1.9.0)(@types/pg@8.15.4)(pg@8.16.3))(encoding@0.1.13)(eslint@8.57.0(supports-color@8.1.1))(ioredis@5.7.0(supports-color@8.1.1))(magicast@0.3.5)(rollup@4.50.2)(sass@1.77.4)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.20.3)(typescript@5.9.2)(vite@6.3.5(@types/node@22.13.14)(jiti@2.5.1)(sass@1.77.4)(terser@5.39.0)(tsx@4.20.3)(yaml@2.8.1))(yaml@2.8.1): @@ -38294,8 +38248,6 @@ snapshots: picomatch@2.3.1: {} - picomatch@4.0.2: {} - picomatch@4.0.3: {} pidtree@0.3.1: {} @@ -38457,24 +38409,24 @@ snapshots: dependencies: postcss: 8.5.6 - postcss-import@15.1.0(postcss@8.5.3): + postcss-import@15.1.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.10 - postcss-js@4.0.1(postcss@8.5.3): + postcss-js@4.0.1(postcss@8.5.6): dependencies: camelcase-css: 2.0.1 - postcss: 8.5.3 + postcss: 8.5.6 - postcss-load-config@4.0.1(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.9.2)): + postcss-load-config@4.0.1(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.9.2)): dependencies: lilconfig: 2.1.0 - yaml: 2.4.5 + yaml: 2.8.1 optionalDependencies: - postcss: 8.5.3 + postcss: 8.5.6 ts-node: 10.9.2(@types/node@22.13.14)(typescript@5.9.2) postcss-merge-longhand@7.0.5(postcss@8.5.6): @@ -38516,9 +38468,9 @@ snapshots: postcss: 8.5.6 postcss-selector-parser: 7.1.0 - postcss-nested@6.0.1(postcss@8.5.3): + postcss-nested@6.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-selector-parser: 6.0.13 postcss-normalize-charset@7.0.1(postcss@8.5.6): @@ -38613,7 +38565,7 @@ snapshots: postcss@8.4.31: dependencies: - nanoid: 3.3.8 + nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -39086,7 +39038,7 @@ snapshots: react-markdown@10.1.0(@types/react@18.3.3)(react@18.3.1)(supports-color@8.1.1): dependencies: '@types/hast': 3.0.4 - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 '@types/react': 18.3.3 devlop: 1.1.0 hast-util-to-jsx-runtime: 2.3.6(supports-color@8.1.1) @@ -39628,7 +39580,7 @@ snapshots: remark-frontmatter@5.0.0(supports-color@8.1.1): dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 mdast-util-frontmatter: 2.0.1(supports-color@8.1.1) micromark-extension-frontmatter: 2.0.0 unified: 11.0.5 @@ -39646,7 +39598,7 @@ snapshots: remark-gfm@4.0.0(supports-color@8.1.1): dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 mdast-util-gfm: 3.0.0(supports-color@8.1.1) micromark-extension-gfm: 3.0.0 remark-parse: 11.0.0(supports-color@8.1.1) @@ -39657,7 +39609,7 @@ snapshots: remark-html@16.0.1: dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 hast-util-sanitize: 5.0.0 hast-util-to-html: 9.0.0 mdast-util-to-hast: 13.2.0 @@ -39665,7 +39617,7 @@ snapshots: remark-math@6.0.0(supports-color@8.1.1): dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 mdast-util-math: 3.0.0(supports-color@8.1.1) micromark-extension-math: 3.0.0 unified: 11.0.5 @@ -39674,12 +39626,12 @@ snapshots: remark-mdx-frontmatter@4.0.0: dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 estree-util-is-identifier-name: 3.0.0 estree-util-value-to-estree: 3.3.3 toml: 3.0.0 unified: 11.0.5 - yaml: 2.4.5 + yaml: 2.8.1 remark-mdx@2.3.0(supports-color@8.1.1): dependencies: @@ -39705,7 +39657,7 @@ snapshots: remark-parse@11.0.0(supports-color@8.1.1): dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 mdast-util-from-markdown: 2.0.2(supports-color@8.1.1) micromark-util-types: 2.0.0 unified: 11.0.5 @@ -39722,7 +39674,7 @@ snapshots: remark-rehype@11.1.1: dependencies: '@types/hast': 3.0.4 - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 mdast-util-to-hast: 13.2.0 unified: 11.0.5 vfile: 6.0.3 @@ -39735,7 +39687,7 @@ snapshots: remark-stringify@11.0.0: dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 mdast-util-to-markdown: 2.1.0 unified: 11.0.5 @@ -39750,7 +39702,7 @@ snapshots: remark@15.0.1(supports-color@8.1.1): dependencies: - '@types/mdast': 4.0.1 + '@types/mdast': 4.0.4 remark-parse: 11.0.0(supports-color@8.1.1) remark-stringify: 11.0.0 unified: 11.0.5 @@ -39871,19 +39823,19 @@ snapshots: glob: 11.0.0 package-json-from-dist: 1.0.1 - rollup-plugin-visualizer@5.14.0(rollup@4.38.0): + rollup-plugin-visualizer@5.14.0(rollup@4.50.2): dependencies: open: 8.4.2 - picomatch: 4.0.2 + picomatch: 4.0.3 source-map: 0.7.4 yargs: 17.7.2 optionalDependencies: - rollup: 4.38.0 + rollup: 4.50.2 rollup-plugin-visualizer@6.0.3(rollup@4.50.2): dependencies: open: 8.4.2 - picomatch: 4.0.2 + picomatch: 4.0.3 source-map: 0.7.6 yargs: 17.7.2 optionalDependencies: @@ -39944,7 +39896,7 @@ snapshots: router@2.2.0(supports-color@8.1.1): dependencies: - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) depd: 2.0.0 is-promise: 4.0.0 parseurl: 1.3.3 @@ -40118,7 +40070,7 @@ snapshots: send@1.2.0(supports-color@8.1.1): dependencies: - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -40411,7 +40363,7 @@ snapshots: dependencies: '@kwsites/file-exists': 1.1.1(supports-color@8.1.1) '@kwsites/promise-deferred': 1.1.1 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -40423,7 +40375,7 @@ snapshots: simple-websocket@9.1.0(supports-color@8.1.1): dependencies: - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) queue-microtask: 1.2.3 randombytes: 2.1.0 readable-stream: 3.6.2 @@ -40489,7 +40441,7 @@ snapshots: socks-proxy-agent@6.2.1(supports-color@8.1.1): dependencies: agent-base: 6.0.2(supports-color@8.1.1) - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) socks: 2.8.3 transitivePeerDependencies: - supports-color @@ -40497,7 +40449,7 @@ snapshots: socks-proxy-agent@8.0.3(supports-color@8.1.1): dependencies: agent-base: 7.1.3 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) socks: 2.8.3 transitivePeerDependencies: - supports-color @@ -40903,7 +40855,7 @@ snapshots: sucrase@3.34.0: dependencies: - '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/gen-mapping': 0.3.13 commander: 4.1.1 glob: 7.1.6 lines-and-columns: 1.2.4 @@ -41026,17 +40978,19 @@ snapshots: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.1.1 - postcss: 8.5.3 - postcss-import: 15.1.0(postcss@8.5.3) - postcss-js: 4.0.1(postcss@8.5.3) - postcss-load-config: 4.0.1(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.9.2)) - postcss-nested: 6.0.1(postcss@8.5.3) + postcss: 8.5.6 + postcss-import: 15.1.0(postcss@8.5.6) + postcss-js: 4.0.1(postcss@8.5.6) + postcss-load-config: 4.0.1(postcss@8.5.6)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.9.2)) + postcss-nested: 6.0.1(postcss@8.5.6) postcss-selector-parser: 6.0.13 resolve: 1.22.10 sucrase: 3.34.0 transitivePeerDependencies: - ts-node + tailwindcss@4.1.13: {} + tapable@2.2.1: {} tar-fs@2.1.3: @@ -41183,8 +41137,8 @@ snapshots: tinyglobby@0.2.14: dependencies: - fdir: 6.4.6(picomatch@4.0.2) - picomatch: 4.0.2 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 tinyglobby@0.2.15: dependencies: @@ -41652,14 +41606,14 @@ snapshots: escape-string-regexp: 5.0.0 estree-walker: 3.0.3 local-pkg: 1.1.1 - magic-string: 0.30.17 + magic-string: 0.30.19 mlly: 1.7.4 pathe: 2.0.3 - picomatch: 4.0.2 + picomatch: 4.0.3 pkg-types: 1.3.1 scule: 1.3.0 strip-literal: 3.0.0 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 unplugin: 2.2.2 unplugin-utils: 0.2.4 @@ -41802,7 +41756,7 @@ snapshots: unplugin-utils@0.2.4: dependencies: pathe: 2.0.3 - picomatch: 4.0.2 + picomatch: 4.0.3 unplugin-utils@0.3.0: dependencies: @@ -41914,7 +41868,7 @@ snapshots: unwasm@0.3.9: dependencies: knitwork: 1.2.0 - magic-string: 0.30.17 + magic-string: 0.30.19 mlly: 1.7.4 pathe: 1.1.2 pkg-types: 1.3.1 @@ -42220,7 +42174,7 @@ snapshots: vite-node@3.0.0-beta.2(@types/node@22.13.14)(jiti@2.5.1)(sass@1.77.4)(supports-color@8.1.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.1): dependencies: cac: 6.7.14 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) es-module-lexer: 1.6.0 pathe: 1.1.2 vite: 6.3.5(@types/node@22.13.14)(jiti@2.5.1)(sass@1.77.4)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.1) @@ -42390,11 +42344,11 @@ snapshots: vite@6.3.5(@types/node@22.13.14)(jiti@2.5.1)(sass@1.77.4)(terser@5.39.0)(tsx@4.19.3)(yaml@2.4.5): dependencies: esbuild: 0.25.2 - fdir: 6.4.6(picomatch@4.0.2) - picomatch: 4.0.2 - postcss: 8.5.3 - rollup: 4.38.0 - tinyglobby: 0.2.14 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.50.2 + tinyglobby: 0.2.15 optionalDependencies: '@types/node': 22.13.14 fsevents: 2.3.3 @@ -42407,11 +42361,11 @@ snapshots: vite@6.3.5(@types/node@22.13.14)(jiti@2.5.1)(sass@1.77.4)(terser@5.39.0)(tsx@4.19.3)(yaml@2.8.1): dependencies: esbuild: 0.25.2 - fdir: 6.4.6(picomatch@4.0.2) - picomatch: 4.0.2 - postcss: 8.5.3 - rollup: 4.38.0 - tinyglobby: 0.2.14 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.50.2 + tinyglobby: 0.2.15 optionalDependencies: '@types/node': 22.13.14 fsevents: 2.3.3 @@ -42424,11 +42378,11 @@ snapshots: vite@6.3.5(@types/node@22.13.14)(jiti@2.5.1)(sass@1.77.4)(terser@5.39.0)(tsx@4.20.3)(yaml@2.8.1): dependencies: esbuild: 0.25.2 - fdir: 6.4.6(picomatch@4.0.2) - picomatch: 4.0.2 - postcss: 8.5.3 - rollup: 4.38.0 - tinyglobby: 0.2.14 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.50.2 + tinyglobby: 0.2.15 optionalDependencies: '@types/node': 22.13.14 fsevents: 2.3.3