web: bump to node 22, next 15, react 19, etc.
This commit is contained in:
@@ -71,11 +71,13 @@ export async function generateStaticParams() {
|
||||
});
|
||||
}
|
||||
|
||||
type Params = Promise<{ url: string[] }>;
|
||||
|
||||
export async function generateMetadata(
|
||||
{ params }: { params: { url: string[] } },
|
||||
{ params }: { params: Params },
|
||||
parent: ResolvingMetadata
|
||||
): Promise<Metadata | null> {
|
||||
const { url } = params;
|
||||
const { url } = await params;
|
||||
const urlPath = getWagtailUrlPath(url);
|
||||
const { data, error } = await getClient().query(genericPageByUrlPathQuery, {
|
||||
urlPath: urlPath,
|
||||
@@ -93,8 +95,8 @@ export async function generateMetadata(
|
||||
return metadata;
|
||||
}
|
||||
|
||||
export default async function Page({ params }: { params: { url: string[] } }) {
|
||||
const { url } = params;
|
||||
export default async function Page({ params }: { params: Params }) {
|
||||
const { url } = await params;
|
||||
const urlPath = getWagtailUrlPath(url);
|
||||
const { data, error } = await getClient().query(genericPageByUrlPathQuery, {
|
||||
urlPath: urlPath,
|
||||
|
@@ -44,12 +44,15 @@ export async function generateStaticParams() {
|
||||
}));
|
||||
}
|
||||
|
||||
type Params = Promise<{ slug: string }>;
|
||||
|
||||
export async function generateMetadata(
|
||||
{ params }: { params: { slug: string } },
|
||||
{ params }: { params: Params },
|
||||
parent: ResolvingMetadata
|
||||
): Promise<Metadata | null> {
|
||||
const { slug } = await params;
|
||||
const { data, error } = await getClient().query(newsBySlugQuery, {
|
||||
slug: params.slug,
|
||||
slug,
|
||||
});
|
||||
if (error) {
|
||||
throw new Error(error.message);
|
||||
@@ -62,9 +65,10 @@ export async function generateMetadata(
|
||||
return metadata;
|
||||
}
|
||||
|
||||
export default async function Page({ params }: { params: { slug: string } }) {
|
||||
export default async function Page({ params }: { params: Params }) {
|
||||
const { slug } = await params;
|
||||
const { data, error } = await getClient().query(newsBySlugQuery, {
|
||||
slug: params.slug,
|
||||
slug,
|
||||
});
|
||||
|
||||
if (error) {
|
||||
|
@@ -6,7 +6,7 @@ import { newsQuery, NewsFragment, NewsIndexFragment } from "@/lib/news";
|
||||
import { getSeoMetadata } from "@/lib/seo";
|
||||
|
||||
export async function generateMetadata(
|
||||
{ params }: { params: { url: string[] } },
|
||||
{ params }: { params: Promise<{}> },
|
||||
parent: ResolvingMetadata
|
||||
): Promise<Metadata | null> {
|
||||
const { data, error } = await getClient().query(newsQuery, {});
|
||||
|
@@ -34,15 +34,7 @@ type ResponseData = {
|
||||
total: number;
|
||||
};
|
||||
|
||||
const whitelistFilter = (obj: Record<string, any>, whitelist: string[]) =>
|
||||
Object.entries(obj)
|
||||
.filter(([key, value]) => whitelist.includes(key))
|
||||
.reduce(
|
||||
(obj: Record<string, any>, [key, value]) => ((obj[key] = value), obj),
|
||||
{}
|
||||
);
|
||||
|
||||
export async function GET(req: NextRequest, res: NextResponse<ResponseData>) {
|
||||
export async function GET(req: NextRequest) {
|
||||
const searchParams = req.nextUrl.searchParams;
|
||||
const view = searchParams.get("view");
|
||||
|
||||
@@ -80,15 +72,20 @@ export async function GET(req: NextRequest, res: NextResponse<ResponseData>) {
|
||||
: null;
|
||||
|
||||
return {
|
||||
url: `${process.env.URL}/arrangementer/${event.slug}`,
|
||||
id: event.id,
|
||||
slug: event.slug,
|
||||
title: event.title,
|
||||
subtitle: event.subtitle,
|
||||
nextOccurrence: nextOccurrence,
|
||||
url: `${process.env.URL}/arrangementer/${event.slug}`,
|
||||
futureOccurrencesCount: futureOccurrences.length,
|
||||
...whitelistFilter(event, keepKeys),
|
||||
};
|
||||
} as CompactEvent;
|
||||
});
|
||||
|
||||
return NextResponse.json(
|
||||
{ events: compactEvents, total: compactEvents.length },
|
||||
{ status: 200 }
|
||||
);
|
||||
const responseData: ResponseData = {
|
||||
events: compactEvents,
|
||||
total: compactEvents.length,
|
||||
};
|
||||
|
||||
return NextResponse.json(responseData, { status: 200 });
|
||||
}
|
||||
|
@@ -45,12 +45,15 @@ export async function generateStaticParams() {
|
||||
}));
|
||||
}
|
||||
|
||||
type Params = Promise<{ slug: string }>;
|
||||
|
||||
export async function generateMetadata(
|
||||
{ params }: { params: { slug: string } },
|
||||
{ params }: { params: Params },
|
||||
parent: ResolvingMetadata
|
||||
): Promise<Metadata | null> {
|
||||
const { slug } = await params;
|
||||
const { data, error } = await getClient().query(eventBySlugQuery, {
|
||||
slug: params.slug,
|
||||
slug,
|
||||
});
|
||||
|
||||
if (error) {
|
||||
@@ -65,9 +68,10 @@ export async function generateMetadata(
|
||||
return metadata;
|
||||
}
|
||||
|
||||
export default async function Page({ params }: { params: { slug: string } }) {
|
||||
export default async function Page({ params }: { params: Params }) {
|
||||
const { slug } = await params;
|
||||
const { data, error } = await getClient().query(eventBySlugQuery, {
|
||||
slug: params.slug,
|
||||
slug,
|
||||
});
|
||||
|
||||
if (error) {
|
||||
|
@@ -14,7 +14,7 @@ import { EventIndexFragment, VenueFragment } from "@/gql/graphql";
|
||||
import { getSeoMetadata } from "@/lib/seo";
|
||||
|
||||
export async function generateMetadata(
|
||||
{ params }: { params: { url: string[] } },
|
||||
{ params }: { params: Promise<{}> },
|
||||
parent: ResolvingMetadata
|
||||
): Promise<Metadata | null> {
|
||||
const { data, error } = await getClient().query(eventIndexMetadataQuery, {});
|
||||
|
@@ -20,12 +20,15 @@ const associationBySlugQuery = graphql(`
|
||||
}
|
||||
`);
|
||||
|
||||
type Params = Promise<{ slug: string }>;
|
||||
|
||||
export async function generateMetadata(
|
||||
{ params }: { params: { slug: string } },
|
||||
{ params }: { params: Params },
|
||||
parent: ResolvingMetadata
|
||||
): Promise<Metadata | null> {
|
||||
const { slug } = await params;
|
||||
const { data, error } = await getClient().query(associationBySlugQuery, {
|
||||
slug: params.slug,
|
||||
slug,
|
||||
});
|
||||
|
||||
if (error) {
|
||||
@@ -65,9 +68,10 @@ export async function generateStaticParams() {
|
||||
}));
|
||||
}
|
||||
|
||||
export default async function Page({ params }: { params: { slug: string } }) {
|
||||
export default async function Page({ params }: { params: Params }) {
|
||||
const { slug } = await params;
|
||||
const { data, error } = await getClient().query(associationBySlugQuery, {
|
||||
slug: params.slug,
|
||||
slug,
|
||||
});
|
||||
|
||||
if (error) {
|
||||
|
@@ -26,7 +26,7 @@ const allAssociationsQuery = graphql(`
|
||||
`);
|
||||
|
||||
export async function generateMetadata(
|
||||
{ params }: { params: { url: string[] } },
|
||||
{ params }: { params: Promise<{}> },
|
||||
parent: ResolvingMetadata
|
||||
): Promise<Metadata | null> {
|
||||
const { data, error } = await getClient().query(allAssociationsQuery, {});
|
||||
|
@@ -33,7 +33,7 @@ const ContactIndexDefinition = graphql(`
|
||||
`);
|
||||
|
||||
export async function generateMetadata(
|
||||
{ params }: { params: { url: string[] } },
|
||||
{ params }: { params: Promise<{}> },
|
||||
parent: ResolvingMetadata
|
||||
): Promise<Metadata | null> {
|
||||
const { data, error } = await getClient().query(contactQuery, {});
|
||||
|
@@ -2,6 +2,7 @@ import "@/css/main.scss";
|
||||
import { Header } from "@/components/layout/Header";
|
||||
import { Footer } from "@/components/layout/Footer";
|
||||
import { Metadata } from "next";
|
||||
import { NuqsAdapter } from "nuqs/adapters/next/app";
|
||||
|
||||
const baseUrlMetadata = process.env.URL
|
||||
? { metadataBase: new URL(process.env.URL) }
|
||||
@@ -43,9 +44,11 @@ export default function RootLayout({
|
||||
)}
|
||||
</head>
|
||||
<body>
|
||||
<Header />
|
||||
{children}
|
||||
<Footer />
|
||||
<NuqsAdapter>
|
||||
<Header />
|
||||
{children}
|
||||
<Footer />
|
||||
</NuqsAdapter>
|
||||
</body>
|
||||
</html>
|
||||
);
|
||||
|
@@ -20,12 +20,15 @@ const venueBySlugQuery = graphql(`
|
||||
}
|
||||
`);
|
||||
|
||||
type Params = Promise<{ slug: string }>;
|
||||
|
||||
export async function generateMetadata(
|
||||
{ params }: { params: { slug: string } },
|
||||
{ params }: { params: Params },
|
||||
parent: ResolvingMetadata
|
||||
): Promise<Metadata | null> {
|
||||
const { slug } = await params;
|
||||
const { data, error } = await getClient().query(venueBySlugQuery, {
|
||||
slug: params.slug,
|
||||
slug,
|
||||
});
|
||||
|
||||
if (error) {
|
||||
@@ -65,9 +68,10 @@ export async function generateStaticParams() {
|
||||
}));
|
||||
}
|
||||
|
||||
export default async function Page({ params }: { params: { slug: string } }) {
|
||||
export default async function Page({ params }: { params: Params }) {
|
||||
const { slug } = await params;
|
||||
const { data, error } = await getClient().query(venueBySlugQuery, {
|
||||
slug: params.slug,
|
||||
slug,
|
||||
});
|
||||
|
||||
if (error) {
|
||||
|
@@ -70,7 +70,7 @@ const VenueFragmentDefinition = graphql(`
|
||||
`);
|
||||
|
||||
export async function generateMetadata(
|
||||
{ params }: { params: { url: string[] } },
|
||||
{ params }: { params: Promise<{}> },
|
||||
parent: ResolvingMetadata
|
||||
): Promise<Metadata | null> {
|
||||
const { data, error } = await getClient().query(venueIndexQuery, {});
|
||||
|
@@ -8,11 +8,11 @@ import { Suspense } from "react";
|
||||
export default async function Page({
|
||||
searchParams,
|
||||
}: {
|
||||
searchParams?: {
|
||||
searchParams?: Promise<{
|
||||
q?: string;
|
||||
};
|
||||
}>;
|
||||
}) {
|
||||
const { q: query } = searchParams ?? {};
|
||||
const { q: query } = (await searchParams) ?? {};
|
||||
let results = [];
|
||||
|
||||
if (query) {
|
||||
|
@@ -38,7 +38,7 @@ const VenueRentalIndexDefinition = graphql(`
|
||||
`);
|
||||
|
||||
export async function generateMetadata(
|
||||
{ params }: { params: { url: string[] } },
|
||||
{ params }: { params: Promise<{}> },
|
||||
parent: ResolvingMetadata
|
||||
): Promise<Metadata | null> {
|
||||
const { data, error } = await getClient().query(venueRentalIndexQuery, {});
|
||||
|
Reference in New Issue
Block a user