From cb66b6b6355f3b18b7d93dd6bd4d83869efac4cf Mon Sep 17 00:00:00 2001 From: Steve Chavez Date: Tue, 30 Sep 2025 14:37:07 -0500 Subject: [PATCH] feat: blog post postgrest 13 (#38840) * add CodeTabs component to www * add to www mdx components --- .../_blog/2025-09-30-postgrest-13-release.mdx | 204 ++++++ apps/www/app/blog/[slug]/page.tsx | 6 +- apps/www/components/CodeBlock/CodeBlock.tsx | 23 +- .../components/CodeBlock/CodeBlock.utils.js | 233 +++++++ .../CodeTabs/CodeTabs.components.tsx | 21 + apps/www/components/CodeTabs/index.ts | 2 + .../components/CodeTabs/simple-transform.ts | 48 ++ apps/www/components/CodeTabs/utils.ts | 13 + apps/www/components/Tabs/Tabs.tsx | 77 +++ apps/www/components/Tabs/index.ts | 2 + apps/www/lib/authors.json | 8 + apps/www/lib/mdx/mdxComponents.tsx | 20 +- apps/www/lib/mdx/mdxSerialize.ts | 16 +- apps/www/package.json | 12 +- .../postgrest-13-release.png | Bin 0 -> 22666 bytes apps/www/public/sitemap_www.xml | 12 + pnpm-lock.yaml | 602 ++++++++---------- 17 files changed, 960 insertions(+), 339 deletions(-) create mode 100644 apps/www/_blog/2025-09-30-postgrest-13-release.mdx create mode 100644 apps/www/components/CodeTabs/CodeTabs.components.tsx create mode 100644 apps/www/components/CodeTabs/index.ts create mode 100644 apps/www/components/CodeTabs/simple-transform.ts create mode 100644 apps/www/components/CodeTabs/utils.ts create mode 100644 apps/www/components/Tabs/Tabs.tsx create mode 100644 apps/www/components/Tabs/index.ts create mode 100644 apps/www/public/images/blog/2025-09-30-postgrest-13-release/postgrest-13-release.png 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 0000000000000000000000000000000000000000..12d899045e44a6cbe326b09fb2bc6445844880ca GIT binary patch literal 22666 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 ZDdo6Qs2jl4{LII)G`BlhYUX+Ke*nVarnLY7 literal 0 HcmV?d00001 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