From dc53ab92454538f9a209d93090ca6be3211d9083 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20J=C3=A4derberg?= Date: Thu, 13 Nov 2025 07:33:56 +0000 Subject: [PATCH] Merged in chore/upgrade-next (pull request #3124) Upgrade next@15.5.6 * chore: upgrade next@15.5.6 * chore: upgrade turborepo@2.6.1 * fix typings for scandic-web * fix: set correct type for pages * cleanup * fix more route.ts typing issues * Merge branch 'master' of bitbucket.org:scandic-swap/web into chore/upgrade-next * explicitly import the types Approved-by: Linus Flood --- .../app/[lang]/(auth)/login/route.ts | 7 +- .../app/[lang]/(auth)/logout/route.ts | 7 +- apps/partner-sas/app/[lang]/layout.tsx | 14 +- .../[lang]/middleware-error/[status]/page.tsx | 8 +- apps/partner-sas/package.json | 2 +- .../[lang]/(live)/(protected)/logout/route.ts | 4 +- .../my-pages/@breadcrumbs/[...path]/page.tsx | 4 +- .../(protected)/my-pages/[...path]/page.tsx | 6 +- .../(protected)/my-pages/profile/page.tsx | 4 +- .../(public)/(contentTypes)/@preview/page.tsx | 17 +- .../destination_city_page/[uid]/page.tsx | 11 +- .../destination_country_page/[uid]/page.tsx | 10 +- .../(contentTypes)/hotel_page/[uid]/page.tsx | 14 +- .../(live)/(public)/(contentTypes)/layout.tsx | 19 +- .../(contentTypes)/start_page/[uid]/page.tsx | 4 +- .../booking-confirmation/page.tsx | 4 +- .../gla-payment-callback/page.tsx | 27 +- .../payment-callback/layout.tsx | 4 +- .../payment-callback/page.tsx | 13 +- .../alternative-hotels/map/page.tsx | 13 +- .../(standard)/alternative-hotels/page.tsx | 26 +- .../(standard)/details/page.tsx | 8 +- .../hotelreservation/(standard)/layout.tsx | 4 +- .../hotelreservation/(standard)/page.tsx | 6 +- .../(standard)/select-hotel/map/page.tsx | 21 +- .../(standard)/select-hotel/page.tsx | 22 +- .../(standard)/select-rate/page.tsx | 32 +- .../hotelreservation/my-stay/page.tsx | 12 +- .../app/[lang]/(live)/(public)/login/route.ts | 6 +- .../(live)/(public)/verifymagiclink/route.ts | 4 +- .../destination_city_page/[uid]/page.tsx | 4 +- .../(contentTypes)/hotel_page/[uid]/page.tsx | 9 +- .../@bookingwidget/hotelreservation/page.tsx | 9 +- .../app/[lang]/(live)/@bookingwidget/page.tsx | 11 +- apps/scandic-web/app/[lang]/(live)/layout.tsx | 18 +- .../(live)/middleware-error/404/page.tsx | 6 +- .../(live)/middleware-error/[status]/page.tsx | 4 +- .../hotelreservation/my-stay/receipt/page.tsx | 7 +- .../app/[lang]/(no-layout)/layout.tsx | 16 +- .../sas-x-scandic/callback/route.ts | 2 +- .../(protected)/sas-x-scandic/error/page.tsx | 5 +- .../(protected)/sas-x-scandic/layout.tsx | 9 +- .../(protected)/sas-x-scandic/link/page.tsx | 6 +- .../sas-x-scandic/link/success/page.tsx | 9 +- .../(protected)/sas-x-scandic/login/page.tsx | 12 +- .../(protected)/sas-x-scandic/otp/page.tsx | 20 +- .../sas-x-scandic/transfer/success/page.tsx | 8 +- .../sas-x-scandic/unlink/success/page.tsx | 7 +- .../app/[lang]/(partner)/layout.tsx | 18 +- .../(views)/[contentType]/[uid]/page.tsx | 15 +- .../gla-payment-callback/page.tsx | 28 +- .../(views)/hotelreservation/my-stay/page.tsx | 12 +- .../app/[lang]/webview/(views)/layout.tsx | 6 +- .../scandic-web/app/[lang]/webview/layout.tsx | 14 +- .../app/[lang]/webview/refresh/page.tsx | 4 +- .../api/web/add-card-callback/[lang]/route.ts | 2 +- .../destinations/[country]/[city]/route.ts | 2 +- .../api/web/destinations/[country]/route.ts | 2 +- .../app/sitemap/[sitemapId]/route.ts | 2 +- apps/scandic-web/package.json | 2 +- apps/scandic-web/types/params.ts | 15 - .../utils/metadata/generateMetadata.ts | 16 +- package.json | 2 +- yarn.lock | 515 ++++++++++++++++-- 64 files changed, 746 insertions(+), 404 deletions(-) diff --git a/apps/partner-sas/app/[lang]/(auth)/login/route.ts b/apps/partner-sas/app/[lang]/(auth)/login/route.ts index 717647524..d8dffd368 100644 --- a/apps/partner-sas/app/[lang]/(auth)/login/route.ts +++ b/apps/partner-sas/app/[lang]/(auth)/login/route.ts @@ -12,10 +12,11 @@ import type { Lang } from "@scandic-hotels/common/constants/language" export async function GET( request: NextRequest, - context: { params: Promise<{ lang: Lang }> } + context: RouteContext<"/[lang]/login"> ) { - const contextParams = await context.params + const params = await context.params const publicURL = getPublicURL(request) + const lang = params.lang as Lang let redirectHeaders: Headers | undefined = undefined let redirectTo: string @@ -61,7 +62,7 @@ export async function GET( /** Record is next-auth typings */ const params = { - ui_locales: SAS_LANGUAGE_MAP[contextParams.lang], + ui_locales: SAS_LANGUAGE_MAP[lang], scope: ["openid", "profile", "email", "offline_access"].join(" "), } satisfies Record diff --git a/apps/partner-sas/app/[lang]/(auth)/logout/route.ts b/apps/partner-sas/app/[lang]/(auth)/logout/route.ts index d1989eabc..8820fb03a 100644 --- a/apps/partner-sas/app/[lang]/(auth)/logout/route.ts +++ b/apps/partner-sas/app/[lang]/(auth)/logout/route.ts @@ -5,12 +5,7 @@ import { getPublicURL } from "@/server/utils" import { signOut } from "@/auth" import { destroySocialSession } from "@/auth/scandic/session" -import type { Lang } from "@scandic-hotels/common/constants/language" - -export async function GET( - request: NextRequest, - _context: { params: Promise<{ lang: Lang }> } -) { +export async function GET(request: NextRequest) { const publicURL = getPublicURL(request) const redirectTo: string = publicURL diff --git a/apps/partner-sas/app/[lang]/layout.tsx b/apps/partner-sas/app/[lang]/layout.tsx index 3ad3d62b6..3e2e6932e 100644 --- a/apps/partner-sas/app/[lang]/layout.tsx +++ b/apps/partner-sas/app/[lang]/layout.tsx @@ -29,19 +29,9 @@ import { Footer } from "../../components/Footer/Footer" import { Header } from "../../components/Header/Header" import { SocialLoginProvider } from "./(auth)/SocialLogin" -type LangParams = { - lang: Lang -} - -type RootLayoutProps = { - children: React.ReactNode - params: Promise - bookingwidget: React.ReactNode -} - -export default async function RootLayout(props: RootLayoutProps) { +export default async function RootLayout(props: LayoutProps<"/[lang]">) { const params = await props.params - const lang = params.lang + const lang = params.lang as Lang const { children } = props diff --git a/apps/partner-sas/app/[lang]/middleware-error/[status]/page.tsx b/apps/partner-sas/app/[lang]/middleware-error/[status]/page.tsx index 13ff1aa2e..65c3ebfd8 100644 --- a/apps/partner-sas/app/[lang]/middleware-error/[status]/page.tsx +++ b/apps/partner-sas/app/[lang]/middleware-error/[status]/page.tsx @@ -1,10 +1,8 @@ import styles from "./page.module.css" -import type { Lang } from "@scandic-hotels/common/constants/language" - -export default async function MiddlewareError(props: { - params: Promise<{ lang: Lang; status: string }> -}) { +export default async function MiddlewareError( + props: PageProps<"/[lang]/middleware-error/[status]"> +) { const params = await props.params return ( diff --git a/apps/partner-sas/package.json b/apps/partner-sas/package.json index ddd53abc8..9cc542344 100644 --- a/apps/partner-sas/package.json +++ b/apps/partner-sas/package.json @@ -31,7 +31,7 @@ "@tanstack/react-query": "^5.75.5", "@tanstack/react-query-devtools": "^5.75.5", "iron-session": "^8.0.4", - "next": "15.3.4", + "next": "^15.5.6", "next-auth": "5.0.0-beta.29", "react": "^19.0.0", "react-aria-components": "^1.8.0", diff --git a/apps/scandic-web/app/[lang]/(live)/(protected)/logout/route.ts b/apps/scandic-web/app/[lang]/(live)/(protected)/logout/route.ts index c957c910f..61d3c5c73 100644 --- a/apps/scandic-web/app/[lang]/(live)/(protected)/logout/route.ts +++ b/apps/scandic-web/app/[lang]/(live)/(protected)/logout/route.ts @@ -12,7 +12,7 @@ import { signOut } from "@/auth" export async function GET( request: NextRequest, - context: { params: Promise<{ lang: Lang }> } + context: RouteContext<"/[lang]/logout"> ) { const publicURL = getPublicURL(request) @@ -71,6 +71,8 @@ export async function GET( case Lang.sv: redirectUrlValue = env.SEAMLESS_LOGOUT_SV break + default: + throw new Error(`Unsupported language for logout: ${params.lang}`) } const redirectUrl = new URL(redirectUrlValue) logger.debug( diff --git a/apps/scandic-web/app/[lang]/(live)/(protected)/my-pages/@breadcrumbs/[...path]/page.tsx b/apps/scandic-web/app/[lang]/(live)/(protected)/my-pages/@breadcrumbs/[...path]/page.tsx index 56914149c..e28ff5c69 100644 --- a/apps/scandic-web/app/[lang]/(live)/(protected)/my-pages/@breadcrumbs/[...path]/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/(protected)/my-pages/@breadcrumbs/[...path]/page.tsx @@ -3,9 +3,7 @@ import { Suspense } from "react" import Breadcrumbs from "@/components/Breadcrumbs" import BreadcrumbsSkeleton from "@/components/TempDesignSystem/Breadcrumbs/BreadcrumbsSkeleton" -import type { LangParams, PageArgs } from "@/types/params" - -export default function AllBreadcrumbs({}: PageArgs) { +export default function AllBreadcrumbs() { return ( }> diff --git a/apps/scandic-web/app/[lang]/(live)/(protected)/my-pages/[...path]/page.tsx b/apps/scandic-web/app/[lang]/(live)/(protected)/my-pages/[...path]/page.tsx index be9534465..33edbbc4f 100644 --- a/apps/scandic-web/app/[lang]/(live)/(protected)/my-pages/[...path]/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/(protected)/my-pages/[...path]/page.tsx @@ -10,13 +10,9 @@ import { getIntl } from "@/i18n" import styles from "./page.module.css" -import type { LangParams, PageArgs } from "@/types/params" - export { generateMetadata } from "@/utils/metadata/generateMetadata" -export default async function MyPages({}: PageArgs< - LangParams & { path: string[] } ->) { +export default async function MyPages() { const caller = await serverClient() const accountPageRes = await caller.contentstack.accountPage.get() const intl = await getIntl() diff --git a/apps/scandic-web/app/[lang]/(live)/(protected)/my-pages/profile/page.tsx b/apps/scandic-web/app/[lang]/(live)/(protected)/my-pages/profile/page.tsx index ba50b36bf..131f5c553 100644 --- a/apps/scandic-web/app/[lang]/(live)/(protected)/my-pages/profile/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/(protected)/my-pages/profile/page.tsx @@ -4,11 +4,9 @@ import { serverClient } from "@/lib/trpc/server" import Profile from "@/components/MyPages/Profile" -import type { LangParams, PageArgs } from "@/types/params" - export { generateMetadata } from "@/utils/metadata/generateMetadata" -export default async function ProfilePage({}: PageArgs) { +export default async function ProfilePage() { const caller = await serverClient() const accountPage = await caller.contentstack.accountPage.get() diff --git a/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/@preview/page.tsx b/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/@preview/page.tsx index efc2927c5..723c573e2 100644 --- a/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/@preview/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/@preview/page.tsx @@ -2,20 +2,19 @@ import { setPreviewData } from "@scandic-hotels/trpc/previewContext" import InitLivePreview from "@/components/LivePreview" -import type { PageArgs } from "@/types/params" - -export default async function PreviewPage( - props: PageArgs< - object, - { live_preview?: string; entry_uid?: string; isPreview?: string } - > -) { +export default async function PreviewPage(props: PageProps<"/[lang]">) { const searchParams = await props.searchParams const hash = searchParams.live_preview const uid = searchParams.entry_uid const shouldInitializePreview = searchParams.isPreview === "true" - if (shouldInitializePreview && hash && uid) { + if ( + shouldInitializePreview && + typeof hash === "string" && + hash && + typeof uid === "string" && + uid + ) { setPreviewData({ hash, uid }) } diff --git a/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/destination_city_page/[uid]/page.tsx b/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/destination_city_page/[uid]/page.tsx index 60398aebe..fe2587363 100644 --- a/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/destination_city_page/[uid]/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/destination_city_page/[uid]/page.tsx @@ -5,20 +5,23 @@ import DestinationCityPageSkeleton from "@/components/ContentType/DestinationPag import styles from "./page.module.css" -import type { PageArgs } from "@/types/params" - export { generateMetadata } from "@/utils/metadata/generateMetadata" export default async function DestinationCityPagePage( - props: PageArgs + props: PageProps<"/[lang]/destination_city_page/[uid]"> ) { const searchParams = await props.searchParams + return (
}>
diff --git a/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/destination_country_page/[uid]/page.tsx b/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/destination_country_page/[uid]/page.tsx index f523389bf..3862c5b53 100644 --- a/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/destination_country_page/[uid]/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/destination_country_page/[uid]/page.tsx @@ -5,20 +5,22 @@ import DestinationCountryPageSkeleton from "@/components/ContentType/Destination import styles from "./page.module.css" -import type { PageArgs } from "@/types/params" - export { generateMetadata } from "@/utils/metadata/generateMetadata" export default async function DestinationCountryPagePage( - props: PageArgs + props: PageProps<"/[lang]/destination_country_page/[uid]"> ) { const searchParams = await props.searchParams return (
}>
diff --git a/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/hotel_page/[uid]/page.tsx b/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/hotel_page/[uid]/page.tsx index ca629df46..e978f9084 100644 --- a/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/hotel_page/[uid]/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/hotel_page/[uid]/page.tsx @@ -17,17 +17,21 @@ import HotelSubpage from "@/components/ContentType/HotelSubpage" import styles from "./page.module.css" -import type { LangParams, PageArgs } from "@/types/params" +import type { Lang } from "@scandic-hotels/common/constants/language" export { generateMetadata } from "@/utils/metadata/generateMetadata" export default async function HotelPagePage( - props: PageArgs + props: PageProps<"/[lang]/hotel_page/[uid]"> ) { const searchParams = await props.searchParams const params = await props.params const hotelPageData = await getHotelPage() + const subpage = + typeof searchParams.subpage === "string" ? searchParams.subpage : null + const lang = params.lang as Lang + if (!hotelPageData) { return notFound() } @@ -35,7 +39,7 @@ export default async function HotelPagePage( const hotelData = await getHotel({ hotelId: hotelPageData.hotel_page_id, isCardOnlyPayment: false, - language: params.lang, + language: lang, }) if (!hotelData) { @@ -48,10 +52,10 @@ export default async function HotelPagePage( setTheme(hotelTheme) - if (searchParams.subpage) { + if (subpage) { return ( - + ) } else if (searchParams.view === "map") { diff --git a/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/layout.tsx b/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/layout.tsx index 15c50a702..c7bdd6990 100644 --- a/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/layout.tsx +++ b/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/layout.tsx @@ -1,22 +1,13 @@ import styles from "./layout.module.css" -import type { LangParams, LayoutArgs } from "@/types/params" +import type { LayoutProps } from "@/.next/types/app/[lang]/(live)/(public)/(contentTypes)/layout" -export default function ContentTypeLayout({ - breadcrumbs, - preview, - children, -}: React.PropsWithChildren< - LayoutArgs & { - breadcrumbs: React.ReactNode - preview: React.ReactNode - } ->) { +export default function ContentTypeLayout(props: LayoutProps) { return (
- {preview} - {breadcrumbs} - {children} + {props.preview} + {props.breadcrumbs} + {props.children}
) } diff --git a/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/start_page/[uid]/page.tsx b/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/start_page/[uid]/page.tsx index 56f3ec1c1..01b2fb4ad 100644 --- a/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/start_page/[uid]/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/start_page/[uid]/page.tsx @@ -4,12 +4,10 @@ import StartPage from "@/components/ContentType/StartPage" import styles from "./page.module.css" -import type { NextSearchParams, PageArgs } from "@/types/params" - export { generateMetadata } from "@/utils/metadata/generateMetadata" export default async function StartPagePage( - props: PageArgs + props: PageProps<"/[lang]/start_page/[uid]"> ) { const searchParams = await props.searchParams const booking = parseBookingWidgetSearchParams(searchParams) diff --git a/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(confirmation)/booking-confirmation/page.tsx b/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(confirmation)/booking-confirmation/page.tsx index 6b8b2ce6a..6e6d98c6d 100644 --- a/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(confirmation)/booking-confirmation/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(confirmation)/booking-confirmation/page.tsx @@ -5,10 +5,8 @@ import { bookingFlowConfig } from "@/constants/bookingFlowConfig" import { getIntl } from "@/i18n" import { getLang } from "@/i18n/serverContext" -import type { LangParams, PageArgs } from "@/types/params" - export default async function BookingConfirmationPage( - props: PageArgs + props: PageProps<"/[lang]/hotelreservation/booking-confirmation"> ) { const searchParams = await props.searchParams const lang = await getLang() diff --git a/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(payment-callback)/gla-payment-callback/page.tsx b/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(payment-callback)/gla-payment-callback/page.tsx index fb24086c6..1b7b62a14 100644 --- a/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(payment-callback)/gla-payment-callback/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(payment-callback)/gla-payment-callback/page.tsx @@ -5,28 +5,25 @@ import { logger } from "@scandic-hotels/common/logger" import GuaranteeCallbackPage from "@/components/GuaranteeCallback" +import type { Lang } from "@scandic-hotels/common/constants/language" import type { PaymentCallbackStatusEnum } from "@scandic-hotels/common/constants/paymentCallbackStatusEnum" -import type { LangParams, PageArgs } from "@/types/params" - export default async function GuaranteePaymentCallbackPage( - props: PageArgs< - LangParams, - { - status?: PaymentCallbackStatusEnum - RefId?: string - confirmationNumber?: string - ancillary?: string - } - > + props: PageProps<"/[lang]/hotelreservation/gla-payment-callback"> ) { const searchParams = await props.searchParams const params = await props.params logger.debug(`[gla-payment-callback] callback started`) - const lang = params.lang - const status = searchParams.status - const confirmationNumber = searchParams.confirmationNumber - const refId = searchParams.RefId + const lang = params.lang as Lang + const status = searchParams.status as PaymentCallbackStatusEnum + const confirmationNumber = + typeof searchParams.confirmationNumber === "string" + ? searchParams.confirmationNumber + : null + + const refId = + typeof searchParams.RefId === "string" ? searchParams.RefId : null + if (!status || !confirmationNumber || !refId) { notFound() } diff --git a/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(payment-callback)/payment-callback/layout.tsx b/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(payment-callback)/payment-callback/layout.tsx index e0ce4da7c..41b52a3da 100644 --- a/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(payment-callback)/payment-callback/layout.tsx +++ b/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(payment-callback)/payment-callback/layout.tsx @@ -1,9 +1,7 @@ import styles from "./layout.module.css" -import type { LangParams, LayoutArgs } from "@/types/params" - export default function PaymentCallbackLayout({ children, -}: React.PropsWithChildren>) { +}: LayoutProps<"/[lang]/hotelreservation/payment-callback">) { return
{children}
} diff --git a/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(payment-callback)/payment-callback/page.tsx b/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(payment-callback)/payment-callback/page.tsx index c1fdb0aa5..214836411 100644 --- a/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(payment-callback)/payment-callback/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(payment-callback)/payment-callback/page.tsx @@ -6,23 +6,16 @@ import { bookingFlowConfig } from "@/constants/bookingFlowConfig" import { auth } from "@/auth" +import type { Lang } from "@scandic-hotels/common/constants/language" import type { PaymentCallbackStatusEnum } from "@scandic-hotels/common/constants/paymentCallbackStatusEnum" -import type { LangParams, PageArgs } from "@/types/params" - export default async function PaymentCallbackPage( - props: PageArgs< - LangParams, - { - status?: PaymentCallbackStatusEnum - confirmationNumber?: string - } - > + props: PageProps<"/[lang]/hotelreservation/payment-callback"> ) { const searchParams = await props.searchParams const params = await props.params logger.debug(`[payment-callback] callback started`) - const lang = params.lang + const lang = params.lang as Lang let userAccessToken = null const session = await auth() diff --git a/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(standard)/alternative-hotels/map/page.tsx b/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(standard)/alternative-hotels/map/page.tsx index 9d7cb0054..f55963488 100644 --- a/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(standard)/alternative-hotels/map/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(standard)/alternative-hotels/map/page.tsx @@ -4,22 +4,20 @@ import { bookingFlowConfig } from "@/constants/bookingFlowConfig" import { getHotel } from "@/lib/trpc/memoizedRequests" import { getIntl } from "@/i18n" -import { getLang } from "@/i18n/serverContext" import styles from "./page.module.css" +import type { Lang } from "@scandic-hotels/common/constants/language" import type { Metadata } from "next" -import type { LangParams, NextSearchParams, PageArgs } from "@/types/params" - export async function generateMetadata({ searchParams, params, -}: PageArgs): Promise { +}: PageProps<"/[lang]/hotelreservation/alternative-hotels/map">): Promise { const intl = await getIntl() const { hotel } = await searchParams - const { lang } = await params + const lang = (await params).lang as Lang if (!hotel || Array.isArray(hotel)) { return {} @@ -50,10 +48,11 @@ export async function generateMetadata({ } export default async function AlternativeHotelsMapPage( - props: PageArgs + props: PageProps<"/[lang]/hotelreservation/alternative-hotels/map"> ) { const searchParams = await props.searchParams - const lang = await getLang() + const params = await props.params + const lang = params.lang as Lang return (
diff --git a/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(standard)/alternative-hotels/page.tsx b/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(standard)/alternative-hotels/page.tsx index a94fabbd1..6180893de 100644 --- a/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(standard)/alternative-hotels/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(standard)/alternative-hotels/page.tsx @@ -4,24 +4,19 @@ import { bookingFlowConfig } from "@/constants/bookingFlowConfig" import { getHotel } from "@/lib/trpc/memoizedRequests" import { getIntl } from "@/i18n" -import { getLang } from "@/i18n/serverContext" +import type { Lang } from "@scandic-hotels/common/constants/language" import type { Metadata } from "next" -import { - type LangParams, - type NextSearchParams, - type PageArgs, -} from "@/types/params" - -export async function generateMetadata({ - searchParams, - params, -}: PageArgs): Promise { +export async function generateMetadata( + props: PageProps<"/[lang]/hotelreservation/alternative-hotels"> +): Promise { const intl = await getIntl() + const searchParams = await props.searchParams + const params = await props.params + const { hotel } = await searchParams - const { lang } = await params if (!hotel || Array.isArray(hotel)) { return {} @@ -29,7 +24,7 @@ export async function generateMetadata({ const hotelData = await getHotel({ hotelId: hotel, - language: lang, + language: params.lang as Lang, isCardOnlyPayment: false, }) const hotelName = hotelData?.additionalData?.name @@ -52,10 +47,11 @@ export async function generateMetadata({ } export default async function AlternativeHotelsPage( - props: PageArgs + props: PageProps<"/[lang]/hotelreservation/alternative-hotels"> ) { const searchParams = await props.searchParams - const lang = await getLang() + const lang = (await props.params).lang as Lang + return ( + props: PageProps<"/[lang]/hotelreservation/details"> ) { - const { lang } = await props.params + const params = await props.params const searchParams = await props.searchParams return ( diff --git a/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(standard)/layout.tsx b/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(standard)/layout.tsx index 4546e26d8..8f9e77d14 100644 --- a/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(standard)/layout.tsx +++ b/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(standard)/layout.tsx @@ -1,9 +1,7 @@ import styles from "./layout.module.css" -import type { LangParams, LayoutArgs } from "@/types/params" - export default function StandardHotelReservationLayout({ children, -}: React.PropsWithChildren>) { +}: LayoutProps<"/[lang]/hotelreservation">) { return
{children}
} diff --git a/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(standard)/page.tsx b/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(standard)/page.tsx index 5d1328559..7036977da 100644 --- a/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(standard)/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(standard)/page.tsx @@ -6,16 +6,16 @@ import { import styles from "./page.module.css" -import type { LangParams, PageArgs } from "@/types/params" +import type { Lang } from "@scandic-hotels/common/constants/language" export default async function HotelReservationPage( - props: PageArgs + props: PageProps<"/[lang]/hotelreservation"> ) { const params = await props.params const pageTrackingData: TrackingSDKPageData = { pageId: "hotelreservation", - domainLanguage: params.lang, + domainLanguage: params.lang as Lang, channel: TrackingChannelEnum["hotelreservation"], pageName: "hotelreservation", siteSections: "hotelreservation", diff --git a/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(standard)/select-hotel/map/page.tsx b/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(standard)/select-hotel/map/page.tsx index 156608254..d755bf2eb 100644 --- a/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(standard)/select-hotel/map/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(standard)/select-hotel/map/page.tsx @@ -3,34 +3,31 @@ import { toCapitalCase } from "@scandic-hotels/common/utils/toCapitalCase" import { bookingFlowConfig } from "@/constants/bookingFlowConfig" -import { getLang } from "@/i18n/serverContext" - import styles from "./page.module.css" +import type { Lang } from "@scandic-hotels/common/constants/language" import type { Metadata } from "next" -import type { LangParams, NextSearchParams, PageArgs } from "@/types/params" - -export async function generateMetadata({ - searchParams, -}: PageArgs): Promise { - const { city } = await searchParams +export async function generateMetadata( + props: PageProps<"/[lang]/hotelreservation/select-hotel/map"> +): Promise { + const { city } = await props.searchParams return { - title: `${toCapitalCase(city)}`, + title: `${toCapitalCase(typeof city === "string" ? city : "")}`, } } export default async function SelectHotelMapPage( - props: PageArgs + props: PageProps<"/[lang]/hotelreservation/select-hotel/map"> ) { const searchParams = await props.searchParams - const lang = await getLang() + const params = await props.params return (
diff --git a/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(standard)/select-hotel/page.tsx b/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(standard)/select-hotel/page.tsx index 0ccfe5492..c21861565 100644 --- a/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(standard)/select-hotel/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/(public)/hotelreservation/(standard)/select-hotel/page.tsx @@ -3,27 +3,29 @@ import { toCapitalCase } from "@scandic-hotels/common/utils/toCapitalCase" import { bookingFlowConfig } from "@/constants/bookingFlowConfig" -import { getLang } from "@/i18n/serverContext" - +import type { Lang } from "@scandic-hotels/common/constants/language" import type { Metadata } from "next" -import type { LangParams, NextSearchParams, PageArgs } from "@/types/params" +export async function generateMetadata( + props: PageProps<"/[lang]/hotelreservation/select-hotel"> +): Promise { + const searchParams = await props.searchParams -export async function generateMetadata({ - searchParams, -}: PageArgs): Promise { - const { city } = await searchParams + if (typeof searchParams.city !== "string" || !searchParams.city) { + return {} + } return { - title: `${toCapitalCase(city)}`, + title: `${toCapitalCase(searchParams.city)}`, } } export default async function SelectHotelPage( - props: PageArgs + props: PageProps<"/[lang]/hotelreservation/select-hotel"> ) { const searchParams = await props.searchParams - const lang = await getLang() + const params = await props.params + const lang = params.lang as Lang return ( +): Promise { + const searchParams = await props.searchParams + const params = await props.params -export async function generateMetadata({ - searchParams, - params, -}: PageArgs): Promise { - const { hotel } = await searchParams - const { lang } = await params + if (typeof searchParams.hotel !== "string" || !searchParams.hotel) { + return {} + } const hotelData = await getHotel({ - hotelId: hotel, - language: lang, + hotelId: searchParams.hotel, + language: params.lang as Lang, isCardOnlyPayment: false, }) @@ -36,10 +32,12 @@ export async function generateMetadata({ } export default async function SelectRatePage( - props: PageArgs + props: PageProps<"/[lang]/hotelreservation/select-rate"> ) { const searchParams = await props.searchParams - const lang = await getLang() + const params = await props.params + + const lang = params.lang as Lang return ( + props: PageProps<"/[lang]/hotelreservation/my-stay"> ) { const searchParams = await props.searchParams const params = await props.params - setLang(params.lang) - const refId = searchParams.RefId + const lang = params.lang as Lang + setLang(lang) + + const refId = typeof searchParams.RefId === "string" ? searchParams.RefId : "" return ( <> - + ) diff --git a/apps/scandic-web/app/[lang]/(live)/(public)/login/route.ts b/apps/scandic-web/app/[lang]/(live)/(public)/login/route.ts index 2ec047955..a0094fe41 100644 --- a/apps/scandic-web/app/[lang]/(live)/(public)/login/route.ts +++ b/apps/scandic-web/app/[lang]/(live)/(public)/login/route.ts @@ -12,7 +12,7 @@ import { signIn } from "@/auth" export async function GET( request: NextRequest, - context: { params: Promise<{ lang: Lang }> } + context: RouteContext<"/[lang]/login"> ) { const contextParams = await context.params const publicURL = getPublicURL(request) @@ -89,6 +89,10 @@ export async function GET( case Lang.sv: redirectUrlValue = env.SEAMLESS_LOGIN_SV break + default: + throw new Error( + `Unsupported language for login: ${contextParams.lang}` + ) } const redirectUrl = new URL(redirectUrlValue) logger.debug( diff --git a/apps/scandic-web/app/[lang]/(live)/(public)/verifymagiclink/route.ts b/apps/scandic-web/app/[lang]/(live)/(public)/verifymagiclink/route.ts index 1fc85b77c..646c8152d 100644 --- a/apps/scandic-web/app/[lang]/(live)/(public)/verifymagiclink/route.ts +++ b/apps/scandic-web/app/[lang]/(live)/(public)/verifymagiclink/route.ts @@ -8,11 +8,9 @@ import { getPublicURL } from "@/server/utils" import { signIn } from "@/auth" -import type { Lang } from "@scandic-hotels/common/constants/language" - export async function GET( request: NextRequest, - context: { params: Promise<{ lang: Lang }> } + context: RouteContext<"/[lang]/verifymagiclink"> ) { const publicURL = getPublicURL(request) diff --git a/apps/scandic-web/app/[lang]/(live)/@bookingwidget/(contentTypes)/destination_city_page/[uid]/page.tsx b/apps/scandic-web/app/[lang]/(live)/@bookingwidget/(contentTypes)/destination_city_page/[uid]/page.tsx index c0946354b..314cafbd3 100644 --- a/apps/scandic-web/app/[lang]/(live)/@bookingwidget/(contentTypes)/destination_city_page/[uid]/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/@bookingwidget/(contentTypes)/destination_city_page/[uid]/page.tsx @@ -6,10 +6,8 @@ import { getDestinationCityPage } from "@/lib/trpc/memoizedRequests" import { getLang } from "@/i18n/serverContext" -import type { NextSearchParams, PageArgs } from "@/types/params" - export default async function BookingWidgetDestinationCityPage( - props: PageArgs + props: PageProps<"/[lang]/destination_city_page/[uid]"> ) { const searchParams = await props.searchParams diff --git a/apps/scandic-web/app/[lang]/(live)/@bookingwidget/(contentTypes)/hotel_page/[uid]/page.tsx b/apps/scandic-web/app/[lang]/(live)/@bookingwidget/(contentTypes)/hotel_page/[uid]/page.tsx index 07d7033c8..2326af0dc 100644 --- a/apps/scandic-web/app/[lang]/(live)/@bookingwidget/(contentTypes)/hotel_page/[uid]/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/@bookingwidget/(contentTypes)/hotel_page/[uid]/page.tsx @@ -4,17 +4,16 @@ import { parseBookingWidgetSearchParams } from "@scandic-hotels/booking-flow/uti import { bookingFlowConfig } from "@/constants/bookingFlowConfig" import { getHotel, getHotelPage } from "@/lib/trpc/memoizedRequests" -import { getLang } from "@/i18n/serverContext" - -import type { NextSearchParams, PageArgs } from "@/types/params" +import type { Lang } from "@scandic-hotels/common/constants/language" export default async function BookingWidgetHotelPage( - props: PageArgs + props: PageProps<"/[lang]/hotel_page/[uid]"> ) { const searchParams = await props.searchParams + const params = await props.params + const lang = params.lang as Lang const hotelPageData = await getHotelPage() - const lang = await getLang() const hotelData = await getHotel({ hotelId: hotelPageData?.hotel_page_id || "", language: lang, diff --git a/apps/scandic-web/app/[lang]/(live)/@bookingwidget/hotelreservation/page.tsx b/apps/scandic-web/app/[lang]/(live)/@bookingwidget/hotelreservation/page.tsx index 45816625a..9a88da9a3 100644 --- a/apps/scandic-web/app/[lang]/(live)/@bookingwidget/hotelreservation/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/@bookingwidget/hotelreservation/page.tsx @@ -3,18 +3,17 @@ import { parseBookingWidgetSearchParams } from "@scandic-hotels/booking-flow/uti import { bookingFlowConfig } from "@/constants/bookingFlowConfig" -import { getLang } from "@/i18n/serverContext" - -import type { LangParams, NextSearchParams, PageArgs } from "@/types/params" +import type { Lang } from "@scandic-hotels/common/constants/language" export default async function BookingWidgetPage( - props: PageArgs + props: PageProps<"/[lang]/hotelreservation"> ) { const searchParams = await props.searchParams + const params = await props.params const booking = parseBookingWidgetSearchParams(searchParams) - const lang = await getLang() + const lang = params.lang as Lang return ( diff --git a/apps/scandic-web/app/[lang]/(live)/@bookingwidget/page.tsx b/apps/scandic-web/app/[lang]/(live)/@bookingwidget/page.tsx index 45816625a..a38a2024f 100644 --- a/apps/scandic-web/app/[lang]/(live)/@bookingwidget/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/@bookingwidget/page.tsx @@ -3,18 +3,15 @@ import { parseBookingWidgetSearchParams } from "@scandic-hotels/booking-flow/uti import { bookingFlowConfig } from "@/constants/bookingFlowConfig" -import { getLang } from "@/i18n/serverContext" +import type { Lang } from "@scandic-hotels/common/constants/language" -import type { LangParams, NextSearchParams, PageArgs } from "@/types/params" - -export default async function BookingWidgetPage( - props: PageArgs -) { +export default async function BookingWidgetPage(props: PageProps<"/[lang]">) { const searchParams = await props.searchParams + const params = await props.params const booking = parseBookingWidgetSearchParams(searchParams) - const lang = await getLang() + const lang = params.lang as Lang return ( diff --git a/apps/scandic-web/app/[lang]/(live)/layout.tsx b/apps/scandic-web/app/[lang]/(live)/layout.tsx index 1c168e019..e6c27bb60 100644 --- a/apps/scandic-web/app/[lang]/(live)/layout.tsx +++ b/apps/scandic-web/app/[lang]/(live)/layout.tsx @@ -35,21 +35,13 @@ import { getMessages } from "@/i18n" import ClientIntlProvider from "@/i18n/Provider" import { setLang } from "@/i18n/serverContext" -import type { LangParams, LayoutArgs } from "@/types/params" - -export default async function RootLayout( - props: React.PropsWithChildren< - LayoutArgs & { - bookingwidget: React.ReactNode - } - > -) { +export default async function RootLayout(props: LayoutProps<"/[lang]">) { const params = await props.params - + const lang = params.lang as Lang const { bookingwidget, children } = props - setLang(params.lang) - const messages = await getMessages(params.lang) + setLang(lang) + const messages = await getMessages(lang) return ( @@ -69,7 +61,7 @@ export default async function RootLayout( diff --git a/apps/scandic-web/app/[lang]/(live)/middleware-error/404/page.tsx b/apps/scandic-web/app/[lang]/(live)/middleware-error/404/page.tsx index f0c835ab2..b41d575e8 100644 --- a/apps/scandic-web/app/[lang]/(live)/middleware-error/404/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/middleware-error/404/page.tsx @@ -1,7 +1,7 @@ import NotFound from "@/components/NotFound" -import type { LangParams, PageArgs } from "@/types/params" - -export default function NotFoundPage({}: PageArgs) { +export default function NotFoundPage( + _props: PageProps<"/[lang]/middleware-error/404"> +) { return } diff --git a/apps/scandic-web/app/[lang]/(live)/middleware-error/[status]/page.tsx b/apps/scandic-web/app/[lang]/(live)/middleware-error/[status]/page.tsx index 49e5f347c..e89a1f01e 100644 --- a/apps/scandic-web/app/[lang]/(live)/middleware-error/[status]/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/middleware-error/[status]/page.tsx @@ -1,9 +1,7 @@ import styles from "./page.module.css" -import type { LangParams, LayoutArgs, StatusParams } from "@/types/params" - export default async function MiddlewareError( - props: LayoutArgs + props: PageProps<"/[lang]/middleware-error/[status]"> ) { const params = await props.params return ( diff --git a/apps/scandic-web/app/[lang]/(no-layout)/hotelreservation/my-stay/receipt/page.tsx b/apps/scandic-web/app/[lang]/(no-layout)/hotelreservation/my-stay/receipt/page.tsx index 24e10d694..851e752b0 100644 --- a/apps/scandic-web/app/[lang]/(no-layout)/hotelreservation/my-stay/receipt/page.tsx +++ b/apps/scandic-web/app/[lang]/(no-layout)/hotelreservation/my-stay/receipt/page.tsx @@ -4,15 +4,14 @@ import { Suspense } from "react" import { MyStaySkeleton } from "@/components/HotelReservation/MyStay/myStaySkeleton" import { Receipt } from "@/components/HotelReservation/MyStay/Receipt" -import type { LangParams, PageArgs } from "@/types/params" - export default async function ReceiptPage( - props: PageArgs + props: PageProps<"/[lang]/hotelreservation/my-stay/receipt"> ) { const searchParams = await props.searchParams - if (!searchParams.RefId) { + if (!searchParams.RefId || typeof searchParams.RefId !== "string") { notFound() } + return ( }> diff --git a/apps/scandic-web/app/[lang]/(no-layout)/layout.tsx b/apps/scandic-web/app/[lang]/(no-layout)/layout.tsx index 7fedfe73d..58d2da1c2 100644 --- a/apps/scandic-web/app/[lang]/(no-layout)/layout.tsx +++ b/apps/scandic-web/app/[lang]/(no-layout)/layout.tsx @@ -25,20 +25,18 @@ import { getMessages } from "@/i18n" import ClientIntlProvider from "@/i18n/Provider" import { setLang } from "@/i18n/serverContext" -import type { LangParams, LayoutArgs } from "@/types/params" +import type { LayoutProps } from "@/.next/types/app/[lang]/(no-layout)/layout" -export default async function RootLayout( - props: React.PropsWithChildren> -) { +export default async function RootLayout(props: LayoutProps) { const params = await props.params const { children } = props - - setLang(params.lang) - const messages = await getMessages(params.lang) + const lang = params.lang as Lang + setLang(lang) + const messages = await getMessages(lang) return ( - + @@ -52,7 +50,7 @@ export default async function RootLayout( diff --git a/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/callback/route.ts b/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/callback/route.ts index 1ebf472ca..10c18824c 100644 --- a/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/callback/route.ts +++ b/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/callback/route.ts @@ -25,7 +25,7 @@ const tokenResponseSchema = z.object({ export async function GET( request: NextRequest, - props: { params: Promise<{ lang: string }> } + props: RouteContext<"/[lang]/sas-x-scandic/callback"> ) { const params = await props.params const { lang } = params diff --git a/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/error/page.tsx b/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/error/page.tsx index ca05ddda1..604af4287 100644 --- a/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/error/page.tsx +++ b/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/error/page.tsx @@ -10,11 +10,8 @@ import { TooManyCodesError } from "../components/TooManyCodesError" import { TooManyFailedAttemptsError } from "../components/TooManyFailedAttemptsError" import { UnlinkError } from "../components/UnlinkError" -import type { LangParams, PageArgs, SearchParams } from "@/types/params" - export default async function Page( - props: PageArgs & - SearchParams<{ errorCode?: "dateOfBirthMismatch" }> + props: PageProps<"/[lang]/sas-x-scandic/error"> ) { const searchParams = await props.searchParams const intl = await getIntl() diff --git a/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/layout.tsx b/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/layout.tsx index 04cf04726..e812ccdb6 100644 --- a/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/layout.tsx +++ b/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/layout.tsx @@ -9,14 +9,13 @@ import background from "@/public/_static/img/partner/sas/sas_x_scandic_airplane_ import styles from "./layout.module.css" -import type { PropsWithChildren } from "react" - -import type { LangParams, LayoutArgs } from "@/types/params" +import type { Lang } from "@scandic-hotels/common/constants/language" export default async function SasXScandicLayout( - props: PropsWithChildren> + props: LayoutProps<"/[lang]/sas-x-scandic"> ) { const params = await props.params + const lang = params.lang as Lang const { children } = props @@ -29,7 +28,7 @@ export default async function SasXScandicLayout( >
{/* TODO should this link to my-pages sas page? */} - + {intl.formatMessage({ diff --git a/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/link/page.tsx b/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/link/page.tsx index f900f6cc4..2b57ba93f 100644 --- a/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/link/page.tsx +++ b/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/link/page.tsx @@ -8,9 +8,9 @@ import { getProfileSafely } from "@/lib/trpc/memoizedRequests" import { SASModal } from "../components/SASModal" import { LinkAccountForm } from "./LinkAccountForm" -import type { LangParams, PageArgs } from "@/types/params" - -export default async function SASxScandicLinkPage(props: PageArgs) { +export default async function SASxScandicLinkPage( + props: PageProps<"/[lang]/sas-x-scandic/link"> +) { const params = await props.params const profile = await getProfileSafely() diff --git a/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/link/success/page.tsx b/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/link/success/page.tsx index 069a1151c..754050472 100644 --- a/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/link/success/page.tsx +++ b/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/link/success/page.tsx @@ -9,15 +9,18 @@ import { getIntl } from "@/i18n" import { SASModal } from "../../components/SASModal" -import type { LangParams, PageArgs } from "@/types/params" +import type { Lang } from "@scandic-hotels/common/constants/language" -export default async function SASxScandicLinkPage(props: PageArgs) { +export default async function SASxScandicLinkPage( + props: PageProps<"/[lang]/sas-x-scandic/link/success"> +) { const params = await props.params + const lang = params.lang as Lang const intl = await getIntl() return ( - + ["intent"] export default async function SASxScandicLoginPage( - props: PageArgs & SearchParams + props: PageProps<"/[lang]/sas-x-scandic/login"> ) { const params = await props.params const searchParams = await props.searchParams const result = searchParamsSchema.safeParse(searchParams) + + const lang = params.lang as Lang + if (!result.success) { // TOOD where to redirect? - redirect(`/${params.lang}/sas-x-scandic/link`) + redirect(`/${lang}/sas-x-scandic/link`) } const parsedParams = result.data const intl = await getIntl() const redirectUri = new URL( - `/${params.lang}/sas-x-scandic/callback`, + `/${lang}/sas-x-scandic/callback`, env.PUBLIC_URL ).toString() @@ -49,7 +51,7 @@ export default async function SASxScandicLoginPage( const audience = "eb-partner-api" const scope = encodeURIComponent("openid profile email") - const loginLink = `${sasLoginHostname}/oauth/authorize?response_type=code&client_id=${clientId}&redirect_uri=${redirectUri}&scope=${scope}&state=${urlState}&audience=${audience}&ui_locales=${SAS_LANGUAGE_MAP[params.lang]}` + const loginLink = `${sasLoginHostname}/oauth/authorize?response_type=code&client_id=${clientId}&redirect_uri=${redirectUri}&scope=${scope}&state=${urlState}&audience=${audience}&ui_locales=${SAS_LANGUAGE_MAP[lang]}` const intentDescriptions: Record = { link: intl.formatMessage({ diff --git a/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/otp/page.tsx b/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/otp/page.tsx index a677f6bfd..a05b121ac 100644 --- a/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/otp/page.tsx +++ b/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/otp/page.tsx @@ -21,8 +21,6 @@ import OneTimePasswordForm, { import type { Lang } from "@scandic-hotels/common/constants/language" import type { ReactNode } from "react" -import type { LangParams, PageArgs, SearchParams } from "@/types/params" - const otpError = z.enum(["invalidCode", "expiredCode"]) const intent = z.enum(["link", "unlink", "transfer"]) const searchParamsSchema = z.object({ @@ -35,10 +33,12 @@ export type OtpError = z.infer type Intent = z.infer export default async function SASxScandicOneTimePasswordPage( - props: PageArgs & SearchParams + props: PageProps<"/[lang]/sas-x-scandic/otp"> ) { const params = await props.params const searchParams = await props.searchParams + const lang = params.lang as Lang + const intl = await getIntl() const cookieStore = await cookies() const tokenCookie = cookieStore.get(SAS_TOKEN_STORAGE_KEY) @@ -50,7 +50,7 @@ export default async function SASxScandicOneTimePasswordPage( const { intent, to, error } = result.data if (!verifyTokenValidity(tokenCookie?.value)) { - redirect(`/${params.lang}/sas-x-scandic/login?intent=${intent}`) + redirect(`/${lang}/sas-x-scandic/login?intent=${intent}`) } const handleOtpVerified: OnSubmitHandler = async ({ otp }) => { @@ -65,7 +65,7 @@ export default async function SASxScandicOneTimePasswordPage( switch (data.status) { case "ABUSED": return { - url: `/${params.lang}/sas-x-scandic/error?errorCode=tooManyFailedAttempts`, + url: `/${lang}/sas-x-scandic/error?errorCode=tooManyFailedAttempts`, } case "EXPIRED": { const search = new URLSearchParams({ @@ -74,7 +74,7 @@ export default async function SASxScandicOneTimePasswordPage( }).toString() return { - url: `/${params.lang}/sas-x-scandic/otp?${search}`, + url: `/${lang}/sas-x-scandic/otp?${search}`, } } case "RETRY": { @@ -84,7 +84,7 @@ export default async function SASxScandicOneTimePasswordPage( }).toString() return { - url: `/${params.lang}/sas-x-scandic/otp?${search}`, + url: `/${lang}/sas-x-scandic/otp?${search}`, } } case "NOTSENT": @@ -97,11 +97,11 @@ export default async function SASxScandicOneTimePasswordPage( switch (intent) { case "link": - return handleLinkAccount({ lang: params.lang }) + return handleLinkAccount({ lang: lang }) case "unlink": - return handleUnlinkAccount({ lang: params.lang }) + return handleUnlinkAccount({ lang: lang }) case "transfer": - return handleTransferPoints({ lang: params.lang }) + return handleTransferPoints({ lang: lang }) } } diff --git a/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/transfer/success/page.tsx b/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/transfer/success/page.tsx index 55420e0de..721159052 100644 --- a/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/transfer/success/page.tsx +++ b/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/transfer/success/page.tsx @@ -19,15 +19,13 @@ import styles from "./transferSuccess.module.css" import type { Lang } from "@scandic-hotels/common/constants/language" -import type { LangParams, PageArgs, SearchParams } from "@/types/params" - export default async function SASxScandicTransferSuccessPage( - props: PageArgs & SearchParams<{ p?: string }> + props: PageProps<"/[lang]/sas-x-scandic/transfer/success"> ) { const searchParams = await props.searchParams const params = await props.params const intl = await getIntl() - const { lang } = params + const lang = params.lang as Lang // TODO get from api const exchangeRate = 2 @@ -61,7 +59,7 @@ export default async function SASxScandicTransferSuccessPage( fullWidth className={styles.backButton} > - + {intl.formatMessage({ id: "transferEuroBonusPoints.backToMyPagesButton", defaultMessage: "Go back to My Pages", diff --git a/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/unlink/success/page.tsx b/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/unlink/success/page.tsx index 130afe64c..24edfede0 100644 --- a/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/unlink/success/page.tsx +++ b/apps/scandic-web/app/[lang]/(partner)/(sas)/(protected)/sas-x-scandic/unlink/success/page.tsx @@ -9,17 +9,18 @@ import { getIntl } from "@/i18n" import { SASModal } from "../../components/SASModal" -import type { LangParams, PageArgs } from "@/types/params" +import type { Lang } from "@scandic-hotels/common/constants/language" export default async function SASxScandicUnlinkSuccessPage( - props: PageArgs + props: PageProps<"/[lang]/sas-x-scandic/unlink/success"> ) { const params = await props.params + const lang = params.lang as Lang const intl = await getIntl() return ( - + > -) { +export default async function RootLayout(props: LayoutProps<"/[lang]">) { const params = await props.params - + const lang = params.lang as Lang const { children } = props - setLang(params.lang) + setLang(lang) - const messages = await getMessages(params.lang) + const messages = await getMessages(lang) return ( - + @@ -52,7 +48,7 @@ export default async function RootLayout( @@ -72,7 +68,7 @@ export default async function RootLayout( strategy="beforeInteractive" data-blockingmode="auto" data-cbid="6d539de8-3e67-4f0f-a0df-8cef9070f712" - data-culture={params.lang} + data-culture={lang} id="Cookiebot" src="https://consent.cookiebot.com/uc.js" async={true} diff --git a/apps/scandic-web/app/[lang]/webview/(views)/[contentType]/[uid]/page.tsx b/apps/scandic-web/app/[lang]/webview/(views)/[contentType]/[uid]/page.tsx index bded29374..752a007bd 100644 --- a/apps/scandic-web/app/[lang]/webview/(views)/[contentType]/[uid]/page.tsx +++ b/apps/scandic-web/app/[lang]/webview/(views)/[contentType]/[uid]/page.tsx @@ -5,25 +5,20 @@ import { logger } from "@scandic-hotels/common/logger" import AccountPage from "@/components/Webviews/AccountPage" import LoyaltyPage from "@/components/Webviews/LoyaltyPage" -import type { - ContentTypeWebviewParams, - LangParams, - PageArgs, - UIDParams, -} from "@/types/params" - +type ContentType = "loyalty-page" | "account-page" export default async function ContentTypePage( - props: PageArgs + props: PageProps<"/[lang]/webview/[contentType]/[uid]"> ) { const params = await props.params + const contentType = params.contentType as ContentType - switch (params.contentType) { + switch (contentType) { case "loyalty-page": return case "account-page": return default: - const type: never = params.contentType + const type: never = contentType logger.error(`Unsupported content type given: ${type}`) notFound() } diff --git a/apps/scandic-web/app/[lang]/webview/(views)/hotelreservation/gla-payment-callback/page.tsx b/apps/scandic-web/app/[lang]/webview/(views)/hotelreservation/gla-payment-callback/page.tsx index 394207b9e..a11949b5c 100644 --- a/apps/scandic-web/app/[lang]/webview/(views)/hotelreservation/gla-payment-callback/page.tsx +++ b/apps/scandic-web/app/[lang]/webview/(views)/hotelreservation/gla-payment-callback/page.tsx @@ -6,33 +6,29 @@ import { myStay } from "@/constants/routes/webviews" import GuaranteeCallbackPage from "@/components/GuaranteeCallback" +import type { Lang } from "@scandic-hotels/common/constants/language" import type { PaymentCallbackStatusEnum } from "@scandic-hotels/common/constants/paymentCallbackStatusEnum" -import type { LangParams, PageArgs } from "@/types/params" - export default async function GuaranteePaymentWebViewCallbackPage( - props: PageArgs< - LangParams, - { - status?: PaymentCallbackStatusEnum - RefId?: string - confirmationNumber?: string - ancillary?: string - } - > + props: PageProps<"/[lang]/webview/hotelreservation/gla-payment-callback"> ) { const searchParams = await props.searchParams const params = await props.params - logger.debug(`[gla-payment-callback] callback started`) - const lang = params.lang - const status = searchParams.status - const confirmationNumber = searchParams.confirmationNumber - const refId = searchParams.RefId + const lang = params.lang as Lang + const status = searchParams.status as PaymentCallbackStatusEnum + const confirmationNumber = + typeof searchParams.confirmationNumber === "string" + ? searchParams.confirmationNumber + : undefined + const refId = + typeof searchParams.RefId === "string" ? searchParams.RefId : undefined + if (!status || !confirmationNumber || !refId) { notFound() } const myStayUrl = `${myStay[lang]}?RefId=${encodeURIComponent(refId)}` + logger.debug(`[gla-payment-callback] callback started`) return ( + props: PageProps<"/[lang]/webview/hotelreservation/my-stay"> ) { const searchParams = await props.searchParams const params = await props.params - setLang(params.lang) - const refId = searchParams.RefId + const lang = params.lang as Lang + setLang(lang) + const refId = + typeof searchParams.RefId === "string" ? searchParams.RefId : undefined return ( }> - + ) diff --git a/apps/scandic-web/app/[lang]/webview/(views)/layout.tsx b/apps/scandic-web/app/[lang]/webview/(views)/layout.tsx index b0f26ce5d..4c58e84c6 100644 --- a/apps/scandic-web/app/[lang]/webview/(views)/layout.tsx +++ b/apps/scandic-web/app/[lang]/webview/(views)/layout.tsx @@ -10,11 +10,7 @@ import { getProfile } from "@/lib/trpc/memoizedRequests" import { getIntl } from "@/i18n" -import type { LangParams, LayoutArgs } from "@/types/params" - -export default async function Layout( - props: React.PropsWithChildren> -) { +export default async function Layout(props: LayoutProps<"/[lang]/webview">) { const params = await props.params const { children } = props diff --git a/apps/scandic-web/app/[lang]/webview/layout.tsx b/apps/scandic-web/app/[lang]/webview/layout.tsx index c00edb0df..a2e1f53a5 100644 --- a/apps/scandic-web/app/[lang]/webview/layout.tsx +++ b/apps/scandic-web/app/[lang]/webview/layout.tsx @@ -27,24 +27,22 @@ import styles from "./layout.module.css" import type { Metadata } from "next" -import type { LangParams, LayoutArgs } from "@/types/params" - export const metadata: Metadata = { title: "Webview", } export default async function RootLayout( - props: React.PropsWithChildren> + props: LayoutProps<"/[lang]/webview"> ) { const params = await props.params - + const lang = params.lang as Lang const { children } = props - setLang(params.lang) - const messages = await getMessages(params.lang) + setLang(lang) + const messages = await getMessages(lang) return ( - + @@ -59,7 +57,7 @@ export default async function RootLayout( diff --git a/apps/scandic-web/app/[lang]/webview/refresh/page.tsx b/apps/scandic-web/app/[lang]/webview/refresh/page.tsx index 262253793..c554bbbcc 100644 --- a/apps/scandic-web/app/[lang]/webview/refresh/page.tsx +++ b/apps/scandic-web/app/[lang]/webview/refresh/page.tsx @@ -2,9 +2,7 @@ import { LoadingSpinner } from "@scandic-hotels/design-system/LoadingSpinner" import styles from "./page.module.css" -import type { LangParams, PageArgs } from "@/types/params" - -export default function Refresh({}: PageArgs) { +export default function Refresh() { return (
diff --git a/apps/scandic-web/app/api/web/add-card-callback/[lang]/route.ts b/apps/scandic-web/app/api/web/add-card-callback/[lang]/route.ts index 20ba88a00..076bd63e2 100644 --- a/apps/scandic-web/app/api/web/add-card-callback/[lang]/route.ts +++ b/apps/scandic-web/app/api/web/add-card-callback/[lang]/route.ts @@ -9,7 +9,7 @@ import type { NextRequest } from "next/server" export async function GET( request: NextRequest, - props: { params: Promise<{ lang: string }> } + props: RouteContext<"/api/web/add-card-callback/[lang]"> ) { const addCardLogger = createLogger("add-card") diff --git a/apps/scandic-web/app/api/web/destinations/[country]/[city]/route.ts b/apps/scandic-web/app/api/web/destinations/[country]/[city]/route.ts index f445a4b7d..6b034e45a 100644 --- a/apps/scandic-web/app/api/web/destinations/[country]/[city]/route.ts +++ b/apps/scandic-web/app/api/web/destinations/[country]/[city]/route.ts @@ -26,7 +26,7 @@ export const revalidate = 28_800 // 8 hours export async function GET( _request: Request, - { params }: { params: Promise<{ country: string; city: string }> } + { params }: RouteContext<"/api/web/destinations/[country]/[city]"> ) { try { const { country: countryParam, city: cityParam } = await params diff --git a/apps/scandic-web/app/api/web/destinations/[country]/route.ts b/apps/scandic-web/app/api/web/destinations/[country]/route.ts index 506d86ba7..14c574d62 100644 --- a/apps/scandic-web/app/api/web/destinations/[country]/route.ts +++ b/apps/scandic-web/app/api/web/destinations/[country]/route.ts @@ -26,7 +26,7 @@ export const revalidate = 28_800 // 8 hours export async function GET( _request: Request, - { params }: { params: Promise<{ country: string }> } + { params }: RouteContext<"/api/web/destinations/[country]"> ) { try { const { country: countryParam } = await params diff --git a/apps/scandic-web/app/sitemap/[sitemapId]/route.ts b/apps/scandic-web/app/sitemap/[sitemapId]/route.ts index 91a44a702..6755f67f3 100644 --- a/apps/scandic-web/app/sitemap/[sitemapId]/route.ts +++ b/apps/scandic-web/app/sitemap/[sitemapId]/route.ts @@ -11,7 +11,7 @@ export const dynamic = "force-dynamic" const sitemapLogger = createLogger("sitemap") export async function GET( _request: NextRequest, - context: { params: Promise<{ sitemapId: string }> } + context: RouteContext<"/sitemap/[sitemapId]"> ) { const params = await context.params const sitemapId = params.sitemapId diff --git a/apps/scandic-web/package.json b/apps/scandic-web/package.json index 8cdd2d3e1..76def266b 100644 --- a/apps/scandic-web/package.json +++ b/apps/scandic-web/package.json @@ -73,7 +73,7 @@ "md5": "^2.3.0", "motion": "^12.10.0", "nanoid": "^5.1.5", - "next": "15.3.4", + "next": "^15.5.6", "next-auth": "5.0.0-beta.29", "react": "19.1.0", "react-aria-components": "^1.8.0", diff --git a/apps/scandic-web/types/params.ts b/apps/scandic-web/types/params.ts index bdeec993a..678849333 100644 --- a/apps/scandic-web/types/params.ts +++ b/apps/scandic-web/types/params.ts @@ -7,10 +7,6 @@ export type SearchParams = { searchParams: Promise } -type Params

= { - params: Promise

-} - export type LangParams = { lang: Lang } @@ -33,17 +29,6 @@ export type ContentTypeParams = { | PageContentTypeEnum.startPage } -export type ContentTypeWebviewParams = { - contentType: "loyalty-page" | "account-page" -} - export type UIDParams = { uid: string } - -export type LayoutArgs

= P extends undefined - ? unknown - : Params

- -export type PageArgs

= LayoutArgs

& - (S extends undefined ? unknown : SearchParams) diff --git a/apps/scandic-web/utils/metadata/generateMetadata.ts b/apps/scandic-web/utils/metadata/generateMetadata.ts index 1f0d8b088..d5ed71b63 100644 --- a/apps/scandic-web/utils/metadata/generateMetadata.ts +++ b/apps/scandic-web/utils/metadata/generateMetadata.ts @@ -11,19 +11,11 @@ import { getTitle } from "./title" import type { Metadata } from "next" import type { AlternateURLs } from "next/dist/lib/metadata/types/alternative-urls-types" -import type { - ContentTypeParams, - LangParams, - PageArgs, - UIDParams, -} from "@/types/params" - export async function generateMetadata({ searchParams, -}: PageArgs< - LangParams & ContentTypeParams & UIDParams, - { subpage?: string; filterFromUrl?: string } ->) { +}: { + searchParams: Promise<{ subpage?: string; filterFromUrl?: string }> +}) { const { subpage, filterFromUrl, ...otherSearchParams } = await searchParams // If there are other (real) search params, we don't want to index the page as this will // cause duplicate content issues. @@ -55,7 +47,7 @@ export async function generateMetadata({ return { ...metadata, robots: { - ...(metadata.robots ?? {}), + ...metadata.robots, index: isIndexable(metadata.robots?.index, alternates), follow: isIndexable(metadata.robots?.follow, alternates), }, diff --git a/package.json b/package.json index 32d240385..8b6fe1377 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "jiti": "^1.21.0", "lint-staged": "^15.2.2", "prettier": "^3.6.2", - "turbo": "^2.5.2" + "turbo": "^2.6.1" }, "resolutions": { "vite": "^6.3.5", diff --git a/yarn.lock b/yarn.lock index 5cfe7398b..0bd265e5f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -533,6 +533,15 @@ __metadata: languageName: node linkType: hard +"@emnapi/runtime@npm:^1.7.0": + version: 1.7.0 + resolution: "@emnapi/runtime@npm:1.7.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/b99334582effe146e9fb5cd9e7f866c6c7047a8576f642456d56984b574b40b2ba14e4aede26217fcefa1372ddd1e098a19912f17033a9ae469928b0dc65a682 + languageName: node + linkType: hard + "@esbuild/aix-ppc64@npm:0.25.0": version: 0.25.0 resolution: "@esbuild/aix-ppc64@npm:0.25.0" @@ -1031,6 +1040,13 @@ __metadata: languageName: node linkType: hard +"@img/colour@npm:^1.0.0": + version: 1.0.0 + resolution: "@img/colour@npm:1.0.0" + checksum: 10c0/02261719c1e0d7aa5a2d585981954f2ac126f0c432400aa1a01b925aa2c41417b7695da8544ee04fd29eba7ecea8eaf9b8bef06f19dc8faba78f94eeac40667d + languageName: node + linkType: hard + "@img/sharp-darwin-arm64@npm:0.34.1": version: 0.34.1 resolution: "@img/sharp-darwin-arm64@npm:0.34.1" @@ -1043,6 +1059,18 @@ __metadata: languageName: node linkType: hard +"@img/sharp-darwin-arm64@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-darwin-arm64@npm:0.34.5" + dependencies: + "@img/sharp-libvips-darwin-arm64": "npm:1.2.4" + dependenciesMeta: + "@img/sharp-libvips-darwin-arm64": + optional: true + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@img/sharp-darwin-x64@npm:0.34.1": version: 0.34.1 resolution: "@img/sharp-darwin-x64@npm:0.34.1" @@ -1055,6 +1083,18 @@ __metadata: languageName: node linkType: hard +"@img/sharp-darwin-x64@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-darwin-x64@npm:0.34.5" + dependencies: + "@img/sharp-libvips-darwin-x64": "npm:1.2.4" + dependenciesMeta: + "@img/sharp-libvips-darwin-x64": + optional: true + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@img/sharp-libvips-darwin-arm64@npm:1.1.0": version: 1.1.0 resolution: "@img/sharp-libvips-darwin-arm64@npm:1.1.0" @@ -1062,6 +1102,13 @@ __metadata: languageName: node linkType: hard +"@img/sharp-libvips-darwin-arm64@npm:1.2.4": + version: 1.2.4 + resolution: "@img/sharp-libvips-darwin-arm64@npm:1.2.4" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@img/sharp-libvips-darwin-x64@npm:1.1.0": version: 1.1.0 resolution: "@img/sharp-libvips-darwin-x64@npm:1.1.0" @@ -1069,6 +1116,13 @@ __metadata: languageName: node linkType: hard +"@img/sharp-libvips-darwin-x64@npm:1.2.4": + version: 1.2.4 + resolution: "@img/sharp-libvips-darwin-x64@npm:1.2.4" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@img/sharp-libvips-linux-arm64@npm:1.1.0": version: 1.1.0 resolution: "@img/sharp-libvips-linux-arm64@npm:1.1.0" @@ -1076,6 +1130,13 @@ __metadata: languageName: node linkType: hard +"@img/sharp-libvips-linux-arm64@npm:1.2.4": + version: 1.2.4 + resolution: "@img/sharp-libvips-linux-arm64@npm:1.2.4" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + "@img/sharp-libvips-linux-arm@npm:1.1.0": version: 1.1.0 resolution: "@img/sharp-libvips-linux-arm@npm:1.1.0" @@ -1083,6 +1144,13 @@ __metadata: languageName: node linkType: hard +"@img/sharp-libvips-linux-arm@npm:1.2.4": + version: 1.2.4 + resolution: "@img/sharp-libvips-linux-arm@npm:1.2.4" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + "@img/sharp-libvips-linux-ppc64@npm:1.1.0": version: 1.1.0 resolution: "@img/sharp-libvips-linux-ppc64@npm:1.1.0" @@ -1090,6 +1158,20 @@ __metadata: languageName: node linkType: hard +"@img/sharp-libvips-linux-ppc64@npm:1.2.4": + version: 1.2.4 + resolution: "@img/sharp-libvips-linux-ppc64@npm:1.2.4" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-libvips-linux-riscv64@npm:1.2.4": + version: 1.2.4 + resolution: "@img/sharp-libvips-linux-riscv64@npm:1.2.4" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + "@img/sharp-libvips-linux-s390x@npm:1.1.0": version: 1.1.0 resolution: "@img/sharp-libvips-linux-s390x@npm:1.1.0" @@ -1097,6 +1179,13 @@ __metadata: languageName: node linkType: hard +"@img/sharp-libvips-linux-s390x@npm:1.2.4": + version: 1.2.4 + resolution: "@img/sharp-libvips-linux-s390x@npm:1.2.4" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + "@img/sharp-libvips-linux-x64@npm:1.1.0": version: 1.1.0 resolution: "@img/sharp-libvips-linux-x64@npm:1.1.0" @@ -1104,6 +1193,13 @@ __metadata: languageName: node linkType: hard +"@img/sharp-libvips-linux-x64@npm:1.2.4": + version: 1.2.4 + resolution: "@img/sharp-libvips-linux-x64@npm:1.2.4" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + "@img/sharp-libvips-linuxmusl-arm64@npm:1.1.0": version: 1.1.0 resolution: "@img/sharp-libvips-linuxmusl-arm64@npm:1.1.0" @@ -1111,6 +1207,13 @@ __metadata: languageName: node linkType: hard +"@img/sharp-libvips-linuxmusl-arm64@npm:1.2.4": + version: 1.2.4 + resolution: "@img/sharp-libvips-linuxmusl-arm64@npm:1.2.4" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + "@img/sharp-libvips-linuxmusl-x64@npm:1.1.0": version: 1.1.0 resolution: "@img/sharp-libvips-linuxmusl-x64@npm:1.1.0" @@ -1118,6 +1221,13 @@ __metadata: languageName: node linkType: hard +"@img/sharp-libvips-linuxmusl-x64@npm:1.2.4": + version: 1.2.4 + resolution: "@img/sharp-libvips-linuxmusl-x64@npm:1.2.4" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + "@img/sharp-linux-arm64@npm:0.34.1": version: 0.34.1 resolution: "@img/sharp-linux-arm64@npm:0.34.1" @@ -1130,6 +1240,18 @@ __metadata: languageName: node linkType: hard +"@img/sharp-linux-arm64@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-linux-arm64@npm:0.34.5" + dependencies: + "@img/sharp-libvips-linux-arm64": "npm:1.2.4" + dependenciesMeta: + "@img/sharp-libvips-linux-arm64": + optional: true + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + "@img/sharp-linux-arm@npm:0.34.1": version: 0.34.1 resolution: "@img/sharp-linux-arm@npm:0.34.1" @@ -1142,6 +1264,42 @@ __metadata: languageName: node linkType: hard +"@img/sharp-linux-arm@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-linux-arm@npm:0.34.5" + dependencies: + "@img/sharp-libvips-linux-arm": "npm:1.2.4" + dependenciesMeta: + "@img/sharp-libvips-linux-arm": + optional: true + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-linux-ppc64@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-linux-ppc64@npm:0.34.5" + dependencies: + "@img/sharp-libvips-linux-ppc64": "npm:1.2.4" + dependenciesMeta: + "@img/sharp-libvips-linux-ppc64": + optional: true + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-linux-riscv64@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-linux-riscv64@npm:0.34.5" + dependencies: + "@img/sharp-libvips-linux-riscv64": "npm:1.2.4" + dependenciesMeta: + "@img/sharp-libvips-linux-riscv64": + optional: true + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + "@img/sharp-linux-s390x@npm:0.34.1": version: 0.34.1 resolution: "@img/sharp-linux-s390x@npm:0.34.1" @@ -1154,6 +1312,18 @@ __metadata: languageName: node linkType: hard +"@img/sharp-linux-s390x@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-linux-s390x@npm:0.34.5" + dependencies: + "@img/sharp-libvips-linux-s390x": "npm:1.2.4" + dependenciesMeta: + "@img/sharp-libvips-linux-s390x": + optional: true + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + "@img/sharp-linux-x64@npm:0.34.1": version: 0.34.1 resolution: "@img/sharp-linux-x64@npm:0.34.1" @@ -1166,6 +1336,18 @@ __metadata: languageName: node linkType: hard +"@img/sharp-linux-x64@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-linux-x64@npm:0.34.5" + dependencies: + "@img/sharp-libvips-linux-x64": "npm:1.2.4" + dependenciesMeta: + "@img/sharp-libvips-linux-x64": + optional: true + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + "@img/sharp-linuxmusl-arm64@npm:0.34.1": version: 0.34.1 resolution: "@img/sharp-linuxmusl-arm64@npm:0.34.1" @@ -1178,6 +1360,18 @@ __metadata: languageName: node linkType: hard +"@img/sharp-linuxmusl-arm64@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-linuxmusl-arm64@npm:0.34.5" + dependencies: + "@img/sharp-libvips-linuxmusl-arm64": "npm:1.2.4" + dependenciesMeta: + "@img/sharp-libvips-linuxmusl-arm64": + optional: true + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + "@img/sharp-linuxmusl-x64@npm:0.34.1": version: 0.34.1 resolution: "@img/sharp-linuxmusl-x64@npm:0.34.1" @@ -1190,6 +1384,18 @@ __metadata: languageName: node linkType: hard +"@img/sharp-linuxmusl-x64@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-linuxmusl-x64@npm:0.34.5" + dependencies: + "@img/sharp-libvips-linuxmusl-x64": "npm:1.2.4" + dependenciesMeta: + "@img/sharp-libvips-linuxmusl-x64": + optional: true + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + "@img/sharp-wasm32@npm:0.34.1": version: 0.34.1 resolution: "@img/sharp-wasm32@npm:0.34.1" @@ -1199,6 +1405,22 @@ __metadata: languageName: node linkType: hard +"@img/sharp-wasm32@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-wasm32@npm:0.34.5" + dependencies: + "@emnapi/runtime": "npm:^1.7.0" + conditions: cpu=wasm32 + languageName: node + linkType: hard + +"@img/sharp-win32-arm64@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-win32-arm64@npm:0.34.5" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@img/sharp-win32-ia32@npm:0.34.1": version: 0.34.1 resolution: "@img/sharp-win32-ia32@npm:0.34.1" @@ -1206,6 +1428,13 @@ __metadata: languageName: node linkType: hard +"@img/sharp-win32-ia32@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-win32-ia32@npm:0.34.5" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@img/sharp-win32-x64@npm:0.34.1": version: 0.34.1 resolution: "@img/sharp-win32-x64@npm:0.34.1" @@ -1213,6 +1442,13 @@ __metadata: languageName: node linkType: hard +"@img/sharp-win32-x64@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-win32-x64@npm:0.34.5" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@internationalized/date@npm:^3.8.0": version: 3.8.0 resolution: "@internationalized/date@npm:3.8.0" @@ -1527,6 +1763,13 @@ __metadata: languageName: node linkType: hard +"@next/env@npm:15.5.6": + version: 15.5.6 + resolution: "@next/env@npm:15.5.6" + checksum: 10c0/d75e12391c9ce4789fe458a4c08f150eb4b31cdb1e3f4b75c41f7e2cb7f0ee879a155f5ea2d677d23b486bf3b5f4545fcdee00c80dca0e080b5e3de79d053bc2 + languageName: node + linkType: hard + "@next/env@npm:^15.0.3": version: 15.4.6 resolution: "@next/env@npm:15.4.6" @@ -1550,6 +1793,13 @@ __metadata: languageName: node linkType: hard +"@next/swc-darwin-arm64@npm:15.5.6": + version: 15.5.6 + resolution: "@next/swc-darwin-arm64@npm:15.5.6" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@next/swc-darwin-x64@npm:15.3.4": version: 15.3.4 resolution: "@next/swc-darwin-x64@npm:15.3.4" @@ -1557,6 +1807,13 @@ __metadata: languageName: node linkType: hard +"@next/swc-darwin-x64@npm:15.5.6": + version: 15.5.6 + resolution: "@next/swc-darwin-x64@npm:15.5.6" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@next/swc-linux-arm64-gnu@npm:15.3.4": version: 15.3.4 resolution: "@next/swc-linux-arm64-gnu@npm:15.3.4" @@ -1564,6 +1821,13 @@ __metadata: languageName: node linkType: hard +"@next/swc-linux-arm64-gnu@npm:15.5.6": + version: 15.5.6 + resolution: "@next/swc-linux-arm64-gnu@npm:15.5.6" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + "@next/swc-linux-arm64-musl@npm:15.3.4": version: 15.3.4 resolution: "@next/swc-linux-arm64-musl@npm:15.3.4" @@ -1571,6 +1835,13 @@ __metadata: languageName: node linkType: hard +"@next/swc-linux-arm64-musl@npm:15.5.6": + version: 15.5.6 + resolution: "@next/swc-linux-arm64-musl@npm:15.5.6" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + "@next/swc-linux-x64-gnu@npm:15.3.4": version: 15.3.4 resolution: "@next/swc-linux-x64-gnu@npm:15.3.4" @@ -1578,6 +1849,13 @@ __metadata: languageName: node linkType: hard +"@next/swc-linux-x64-gnu@npm:15.5.6": + version: 15.5.6 + resolution: "@next/swc-linux-x64-gnu@npm:15.5.6" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + "@next/swc-linux-x64-musl@npm:15.3.4": version: 15.3.4 resolution: "@next/swc-linux-x64-musl@npm:15.3.4" @@ -1585,6 +1863,13 @@ __metadata: languageName: node linkType: hard +"@next/swc-linux-x64-musl@npm:15.5.6": + version: 15.5.6 + resolution: "@next/swc-linux-x64-musl@npm:15.5.6" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + "@next/swc-win32-arm64-msvc@npm:15.3.4": version: 15.3.4 resolution: "@next/swc-win32-arm64-msvc@npm:15.3.4" @@ -1592,6 +1877,13 @@ __metadata: languageName: node linkType: hard +"@next/swc-win32-arm64-msvc@npm:15.5.6": + version: 15.5.6 + resolution: "@next/swc-win32-arm64-msvc@npm:15.5.6" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@next/swc-win32-x64-msvc@npm:15.3.4": version: 15.3.4 resolution: "@next/swc-win32-x64-msvc@npm:15.3.4" @@ -1599,6 +1891,13 @@ __metadata: languageName: node linkType: hard +"@next/swc-win32-x64-msvc@npm:15.5.6": + version: 15.5.6 + resolution: "@next/swc-win32-x64-msvc@npm:15.5.6" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -4970,7 +5269,7 @@ __metadata: eslint-plugin-simple-import-sort: "npm:^12.1.1" graphql-tag: "npm:^2.12.6" iron-session: "npm:^8.0.4" - next: "npm:15.3.4" + next: "npm:^15.5.6" next-auth: "npm:5.0.0-beta.29" react: "npm:^19.0.0" react-aria-components: "npm:^1.8.0" @@ -5105,7 +5404,7 @@ __metadata: md5: "npm:^2.3.0" motion: "npm:^12.10.0" nanoid: "npm:^5.1.5" - next: "npm:15.3.4" + next: "npm:^15.5.6" next-auth: "npm:5.0.0-beta.29" react: "npm:19.1.0" react-aria-components: "npm:^1.8.0" @@ -8410,6 +8709,13 @@ __metadata: languageName: node linkType: hard +"detect-libc@npm:^2.1.2": + version: 2.1.2 + resolution: "detect-libc@npm:2.1.2" + checksum: 10c0/acc675c29a5649fa1fb6e255f993b8ee829e510b6b56b0910666949c80c364738833417d0edb5f90e4e46be17228b0f2b66a010513984e18b15deeeac49369c4 + languageName: node + linkType: hard + "detect-node-es@npm:^1.1.0": version: 1.1.0 resolution: "detect-node-es@npm:1.1.0" @@ -11966,7 +12272,7 @@ __metadata: languageName: node linkType: hard -"next@npm:*, next@npm:15.3.4": +"next@npm:*": version: 15.3.4 resolution: "next@npm:15.3.4" dependencies: @@ -12027,6 +12333,65 @@ __metadata: languageName: node linkType: hard +"next@npm:^15.5.6": + version: 15.5.6 + resolution: "next@npm:15.5.6" + dependencies: + "@next/env": "npm:15.5.6" + "@next/swc-darwin-arm64": "npm:15.5.6" + "@next/swc-darwin-x64": "npm:15.5.6" + "@next/swc-linux-arm64-gnu": "npm:15.5.6" + "@next/swc-linux-arm64-musl": "npm:15.5.6" + "@next/swc-linux-x64-gnu": "npm:15.5.6" + "@next/swc-linux-x64-musl": "npm:15.5.6" + "@next/swc-win32-arm64-msvc": "npm:15.5.6" + "@next/swc-win32-x64-msvc": "npm:15.5.6" + "@swc/helpers": "npm:0.5.15" + caniuse-lite: "npm:^1.0.30001579" + postcss: "npm:8.4.31" + sharp: "npm:^0.34.3" + styled-jsx: "npm:5.1.6" + peerDependencies: + "@opentelemetry/api": ^1.1.0 + "@playwright/test": ^1.51.1 + babel-plugin-react-compiler: "*" + react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + sass: ^1.3.0 + dependenciesMeta: + "@next/swc-darwin-arm64": + optional: true + "@next/swc-darwin-x64": + optional: true + "@next/swc-linux-arm64-gnu": + optional: true + "@next/swc-linux-arm64-musl": + optional: true + "@next/swc-linux-x64-gnu": + optional: true + "@next/swc-linux-x64-musl": + optional: true + "@next/swc-win32-arm64-msvc": + optional: true + "@next/swc-win32-x64-msvc": + optional: true + sharp: + optional: true + peerDependenciesMeta: + "@opentelemetry/api": + optional: true + "@playwright/test": + optional: true + babel-plugin-react-compiler: + optional: true + sass: + optional: true + bin: + next: dist/bin/next + checksum: 10c0/17d08dda8e0503aff9f2de27ea77bde193fd5f9f3faaaefa9dfb0f8957880c49f47cb1ebb6c3a014664890dee2aafa1da31e3093e7fd8c205caf956d25781704 + languageName: node + linkType: hard + "node-abort-controller@npm:^3.1.1": version: 3.1.1 resolution: "node-abort-controller@npm:3.1.1" @@ -13828,7 +14193,7 @@ __metadata: jiti: "npm:^1.21.0" lint-staged: "npm:^15.2.2" prettier: "npm:^3.6.2" - turbo: "npm:^2.5.2" + turbo: "npm:^2.6.1" languageName: unknown linkType: soft @@ -13871,7 +14236,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.5.3": +"semver@npm:^7.5.3, semver@npm:^7.7.3": version: 7.7.3 resolution: "semver@npm:7.7.3" bin: @@ -14045,6 +14410,90 @@ __metadata: languageName: node linkType: hard +"sharp@npm:^0.34.3": + version: 0.34.5 + resolution: "sharp@npm:0.34.5" + dependencies: + "@img/colour": "npm:^1.0.0" + "@img/sharp-darwin-arm64": "npm:0.34.5" + "@img/sharp-darwin-x64": "npm:0.34.5" + "@img/sharp-libvips-darwin-arm64": "npm:1.2.4" + "@img/sharp-libvips-darwin-x64": "npm:1.2.4" + "@img/sharp-libvips-linux-arm": "npm:1.2.4" + "@img/sharp-libvips-linux-arm64": "npm:1.2.4" + "@img/sharp-libvips-linux-ppc64": "npm:1.2.4" + "@img/sharp-libvips-linux-riscv64": "npm:1.2.4" + "@img/sharp-libvips-linux-s390x": "npm:1.2.4" + "@img/sharp-libvips-linux-x64": "npm:1.2.4" + "@img/sharp-libvips-linuxmusl-arm64": "npm:1.2.4" + "@img/sharp-libvips-linuxmusl-x64": "npm:1.2.4" + "@img/sharp-linux-arm": "npm:0.34.5" + "@img/sharp-linux-arm64": "npm:0.34.5" + "@img/sharp-linux-ppc64": "npm:0.34.5" + "@img/sharp-linux-riscv64": "npm:0.34.5" + "@img/sharp-linux-s390x": "npm:0.34.5" + "@img/sharp-linux-x64": "npm:0.34.5" + "@img/sharp-linuxmusl-arm64": "npm:0.34.5" + "@img/sharp-linuxmusl-x64": "npm:0.34.5" + "@img/sharp-wasm32": "npm:0.34.5" + "@img/sharp-win32-arm64": "npm:0.34.5" + "@img/sharp-win32-ia32": "npm:0.34.5" + "@img/sharp-win32-x64": "npm:0.34.5" + detect-libc: "npm:^2.1.2" + semver: "npm:^7.7.3" + dependenciesMeta: + "@img/sharp-darwin-arm64": + optional: true + "@img/sharp-darwin-x64": + optional: true + "@img/sharp-libvips-darwin-arm64": + optional: true + "@img/sharp-libvips-darwin-x64": + optional: true + "@img/sharp-libvips-linux-arm": + optional: true + "@img/sharp-libvips-linux-arm64": + optional: true + "@img/sharp-libvips-linux-ppc64": + optional: true + "@img/sharp-libvips-linux-riscv64": + optional: true + "@img/sharp-libvips-linux-s390x": + optional: true + "@img/sharp-libvips-linux-x64": + optional: true + "@img/sharp-libvips-linuxmusl-arm64": + optional: true + "@img/sharp-libvips-linuxmusl-x64": + optional: true + "@img/sharp-linux-arm": + optional: true + "@img/sharp-linux-arm64": + optional: true + "@img/sharp-linux-ppc64": + optional: true + "@img/sharp-linux-riscv64": + optional: true + "@img/sharp-linux-s390x": + optional: true + "@img/sharp-linux-x64": + optional: true + "@img/sharp-linuxmusl-arm64": + optional: true + "@img/sharp-linuxmusl-x64": + optional: true + "@img/sharp-wasm32": + optional: true + "@img/sharp-win32-arm64": + optional: true + "@img/sharp-win32-ia32": + optional: true + "@img/sharp-win32-x64": + optional: true + checksum: 10c0/fd79e29df0597a7d5704b8461c51f944ead91a5243691697be6e8243b966402beda53ddc6f0a53b96ea3cb8221f0b244aa588114d3ebf8734fb4aefd41ab802f + languageName: node + linkType: hard + "shebang-command@npm:^2.0.0": version: 2.0.0 resolution: "shebang-command@npm:2.0.0" @@ -14887,58 +15336,58 @@ __metadata: languageName: node linkType: hard -"turbo-darwin-64@npm:2.5.2": - version: 2.5.2 - resolution: "turbo-darwin-64@npm:2.5.2" +"turbo-darwin-64@npm:2.6.1": + version: 2.6.1 + resolution: "turbo-darwin-64@npm:2.6.1" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"turbo-darwin-arm64@npm:2.5.2": - version: 2.5.2 - resolution: "turbo-darwin-arm64@npm:2.5.2" +"turbo-darwin-arm64@npm:2.6.1": + version: 2.6.1 + resolution: "turbo-darwin-arm64@npm:2.6.1" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"turbo-linux-64@npm:2.5.2": - version: 2.5.2 - resolution: "turbo-linux-64@npm:2.5.2" +"turbo-linux-64@npm:2.6.1": + version: 2.6.1 + resolution: "turbo-linux-64@npm:2.6.1" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"turbo-linux-arm64@npm:2.5.2": - version: 2.5.2 - resolution: "turbo-linux-arm64@npm:2.5.2" +"turbo-linux-arm64@npm:2.6.1": + version: 2.6.1 + resolution: "turbo-linux-arm64@npm:2.6.1" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"turbo-windows-64@npm:2.5.2": - version: 2.5.2 - resolution: "turbo-windows-64@npm:2.5.2" +"turbo-windows-64@npm:2.6.1": + version: 2.6.1 + resolution: "turbo-windows-64@npm:2.6.1" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"turbo-windows-arm64@npm:2.5.2": - version: 2.5.2 - resolution: "turbo-windows-arm64@npm:2.5.2" +"turbo-windows-arm64@npm:2.6.1": + version: 2.6.1 + resolution: "turbo-windows-arm64@npm:2.6.1" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"turbo@npm:^2.5.2": - version: 2.5.2 - resolution: "turbo@npm:2.5.2" +"turbo@npm:^2.6.1": + version: 2.6.1 + resolution: "turbo@npm:2.6.1" dependencies: - turbo-darwin-64: "npm:2.5.2" - turbo-darwin-arm64: "npm:2.5.2" - turbo-linux-64: "npm:2.5.2" - turbo-linux-arm64: "npm:2.5.2" - turbo-windows-64: "npm:2.5.2" - turbo-windows-arm64: "npm:2.5.2" + turbo-darwin-64: "npm:2.6.1" + turbo-darwin-arm64: "npm:2.6.1" + turbo-linux-64: "npm:2.6.1" + turbo-linux-arm64: "npm:2.6.1" + turbo-windows-64: "npm:2.6.1" + turbo-windows-arm64: "npm:2.6.1" dependenciesMeta: turbo-darwin-64: optional: true @@ -14954,7 +15403,7 @@ __metadata: optional: true bin: turbo: bin/turbo - checksum: 10c0/3eed6eba8bace18ed767785c83cd572985214e79d267f3eb631b2c147e941203746b241869fe629776704d3e69c37da90c5356c3b9506e08c468c9cab52f120c + checksum: 10c0/9875f8d85c5e1b26fbf95dec77b91a1f05ee4545b754469c6ddabe55759289bef02a08693380439d4443db72003e576df30b5852cbfa0da703c08b6e84c557a5 languageName: node linkType: hard