diff --git a/app/about/page.tsx b/app/about/page.tsx
index 8f64a36d0..1e7a46609 100644
--- a/app/about/page.tsx
+++ b/app/about/page.tsx
@@ -1,13 +1,13 @@
import Image from "next/image";
import Link from "next/link";
import type { ReactNode } from "react";
-import { getAllArticles } from "src/article";
+import { getAllArticles } from "@/src/article";
import {
type Author,
getAllAuthors,
getPodcastEpisodes,
-} from "src/data/content";
-import { RouteTo } from "src/routing";
+} from "@/src/data/content";
+import { RouteTo } from "@/src/routing";
const Page = async () => {
const episodes = await getPodcastEpisodes("content/podcast.yml");
@@ -128,7 +128,7 @@ const PersonCard = ({
photoUrl: string;
mail: string;
}) => (
-
+
{
const auth = request.headers.get("Authorization");
diff --git a/app/api/feeds/hrebenovka/route.ts b/app/api/feeds/hrebenovka/route.ts
index 4d37d84d9..3ce97f05f 100644
--- a/app/api/feeds/hrebenovka/route.ts
+++ b/app/api/feeds/hrebenovka/route.ts
@@ -2,9 +2,9 @@ import { join } from "node:path";
import {
convertEpisodeToPodcastItem,
getPodcastEpisodes,
-} from "src/data/content";
-import { type iTunesPodcastShow, renderPodcastFeed } from "src/feeds";
-import { absolute, RouteTo } from "src/routing";
+} from "@/src/data/content";
+import { type iTunesPodcastShow, renderPodcastFeed } from "@/src/feeds";
+import { absolute, RouteTo } from "@/src/routing";
export async function GET() {
const dataFile = join(process.cwd(), "content/hrebenovka.yml");
diff --git a/app/api/feeds/podcast/route.ts b/app/api/feeds/podcast/route.ts
index 57d96fd8e..2dd2bfd38 100644
--- a/app/api/feeds/podcast/route.ts
+++ b/app/api/feeds/podcast/route.ts
@@ -2,9 +2,9 @@ import { join } from "node:path";
import {
convertEpisodeToPodcastItem,
getPodcastEpisodes,
-} from "src/data/content";
-import { type iTunesPodcastShow, renderPodcastFeed } from "src/feeds";
-import { absolute, RouteTo } from "src/routing";
+} from "@/src/data/content";
+import { type iTunesPodcastShow, renderPodcastFeed } from "@/src/feeds";
+import { absolute, RouteTo } from "@/src/routing";
export async function GET() {
const dataFile = join(process.cwd(), "content/podcast.yml");
diff --git a/app/clanky/ArchiveView.tsx b/app/clanky/ArchiveView.tsx
index 5f9bd3b18..4754674cb 100644
--- a/app/clanky/ArchiveView.tsx
+++ b/app/clanky/ArchiveView.tsx
@@ -4,9 +4,9 @@ import Image from "next/image";
import Link from "next/link";
import { useRouter, useSearchParams } from "next/navigation";
import { type ChangeEvent, useState } from "react";
-import type { Metadata } from "src/article";
-import { RouteTo } from "src/routing";
-import { tilde } from "src/utils";
+import type { Metadata } from "@/src/article";
+import { RouteTo } from "@/src/routing";
+import { tilde } from "@/src/utils";
import {
type Filter,
type FilterOptions,
diff --git a/app/clanky/[...path]/ArticleContent.tsx b/app/clanky/[...path]/ArticleContent.tsx
index 7df314a89..762f9cb75 100644
--- a/app/clanky/[...path]/ArticleContent.tsx
+++ b/app/clanky/[...path]/ArticleContent.tsx
@@ -2,10 +2,10 @@ import Markdoc from "@markdoc/markdoc";
import Image from "next/image";
import { default as NextLink } from "next/link";
import React from "react";
-import { plausibleEventClass } from "src/data/plausible";
-import { defaultMarkdocConfig } from "src/markdoc-schema";
-import { siteUrl } from "src/routing";
-import { getImageSrcSet, tilde } from "src/utils";
+import { plausibleEventClass } from "@/src/data/plausible";
+import { defaultMarkdocConfig } from "@/src/markdoc-schema";
+import { siteUrl } from "@/src/routing";
+import { getImageSrcSet, tilde } from "@/src/utils";
import { DatawrapperChart } from "./DatawrapperChart";
import { PodcastPlayer } from "./PodcastPlayer";
diff --git a/app/clanky/[...path]/PodcastPlayer.tsx b/app/clanky/[...path]/PodcastPlayer.tsx
index 0edcbbd27..e97c94070 100644
--- a/app/clanky/[...path]/PodcastPlayer.tsx
+++ b/app/clanky/[...path]/PodcastPlayer.tsx
@@ -2,9 +2,9 @@
import Image from "next/image";
import Plausible from "plausible-tracker";
-import type { PodcastEpisode } from "src/data/podcast";
-import { RouteTo } from "src/routing";
-import { tilde } from "src/utils";
+import type { PodcastEpisode } from "@/src/data/podcast";
+import { RouteTo } from "@/src/routing";
+import { tilde } from "@/src/utils";
type PodcastPlayerProps = {
episode: PodcastEpisode;
@@ -52,7 +52,8 @@ const ServiceButton = ({ href, title }: { href: string; title: string }) => (
▷ {title}
diff --git a/app/clanky/[...path]/page.tsx b/app/clanky/[...path]/page.tsx
index ee980149a..25e7c82d6 100644
--- a/app/clanky/[...path]/page.tsx
+++ b/app/clanky/[...path]/page.tsx
@@ -1,20 +1,20 @@
-import { ArticleContent } from "app/clanky/[...path]/ArticleContent";
-import { BannerBox } from "components/BannerBox";
-import { PreviewNest } from "components/PreviewNest";
-import { SectionDivider } from "components/SectionDivider";
import type { Metadata } from "next";
import Image from "next/image";
import { notFound } from "next/navigation";
-import { type Article, compareByDate, readArticle } from "src/article";
-import { getCachedData } from "src/data/cache";
-import { type Author, getAllAuthors } from "src/data/content";
+import { ArticleContent } from "@/app/clanky/[...path]/ArticleContent";
+import { BannerBox } from "@/components/BannerBox";
+import { PreviewNest } from "@/components/PreviewNest";
+import { SectionDivider } from "@/components/SectionDivider";
+import { type Article, compareByDate, readArticle } from "@/src/article";
+import { getCachedData } from "@/src/data/cache";
+import { type Author, getAllAuthors } from "@/src/data/content";
import {
articleRoot,
getFileSystemPathForUrlPathFragments,
getFilesRecursively,
getUrlPathFragmentsForFileSystemPath,
-} from "src/server-utils";
-import { endlessGeneratorOf, getResizedImageUrl, tilde } from "src/utils";
+} from "@/src/server-utils";
+import { endlessGeneratorOf, getResizedImageUrl, tilde } from "@/src/utils";
type Params = {
path: string[];
diff --git a/app/clanky/filters.ts b/app/clanky/filters.ts
index 8b6c0389e..80e70aa53 100644
--- a/app/clanky/filters.ts
+++ b/app/clanky/filters.ts
@@ -1,5 +1,5 @@
-import type { Metadata } from "src/article";
-import { unique } from "src/utils";
+import type { Metadata } from "@/src/article";
+import { unique } from "@/src/utils";
export type FilterOptions = Record;
export type Settings = Record;
diff --git a/app/clanky/page.tsx b/app/clanky/page.tsx
index 73cac4c84..e11f013bc 100644
--- a/app/clanky/page.tsx
+++ b/app/clanky/page.tsx
@@ -1,6 +1,6 @@
import type { Metadata } from "next";
import { Suspense } from "react";
-import { getAllArticles, stripBody } from "src/article";
+import { getAllArticles, stripBody } from "@/src/article";
import { ArchiveView } from "./ArchiveView";
import { buildFilterOptions } from "./filters";
diff --git a/app/layout.tsx b/app/layout.tsx
index 442f8e248..47c2a40d3 100644
--- a/app/layout.tsx
+++ b/app/layout.tsx
@@ -2,7 +2,7 @@ import type { Metadata } from "next";
import { PT_Serif } from "next/font/google";
import Image from "next/image";
import Link from "next/link";
-import { RouteTo, siteUrl } from "src/routing";
+import { RouteTo, siteUrl } from "@/src/routing";
import { NewsletterBox } from "./newsletter/NewsletterBox";
import { SearchForm } from "./SearchForm";
import "./global.css";
diff --git a/app/obchod/[slug]/BookDetail.tsx b/app/obchod/[slug]/BookDetail.tsx
index a6a8e0356..7da7e57b8 100644
--- a/app/obchod/[slug]/BookDetail.tsx
+++ b/app/obchod/[slug]/BookDetail.tsx
@@ -1,7 +1,7 @@
"use client";
import { useState } from "react";
-import type { Book } from "src/data/books";
+import type { Book } from "@/src/data/books";
import { OrderForm } from "./OrderForm";
type Props = {
diff --git a/app/obchod/[slug]/actions.ts b/app/obchod/[slug]/actions.ts
index a61c4c5ea..2764ceb58 100644
--- a/app/obchod/[slug]/actions.ts
+++ b/app/obchod/[slug]/actions.ts
@@ -1,12 +1,5 @@
"use server";
-import { type Book, createOrder, getBookById } from "src/data/books";
-import {
- createInvoice,
- createSubject,
- getBearerTokenFromEnv,
- type InvoiceLine,
-} from "src/fakturoid";
import {
type decodeType,
optional,
@@ -14,6 +7,13 @@ import {
string,
union,
} from "typescript-json-decoder";
+import { type Book, createOrder, getBookById } from "@/src/data/books";
+import {
+ createInvoice,
+ createSubject,
+ getBearerTokenFromEnv,
+ type InvoiceLine,
+} from "@/src/fakturoid";
const numberFromString = (val: unknown) => parseInt(string(val), 10);
diff --git a/app/obchod/[slug]/page.tsx b/app/obchod/[slug]/page.tsx
index bbf244247..e7df51f18 100644
--- a/app/obchod/[slug]/page.tsx
+++ b/app/obchod/[slug]/page.tsx
@@ -1,11 +1,11 @@
import type { Metadata } from "next";
+import Image from "next/image";
import { notFound } from "next/navigation";
-import { getAllBooks } from "src/data/books";
+import { Breadcrumbs } from "@/components/Breadcrumbs";
+import { getAllBooks } from "@/src/data/books";
+import { RouteTo } from "@/src/routing";
+import { getResizedImageUrl } from "@/src/utils";
import { BookDetails } from "./BookDetail";
-import Image from "next/image";
-import { getResizedImageUrl } from "src/utils";
-import { Breadcrumbs } from "components/Breadcrumbs";
-import { RouteTo } from "src/routing";
type Params = {
slug: string;
diff --git a/app/obchod/page.tsx b/app/obchod/page.tsx
index d65d7b7cd..b5ba905f8 100644
--- a/app/obchod/page.tsx
+++ b/app/obchod/page.tsx
@@ -1,9 +1,9 @@
import type { Metadata } from "next";
import Image from "next/image";
import Link from "next/link";
-import { type Book, getAllBooks, sortByYear } from "src/data/books";
-import { RouteTo } from "src/routing";
-import { getResizedImageUrl } from "src/utils";
+import { type Book, getAllBooks, sortByYear } from "@/src/data/books";
+import { RouteTo } from "@/src/routing";
+import { getResizedImageUrl } from "@/src/utils";
export const metadata: Metadata = {
title: "Ohlasy: Knihy",
diff --git a/app/page.tsx b/app/page.tsx
index 304681134..45f7b2700 100644
--- a/app/page.tsx
+++ b/app/page.tsx
@@ -1,21 +1,21 @@
-import { BannerBox } from "components/BannerBox";
-import { PreviewNest } from "components/PreviewNest";
-import { SectionDivider } from "components/SectionDivider";
import Image from "next/image";
import Link from "next/link";
-import { compareByDate, getAllArticles, type Metadata } from "src/article";
-import type { Banner } from "src/data/banners";
-import { getAllBanners } from "src/data/banners";
-import { getAllAuthors } from "src/data/content";
+import { BannerBox } from "@/components/BannerBox";
+import { PreviewNest } from "@/components/PreviewNest";
+import { SectionDivider } from "@/components/SectionDivider";
+import { compareByDate, getAllArticles, type Metadata } from "@/src/article";
+import type { Banner } from "@/src/data/banners";
+import { getAllBanners } from "@/src/data/banners";
+import { getAllAuthors } from "@/src/data/content";
import {
getLatestTopicsSummary,
getUserAvatar,
type LatestTopicsSummary,
-} from "src/data/forum";
-import type { TopArticles } from "src/data/plausible";
-import { getTopArticles, plausibleEventClass } from "src/data/plausible";
-import { RouteTo } from "src/routing";
-import { endlessGeneratorOf, shuffleInPlace, tilde } from "src/utils";
+} from "@/src/data/forum";
+import type { TopArticles } from "@/src/data/plausible";
+import { getTopArticles, plausibleEventClass } from "@/src/data/plausible";
+import { RouteTo } from "@/src/routing";
+import { endlessGeneratorOf, shuffleInPlace, tilde } from "@/src/utils";
// Revalidate this page every 5 minutes
export const revalidate = 300;
diff --git a/app/podcast/page.tsx b/app/podcast/page.tsx
index d1f08c09e..463649fd3 100644
--- a/app/podcast/page.tsx
+++ b/app/podcast/page.tsx
@@ -1,9 +1,9 @@
import type { Metadata } from "next";
import Image from "next/image";
import Link from "next/link";
-import { type Article, compareByDate, getAllArticles } from "src/article";
-import { RouteTo } from "src/routing";
-import { tilde } from "src/utils";
+import { type Article, compareByDate, getAllArticles } from "@/src/article";
+import { RouteTo } from "@/src/routing";
+import { tilde } from "@/src/utils";
export const metadata: Metadata = {
title: "Ohlasy Podcast",
diff --git a/app/stats/content-stats.ts b/app/stats/content-stats.ts
index 9df7bad03..0cb42fbdc 100644
--- a/app/stats/content-stats.ts
+++ b/app/stats/content-stats.ts
@@ -1,4 +1,4 @@
-import type { Article } from "src/article";
+import type { Article } from "@/src/article";
export function groupBySelector(
values: Value[],
diff --git a/app/stats/content/articles/count/route.ts b/app/stats/content/articles/count/route.ts
index 5503c3ec8..2dfb926b1 100644
--- a/app/stats/content/articles/count/route.ts
+++ b/app/stats/content/articles/count/route.ts
@@ -1,6 +1,6 @@
-import { getAllArticles } from "src/article";
-import { articleRoot } from "src/server-utils";
-import { renderCSV } from "app/stats/content-stats";
+import { renderCSV } from "@/app/stats/content-stats";
+import { getAllArticles } from "@/src/article";
+import { articleRoot } from "@/src/server-utils";
export async function GET() {
const stats: Record = {};
diff --git a/app/stats/content/articles/length/route.ts b/app/stats/content/articles/length/route.ts
index 53499a95e..838e58f43 100644
--- a/app/stats/content/articles/length/route.ts
+++ b/app/stats/content/articles/length/route.ts
@@ -1,6 +1,6 @@
-import { type Article, getAllArticles } from "src/article";
-import { articleRoot } from "src/server-utils";
-import { renderCSV } from "app/stats/content-stats";
+import { renderCSV } from "@/app/stats/content-stats";
+import { type Article, getAllArticles } from "@/src/article";
+import { articleRoot } from "@/src/server-utils";
const readingSpeedInWordsPerMinute = 200;
diff --git a/app/stats/content/authors/bus_factor/route.ts b/app/stats/content/authors/bus_factor/route.ts
index ef1b90042..bde3ca9c5 100644
--- a/app/stats/content/authors/bus_factor/route.ts
+++ b/app/stats/content/authors/bus_factor/route.ts
@@ -1,6 +1,6 @@
-import { getAllArticles } from "src/article";
-import { articleRoot } from "src/server-utils";
-import { unique } from "src/utils";
+import { getAllArticles } from "@/src/article";
+import { articleRoot } from "@/src/server-utils";
+import { unique } from "@/src/utils";
export function GET() {
const articles = getAllArticles(articleRoot);
diff --git a/app/stats/content/authors/diversity/route.ts b/app/stats/content/authors/diversity/route.ts
index 03466f2ab..4d4021a1a 100644
--- a/app/stats/content/authors/diversity/route.ts
+++ b/app/stats/content/authors/diversity/route.ts
@@ -1,6 +1,6 @@
-import { getAllArticles } from "src/article";
-import { articleRoot } from "src/server-utils";
-import { unique } from "src/utils";
+import { getAllArticles } from "@/src/article";
+import { articleRoot } from "@/src/server-utils";
+import { unique } from "@/src/utils";
export function GET() {
const articles = getAllArticles(articleRoot);
diff --git a/app/stats/content/authors/history/route.ts b/app/stats/content/authors/history/route.ts
index 20345d8f6..10f967779 100644
--- a/app/stats/content/authors/history/route.ts
+++ b/app/stats/content/authors/history/route.ts
@@ -1,6 +1,6 @@
-import { getAllArticles } from "src/article";
-import { articleRoot } from "src/server-utils";
-import { unique } from "src/utils";
+import { getAllArticles } from "@/src/article";
+import { articleRoot } from "@/src/server-utils";
+import { unique } from "@/src/utils";
export function GET() {
const articles = getAllArticles(articleRoot);
diff --git a/app/stats/content/authors/route.ts b/app/stats/content/authors/route.ts
index 0e692aee9..2bba6b462 100644
--- a/app/stats/content/authors/route.ts
+++ b/app/stats/content/authors/route.ts
@@ -3,9 +3,9 @@ import {
getArticlesByAuthor,
renderCSV,
sum,
-} from "app/stats/content-stats";
-import { getAllArticles } from "src/article";
-import { articleRoot } from "src/server-utils";
+} from "@/app/stats/content-stats";
+import { getAllArticles } from "@/src/article";
+import { articleRoot } from "@/src/server-utils";
export function GET(request: Request) {
const { searchParams } = new URL(request.url);
diff --git a/app/stats/content/categories/route.ts b/app/stats/content/categories/route.ts
index c97bfd12d..3a37b1f25 100644
--- a/app/stats/content/categories/route.ts
+++ b/app/stats/content/categories/route.ts
@@ -3,9 +3,9 @@ import {
getArticlesByCategory,
renderCSV,
sum,
-} from "app/stats/content-stats";
-import { getAllArticles } from "src/article";
-import { articleRoot } from "src/server-utils";
+} from "@/app/stats/content-stats";
+import { getAllArticles } from "@/src/article";
+import { articleRoot } from "@/src/server-utils";
export async function GET(request: Request) {
const { searchParams } = new URL(request.url);
diff --git a/app/stats/donations/donors/route.ts b/app/stats/donations/donors/route.ts
index f0d1790b9..f97921985 100644
--- a/app/stats/donations/donors/route.ts
+++ b/app/stats/donations/donors/route.ts
@@ -1,5 +1,5 @@
-import { getPastYearTransactionsByMonth } from "src/data/darujme";
-import { unique } from "src/utils";
+import { getPastYearTransactionsByMonth } from "@/src/data/darujme";
+import { unique } from "@/src/utils";
export const dynamic = "force-dynamic";
diff --git a/app/stats/donations/last_year/route.ts b/app/stats/donations/last_year/route.ts
index f3e4be8c4..7761f301b 100644
--- a/app/stats/donations/last_year/route.ts
+++ b/app/stats/donations/last_year/route.ts
@@ -1,8 +1,8 @@
import {
+ getPastYearTransactionsByMonth,
sumOneTimeDonations,
sumRecurrentDonations,
- getPastYearTransactionsByMonth,
-} from "src/data/darujme";
+} from "@/src/data/darujme";
export const dynamic = "force-dynamic";
diff --git a/app/stats/donations/monthly/route.ts b/app/stats/donations/monthly/route.ts
index be2366d2b..7dcacb6e7 100644
--- a/app/stats/donations/monthly/route.ts
+++ b/app/stats/donations/monthly/route.ts
@@ -1,8 +1,8 @@
import {
- sumOneTimeDonations,
getPastYearTransactionsByMonth,
+ sumOneTimeDonations,
sumRecurrentDonations,
-} from "src/data/darujme";
+} from "@/src/data/darujme";
export const dynamic = "force-dynamic";
diff --git a/app/stats/page.tsx b/app/stats/page.tsx
index 78862e2e9..616263251 100644
--- a/app/stats/page.tsx
+++ b/app/stats/page.tsx
@@ -1,5 +1,5 @@
-import { DatawrapperChart } from "app/clanky/[...path]/DatawrapperChart";
import type { Metadata } from "next";
+import { DatawrapperChart } from "@/app/clanky/[...path]/DatawrapperChart";
export const metadata: Metadata = {
title: "Ohlasy v číslech",
@@ -27,7 +27,7 @@ const Page = async () => {
diff --git a/components/BannerBox.tsx b/components/BannerBox.tsx
index 22de1b2bc..9b8a52245 100644
--- a/components/BannerBox.tsx
+++ b/components/BannerBox.tsx
@@ -1,5 +1,5 @@
import Image from "next/image";
-import type { Banner } from "src/data/banners";
+import type { Banner } from "@/src/data/banners";
export type BannerProps = {
banner: Banner;
diff --git a/components/Breadcrumbs.tsx b/components/Breadcrumbs.tsx
index d548c64c0..8b1622a1f 100644
--- a/components/Breadcrumbs.tsx
+++ b/components/Breadcrumbs.tsx
@@ -1,5 +1,5 @@
import Link from "next/link";
-import { RouteTo } from "src/routing";
+import { RouteTo } from "@/src/routing";
export type PathItem = {
title: string;
diff --git a/components/PreviewNest.tsx b/components/PreviewNest.tsx
index 017a5348e..43a230714 100644
--- a/components/PreviewNest.tsx
+++ b/components/PreviewNest.tsx
@@ -1,11 +1,11 @@
import Image from "next/image";
import Link from "next/link";
-import { type Metadata as Article, getArticleNotices } from "src/article";
-import type { Banner } from "src/data/banners";
-import type { Author } from "src/data/content";
-import { plausibleEventClass } from "src/data/plausible";
-import { RouteTo } from "src/routing";
-import { tilde as t } from "src/utils";
+import { type Metadata as Article, getArticleNotices } from "@/src/article";
+import type { Banner } from "@/src/data/banners";
+import type { Author } from "@/src/data/content";
+import { plausibleEventClass } from "@/src/data/plausible";
+import { RouteTo } from "@/src/routing";
+import { tilde as t } from "@/src/utils";
import { BannerBox } from "./BannerBox";
export type PreviewNestProps = {
diff --git a/next-env.d.ts b/next-env.d.ts
index 0c7fad710..2d5420eba 100644
--- a/next-env.d.ts
+++ b/next-env.d.ts
@@ -1,7 +1,7 @@
///
///
///
-import "./.next/dev/types/routes.d.ts";
+import "./.next/types/routes.d.ts";
// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
diff --git a/package-lock.json b/package-lock.json
index fe2761293..6598b0376 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,12 +9,12 @@
"version": "1.0.0",
"license": "MIT",
"dependencies": {
- "@markdoc/markdoc": "^0.5.6",
+ "@markdoc/markdoc": "^0.5.7",
"@slack/web-api": "^7.15.0",
"airtable": "^0.12.2",
"gray-matter": "^4.0.3",
"js-yaml": "^4.1.1",
- "next": "16.2.0",
+ "next": "16.2.1",
"plausible-tracker": "^0.3.9",
"react": "19.2.4",
"react-dom": "19.2.4",
@@ -22,7 +22,7 @@
"xmlbuilder2": "^4.0.3"
},
"devDependencies": {
- "@biomejs/biome": "^2.4.8",
+ "@biomejs/biome": "^2.4.9",
"@playwright/test": "^1.58.2",
"@tailwindcss/postcss": "^4.2.2",
"@types/js-yaml": "^4.0.9",
@@ -32,7 +32,7 @@
"postcss": "^8.5.8",
"tailwindcss": "^4.2.1",
"tsx": "^4.21.0",
- "typescript": "5.x"
+ "typescript": "6.x"
}
},
"node_modules/@alloc/quick-lru": {
@@ -49,9 +49,9 @@
}
},
"node_modules/@biomejs/biome": {
- "version": "2.4.8",
- "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.4.8.tgz",
- "integrity": "sha512-ponn0oKOky1oRXBV+rlSaUlixUxf1aZvWC19Z41zBfUOUesthrQqL3OtiAlSB1EjFjyWpn98Q64DHelhA6jNlA==",
+ "version": "2.4.9",
+ "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.4.9.tgz",
+ "integrity": "sha512-wvZW92FrwitTcacvCBT8xdAbfbxWfDLwjYMmU3djjqQTh7Ni4ZdiWIT/x5VcZ+RQuxiKzIOzi5D+dcyJDFZMsA==",
"dev": true,
"bin": {
"biome": "bin/biome"
@@ -64,20 +64,20 @@
"url": "https://opencollective.com/biome"
},
"optionalDependencies": {
- "@biomejs/cli-darwin-arm64": "2.4.8",
- "@biomejs/cli-darwin-x64": "2.4.8",
- "@biomejs/cli-linux-arm64": "2.4.8",
- "@biomejs/cli-linux-arm64-musl": "2.4.8",
- "@biomejs/cli-linux-x64": "2.4.8",
- "@biomejs/cli-linux-x64-musl": "2.4.8",
- "@biomejs/cli-win32-arm64": "2.4.8",
- "@biomejs/cli-win32-x64": "2.4.8"
+ "@biomejs/cli-darwin-arm64": "2.4.9",
+ "@biomejs/cli-darwin-x64": "2.4.9",
+ "@biomejs/cli-linux-arm64": "2.4.9",
+ "@biomejs/cli-linux-arm64-musl": "2.4.9",
+ "@biomejs/cli-linux-x64": "2.4.9",
+ "@biomejs/cli-linux-x64-musl": "2.4.9",
+ "@biomejs/cli-win32-arm64": "2.4.9",
+ "@biomejs/cli-win32-x64": "2.4.9"
}
},
"node_modules/@biomejs/cli-darwin-arm64": {
- "version": "2.4.8",
- "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.4.8.tgz",
- "integrity": "sha512-ARx0tECE8I7S2C2yjnWYLNbBdDoPdq3oyNLhMglmuctThwUsuzFWRKrHmIGwIRWKz0Mat9DuzLEDp52hGnrxGQ==",
+ "version": "2.4.9",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.4.9.tgz",
+ "integrity": "sha512-d5G8Gf2RpH5pYwiHLPA+UpG3G9TLQu4WM+VK6sfL7K68AmhcEQ9r+nkj/DvR/GYhYox6twsHUtmWWWIKfcfQQA==",
"cpu": [
"arm64"
],
@@ -91,9 +91,9 @@
}
},
"node_modules/@biomejs/cli-darwin-x64": {
- "version": "2.4.8",
- "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.4.8.tgz",
- "integrity": "sha512-Jg9/PsB9vDCJlANE8uhG7qDhb5w0Ix69D7XIIc8IfZPUoiPrbLm33k2Ig3NOJ/7nb3UbesFz3D1aDKm9DvzjhQ==",
+ "version": "2.4.9",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.4.9.tgz",
+ "integrity": "sha512-LNCLNgqDMG7BLdc3a8aY/dwKPK7+R8/JXJoXjCvZh2gx8KseqBdFDKbhrr7HCWF8SzNhbTaALhTBoh/I6rf9lA==",
"cpu": [
"x64"
],
@@ -107,9 +107,9 @@
}
},
"node_modules/@biomejs/cli-linux-arm64": {
- "version": "2.4.8",
- "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.4.8.tgz",
- "integrity": "sha512-5CdrsJct76XG2hpKFwXnEtlT1p+4g4yV+XvvwBpzKsTNLO9c6iLlAxwcae2BJ7ekPGWjNGw9j09T5KGPKKxQig==",
+ "version": "2.4.9",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.4.9.tgz",
+ "integrity": "sha512-4adnkAUi6K4C/emPRgYznMOcLlUqZdXWM6aIui4VP4LraE764g6Q4YguygnAUoxKjKIXIWPteKMgRbN0wsgwcg==",
"cpu": [
"arm64"
],
@@ -123,9 +123,9 @@
}
},
"node_modules/@biomejs/cli-linux-arm64-musl": {
- "version": "2.4.8",
- "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.4.8.tgz",
- "integrity": "sha512-Zo9OhBQDJ3IBGPlqHiTISloo5H0+FBIpemqIJdW/0edJ+gEcLR+MZeZozcUyz3o1nXkVA7++DdRKQT0599j9jA==",
+ "version": "2.4.9",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.4.9.tgz",
+ "integrity": "sha512-8RCww5xnPn2wpK4L/QDGDOW0dq80uVWfppPxHIUg6mOs9B6gRmqPp32h1Ls3T8GnW8Wo5A8u7vpTwz4fExN+sw==",
"cpu": [
"arm64"
],
@@ -139,9 +139,9 @@
}
},
"node_modules/@biomejs/cli-linux-x64": {
- "version": "2.4.8",
- "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.4.8.tgz",
- "integrity": "sha512-PdKXspVEaMCQLjtZCn6vfSck/li4KX9KGwSDbZdgIqlrizJ2MnMcE3TvHa2tVfXNmbjMikzcfJpuPWH695yJrw==",
+ "version": "2.4.9",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.4.9.tgz",
+ "integrity": "sha512-L10na7POF0Ks/cgLFNF1ZvIe+X4onLkTi5oP9hY+Rh60Q+7fWzKDDCeGyiHUFf1nGIa9dQOOUPGe2MyYg8nMSQ==",
"cpu": [
"x64"
],
@@ -155,9 +155,9 @@
}
},
"node_modules/@biomejs/cli-linux-x64-musl": {
- "version": "2.4.8",
- "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.4.8.tgz",
- "integrity": "sha512-Gi8quv8MEuDdKaPFtS2XjEnMqODPsRg6POT6KhoP+VrkNb+T2ywunVB+TvOU0LX1jAZzfBr+3V1mIbBhzAMKvw==",
+ "version": "2.4.9",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.4.9.tgz",
+ "integrity": "sha512-5TD+WS9v5vzXKzjetF0hgoaNFHMcpQeBUwKKVi3JbG1e9UCrFuUK3Gt185fyTzvRdwYkJJEMqglRPjmesmVv4A==",
"cpu": [
"x64"
],
@@ -171,9 +171,9 @@
}
},
"node_modules/@biomejs/cli-win32-arm64": {
- "version": "2.4.8",
- "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.4.8.tgz",
- "integrity": "sha512-LoFatS0tnHv6KkCVpIy3qZCih+MxUMvdYiPWLHRri7mhi2vyOOs8OrbZBcLTUEWCS+ktO72nZMy4F96oMhkOHQ==",
+ "version": "2.4.9",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.4.9.tgz",
+ "integrity": "sha512-aDZr0RBC3sMGJOU10BvG7eZIlWLK/i51HRIfScE2lVhfts2dQTreowLiJJd+UYg/tHKxS470IbzpuKmd0MiD6g==",
"cpu": [
"arm64"
],
@@ -187,9 +187,9 @@
}
},
"node_modules/@biomejs/cli-win32-x64": {
- "version": "2.4.8",
- "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.4.8.tgz",
- "integrity": "sha512-vAn7iXDoUbqFXqVocuq1sMYAd33p8+mmurqJkWl6CtIhobd/O6moe4rY5AJvzbunn/qZCdiDVcveqtkFh1e7Hg==",
+ "version": "2.4.9",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.4.9.tgz",
+ "integrity": "sha512-NS4g/2G9SoQ4ktKtz31pvyc/rmgzlcIDCGU/zWbmHJAqx6gcRj2gj5Q/guXhoWTzCUaQZDIqiCQXHS7BcGYc0w==",
"cpu": [
"x64"
],
@@ -1161,9 +1161,9 @@
}
},
"node_modules/@markdoc/markdoc": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/@markdoc/markdoc/-/markdoc-0.5.6.tgz",
- "integrity": "sha512-Qs7L5YKYHADWhpOP1JthE3E5ut4Mby/UsJKsGla3g8OXBLWDImTsG5H+Mzq5h3J6a8CNnGtp+Kz9JcGtHRpoKA==",
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/@markdoc/markdoc/-/markdoc-0.5.7.tgz",
+ "integrity": "sha512-NxreNThm7foFgMMQD6zgk7rKkcFMmdC8J5r+Zn4FKoN75F5YjvwdihwF11VhrBfL3CXnD4+YG1VYwvBL+igzvw==",
"engines": {
"node": ">=14.7.0"
},
@@ -1185,19 +1185,17 @@
}
},
"node_modules/@next/env": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/@next/env/-/env-16.2.0.tgz",
- "integrity": "sha512-OZIbODWWAi0epQRCRjNe1VO45LOFBzgiyqmTLzIqWq6u1wrxKnAyz1HH6tgY/Mc81YzIjRPoYsPAEr4QV4l9TA==",
- "license": "MIT"
+ "version": "16.2.1",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-16.2.1.tgz",
+ "integrity": "sha512-n8P/HCkIWW+gVal2Z8XqXJ6aB3J0tuM29OcHpCsobWlChH/SITBs1DFBk/HajgrwDkqqBXPbuUuzgDvUekREPg=="
},
"node_modules/@next/swc-darwin-arm64": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.2.0.tgz",
- "integrity": "sha512-/JZsqKzKt01IFoiLLAzlNqys7qk2F3JkcUhj50zuRhKDQkZNOz9E5N6wAQWprXdsvjRP4lTFj+/+36NSv5AwhQ==",
+ "version": "16.2.1",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.2.1.tgz",
+ "integrity": "sha512-BwZ8w8YTaSEr2HIuXLMLxIdElNMPvY9fLqb20LX9A9OMGtJilhHLbCL3ggyd0TwjmMcTxi0XXt+ur1vWUoxj2Q==",
"cpu": [
"arm64"
],
- "license": "MIT",
"optional": true,
"os": [
"darwin"
@@ -1207,13 +1205,12 @@
}
},
"node_modules/@next/swc-darwin-x64": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.2.0.tgz",
- "integrity": "sha512-/hV8erWq4SNlVgglUiW5UmQ5Hwy5EW/AbbXlJCn6zkfKxTy/E/U3V8U1Ocm2YCTUoFgQdoMxRyRMOW5jYy4ygg==",
+ "version": "16.2.1",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.2.1.tgz",
+ "integrity": "sha512-/vrcE6iQSJq3uL3VGVHiXeaKbn8Es10DGTGRJnRZlkNQQk3kaNtAJg8Y6xuAlrx/6INKVjkfi5rY0iEXorZ6uA==",
"cpu": [
"x64"
],
- "license": "MIT",
"optional": true,
"os": [
"darwin"
@@ -1223,13 +1220,12 @@
}
},
"node_modules/@next/swc-linux-arm64-gnu": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.2.0.tgz",
- "integrity": "sha512-GkjL/Q7MWOwqWR9zoxu1TIHzkOI2l2BHCf7FzeQG87zPgs+6WDh+oC9Sw9ARuuL/FUk6JNCgKRkA6rEQYadUaw==",
+ "version": "16.2.1",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.2.1.tgz",
+ "integrity": "sha512-uLn+0BK+C31LTVbQ/QU+UaVrV0rRSJQ8RfniQAHPghDdgE+SlroYqcmFnO5iNjNfVWCyKZHYrs3Nl0mUzWxbBw==",
"cpu": [
"arm64"
],
- "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -1239,13 +1235,12 @@
}
},
"node_modules/@next/swc-linux-arm64-musl": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.2.0.tgz",
- "integrity": "sha512-1ffhC6KY5qWLg5miMlKJp3dZbXelEfjuXt1qcp5WzSCQy36CV3y+JT7OC1WSFKizGQCDOcQbfkH/IjZP3cdRNA==",
+ "version": "16.2.1",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.2.1.tgz",
+ "integrity": "sha512-ssKq6iMRnHdnycGp9hCuGnXJZ0YPr4/wNwrfE5DbmvEcgl9+yv97/Kq3TPVDfYome1SW5geciLB9aiEqKXQjlQ==",
"cpu": [
"arm64"
],
- "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -1255,13 +1250,12 @@
}
},
"node_modules/@next/swc-linux-x64-gnu": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.2.0.tgz",
- "integrity": "sha512-FmbDcZQ8yJRq93EJSL6xaE0KK/Rslraf8fj1uViGxg7K4CKBCRYSubILJPEhjSgZurpcPQq12QNOJQ0DRJl6Hg==",
+ "version": "16.2.1",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.2.1.tgz",
+ "integrity": "sha512-HQm7SrHRELJ30T1TSmT706IWovFFSRGxfgUkyWJZF/RKBMdbdRWJuFrcpDdE5vy9UXjFOx6L3mRdqH04Mmx0hg==",
"cpu": [
"x64"
],
- "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -1271,13 +1265,12 @@
}
},
"node_modules/@next/swc-linux-x64-musl": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.2.0.tgz",
- "integrity": "sha512-HzjIHVkmGAwRbh/vzvoBWWEbb8BBZPxBvVbDQDvzHSf3D8RP/4vjw7MNLDXFF9Q1WEzeQyEj2zdxBtVAHu5Oyw==",
+ "version": "16.2.1",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.2.1.tgz",
+ "integrity": "sha512-aV2iUaC/5HGEpbBkE+4B8aHIudoOy5DYekAKOMSHoIYQ66y/wIVeaRx8MS2ZMdxe/HIXlMho4ubdZs/J8441Tg==",
"cpu": [
"x64"
],
- "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -1287,13 +1280,12 @@
}
},
"node_modules/@next/swc-win32-arm64-msvc": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.2.0.tgz",
- "integrity": "sha512-UMiFNQf5H7+1ZsZPxEsA064WEuFbRNq/kEXyepbCnSErp4f5iut75dBA8UeerFIG3vDaQNOfCpevnERPp2V+nA==",
+ "version": "16.2.1",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.2.1.tgz",
+ "integrity": "sha512-IXdNgiDHaSk0ZUJ+xp0OQTdTgnpx1RCfRTalhn3cjOP+IddTMINwA7DXZrwTmGDO8SUr5q2hdP/du4DcrB1GxA==",
"cpu": [
"arm64"
],
- "license": "MIT",
"optional": true,
"os": [
"win32"
@@ -1303,13 +1295,12 @@
}
},
"node_modules/@next/swc-win32-x64-msvc": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.2.0.tgz",
- "integrity": "sha512-DRrNJKW+/eimrZgdhVN1uvkN1OI4j6Lpefwr44jKQ0YQzztlmOBUUzHuV5GxOMPK3nmodAYElUVCY8ZXo/IWeA==",
+ "version": "16.2.1",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.2.1.tgz",
+ "integrity": "sha512-qvU+3a39Hay+ieIztkGSbF7+mccbbg1Tk25hc4JDylf8IHjYmY/Zm64Qq1602yPyQqvie+vf5T/uPwNxDNIoeg==",
"cpu": [
"x64"
],
- "license": "MIT",
"optional": true,
"os": [
"win32"
@@ -2746,12 +2737,11 @@
}
},
"node_modules/next": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/next/-/next-16.2.0.tgz",
- "integrity": "sha512-NLBVrJy1pbV1Yn00L5sU4vFyAHt5XuSjzrNyFnxo6Com0M0KrL6hHM5B99dbqXb2bE9pm4Ow3Zl1xp6HVY9edQ==",
- "license": "MIT",
+ "version": "16.2.1",
+ "resolved": "https://registry.npmjs.org/next/-/next-16.2.1.tgz",
+ "integrity": "sha512-VaChzNL7o9rbfdt60HUj8tev4m6d7iC1igAy157526+cJlXOQu5LzsBXNT+xaJnTP/k+utSX5vMv7m0G+zKH+Q==",
"dependencies": {
- "@next/env": "16.2.0",
+ "@next/env": "16.2.1",
"@swc/helpers": "0.5.15",
"baseline-browser-mapping": "^2.9.19",
"caniuse-lite": "^1.0.30001579",
@@ -2765,14 +2755,14 @@
"node": ">=20.9.0"
},
"optionalDependencies": {
- "@next/swc-darwin-arm64": "16.2.0",
- "@next/swc-darwin-x64": "16.2.0",
- "@next/swc-linux-arm64-gnu": "16.2.0",
- "@next/swc-linux-arm64-musl": "16.2.0",
- "@next/swc-linux-x64-gnu": "16.2.0",
- "@next/swc-linux-x64-musl": "16.2.0",
- "@next/swc-win32-arm64-msvc": "16.2.0",
- "@next/swc-win32-x64-msvc": "16.2.0",
+ "@next/swc-darwin-arm64": "16.2.1",
+ "@next/swc-darwin-x64": "16.2.1",
+ "@next/swc-linux-arm64-gnu": "16.2.1",
+ "@next/swc-linux-arm64-musl": "16.2.1",
+ "@next/swc-linux-x64-gnu": "16.2.1",
+ "@next/swc-linux-x64-musl": "16.2.1",
+ "@next/swc-win32-arm64-msvc": "16.2.1",
+ "@next/swc-win32-x64-msvc": "16.2.1",
"sharp": "^0.34.5"
},
"peerDependencies": {
@@ -3261,9 +3251,9 @@
}
},
"node_modules/typescript": {
- "version": "5.9.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
- "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.2.tgz",
+ "integrity": "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -3320,74 +3310,74 @@
"dev": true
},
"@biomejs/biome": {
- "version": "2.4.8",
- "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.4.8.tgz",
- "integrity": "sha512-ponn0oKOky1oRXBV+rlSaUlixUxf1aZvWC19Z41zBfUOUesthrQqL3OtiAlSB1EjFjyWpn98Q64DHelhA6jNlA==",
+ "version": "2.4.9",
+ "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.4.9.tgz",
+ "integrity": "sha512-wvZW92FrwitTcacvCBT8xdAbfbxWfDLwjYMmU3djjqQTh7Ni4ZdiWIT/x5VcZ+RQuxiKzIOzi5D+dcyJDFZMsA==",
"dev": true,
"requires": {
- "@biomejs/cli-darwin-arm64": "2.4.8",
- "@biomejs/cli-darwin-x64": "2.4.8",
- "@biomejs/cli-linux-arm64": "2.4.8",
- "@biomejs/cli-linux-arm64-musl": "2.4.8",
- "@biomejs/cli-linux-x64": "2.4.8",
- "@biomejs/cli-linux-x64-musl": "2.4.8",
- "@biomejs/cli-win32-arm64": "2.4.8",
- "@biomejs/cli-win32-x64": "2.4.8"
+ "@biomejs/cli-darwin-arm64": "2.4.9",
+ "@biomejs/cli-darwin-x64": "2.4.9",
+ "@biomejs/cli-linux-arm64": "2.4.9",
+ "@biomejs/cli-linux-arm64-musl": "2.4.9",
+ "@biomejs/cli-linux-x64": "2.4.9",
+ "@biomejs/cli-linux-x64-musl": "2.4.9",
+ "@biomejs/cli-win32-arm64": "2.4.9",
+ "@biomejs/cli-win32-x64": "2.4.9"
}
},
"@biomejs/cli-darwin-arm64": {
- "version": "2.4.8",
- "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.4.8.tgz",
- "integrity": "sha512-ARx0tECE8I7S2C2yjnWYLNbBdDoPdq3oyNLhMglmuctThwUsuzFWRKrHmIGwIRWKz0Mat9DuzLEDp52hGnrxGQ==",
+ "version": "2.4.9",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.4.9.tgz",
+ "integrity": "sha512-d5G8Gf2RpH5pYwiHLPA+UpG3G9TLQu4WM+VK6sfL7K68AmhcEQ9r+nkj/DvR/GYhYox6twsHUtmWWWIKfcfQQA==",
"dev": true,
"optional": true
},
"@biomejs/cli-darwin-x64": {
- "version": "2.4.8",
- "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.4.8.tgz",
- "integrity": "sha512-Jg9/PsB9vDCJlANE8uhG7qDhb5w0Ix69D7XIIc8IfZPUoiPrbLm33k2Ig3NOJ/7nb3UbesFz3D1aDKm9DvzjhQ==",
+ "version": "2.4.9",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.4.9.tgz",
+ "integrity": "sha512-LNCLNgqDMG7BLdc3a8aY/dwKPK7+R8/JXJoXjCvZh2gx8KseqBdFDKbhrr7HCWF8SzNhbTaALhTBoh/I6rf9lA==",
"dev": true,
"optional": true
},
"@biomejs/cli-linux-arm64": {
- "version": "2.4.8",
- "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.4.8.tgz",
- "integrity": "sha512-5CdrsJct76XG2hpKFwXnEtlT1p+4g4yV+XvvwBpzKsTNLO9c6iLlAxwcae2BJ7ekPGWjNGw9j09T5KGPKKxQig==",
+ "version": "2.4.9",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.4.9.tgz",
+ "integrity": "sha512-4adnkAUi6K4C/emPRgYznMOcLlUqZdXWM6aIui4VP4LraE764g6Q4YguygnAUoxKjKIXIWPteKMgRbN0wsgwcg==",
"dev": true,
"optional": true
},
"@biomejs/cli-linux-arm64-musl": {
- "version": "2.4.8",
- "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.4.8.tgz",
- "integrity": "sha512-Zo9OhBQDJ3IBGPlqHiTISloo5H0+FBIpemqIJdW/0edJ+gEcLR+MZeZozcUyz3o1nXkVA7++DdRKQT0599j9jA==",
+ "version": "2.4.9",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.4.9.tgz",
+ "integrity": "sha512-8RCww5xnPn2wpK4L/QDGDOW0dq80uVWfppPxHIUg6mOs9B6gRmqPp32h1Ls3T8GnW8Wo5A8u7vpTwz4fExN+sw==",
"dev": true,
"optional": true
},
"@biomejs/cli-linux-x64": {
- "version": "2.4.8",
- "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.4.8.tgz",
- "integrity": "sha512-PdKXspVEaMCQLjtZCn6vfSck/li4KX9KGwSDbZdgIqlrizJ2MnMcE3TvHa2tVfXNmbjMikzcfJpuPWH695yJrw==",
+ "version": "2.4.9",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.4.9.tgz",
+ "integrity": "sha512-L10na7POF0Ks/cgLFNF1ZvIe+X4onLkTi5oP9hY+Rh60Q+7fWzKDDCeGyiHUFf1nGIa9dQOOUPGe2MyYg8nMSQ==",
"dev": true,
"optional": true
},
"@biomejs/cli-linux-x64-musl": {
- "version": "2.4.8",
- "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.4.8.tgz",
- "integrity": "sha512-Gi8quv8MEuDdKaPFtS2XjEnMqODPsRg6POT6KhoP+VrkNb+T2ywunVB+TvOU0LX1jAZzfBr+3V1mIbBhzAMKvw==",
+ "version": "2.4.9",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.4.9.tgz",
+ "integrity": "sha512-5TD+WS9v5vzXKzjetF0hgoaNFHMcpQeBUwKKVi3JbG1e9UCrFuUK3Gt185fyTzvRdwYkJJEMqglRPjmesmVv4A==",
"dev": true,
"optional": true
},
"@biomejs/cli-win32-arm64": {
- "version": "2.4.8",
- "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.4.8.tgz",
- "integrity": "sha512-LoFatS0tnHv6KkCVpIy3qZCih+MxUMvdYiPWLHRri7mhi2vyOOs8OrbZBcLTUEWCS+ktO72nZMy4F96oMhkOHQ==",
+ "version": "2.4.9",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.4.9.tgz",
+ "integrity": "sha512-aDZr0RBC3sMGJOU10BvG7eZIlWLK/i51HRIfScE2lVhfts2dQTreowLiJJd+UYg/tHKxS470IbzpuKmd0MiD6g==",
"dev": true,
"optional": true
},
"@biomejs/cli-win32-x64": {
- "version": "2.4.8",
- "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.4.8.tgz",
- "integrity": "sha512-vAn7iXDoUbqFXqVocuq1sMYAd33p8+mmurqJkWl6CtIhobd/O6moe4rY5AJvzbunn/qZCdiDVcveqtkFh1e7Hg==",
+ "version": "2.4.9",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.4.9.tgz",
+ "integrity": "sha512-NS4g/2G9SoQ4ktKtz31pvyc/rmgzlcIDCGU/zWbmHJAqx6gcRj2gj5Q/guXhoWTzCUaQZDIqiCQXHS7BcGYc0w==",
"dev": true,
"optional": true
},
@@ -3823,65 +3813,65 @@
}
},
"@markdoc/markdoc": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/@markdoc/markdoc/-/markdoc-0.5.6.tgz",
- "integrity": "sha512-Qs7L5YKYHADWhpOP1JthE3E5ut4Mby/UsJKsGla3g8OXBLWDImTsG5H+Mzq5h3J6a8CNnGtp+Kz9JcGtHRpoKA==",
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/@markdoc/markdoc/-/markdoc-0.5.7.tgz",
+ "integrity": "sha512-NxreNThm7foFgMMQD6zgk7rKkcFMmdC8J5r+Zn4FKoN75F5YjvwdihwF11VhrBfL3CXnD4+YG1VYwvBL+igzvw==",
"requires": {
"@types/linkify-it": "^3.0.1",
"@types/markdown-it": "12.2.3"
}
},
"@next/env": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/@next/env/-/env-16.2.0.tgz",
- "integrity": "sha512-OZIbODWWAi0epQRCRjNe1VO45LOFBzgiyqmTLzIqWq6u1wrxKnAyz1HH6tgY/Mc81YzIjRPoYsPAEr4QV4l9TA=="
+ "version": "16.2.1",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-16.2.1.tgz",
+ "integrity": "sha512-n8P/HCkIWW+gVal2Z8XqXJ6aB3J0tuM29OcHpCsobWlChH/SITBs1DFBk/HajgrwDkqqBXPbuUuzgDvUekREPg=="
},
"@next/swc-darwin-arm64": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.2.0.tgz",
- "integrity": "sha512-/JZsqKzKt01IFoiLLAzlNqys7qk2F3JkcUhj50zuRhKDQkZNOz9E5N6wAQWprXdsvjRP4lTFj+/+36NSv5AwhQ==",
+ "version": "16.2.1",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.2.1.tgz",
+ "integrity": "sha512-BwZ8w8YTaSEr2HIuXLMLxIdElNMPvY9fLqb20LX9A9OMGtJilhHLbCL3ggyd0TwjmMcTxi0XXt+ur1vWUoxj2Q==",
"optional": true
},
"@next/swc-darwin-x64": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.2.0.tgz",
- "integrity": "sha512-/hV8erWq4SNlVgglUiW5UmQ5Hwy5EW/AbbXlJCn6zkfKxTy/E/U3V8U1Ocm2YCTUoFgQdoMxRyRMOW5jYy4ygg==",
+ "version": "16.2.1",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.2.1.tgz",
+ "integrity": "sha512-/vrcE6iQSJq3uL3VGVHiXeaKbn8Es10DGTGRJnRZlkNQQk3kaNtAJg8Y6xuAlrx/6INKVjkfi5rY0iEXorZ6uA==",
"optional": true
},
"@next/swc-linux-arm64-gnu": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.2.0.tgz",
- "integrity": "sha512-GkjL/Q7MWOwqWR9zoxu1TIHzkOI2l2BHCf7FzeQG87zPgs+6WDh+oC9Sw9ARuuL/FUk6JNCgKRkA6rEQYadUaw==",
+ "version": "16.2.1",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.2.1.tgz",
+ "integrity": "sha512-uLn+0BK+C31LTVbQ/QU+UaVrV0rRSJQ8RfniQAHPghDdgE+SlroYqcmFnO5iNjNfVWCyKZHYrs3Nl0mUzWxbBw==",
"optional": true
},
"@next/swc-linux-arm64-musl": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.2.0.tgz",
- "integrity": "sha512-1ffhC6KY5qWLg5miMlKJp3dZbXelEfjuXt1qcp5WzSCQy36CV3y+JT7OC1WSFKizGQCDOcQbfkH/IjZP3cdRNA==",
+ "version": "16.2.1",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.2.1.tgz",
+ "integrity": "sha512-ssKq6iMRnHdnycGp9hCuGnXJZ0YPr4/wNwrfE5DbmvEcgl9+yv97/Kq3TPVDfYome1SW5geciLB9aiEqKXQjlQ==",
"optional": true
},
"@next/swc-linux-x64-gnu": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.2.0.tgz",
- "integrity": "sha512-FmbDcZQ8yJRq93EJSL6xaE0KK/Rslraf8fj1uViGxg7K4CKBCRYSubILJPEhjSgZurpcPQq12QNOJQ0DRJl6Hg==",
+ "version": "16.2.1",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.2.1.tgz",
+ "integrity": "sha512-HQm7SrHRELJ30T1TSmT706IWovFFSRGxfgUkyWJZF/RKBMdbdRWJuFrcpDdE5vy9UXjFOx6L3mRdqH04Mmx0hg==",
"optional": true
},
"@next/swc-linux-x64-musl": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.2.0.tgz",
- "integrity": "sha512-HzjIHVkmGAwRbh/vzvoBWWEbb8BBZPxBvVbDQDvzHSf3D8RP/4vjw7MNLDXFF9Q1WEzeQyEj2zdxBtVAHu5Oyw==",
+ "version": "16.2.1",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.2.1.tgz",
+ "integrity": "sha512-aV2iUaC/5HGEpbBkE+4B8aHIudoOy5DYekAKOMSHoIYQ66y/wIVeaRx8MS2ZMdxe/HIXlMho4ubdZs/J8441Tg==",
"optional": true
},
"@next/swc-win32-arm64-msvc": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.2.0.tgz",
- "integrity": "sha512-UMiFNQf5H7+1ZsZPxEsA064WEuFbRNq/kEXyepbCnSErp4f5iut75dBA8UeerFIG3vDaQNOfCpevnERPp2V+nA==",
+ "version": "16.2.1",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.2.1.tgz",
+ "integrity": "sha512-IXdNgiDHaSk0ZUJ+xp0OQTdTgnpx1RCfRTalhn3cjOP+IddTMINwA7DXZrwTmGDO8SUr5q2hdP/du4DcrB1GxA==",
"optional": true
},
"@next/swc-win32-x64-msvc": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.2.0.tgz",
- "integrity": "sha512-DRrNJKW+/eimrZgdhVN1uvkN1OI4j6Lpefwr44jKQ0YQzztlmOBUUzHuV5GxOMPK3nmodAYElUVCY8ZXo/IWeA==",
+ "version": "16.2.1",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.2.1.tgz",
+ "integrity": "sha512-qvU+3a39Hay+ieIztkGSbF7+mccbbg1Tk25hc4JDylf8IHjYmY/Zm64Qq1602yPyQqvie+vf5T/uPwNxDNIoeg==",
"optional": true
},
"@oozcitak/dom": {
@@ -4770,19 +4760,19 @@
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="
},
"next": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/next/-/next-16.2.0.tgz",
- "integrity": "sha512-NLBVrJy1pbV1Yn00L5sU4vFyAHt5XuSjzrNyFnxo6Com0M0KrL6hHM5B99dbqXb2bE9pm4Ow3Zl1xp6HVY9edQ==",
+ "version": "16.2.1",
+ "resolved": "https://registry.npmjs.org/next/-/next-16.2.1.tgz",
+ "integrity": "sha512-VaChzNL7o9rbfdt60HUj8tev4m6d7iC1igAy157526+cJlXOQu5LzsBXNT+xaJnTP/k+utSX5vMv7m0G+zKH+Q==",
"requires": {
- "@next/env": "16.2.0",
- "@next/swc-darwin-arm64": "16.2.0",
- "@next/swc-darwin-x64": "16.2.0",
- "@next/swc-linux-arm64-gnu": "16.2.0",
- "@next/swc-linux-arm64-musl": "16.2.0",
- "@next/swc-linux-x64-gnu": "16.2.0",
- "@next/swc-linux-x64-musl": "16.2.0",
- "@next/swc-win32-arm64-msvc": "16.2.0",
- "@next/swc-win32-x64-msvc": "16.2.0",
+ "@next/env": "16.2.1",
+ "@next/swc-darwin-arm64": "16.2.1",
+ "@next/swc-darwin-x64": "16.2.1",
+ "@next/swc-linux-arm64-gnu": "16.2.1",
+ "@next/swc-linux-arm64-musl": "16.2.1",
+ "@next/swc-linux-x64-gnu": "16.2.1",
+ "@next/swc-linux-x64-musl": "16.2.1",
+ "@next/swc-win32-arm64-msvc": "16.2.1",
+ "@next/swc-win32-x64-msvc": "16.2.1",
"@swc/helpers": "0.5.15",
"baseline-browser-mapping": "^2.9.19",
"caniuse-lite": "^1.0.30001579",
@@ -5092,9 +5082,9 @@
}
},
"typescript": {
- "version": "5.9.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
- "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.2.tgz",
+ "integrity": "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==",
"dev": true
},
"typescript-json-decoder": {
diff --git a/package.json b/package.json
index bfaab528c..1593ac1be 100644
--- a/package.json
+++ b/package.json
@@ -14,12 +14,12 @@
"playwright": "playwright test"
},
"dependencies": {
- "@markdoc/markdoc": "^0.5.6",
+ "@markdoc/markdoc": "^0.5.7",
"@slack/web-api": "^7.15.0",
"airtable": "^0.12.2",
"gray-matter": "^4.0.3",
"js-yaml": "^4.1.1",
- "next": "16.2.0",
+ "next": "16.2.1",
"plausible-tracker": "^0.3.9",
"react": "19.2.4",
"react-dom": "19.2.4",
@@ -27,7 +27,7 @@
"xmlbuilder2": "^4.0.3"
},
"devDependencies": {
- "@biomejs/biome": "^2.4.8",
+ "@biomejs/biome": "^2.4.9",
"@playwright/test": "^1.58.2",
"@tailwindcss/postcss": "^4.2.2",
"@types/js-yaml": "^4.0.9",
@@ -37,7 +37,7 @@
"postcss": "^8.5.8",
"tailwindcss": "^4.2.1",
"tsx": "^4.21.0",
- "typescript": "5.x"
+ "typescript": "6.x"
},
"overrides": {
"@types/react": "19.2.14",
diff --git a/pages/api/feeds/articles.ts b/pages/api/feeds/articles.ts
index 49ac219e6..a6ca3575a 100644
--- a/pages/api/feeds/articles.ts
+++ b/pages/api/feeds/articles.ts
@@ -1,10 +1,10 @@
import { join } from "node:path";
-import { ArticleContent } from "app/clanky/[...path]/ArticleContent";
import type { NextApiRequest, NextApiResponse } from "next";
import * as ReactDOMServer from "react-dom/server";
-import { type Article, compareByDate, getAllArticles } from "src/article";
-import { type RSSFeed, type RSSFeedItem, renderFeed } from "src/feeds";
-import { absolute, RouteTo, siteUrl } from "src/routing";
+import { ArticleContent } from "@/app/clanky/[...path]/ArticleContent";
+import { type Article, compareByDate, getAllArticles } from "@/src/article";
+import { type RSSFeed, type RSSFeedItem, renderFeed } from "@/src/feeds";
+import { absolute, RouteTo, siteUrl } from "@/src/routing";
/** Serve last 10 articles as an RSS feed with full article text */
export default async (
diff --git a/src/data/banners.ts b/src/data/banners.ts
index a875aa4d1..90c5d2aa9 100644
--- a/src/data/banners.ts
+++ b/src/data/banners.ts
@@ -1,4 +1,3 @@
-import { shuffled } from "src/utils";
import {
array,
type decodeType,
@@ -6,6 +5,7 @@ import {
record,
string,
} from "typescript-json-decoder";
+import { shuffled } from "@/src/utils";
import { getTable, unwrapRecords } from "./airtable";
const bannerTable = () => getTable("appcP5M7jTIUMZaRc", "tblxgfyRlovII0SC2");
diff --git a/src/data/books.ts b/src/data/books.ts
index 2055e9823..e21e63989 100644
--- a/src/data/books.ts
+++ b/src/data/books.ts
@@ -1,4 +1,3 @@
-import { relationToZeroOrOne } from "src/decoding";
import {
array,
type decodeType,
@@ -9,6 +8,7 @@ import {
string,
union,
} from "typescript-json-decoder";
+import { relationToZeroOrOne } from "@/src/decoding";
import { getTable, unwrapRecord, unwrapRecords } from "./airtable";
//
diff --git a/src/data/cache.ts b/src/data/cache.ts
index 3f12a7633..83995b9b4 100644
--- a/src/data/cache.ts
+++ b/src/data/cache.ts
@@ -1,5 +1,5 @@
-import { type Article, getAllArticles } from "src/article";
-import { articleRoot } from "src/server-utils";
+import { type Article, getAllArticles } from "@/src/article";
+import { articleRoot } from "@/src/server-utils";
import { type Banner, getAllBanners } from "./banners";
import { type Author, getAllAuthors } from "./content";
diff --git a/src/data/plausible.ts b/src/data/plausible.ts
index ca797daa4..924718251 100644
--- a/src/data/plausible.ts
+++ b/src/data/plausible.ts
@@ -1,7 +1,3 @@
-import { getAllArticles } from "src/article";
-import { getArticlePath } from "src/routing";
-import { articleRoot } from "src/server-utils";
-import { Duration } from "src/utils";
import {
array,
type decodeType,
@@ -9,6 +5,10 @@ import {
record,
string,
} from "typescript-json-decoder";
+import { getAllArticles } from "@/src/article";
+import { getArticlePath } from "@/src/routing";
+import { articleRoot } from "@/src/server-utils";
+import { Duration } from "@/src/utils";
//
// Plausible support
diff --git a/src/data/podcast.ts b/src/data/podcast.ts
index 5afc3192a..04ade60fc 100644
--- a/src/data/podcast.ts
+++ b/src/data/podcast.ts
@@ -1,7 +1,6 @@
import fs from "node:fs";
import { resolve } from "node:path";
import yaml from "js-yaml";
-import { decodeUrl } from "src/decoding";
import {
array,
type decodeType,
@@ -9,6 +8,7 @@ import {
record,
string,
} from "typescript-json-decoder";
+import { decodeUrl } from "@/src/decoding";
export type PodcastEpisode = decodeType;
export const decodePodcastEpisode = record({
diff --git a/tsconfig.json b/tsconfig.json
index 461b0da7a..023c0b702 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -2,7 +2,7 @@
"compilerOptions": {
"esModuleInterop": true,
"strictNullChecks": true,
- "target": "ES2015",
+ "target": "esnext",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
@@ -10,17 +10,19 @@
"forceConsistentCasingInFileNames": true,
"noEmit": true,
"incremental": true,
- "module": "esnext",
- "moduleResolution": "node",
+ "module": "nodenext",
+ "moduleResolution": "nodenext",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "react-jsx",
- "baseUrl": ".",
"plugins": [
{
"name": "next"
}
- ]
+ ],
+ "paths": {
+ "@/*": ["./*"]
+ }
},
"include": [
"next-env.d.ts",