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
This commit is contained in:
@@ -12,10 +12,11 @@ import type { Lang } from "@scandic-hotels/common/constants/language"
|
|||||||
|
|
||||||
export async function GET(
|
export async function GET(
|
||||||
request: NextRequest,
|
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 publicURL = getPublicURL(request)
|
||||||
|
const lang = params.lang as Lang
|
||||||
|
|
||||||
let redirectHeaders: Headers | undefined = undefined
|
let redirectHeaders: Headers | undefined = undefined
|
||||||
let redirectTo: string
|
let redirectTo: string
|
||||||
@@ -61,7 +62,7 @@ export async function GET(
|
|||||||
|
|
||||||
/** Record<string, any> is next-auth typings */
|
/** Record<string, any> is next-auth typings */
|
||||||
const params = {
|
const params = {
|
||||||
ui_locales: SAS_LANGUAGE_MAP[contextParams.lang],
|
ui_locales: SAS_LANGUAGE_MAP[lang],
|
||||||
scope: ["openid", "profile", "email", "offline_access"].join(" "),
|
scope: ["openid", "profile", "email", "offline_access"].join(" "),
|
||||||
} satisfies Record<string, string>
|
} satisfies Record<string, string>
|
||||||
|
|
||||||
|
|||||||
@@ -5,12 +5,7 @@ import { getPublicURL } from "@/server/utils"
|
|||||||
import { signOut } from "@/auth"
|
import { signOut } from "@/auth"
|
||||||
import { destroySocialSession } from "@/auth/scandic/session"
|
import { destroySocialSession } from "@/auth/scandic/session"
|
||||||
|
|
||||||
import type { Lang } from "@scandic-hotels/common/constants/language"
|
export async function GET(request: NextRequest) {
|
||||||
|
|
||||||
export async function GET(
|
|
||||||
request: NextRequest,
|
|
||||||
_context: { params: Promise<{ lang: Lang }> }
|
|
||||||
) {
|
|
||||||
const publicURL = getPublicURL(request)
|
const publicURL = getPublicURL(request)
|
||||||
|
|
||||||
const redirectTo: string = publicURL
|
const redirectTo: string = publicURL
|
||||||
|
|||||||
@@ -29,19 +29,9 @@ import { Footer } from "../../components/Footer/Footer"
|
|||||||
import { Header } from "../../components/Header/Header"
|
import { Header } from "../../components/Header/Header"
|
||||||
import { SocialLoginProvider } from "./(auth)/SocialLogin"
|
import { SocialLoginProvider } from "./(auth)/SocialLogin"
|
||||||
|
|
||||||
type LangParams = {
|
export default async function RootLayout(props: LayoutProps<"/[lang]">) {
|
||||||
lang: Lang
|
|
||||||
}
|
|
||||||
|
|
||||||
type RootLayoutProps = {
|
|
||||||
children: React.ReactNode
|
|
||||||
params: Promise<LangParams>
|
|
||||||
bookingwidget: React.ReactNode
|
|
||||||
}
|
|
||||||
|
|
||||||
export default async function RootLayout(props: RootLayoutProps) {
|
|
||||||
const params = await props.params
|
const params = await props.params
|
||||||
const lang = params.lang
|
const lang = params.lang as Lang
|
||||||
|
|
||||||
const { children } = props
|
const { children } = props
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
import styles from "./page.module.css"
|
import styles from "./page.module.css"
|
||||||
|
|
||||||
import type { Lang } from "@scandic-hotels/common/constants/language"
|
export default async function MiddlewareError(
|
||||||
|
props: PageProps<"/[lang]/middleware-error/[status]">
|
||||||
export default async function MiddlewareError(props: {
|
) {
|
||||||
params: Promise<{ lang: Lang; status: string }>
|
|
||||||
}) {
|
|
||||||
const params = await props.params
|
const params = await props.params
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
"@tanstack/react-query": "^5.75.5",
|
"@tanstack/react-query": "^5.75.5",
|
||||||
"@tanstack/react-query-devtools": "^5.75.5",
|
"@tanstack/react-query-devtools": "^5.75.5",
|
||||||
"iron-session": "^8.0.4",
|
"iron-session": "^8.0.4",
|
||||||
"next": "15.3.4",
|
"next": "^15.5.6",
|
||||||
"next-auth": "5.0.0-beta.29",
|
"next-auth": "5.0.0-beta.29",
|
||||||
"react": "^19.0.0",
|
"react": "^19.0.0",
|
||||||
"react-aria-components": "^1.8.0",
|
"react-aria-components": "^1.8.0",
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import { signOut } from "@/auth"
|
|||||||
|
|
||||||
export async function GET(
|
export async function GET(
|
||||||
request: NextRequest,
|
request: NextRequest,
|
||||||
context: { params: Promise<{ lang: Lang }> }
|
context: RouteContext<"/[lang]/logout">
|
||||||
) {
|
) {
|
||||||
const publicURL = getPublicURL(request)
|
const publicURL = getPublicURL(request)
|
||||||
|
|
||||||
@@ -71,6 +71,8 @@ export async function GET(
|
|||||||
case Lang.sv:
|
case Lang.sv:
|
||||||
redirectUrlValue = env.SEAMLESS_LOGOUT_SV
|
redirectUrlValue = env.SEAMLESS_LOGOUT_SV
|
||||||
break
|
break
|
||||||
|
default:
|
||||||
|
throw new Error(`Unsupported language for logout: ${params.lang}`)
|
||||||
}
|
}
|
||||||
const redirectUrl = new URL(redirectUrlValue)
|
const redirectUrl = new URL(redirectUrlValue)
|
||||||
logger.debug(
|
logger.debug(
|
||||||
|
|||||||
@@ -3,9 +3,7 @@ import { Suspense } from "react"
|
|||||||
import Breadcrumbs from "@/components/Breadcrumbs"
|
import Breadcrumbs from "@/components/Breadcrumbs"
|
||||||
import BreadcrumbsSkeleton from "@/components/TempDesignSystem/Breadcrumbs/BreadcrumbsSkeleton"
|
import BreadcrumbsSkeleton from "@/components/TempDesignSystem/Breadcrumbs/BreadcrumbsSkeleton"
|
||||||
|
|
||||||
import type { LangParams, PageArgs } from "@/types/params"
|
export default function AllBreadcrumbs() {
|
||||||
|
|
||||||
export default function AllBreadcrumbs({}: PageArgs<LangParams>) {
|
|
||||||
return (
|
return (
|
||||||
<Suspense fallback={<BreadcrumbsSkeleton />}>
|
<Suspense fallback={<BreadcrumbsSkeleton />}>
|
||||||
<Breadcrumbs size="contentWidth" />
|
<Breadcrumbs size="contentWidth" />
|
||||||
|
|||||||
@@ -10,13 +10,9 @@ import { getIntl } from "@/i18n"
|
|||||||
|
|
||||||
import styles from "./page.module.css"
|
import styles from "./page.module.css"
|
||||||
|
|
||||||
import type { LangParams, PageArgs } from "@/types/params"
|
|
||||||
|
|
||||||
export { generateMetadata } from "@/utils/metadata/generateMetadata"
|
export { generateMetadata } from "@/utils/metadata/generateMetadata"
|
||||||
|
|
||||||
export default async function MyPages({}: PageArgs<
|
export default async function MyPages() {
|
||||||
LangParams & { path: string[] }
|
|
||||||
>) {
|
|
||||||
const caller = await serverClient()
|
const caller = await serverClient()
|
||||||
const accountPageRes = await caller.contentstack.accountPage.get()
|
const accountPageRes = await caller.contentstack.accountPage.get()
|
||||||
const intl = await getIntl()
|
const intl = await getIntl()
|
||||||
|
|||||||
@@ -4,11 +4,9 @@ import { serverClient } from "@/lib/trpc/server"
|
|||||||
|
|
||||||
import Profile from "@/components/MyPages/Profile"
|
import Profile from "@/components/MyPages/Profile"
|
||||||
|
|
||||||
import type { LangParams, PageArgs } from "@/types/params"
|
|
||||||
|
|
||||||
export { generateMetadata } from "@/utils/metadata/generateMetadata"
|
export { generateMetadata } from "@/utils/metadata/generateMetadata"
|
||||||
|
|
||||||
export default async function ProfilePage({}: PageArgs<LangParams>) {
|
export default async function ProfilePage() {
|
||||||
const caller = await serverClient()
|
const caller = await serverClient()
|
||||||
const accountPage = await caller.contentstack.accountPage.get()
|
const accountPage = await caller.contentstack.accountPage.get()
|
||||||
|
|
||||||
|
|||||||
@@ -2,20 +2,19 @@ import { setPreviewData } from "@scandic-hotels/trpc/previewContext"
|
|||||||
|
|
||||||
import InitLivePreview from "@/components/LivePreview"
|
import InitLivePreview from "@/components/LivePreview"
|
||||||
|
|
||||||
import type { PageArgs } from "@/types/params"
|
export default async function PreviewPage(props: PageProps<"/[lang]">) {
|
||||||
|
|
||||||
export default async function PreviewPage(
|
|
||||||
props: PageArgs<
|
|
||||||
object,
|
|
||||||
{ live_preview?: string; entry_uid?: string; isPreview?: string }
|
|
||||||
>
|
|
||||||
) {
|
|
||||||
const searchParams = await props.searchParams
|
const searchParams = await props.searchParams
|
||||||
const hash = searchParams.live_preview
|
const hash = searchParams.live_preview
|
||||||
const uid = searchParams.entry_uid
|
const uid = searchParams.entry_uid
|
||||||
const shouldInitializePreview = searchParams.isPreview === "true"
|
const shouldInitializePreview = searchParams.isPreview === "true"
|
||||||
|
|
||||||
if (shouldInitializePreview && hash && uid) {
|
if (
|
||||||
|
shouldInitializePreview &&
|
||||||
|
typeof hash === "string" &&
|
||||||
|
hash &&
|
||||||
|
typeof uid === "string" &&
|
||||||
|
uid
|
||||||
|
) {
|
||||||
setPreviewData({ hash, uid })
|
setPreviewData({ hash, uid })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,20 +5,23 @@ import DestinationCityPageSkeleton from "@/components/ContentType/DestinationPag
|
|||||||
|
|
||||||
import styles from "./page.module.css"
|
import styles from "./page.module.css"
|
||||||
|
|
||||||
import type { PageArgs } from "@/types/params"
|
|
||||||
|
|
||||||
export { generateMetadata } from "@/utils/metadata/generateMetadata"
|
export { generateMetadata } from "@/utils/metadata/generateMetadata"
|
||||||
|
|
||||||
export default async function DestinationCityPagePage(
|
export default async function DestinationCityPagePage(
|
||||||
props: PageArgs<object, { view?: "map"; filterFromUrl?: string }>
|
props: PageProps<"/[lang]/destination_city_page/[uid]">
|
||||||
) {
|
) {
|
||||||
const searchParams = await props.searchParams
|
const searchParams = await props.searchParams
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.page}>
|
<div className={styles.page}>
|
||||||
<Suspense fallback={<DestinationCityPageSkeleton />}>
|
<Suspense fallback={<DestinationCityPageSkeleton />}>
|
||||||
<DestinationCityPage
|
<DestinationCityPage
|
||||||
isMapView={searchParams.view === "map"}
|
isMapView={searchParams.view === "map"}
|
||||||
filterFromUrl={searchParams.filterFromUrl}
|
filterFromUrl={
|
||||||
|
typeof searchParams.filterFromUrl === "string"
|
||||||
|
? searchParams.filterFromUrl
|
||||||
|
: undefined
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
</Suspense>
|
</Suspense>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -5,20 +5,22 @@ import DestinationCountryPageSkeleton from "@/components/ContentType/Destination
|
|||||||
|
|
||||||
import styles from "./page.module.css"
|
import styles from "./page.module.css"
|
||||||
|
|
||||||
import type { PageArgs } from "@/types/params"
|
|
||||||
|
|
||||||
export { generateMetadata } from "@/utils/metadata/generateMetadata"
|
export { generateMetadata } from "@/utils/metadata/generateMetadata"
|
||||||
|
|
||||||
export default async function DestinationCountryPagePage(
|
export default async function DestinationCountryPagePage(
|
||||||
props: PageArgs<object, { view?: "map"; filterFromUrl?: string }>
|
props: PageProps<"/[lang]/destination_country_page/[uid]">
|
||||||
) {
|
) {
|
||||||
const searchParams = await props.searchParams
|
const searchParams = await props.searchParams
|
||||||
return (
|
return (
|
||||||
<div className={styles.page}>
|
<div className={styles.page}>
|
||||||
<Suspense fallback={<DestinationCountryPageSkeleton />}>
|
<Suspense fallback={<DestinationCountryPageSkeleton />}>
|
||||||
<DestinationCountryPage
|
<DestinationCountryPage
|
||||||
filterFromUrl={searchParams.filterFromUrl}
|
|
||||||
isMapView={searchParams.view === "map"}
|
isMapView={searchParams.view === "map"}
|
||||||
|
filterFromUrl={
|
||||||
|
typeof searchParams.filterFromUrl === "string"
|
||||||
|
? searchParams.filterFromUrl
|
||||||
|
: undefined
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
</Suspense>
|
</Suspense>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -17,17 +17,21 @@ import HotelSubpage from "@/components/ContentType/HotelSubpage"
|
|||||||
|
|
||||||
import styles from "./page.module.css"
|
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 { generateMetadata } from "@/utils/metadata/generateMetadata"
|
||||||
|
|
||||||
export default async function HotelPagePage(
|
export default async function HotelPagePage(
|
||||||
props: PageArgs<LangParams, { subpage?: string; view?: "map" }>
|
props: PageProps<"/[lang]/hotel_page/[uid]">
|
||||||
) {
|
) {
|
||||||
const searchParams = await props.searchParams
|
const searchParams = await props.searchParams
|
||||||
const params = await props.params
|
const params = await props.params
|
||||||
const hotelPageData = await getHotelPage()
|
const hotelPageData = await getHotelPage()
|
||||||
|
|
||||||
|
const subpage =
|
||||||
|
typeof searchParams.subpage === "string" ? searchParams.subpage : null
|
||||||
|
const lang = params.lang as Lang
|
||||||
|
|
||||||
if (!hotelPageData) {
|
if (!hotelPageData) {
|
||||||
return notFound()
|
return notFound()
|
||||||
}
|
}
|
||||||
@@ -35,7 +39,7 @@ export default async function HotelPagePage(
|
|||||||
const hotelData = await getHotel({
|
const hotelData = await getHotel({
|
||||||
hotelId: hotelPageData.hotel_page_id,
|
hotelId: hotelPageData.hotel_page_id,
|
||||||
isCardOnlyPayment: false,
|
isCardOnlyPayment: false,
|
||||||
language: params.lang,
|
language: lang,
|
||||||
})
|
})
|
||||||
|
|
||||||
if (!hotelData) {
|
if (!hotelData) {
|
||||||
@@ -48,10 +52,10 @@ export default async function HotelPagePage(
|
|||||||
|
|
||||||
setTheme(hotelTheme)
|
setTheme(hotelTheme)
|
||||||
|
|
||||||
if (searchParams.subpage) {
|
if (subpage) {
|
||||||
return (
|
return (
|
||||||
<HotelPageWrapper hotelTheme={hotelTheme}>
|
<HotelPageWrapper hotelTheme={hotelTheme}>
|
||||||
<HotelSubpage hotelData={hotelData} subpage={searchParams.subpage} />
|
<HotelSubpage hotelData={hotelData} subpage={subpage} />
|
||||||
</HotelPageWrapper>
|
</HotelPageWrapper>
|
||||||
)
|
)
|
||||||
} else if (searchParams.view === "map") {
|
} else if (searchParams.view === "map") {
|
||||||
|
|||||||
@@ -1,22 +1,13 @@
|
|||||||
import styles from "./layout.module.css"
|
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({
|
export default function ContentTypeLayout(props: LayoutProps) {
|
||||||
breadcrumbs,
|
|
||||||
preview,
|
|
||||||
children,
|
|
||||||
}: React.PropsWithChildren<
|
|
||||||
LayoutArgs<LangParams> & {
|
|
||||||
breadcrumbs: React.ReactNode
|
|
||||||
preview: React.ReactNode
|
|
||||||
}
|
|
||||||
>) {
|
|
||||||
return (
|
return (
|
||||||
<section className={styles.layout}>
|
<section className={styles.layout}>
|
||||||
{preview}
|
{props.preview}
|
||||||
{breadcrumbs}
|
{props.breadcrumbs}
|
||||||
{children}
|
{props.children}
|
||||||
</section>
|
</section>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,12 +4,10 @@ import StartPage from "@/components/ContentType/StartPage"
|
|||||||
|
|
||||||
import styles from "./page.module.css"
|
import styles from "./page.module.css"
|
||||||
|
|
||||||
import type { NextSearchParams, PageArgs } from "@/types/params"
|
|
||||||
|
|
||||||
export { generateMetadata } from "@/utils/metadata/generateMetadata"
|
export { generateMetadata } from "@/utils/metadata/generateMetadata"
|
||||||
|
|
||||||
export default async function StartPagePage(
|
export default async function StartPagePage(
|
||||||
props: PageArgs<object, NextSearchParams>
|
props: PageProps<"/[lang]/start_page/[uid]">
|
||||||
) {
|
) {
|
||||||
const searchParams = await props.searchParams
|
const searchParams = await props.searchParams
|
||||||
const booking = parseBookingWidgetSearchParams(searchParams)
|
const booking = parseBookingWidgetSearchParams(searchParams)
|
||||||
|
|||||||
@@ -5,10 +5,8 @@ import { bookingFlowConfig } from "@/constants/bookingFlowConfig"
|
|||||||
import { getIntl } from "@/i18n"
|
import { getIntl } from "@/i18n"
|
||||||
import { getLang } from "@/i18n/serverContext"
|
import { getLang } from "@/i18n/serverContext"
|
||||||
|
|
||||||
import type { LangParams, PageArgs } from "@/types/params"
|
|
||||||
|
|
||||||
export default async function BookingConfirmationPage(
|
export default async function BookingConfirmationPage(
|
||||||
props: PageArgs<LangParams, { RefId?: string }>
|
props: PageProps<"/[lang]/hotelreservation/booking-confirmation">
|
||||||
) {
|
) {
|
||||||
const searchParams = await props.searchParams
|
const searchParams = await props.searchParams
|
||||||
const lang = await getLang()
|
const lang = await getLang()
|
||||||
|
|||||||
@@ -5,28 +5,25 @@ import { logger } from "@scandic-hotels/common/logger"
|
|||||||
|
|
||||||
import GuaranteeCallbackPage from "@/components/GuaranteeCallback"
|
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 { PaymentCallbackStatusEnum } from "@scandic-hotels/common/constants/paymentCallbackStatusEnum"
|
||||||
|
|
||||||
import type { LangParams, PageArgs } from "@/types/params"
|
|
||||||
|
|
||||||
export default async function GuaranteePaymentCallbackPage(
|
export default async function GuaranteePaymentCallbackPage(
|
||||||
props: PageArgs<
|
props: PageProps<"/[lang]/hotelreservation/gla-payment-callback">
|
||||||
LangParams,
|
|
||||||
{
|
|
||||||
status?: PaymentCallbackStatusEnum
|
|
||||||
RefId?: string
|
|
||||||
confirmationNumber?: string
|
|
||||||
ancillary?: string
|
|
||||||
}
|
|
||||||
>
|
|
||||||
) {
|
) {
|
||||||
const searchParams = await props.searchParams
|
const searchParams = await props.searchParams
|
||||||
const params = await props.params
|
const params = await props.params
|
||||||
logger.debug(`[gla-payment-callback] callback started`)
|
logger.debug(`[gla-payment-callback] callback started`)
|
||||||
const lang = params.lang
|
const lang = params.lang as Lang
|
||||||
const status = searchParams.status
|
const status = searchParams.status as PaymentCallbackStatusEnum
|
||||||
const confirmationNumber = searchParams.confirmationNumber
|
const confirmationNumber =
|
||||||
const refId = searchParams.RefId
|
typeof searchParams.confirmationNumber === "string"
|
||||||
|
? searchParams.confirmationNumber
|
||||||
|
: null
|
||||||
|
|
||||||
|
const refId =
|
||||||
|
typeof searchParams.RefId === "string" ? searchParams.RefId : null
|
||||||
|
|
||||||
if (!status || !confirmationNumber || !refId) {
|
if (!status || !confirmationNumber || !refId) {
|
||||||
notFound()
|
notFound()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
import styles from "./layout.module.css"
|
import styles from "./layout.module.css"
|
||||||
|
|
||||||
import type { LangParams, LayoutArgs } from "@/types/params"
|
|
||||||
|
|
||||||
export default function PaymentCallbackLayout({
|
export default function PaymentCallbackLayout({
|
||||||
children,
|
children,
|
||||||
}: React.PropsWithChildren<LayoutArgs<LangParams>>) {
|
}: LayoutProps<"/[lang]/hotelreservation/payment-callback">) {
|
||||||
return <div className={styles.layout}>{children}</div>
|
return <div className={styles.layout}>{children}</div>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,23 +6,16 @@ import { bookingFlowConfig } from "@/constants/bookingFlowConfig"
|
|||||||
|
|
||||||
import { auth } from "@/auth"
|
import { auth } from "@/auth"
|
||||||
|
|
||||||
|
import type { Lang } from "@scandic-hotels/common/constants/language"
|
||||||
import type { PaymentCallbackStatusEnum } from "@scandic-hotels/common/constants/paymentCallbackStatusEnum"
|
import type { PaymentCallbackStatusEnum } from "@scandic-hotels/common/constants/paymentCallbackStatusEnum"
|
||||||
|
|
||||||
import type { LangParams, PageArgs } from "@/types/params"
|
|
||||||
|
|
||||||
export default async function PaymentCallbackPage(
|
export default async function PaymentCallbackPage(
|
||||||
props: PageArgs<
|
props: PageProps<"/[lang]/hotelreservation/payment-callback">
|
||||||
LangParams,
|
|
||||||
{
|
|
||||||
status?: PaymentCallbackStatusEnum
|
|
||||||
confirmationNumber?: string
|
|
||||||
}
|
|
||||||
>
|
|
||||||
) {
|
) {
|
||||||
const searchParams = await props.searchParams
|
const searchParams = await props.searchParams
|
||||||
const params = await props.params
|
const params = await props.params
|
||||||
logger.debug(`[payment-callback] callback started`)
|
logger.debug(`[payment-callback] callback started`)
|
||||||
const lang = params.lang
|
const lang = params.lang as Lang
|
||||||
|
|
||||||
let userAccessToken = null
|
let userAccessToken = null
|
||||||
const session = await auth()
|
const session = await auth()
|
||||||
|
|||||||
@@ -4,22 +4,20 @@ import { bookingFlowConfig } from "@/constants/bookingFlowConfig"
|
|||||||
import { getHotel } from "@/lib/trpc/memoizedRequests"
|
import { getHotel } from "@/lib/trpc/memoizedRequests"
|
||||||
|
|
||||||
import { getIntl } from "@/i18n"
|
import { getIntl } from "@/i18n"
|
||||||
import { getLang } from "@/i18n/serverContext"
|
|
||||||
|
|
||||||
import styles from "./page.module.css"
|
import styles from "./page.module.css"
|
||||||
|
|
||||||
|
import type { Lang } from "@scandic-hotels/common/constants/language"
|
||||||
import type { Metadata } from "next"
|
import type { Metadata } from "next"
|
||||||
|
|
||||||
import type { LangParams, NextSearchParams, PageArgs } from "@/types/params"
|
|
||||||
|
|
||||||
export async function generateMetadata({
|
export async function generateMetadata({
|
||||||
searchParams,
|
searchParams,
|
||||||
params,
|
params,
|
||||||
}: PageArgs<LangParams, { hotel: string }>): Promise<Metadata> {
|
}: PageProps<"/[lang]/hotelreservation/alternative-hotels/map">): Promise<Metadata> {
|
||||||
const intl = await getIntl()
|
const intl = await getIntl()
|
||||||
|
|
||||||
const { hotel } = await searchParams
|
const { hotel } = await searchParams
|
||||||
const { lang } = await params
|
const lang = (await params).lang as Lang
|
||||||
|
|
||||||
if (!hotel || Array.isArray(hotel)) {
|
if (!hotel || Array.isArray(hotel)) {
|
||||||
return {}
|
return {}
|
||||||
@@ -50,10 +48,11 @@ export async function generateMetadata({
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default async function AlternativeHotelsMapPage(
|
export default async function AlternativeHotelsMapPage(
|
||||||
props: PageArgs<LangParams, NextSearchParams>
|
props: PageProps<"/[lang]/hotelreservation/alternative-hotels/map">
|
||||||
) {
|
) {
|
||||||
const searchParams = await props.searchParams
|
const searchParams = await props.searchParams
|
||||||
const lang = await getLang()
|
const params = await props.params
|
||||||
|
const lang = params.lang as Lang
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.main}>
|
<div className={styles.main}>
|
||||||
|
|||||||
@@ -4,24 +4,19 @@ import { bookingFlowConfig } from "@/constants/bookingFlowConfig"
|
|||||||
import { getHotel } from "@/lib/trpc/memoizedRequests"
|
import { getHotel } from "@/lib/trpc/memoizedRequests"
|
||||||
|
|
||||||
import { getIntl } from "@/i18n"
|
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 { Metadata } from "next"
|
||||||
|
|
||||||
import {
|
export async function generateMetadata(
|
||||||
type LangParams,
|
props: PageProps<"/[lang]/hotelreservation/alternative-hotels">
|
||||||
type NextSearchParams,
|
): Promise<Metadata> {
|
||||||
type PageArgs,
|
|
||||||
} from "@/types/params"
|
|
||||||
|
|
||||||
export async function generateMetadata({
|
|
||||||
searchParams,
|
|
||||||
params,
|
|
||||||
}: PageArgs<LangParams, { hotel: string }>): Promise<Metadata> {
|
|
||||||
const intl = await getIntl()
|
const intl = await getIntl()
|
||||||
|
|
||||||
|
const searchParams = await props.searchParams
|
||||||
|
const params = await props.params
|
||||||
|
|
||||||
const { hotel } = await searchParams
|
const { hotel } = await searchParams
|
||||||
const { lang } = await params
|
|
||||||
|
|
||||||
if (!hotel || Array.isArray(hotel)) {
|
if (!hotel || Array.isArray(hotel)) {
|
||||||
return {}
|
return {}
|
||||||
@@ -29,7 +24,7 @@ export async function generateMetadata({
|
|||||||
|
|
||||||
const hotelData = await getHotel({
|
const hotelData = await getHotel({
|
||||||
hotelId: hotel,
|
hotelId: hotel,
|
||||||
language: lang,
|
language: params.lang as Lang,
|
||||||
isCardOnlyPayment: false,
|
isCardOnlyPayment: false,
|
||||||
})
|
})
|
||||||
const hotelName = hotelData?.additionalData?.name
|
const hotelName = hotelData?.additionalData?.name
|
||||||
@@ -52,10 +47,11 @@ export async function generateMetadata({
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default async function AlternativeHotelsPage(
|
export default async function AlternativeHotelsPage(
|
||||||
props: PageArgs<LangParams, NextSearchParams>
|
props: PageProps<"/[lang]/hotelreservation/alternative-hotels">
|
||||||
) {
|
) {
|
||||||
const searchParams = await props.searchParams
|
const searchParams = await props.searchParams
|
||||||
const lang = await getLang()
|
const lang = (await props.params).lang as Lang
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<AlternativeHotelsPagePrimitive
|
<AlternativeHotelsPagePrimitive
|
||||||
lang={lang}
|
lang={lang}
|
||||||
|
|||||||
@@ -2,17 +2,17 @@ import { EnterDetailsPage as EnterDetailsPagePrimitive } from "@scandic-hotels/b
|
|||||||
|
|
||||||
import { bookingFlowConfig } from "@/constants/bookingFlowConfig"
|
import { bookingFlowConfig } from "@/constants/bookingFlowConfig"
|
||||||
|
|
||||||
import type { LangParams, NextSearchParams, PageArgs } from "@/types/params"
|
import type { Lang } from "@scandic-hotels/common/constants/language"
|
||||||
|
|
||||||
export default async function DetailsPage(
|
export default async function DetailsPage(
|
||||||
props: PageArgs<LangParams, NextSearchParams>
|
props: PageProps<"/[lang]/hotelreservation/details">
|
||||||
) {
|
) {
|
||||||
const { lang } = await props.params
|
const params = await props.params
|
||||||
const searchParams = await props.searchParams
|
const searchParams = await props.searchParams
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<EnterDetailsPagePrimitive
|
<EnterDetailsPagePrimitive
|
||||||
lang={lang}
|
lang={params.lang as Lang}
|
||||||
searchParams={searchParams}
|
searchParams={searchParams}
|
||||||
config={bookingFlowConfig}
|
config={bookingFlowConfig}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
import styles from "./layout.module.css"
|
import styles from "./layout.module.css"
|
||||||
|
|
||||||
import type { LangParams, LayoutArgs } from "@/types/params"
|
|
||||||
|
|
||||||
export default function StandardHotelReservationLayout({
|
export default function StandardHotelReservationLayout({
|
||||||
children,
|
children,
|
||||||
}: React.PropsWithChildren<LayoutArgs<LangParams>>) {
|
}: LayoutProps<"/[lang]/hotelreservation">) {
|
||||||
return <div className={styles.layout}>{children}</div>
|
return <div className={styles.layout}>{children}</div>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,16 +6,16 @@ import {
|
|||||||
|
|
||||||
import styles from "./page.module.css"
|
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(
|
export default async function HotelReservationPage(
|
||||||
props: PageArgs<LangParams>
|
props: PageProps<"/[lang]/hotelreservation">
|
||||||
) {
|
) {
|
||||||
const params = await props.params
|
const params = await props.params
|
||||||
|
|
||||||
const pageTrackingData: TrackingSDKPageData = {
|
const pageTrackingData: TrackingSDKPageData = {
|
||||||
pageId: "hotelreservation",
|
pageId: "hotelreservation",
|
||||||
domainLanguage: params.lang,
|
domainLanguage: params.lang as Lang,
|
||||||
channel: TrackingChannelEnum["hotelreservation"],
|
channel: TrackingChannelEnum["hotelreservation"],
|
||||||
pageName: "hotelreservation",
|
pageName: "hotelreservation",
|
||||||
siteSections: "hotelreservation",
|
siteSections: "hotelreservation",
|
||||||
|
|||||||
@@ -3,34 +3,31 @@ import { toCapitalCase } from "@scandic-hotels/common/utils/toCapitalCase"
|
|||||||
|
|
||||||
import { bookingFlowConfig } from "@/constants/bookingFlowConfig"
|
import { bookingFlowConfig } from "@/constants/bookingFlowConfig"
|
||||||
|
|
||||||
import { getLang } from "@/i18n/serverContext"
|
|
||||||
|
|
||||||
import styles from "./page.module.css"
|
import styles from "./page.module.css"
|
||||||
|
|
||||||
|
import type { Lang } from "@scandic-hotels/common/constants/language"
|
||||||
import type { Metadata } from "next"
|
import type { Metadata } from "next"
|
||||||
|
|
||||||
import type { LangParams, NextSearchParams, PageArgs } from "@/types/params"
|
export async function generateMetadata(
|
||||||
|
props: PageProps<"/[lang]/hotelreservation/select-hotel/map">
|
||||||
export async function generateMetadata({
|
): Promise<Metadata> {
|
||||||
searchParams,
|
const { city } = await props.searchParams
|
||||||
}: PageArgs<LangParams, { city: string }>): Promise<Metadata> {
|
|
||||||
const { city } = await searchParams
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
title: `${toCapitalCase(city)}`,
|
title: `${toCapitalCase(typeof city === "string" ? city : "")}`,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default async function SelectHotelMapPage(
|
export default async function SelectHotelMapPage(
|
||||||
props: PageArgs<LangParams, NextSearchParams>
|
props: PageProps<"/[lang]/hotelreservation/select-hotel/map">
|
||||||
) {
|
) {
|
||||||
const searchParams = await props.searchParams
|
const searchParams = await props.searchParams
|
||||||
const lang = await getLang()
|
const params = await props.params
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.main}>
|
<div className={styles.main}>
|
||||||
<SelectHotelMapPagePrimitive
|
<SelectHotelMapPagePrimitive
|
||||||
lang={lang}
|
lang={params.lang as Lang}
|
||||||
searchParams={searchParams}
|
searchParams={searchParams}
|
||||||
config={bookingFlowConfig}
|
config={bookingFlowConfig}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -3,27 +3,29 @@ import { toCapitalCase } from "@scandic-hotels/common/utils/toCapitalCase"
|
|||||||
|
|
||||||
import { bookingFlowConfig } from "@/constants/bookingFlowConfig"
|
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 { Metadata } from "next"
|
||||||
|
|
||||||
import type { LangParams, NextSearchParams, PageArgs } from "@/types/params"
|
export async function generateMetadata(
|
||||||
|
props: PageProps<"/[lang]/hotelreservation/select-hotel">
|
||||||
|
): Promise<Metadata> {
|
||||||
|
const searchParams = await props.searchParams
|
||||||
|
|
||||||
export async function generateMetadata({
|
if (typeof searchParams.city !== "string" || !searchParams.city) {
|
||||||
searchParams,
|
return {}
|
||||||
}: PageArgs<LangParams, { city: string }>): Promise<Metadata> {
|
}
|
||||||
const { city } = await searchParams
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
title: `${toCapitalCase(city)}`,
|
title: `${toCapitalCase(searchParams.city)}`,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default async function SelectHotelPage(
|
export default async function SelectHotelPage(
|
||||||
props: PageArgs<LangParams, NextSearchParams>
|
props: PageProps<"/[lang]/hotelreservation/select-hotel">
|
||||||
) {
|
) {
|
||||||
const searchParams = await props.searchParams
|
const searchParams = await props.searchParams
|
||||||
const lang = await getLang()
|
const params = await props.params
|
||||||
|
const lang = params.lang as Lang
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SelectHotelPagePrimitive
|
<SelectHotelPagePrimitive
|
||||||
|
|||||||
@@ -3,26 +3,22 @@ import { SelectRatePage as SelectRatePagePrimitive } from "@scandic-hotels/booki
|
|||||||
import { bookingFlowConfig } from "@/constants/bookingFlowConfig"
|
import { bookingFlowConfig } from "@/constants/bookingFlowConfig"
|
||||||
import { getHotel } from "@/lib/trpc/memoizedRequests"
|
import { getHotel } from "@/lib/trpc/memoizedRequests"
|
||||||
|
|
||||||
import { getLang } from "@/i18n/serverContext"
|
import type { Lang } from "@scandic-hotels/common/constants/language"
|
||||||
|
|
||||||
import type { Metadata } from "next"
|
import type { Metadata } from "next"
|
||||||
|
|
||||||
import {
|
export async function generateMetadata(
|
||||||
type LangParams,
|
props: PageProps<"/[lang]/hotelreservation/select-rate">
|
||||||
type NextSearchParams,
|
): Promise<Metadata> {
|
||||||
type PageArgs,
|
const searchParams = await props.searchParams
|
||||||
} from "@/types/params"
|
const params = await props.params
|
||||||
|
|
||||||
export async function generateMetadata({
|
if (typeof searchParams.hotel !== "string" || !searchParams.hotel) {
|
||||||
searchParams,
|
return {}
|
||||||
params,
|
}
|
||||||
}: PageArgs<LangParams, { hotel: string }>): Promise<Metadata> {
|
|
||||||
const { hotel } = await searchParams
|
|
||||||
const { lang } = await params
|
|
||||||
|
|
||||||
const hotelData = await getHotel({
|
const hotelData = await getHotel({
|
||||||
hotelId: hotel,
|
hotelId: searchParams.hotel,
|
||||||
language: lang,
|
language: params.lang as Lang,
|
||||||
isCardOnlyPayment: false,
|
isCardOnlyPayment: false,
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -36,10 +32,12 @@ export async function generateMetadata({
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default async function SelectRatePage(
|
export default async function SelectRatePage(
|
||||||
props: PageArgs<LangParams, NextSearchParams>
|
props: PageProps<"/[lang]/hotelreservation/select-rate">
|
||||||
) {
|
) {
|
||||||
const searchParams = await props.searchParams
|
const searchParams = await props.searchParams
|
||||||
const lang = await getLang()
|
const params = await props.params
|
||||||
|
|
||||||
|
const lang = params.lang as Lang
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SelectRatePagePrimitive
|
<SelectRatePagePrimitive
|
||||||
|
|||||||
@@ -3,19 +3,21 @@ import { setLang } from "@/i18n/serverContext"
|
|||||||
|
|
||||||
import Tracking from "./tracking"
|
import Tracking from "./tracking"
|
||||||
|
|
||||||
import type { LangParams, PageArgs } from "@/types/params"
|
import type { Lang } from "@scandic-hotels/common/constants/language"
|
||||||
|
|
||||||
export default async function MyStayPage(
|
export default async function MyStayPage(
|
||||||
props: PageArgs<LangParams, { RefId?: string }>
|
props: PageProps<"/[lang]/hotelreservation/my-stay">
|
||||||
) {
|
) {
|
||||||
const searchParams = await props.searchParams
|
const searchParams = await props.searchParams
|
||||||
const params = await props.params
|
const params = await props.params
|
||||||
setLang(params.lang)
|
const lang = params.lang as Lang
|
||||||
const refId = searchParams.RefId
|
setLang(lang)
|
||||||
|
|
||||||
|
const refId = typeof searchParams.RefId === "string" ? searchParams.RefId : ""
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<MyStay refId={refId} lang={params.lang} />
|
<MyStay refId={refId} lang={lang} />
|
||||||
<Tracking />
|
<Tracking />
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import { signIn } from "@/auth"
|
|||||||
|
|
||||||
export async function GET(
|
export async function GET(
|
||||||
request: NextRequest,
|
request: NextRequest,
|
||||||
context: { params: Promise<{ lang: Lang }> }
|
context: RouteContext<"/[lang]/login">
|
||||||
) {
|
) {
|
||||||
const contextParams = await context.params
|
const contextParams = await context.params
|
||||||
const publicURL = getPublicURL(request)
|
const publicURL = getPublicURL(request)
|
||||||
@@ -89,6 +89,10 @@ export async function GET(
|
|||||||
case Lang.sv:
|
case Lang.sv:
|
||||||
redirectUrlValue = env.SEAMLESS_LOGIN_SV
|
redirectUrlValue = env.SEAMLESS_LOGIN_SV
|
||||||
break
|
break
|
||||||
|
default:
|
||||||
|
throw new Error(
|
||||||
|
`Unsupported language for login: ${contextParams.lang}`
|
||||||
|
)
|
||||||
}
|
}
|
||||||
const redirectUrl = new URL(redirectUrlValue)
|
const redirectUrl = new URL(redirectUrlValue)
|
||||||
logger.debug(
|
logger.debug(
|
||||||
|
|||||||
@@ -8,11 +8,9 @@ import { getPublicURL } from "@/server/utils"
|
|||||||
|
|
||||||
import { signIn } from "@/auth"
|
import { signIn } from "@/auth"
|
||||||
|
|
||||||
import type { Lang } from "@scandic-hotels/common/constants/language"
|
|
||||||
|
|
||||||
export async function GET(
|
export async function GET(
|
||||||
request: NextRequest,
|
request: NextRequest,
|
||||||
context: { params: Promise<{ lang: Lang }> }
|
context: RouteContext<"/[lang]/verifymagiclink">
|
||||||
) {
|
) {
|
||||||
const publicURL = getPublicURL(request)
|
const publicURL = getPublicURL(request)
|
||||||
|
|
||||||
|
|||||||
@@ -6,10 +6,8 @@ import { getDestinationCityPage } from "@/lib/trpc/memoizedRequests"
|
|||||||
|
|
||||||
import { getLang } from "@/i18n/serverContext"
|
import { getLang } from "@/i18n/serverContext"
|
||||||
|
|
||||||
import type { NextSearchParams, PageArgs } from "@/types/params"
|
|
||||||
|
|
||||||
export default async function BookingWidgetDestinationCityPage(
|
export default async function BookingWidgetDestinationCityPage(
|
||||||
props: PageArgs<object, NextSearchParams>
|
props: PageProps<"/[lang]/destination_city_page/[uid]">
|
||||||
) {
|
) {
|
||||||
const searchParams = await props.searchParams
|
const searchParams = await props.searchParams
|
||||||
|
|
||||||
|
|||||||
@@ -4,17 +4,16 @@ import { parseBookingWidgetSearchParams } from "@scandic-hotels/booking-flow/uti
|
|||||||
import { bookingFlowConfig } from "@/constants/bookingFlowConfig"
|
import { bookingFlowConfig } from "@/constants/bookingFlowConfig"
|
||||||
import { getHotel, getHotelPage } from "@/lib/trpc/memoizedRequests"
|
import { getHotel, getHotelPage } from "@/lib/trpc/memoizedRequests"
|
||||||
|
|
||||||
import { getLang } from "@/i18n/serverContext"
|
import type { Lang } from "@scandic-hotels/common/constants/language"
|
||||||
|
|
||||||
import type { NextSearchParams, PageArgs } from "@/types/params"
|
|
||||||
|
|
||||||
export default async function BookingWidgetHotelPage(
|
export default async function BookingWidgetHotelPage(
|
||||||
props: PageArgs<object, NextSearchParams & { subpage?: string }>
|
props: PageProps<"/[lang]/hotel_page/[uid]">
|
||||||
) {
|
) {
|
||||||
const searchParams = await props.searchParams
|
const searchParams = await props.searchParams
|
||||||
|
const params = await props.params
|
||||||
|
const lang = params.lang as Lang
|
||||||
|
|
||||||
const hotelPageData = await getHotelPage()
|
const hotelPageData = await getHotelPage()
|
||||||
const lang = await getLang()
|
|
||||||
const hotelData = await getHotel({
|
const hotelData = await getHotel({
|
||||||
hotelId: hotelPageData?.hotel_page_id || "",
|
hotelId: hotelPageData?.hotel_page_id || "",
|
||||||
language: lang,
|
language: lang,
|
||||||
|
|||||||
@@ -3,18 +3,17 @@ import { parseBookingWidgetSearchParams } from "@scandic-hotels/booking-flow/uti
|
|||||||
|
|
||||||
import { bookingFlowConfig } from "@/constants/bookingFlowConfig"
|
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(
|
export default async function BookingWidgetPage(
|
||||||
props: PageArgs<LangParams, NextSearchParams>
|
props: PageProps<"/[lang]/hotelreservation">
|
||||||
) {
|
) {
|
||||||
const searchParams = await props.searchParams
|
const searchParams = await props.searchParams
|
||||||
|
const params = await props.params
|
||||||
|
|
||||||
const booking = parseBookingWidgetSearchParams(searchParams)
|
const booking = parseBookingWidgetSearchParams(searchParams)
|
||||||
|
|
||||||
const lang = await getLang()
|
const lang = params.lang as Lang
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<BookingWidget booking={booking} lang={lang} config={bookingFlowConfig} />
|
<BookingWidget booking={booking} lang={lang} config={bookingFlowConfig} />
|
||||||
|
|||||||
@@ -3,18 +3,15 @@ import { parseBookingWidgetSearchParams } from "@scandic-hotels/booking-flow/uti
|
|||||||
|
|
||||||
import { bookingFlowConfig } from "@/constants/bookingFlowConfig"
|
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: PageProps<"/[lang]">) {
|
||||||
|
|
||||||
export default async function BookingWidgetPage(
|
|
||||||
props: PageArgs<LangParams, NextSearchParams>
|
|
||||||
) {
|
|
||||||
const searchParams = await props.searchParams
|
const searchParams = await props.searchParams
|
||||||
|
const params = await props.params
|
||||||
|
|
||||||
const booking = parseBookingWidgetSearchParams(searchParams)
|
const booking = parseBookingWidgetSearchParams(searchParams)
|
||||||
|
|
||||||
const lang = await getLang()
|
const lang = params.lang as Lang
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<BookingWidget booking={booking} lang={lang} config={bookingFlowConfig} />
|
<BookingWidget booking={booking} lang={lang} config={bookingFlowConfig} />
|
||||||
|
|||||||
@@ -35,21 +35,13 @@ import { getMessages } from "@/i18n"
|
|||||||
import ClientIntlProvider from "@/i18n/Provider"
|
import ClientIntlProvider from "@/i18n/Provider"
|
||||||
import { setLang } from "@/i18n/serverContext"
|
import { setLang } from "@/i18n/serverContext"
|
||||||
|
|
||||||
import type { LangParams, LayoutArgs } from "@/types/params"
|
export default async function RootLayout(props: LayoutProps<"/[lang]">) {
|
||||||
|
|
||||||
export default async function RootLayout(
|
|
||||||
props: React.PropsWithChildren<
|
|
||||||
LayoutArgs<LangParams> & {
|
|
||||||
bookingwidget: React.ReactNode
|
|
||||||
}
|
|
||||||
>
|
|
||||||
) {
|
|
||||||
const params = await props.params
|
const params = await props.params
|
||||||
|
const lang = params.lang as Lang
|
||||||
const { bookingwidget, children } = props
|
const { bookingwidget, children } = props
|
||||||
|
|
||||||
setLang(params.lang)
|
setLang(lang)
|
||||||
const messages = await getMessages(params.lang)
|
const messages = await getMessages(lang)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<html lang={params.lang}>
|
<html lang={params.lang}>
|
||||||
@@ -69,7 +61,7 @@ export default async function RootLayout(
|
|||||||
<SessionProvider basePath="/api/web/auth">
|
<SessionProvider basePath="/api/web/auth">
|
||||||
<ClientIntlProvider
|
<ClientIntlProvider
|
||||||
defaultLocale={Lang.en}
|
defaultLocale={Lang.en}
|
||||||
locale={params.lang}
|
locale={lang}
|
||||||
messages={messages}
|
messages={messages}
|
||||||
>
|
>
|
||||||
<NuqsAdapter>
|
<NuqsAdapter>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import NotFound from "@/components/NotFound"
|
import NotFound from "@/components/NotFound"
|
||||||
|
|
||||||
import type { LangParams, PageArgs } from "@/types/params"
|
export default function NotFoundPage(
|
||||||
|
_props: PageProps<"/[lang]/middleware-error/404">
|
||||||
export default function NotFoundPage({}: PageArgs<LangParams>) {
|
) {
|
||||||
return <NotFound />
|
return <NotFound />
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
import styles from "./page.module.css"
|
import styles from "./page.module.css"
|
||||||
|
|
||||||
import type { LangParams, LayoutArgs, StatusParams } from "@/types/params"
|
|
||||||
|
|
||||||
export default async function MiddlewareError(
|
export default async function MiddlewareError(
|
||||||
props: LayoutArgs<LangParams & StatusParams>
|
props: PageProps<"/[lang]/middleware-error/[status]">
|
||||||
) {
|
) {
|
||||||
const params = await props.params
|
const params = await props.params
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -4,15 +4,14 @@ import { Suspense } from "react"
|
|||||||
import { MyStaySkeleton } from "@/components/HotelReservation/MyStay/myStaySkeleton"
|
import { MyStaySkeleton } from "@/components/HotelReservation/MyStay/myStaySkeleton"
|
||||||
import { Receipt } from "@/components/HotelReservation/MyStay/Receipt"
|
import { Receipt } from "@/components/HotelReservation/MyStay/Receipt"
|
||||||
|
|
||||||
import type { LangParams, PageArgs } from "@/types/params"
|
|
||||||
|
|
||||||
export default async function ReceiptPage(
|
export default async function ReceiptPage(
|
||||||
props: PageArgs<LangParams, { RefId?: string }>
|
props: PageProps<"/[lang]/hotelreservation/my-stay/receipt">
|
||||||
) {
|
) {
|
||||||
const searchParams = await props.searchParams
|
const searchParams = await props.searchParams
|
||||||
if (!searchParams.RefId) {
|
if (!searchParams.RefId || typeof searchParams.RefId !== "string") {
|
||||||
notFound()
|
notFound()
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Suspense fallback={<MyStaySkeleton />}>
|
<Suspense fallback={<MyStaySkeleton />}>
|
||||||
<Receipt refId={searchParams.RefId} />
|
<Receipt refId={searchParams.RefId} />
|
||||||
|
|||||||
@@ -25,20 +25,18 @@ import { getMessages } from "@/i18n"
|
|||||||
import ClientIntlProvider from "@/i18n/Provider"
|
import ClientIntlProvider from "@/i18n/Provider"
|
||||||
import { setLang } from "@/i18n/serverContext"
|
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(
|
export default async function RootLayout(props: LayoutProps) {
|
||||||
props: React.PropsWithChildren<LayoutArgs<LangParams>>
|
|
||||||
) {
|
|
||||||
const params = await props.params
|
const params = await props.params
|
||||||
|
|
||||||
const { children } = props
|
const { children } = props
|
||||||
|
const lang = params.lang as Lang
|
||||||
setLang(params.lang)
|
setLang(lang)
|
||||||
const messages = await getMessages(params.lang)
|
const messages = await getMessages(lang)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<html lang={params.lang}>
|
<html lang={lang}>
|
||||||
<head>
|
<head>
|
||||||
<AdobeSDKScript />
|
<AdobeSDKScript />
|
||||||
<GTMScript />
|
<GTMScript />
|
||||||
@@ -52,7 +50,7 @@ export default async function RootLayout(
|
|||||||
<SessionProvider basePath="/api/web/auth">
|
<SessionProvider basePath="/api/web/auth">
|
||||||
<ClientIntlProvider
|
<ClientIntlProvider
|
||||||
defaultLocale={Lang.en}
|
defaultLocale={Lang.en}
|
||||||
locale={params.lang}
|
locale={lang}
|
||||||
messages={messages}
|
messages={messages}
|
||||||
>
|
>
|
||||||
<NuqsAdapter>
|
<NuqsAdapter>
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ const tokenResponseSchema = z.object({
|
|||||||
|
|
||||||
export async function GET(
|
export async function GET(
|
||||||
request: NextRequest,
|
request: NextRequest,
|
||||||
props: { params: Promise<{ lang: string }> }
|
props: RouteContext<"/[lang]/sas-x-scandic/callback">
|
||||||
) {
|
) {
|
||||||
const params = await props.params
|
const params = await props.params
|
||||||
const { lang } = params
|
const { lang } = params
|
||||||
|
|||||||
@@ -10,11 +10,8 @@ import { TooManyCodesError } from "../components/TooManyCodesError"
|
|||||||
import { TooManyFailedAttemptsError } from "../components/TooManyFailedAttemptsError"
|
import { TooManyFailedAttemptsError } from "../components/TooManyFailedAttemptsError"
|
||||||
import { UnlinkError } from "../components/UnlinkError"
|
import { UnlinkError } from "../components/UnlinkError"
|
||||||
|
|
||||||
import type { LangParams, PageArgs, SearchParams } from "@/types/params"
|
|
||||||
|
|
||||||
export default async function Page(
|
export default async function Page(
|
||||||
props: PageArgs<LangParams> &
|
props: PageProps<"/[lang]/sas-x-scandic/error">
|
||||||
SearchParams<{ errorCode?: "dateOfBirthMismatch" }>
|
|
||||||
) {
|
) {
|
||||||
const searchParams = await props.searchParams
|
const searchParams = await props.searchParams
|
||||||
const intl = await getIntl()
|
const intl = await getIntl()
|
||||||
|
|||||||
@@ -9,14 +9,13 @@ import background from "@/public/_static/img/partner/sas/sas_x_scandic_airplane_
|
|||||||
|
|
||||||
import styles from "./layout.module.css"
|
import styles from "./layout.module.css"
|
||||||
|
|
||||||
import type { PropsWithChildren } from "react"
|
import type { Lang } from "@scandic-hotels/common/constants/language"
|
||||||
|
|
||||||
import type { LangParams, LayoutArgs } from "@/types/params"
|
|
||||||
|
|
||||||
export default async function SasXScandicLayout(
|
export default async function SasXScandicLayout(
|
||||||
props: PropsWithChildren<LayoutArgs<LangParams>>
|
props: LayoutProps<"/[lang]/sas-x-scandic">
|
||||||
) {
|
) {
|
||||||
const params = await props.params
|
const params = await props.params
|
||||||
|
const lang = params.lang as Lang
|
||||||
|
|
||||||
const { children } = props
|
const { children } = props
|
||||||
|
|
||||||
@@ -29,7 +28,7 @@ export default async function SasXScandicLayout(
|
|||||||
>
|
>
|
||||||
<header className={styles.header}>
|
<header className={styles.header}>
|
||||||
{/* TODO should this link to my-pages sas page? */}
|
{/* TODO should this link to my-pages sas page? */}
|
||||||
<Link className={styles.backLink} href={profileOverview[params.lang]}>
|
<Link className={styles.backLink} href={profileOverview[lang]}>
|
||||||
<ArrowLeft height={20} width={20} />
|
<ArrowLeft height={20} width={20} />
|
||||||
<span className={styles.long}>
|
<span className={styles.long}>
|
||||||
{intl.formatMessage({
|
{intl.formatMessage({
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ import { getProfileSafely } from "@/lib/trpc/memoizedRequests"
|
|||||||
import { SASModal } from "../components/SASModal"
|
import { SASModal } from "../components/SASModal"
|
||||||
import { LinkAccountForm } from "./LinkAccountForm"
|
import { LinkAccountForm } from "./LinkAccountForm"
|
||||||
|
|
||||||
import type { LangParams, PageArgs } from "@/types/params"
|
export default async function SASxScandicLinkPage(
|
||||||
|
props: PageProps<"/[lang]/sas-x-scandic/link">
|
||||||
export default async function SASxScandicLinkPage(props: PageArgs<LangParams>) {
|
) {
|
||||||
const params = await props.params
|
const params = await props.params
|
||||||
const profile = await getProfileSafely()
|
const profile = await getProfileSafely()
|
||||||
|
|
||||||
|
|||||||
@@ -9,15 +9,18 @@ import { getIntl } from "@/i18n"
|
|||||||
|
|
||||||
import { SASModal } from "../../components/SASModal"
|
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<LangParams>) {
|
export default async function SASxScandicLinkPage(
|
||||||
|
props: PageProps<"/[lang]/sas-x-scandic/link/success">
|
||||||
|
) {
|
||||||
const params = await props.params
|
const params = await props.params
|
||||||
|
const lang = params.lang as Lang
|
||||||
const intl = await getIntl()
|
const intl = await getIntl()
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SASModal>
|
<SASModal>
|
||||||
<Redirect url={partnerSas[params.lang]} timeout={3000} />
|
<Redirect url={partnerSas[lang]} timeout={3000} />
|
||||||
<MaterialIcon
|
<MaterialIcon
|
||||||
icon="check_circle"
|
icon="check_circle"
|
||||||
size={64}
|
size={64}
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ import { SASModal } from "../components/SASModal"
|
|||||||
|
|
||||||
import type { Lang } from "@scandic-hotels/common/constants/language"
|
import type { Lang } from "@scandic-hotels/common/constants/language"
|
||||||
|
|
||||||
import type { LangParams, PageArgs, SearchParams } from "@/types/params"
|
|
||||||
import type { State } from "../sasUtils"
|
import type { State } from "../sasUtils"
|
||||||
|
|
||||||
const searchParamsSchema = z.object({
|
const searchParamsSchema = z.object({
|
||||||
@@ -25,20 +24,23 @@ const searchParamsSchema = z.object({
|
|||||||
type Intent = z.infer<typeof searchParamsSchema>["intent"]
|
type Intent = z.infer<typeof searchParamsSchema>["intent"]
|
||||||
|
|
||||||
export default async function SASxScandicLoginPage(
|
export default async function SASxScandicLoginPage(
|
||||||
props: PageArgs<LangParams> & SearchParams
|
props: PageProps<"/[lang]/sas-x-scandic/login">
|
||||||
) {
|
) {
|
||||||
const params = await props.params
|
const params = await props.params
|
||||||
const searchParams = await props.searchParams
|
const searchParams = await props.searchParams
|
||||||
const result = searchParamsSchema.safeParse(searchParams)
|
const result = searchParamsSchema.safeParse(searchParams)
|
||||||
|
|
||||||
|
const lang = params.lang as Lang
|
||||||
|
|
||||||
if (!result.success) {
|
if (!result.success) {
|
||||||
// TOOD where to redirect?
|
// TOOD where to redirect?
|
||||||
redirect(`/${params.lang}/sas-x-scandic/link`)
|
redirect(`/${lang}/sas-x-scandic/link`)
|
||||||
}
|
}
|
||||||
const parsedParams = result.data
|
const parsedParams = result.data
|
||||||
|
|
||||||
const intl = await getIntl()
|
const intl = await getIntl()
|
||||||
const redirectUri = new URL(
|
const redirectUri = new URL(
|
||||||
`/${params.lang}/sas-x-scandic/callback`,
|
`/${lang}/sas-x-scandic/callback`,
|
||||||
env.PUBLIC_URL
|
env.PUBLIC_URL
|
||||||
).toString()
|
).toString()
|
||||||
|
|
||||||
@@ -49,7 +51,7 @@ export default async function SASxScandicLoginPage(
|
|||||||
const audience = "eb-partner-api"
|
const audience = "eb-partner-api"
|
||||||
const scope = encodeURIComponent("openid profile email")
|
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<Intent, string> = {
|
const intentDescriptions: Record<Intent, string> = {
|
||||||
link: intl.formatMessage({
|
link: intl.formatMessage({
|
||||||
|
|||||||
@@ -21,8 +21,6 @@ import OneTimePasswordForm, {
|
|||||||
import type { Lang } from "@scandic-hotels/common/constants/language"
|
import type { Lang } from "@scandic-hotels/common/constants/language"
|
||||||
import type { ReactNode } from "react"
|
import type { ReactNode } from "react"
|
||||||
|
|
||||||
import type { LangParams, PageArgs, SearchParams } from "@/types/params"
|
|
||||||
|
|
||||||
const otpError = z.enum(["invalidCode", "expiredCode"])
|
const otpError = z.enum(["invalidCode", "expiredCode"])
|
||||||
const intent = z.enum(["link", "unlink", "transfer"])
|
const intent = z.enum(["link", "unlink", "transfer"])
|
||||||
const searchParamsSchema = z.object({
|
const searchParamsSchema = z.object({
|
||||||
@@ -35,10 +33,12 @@ export type OtpError = z.infer<typeof otpError>
|
|||||||
type Intent = z.infer<typeof intent>
|
type Intent = z.infer<typeof intent>
|
||||||
|
|
||||||
export default async function SASxScandicOneTimePasswordPage(
|
export default async function SASxScandicOneTimePasswordPage(
|
||||||
props: PageArgs<LangParams> & SearchParams
|
props: PageProps<"/[lang]/sas-x-scandic/otp">
|
||||||
) {
|
) {
|
||||||
const params = await props.params
|
const params = await props.params
|
||||||
const searchParams = await props.searchParams
|
const searchParams = await props.searchParams
|
||||||
|
const lang = params.lang as Lang
|
||||||
|
|
||||||
const intl = await getIntl()
|
const intl = await getIntl()
|
||||||
const cookieStore = await cookies()
|
const cookieStore = await cookies()
|
||||||
const tokenCookie = cookieStore.get(SAS_TOKEN_STORAGE_KEY)
|
const tokenCookie = cookieStore.get(SAS_TOKEN_STORAGE_KEY)
|
||||||
@@ -50,7 +50,7 @@ export default async function SASxScandicOneTimePasswordPage(
|
|||||||
const { intent, to, error } = result.data
|
const { intent, to, error } = result.data
|
||||||
|
|
||||||
if (!verifyTokenValidity(tokenCookie?.value)) {
|
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 }) => {
|
const handleOtpVerified: OnSubmitHandler = async ({ otp }) => {
|
||||||
@@ -65,7 +65,7 @@ export default async function SASxScandicOneTimePasswordPage(
|
|||||||
switch (data.status) {
|
switch (data.status) {
|
||||||
case "ABUSED":
|
case "ABUSED":
|
||||||
return {
|
return {
|
||||||
url: `/${params.lang}/sas-x-scandic/error?errorCode=tooManyFailedAttempts`,
|
url: `/${lang}/sas-x-scandic/error?errorCode=tooManyFailedAttempts`,
|
||||||
}
|
}
|
||||||
case "EXPIRED": {
|
case "EXPIRED": {
|
||||||
const search = new URLSearchParams({
|
const search = new URLSearchParams({
|
||||||
@@ -74,7 +74,7 @@ export default async function SASxScandicOneTimePasswordPage(
|
|||||||
}).toString()
|
}).toString()
|
||||||
|
|
||||||
return {
|
return {
|
||||||
url: `/${params.lang}/sas-x-scandic/otp?${search}`,
|
url: `/${lang}/sas-x-scandic/otp?${search}`,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case "RETRY": {
|
case "RETRY": {
|
||||||
@@ -84,7 +84,7 @@ export default async function SASxScandicOneTimePasswordPage(
|
|||||||
}).toString()
|
}).toString()
|
||||||
|
|
||||||
return {
|
return {
|
||||||
url: `/${params.lang}/sas-x-scandic/otp?${search}`,
|
url: `/${lang}/sas-x-scandic/otp?${search}`,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case "NOTSENT":
|
case "NOTSENT":
|
||||||
@@ -97,11 +97,11 @@ export default async function SASxScandicOneTimePasswordPage(
|
|||||||
|
|
||||||
switch (intent) {
|
switch (intent) {
|
||||||
case "link":
|
case "link":
|
||||||
return handleLinkAccount({ lang: params.lang })
|
return handleLinkAccount({ lang: lang })
|
||||||
case "unlink":
|
case "unlink":
|
||||||
return handleUnlinkAccount({ lang: params.lang })
|
return handleUnlinkAccount({ lang: lang })
|
||||||
case "transfer":
|
case "transfer":
|
||||||
return handleTransferPoints({ lang: params.lang })
|
return handleTransferPoints({ lang: lang })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,15 +19,13 @@ import styles from "./transferSuccess.module.css"
|
|||||||
|
|
||||||
import type { Lang } from "@scandic-hotels/common/constants/language"
|
import type { Lang } from "@scandic-hotels/common/constants/language"
|
||||||
|
|
||||||
import type { LangParams, PageArgs, SearchParams } from "@/types/params"
|
|
||||||
|
|
||||||
export default async function SASxScandicTransferSuccessPage(
|
export default async function SASxScandicTransferSuccessPage(
|
||||||
props: PageArgs<LangParams> & SearchParams<{ p?: string }>
|
props: PageProps<"/[lang]/sas-x-scandic/transfer/success">
|
||||||
) {
|
) {
|
||||||
const searchParams = await props.searchParams
|
const searchParams = await props.searchParams
|
||||||
const params = await props.params
|
const params = await props.params
|
||||||
const intl = await getIntl()
|
const intl = await getIntl()
|
||||||
const { lang } = params
|
const lang = params.lang as Lang
|
||||||
|
|
||||||
// TODO get from api
|
// TODO get from api
|
||||||
const exchangeRate = 2
|
const exchangeRate = 2
|
||||||
@@ -61,7 +59,7 @@ export default async function SASxScandicTransferSuccessPage(
|
|||||||
fullWidth
|
fullWidth
|
||||||
className={styles.backButton}
|
className={styles.backButton}
|
||||||
>
|
>
|
||||||
<Link href={partnerSas[params.lang]} color="none">
|
<Link href={partnerSas[lang]} color="none">
|
||||||
{intl.formatMessage({
|
{intl.formatMessage({
|
||||||
id: "transferEuroBonusPoints.backToMyPagesButton",
|
id: "transferEuroBonusPoints.backToMyPagesButton",
|
||||||
defaultMessage: "Go back to My Pages",
|
defaultMessage: "Go back to My Pages",
|
||||||
|
|||||||
@@ -9,17 +9,18 @@ import { getIntl } from "@/i18n"
|
|||||||
|
|
||||||
import { SASModal } from "../../components/SASModal"
|
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(
|
export default async function SASxScandicUnlinkSuccessPage(
|
||||||
props: PageArgs<LangParams>
|
props: PageProps<"/[lang]/sas-x-scandic/unlink/success">
|
||||||
) {
|
) {
|
||||||
const params = await props.params
|
const params = await props.params
|
||||||
|
const lang = params.lang as Lang
|
||||||
const intl = await getIntl()
|
const intl = await getIntl()
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SASModal>
|
<SASModal>
|
||||||
<Redirect url={overview[params.lang]} timeout={3000} />
|
<Redirect url={overview[lang]} timeout={3000} />
|
||||||
<MaterialIcon
|
<MaterialIcon
|
||||||
icon="check_circle"
|
icon="check_circle"
|
||||||
size={64}
|
size={64}
|
||||||
|
|||||||
@@ -25,21 +25,17 @@ import { getMessages } from "@/i18n"
|
|||||||
import ClientIntlProvider from "@/i18n/Provider"
|
import ClientIntlProvider from "@/i18n/Provider"
|
||||||
import { setLang } from "@/i18n/serverContext"
|
import { setLang } from "@/i18n/serverContext"
|
||||||
|
|
||||||
import type { LangParams, LayoutArgs } from "@/types/params"
|
export default async function RootLayout(props: LayoutProps<"/[lang]">) {
|
||||||
|
|
||||||
export default async function RootLayout(
|
|
||||||
props: React.PropsWithChildren<LayoutArgs<LangParams>>
|
|
||||||
) {
|
|
||||||
const params = await props.params
|
const params = await props.params
|
||||||
|
const lang = params.lang as Lang
|
||||||
const { children } = props
|
const { children } = props
|
||||||
|
|
||||||
setLang(params.lang)
|
setLang(lang)
|
||||||
|
|
||||||
const messages = await getMessages(params.lang)
|
const messages = await getMessages(lang)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<html lang={params.lang}>
|
<html lang={lang}>
|
||||||
<head>
|
<head>
|
||||||
<FontPreload />
|
<FontPreload />
|
||||||
<AdobeSDKScript />
|
<AdobeSDKScript />
|
||||||
@@ -52,7 +48,7 @@ export default async function RootLayout(
|
|||||||
<body className="scandic">
|
<body className="scandic">
|
||||||
<ClientIntlProvider
|
<ClientIntlProvider
|
||||||
defaultLocale={Lang.en}
|
defaultLocale={Lang.en}
|
||||||
locale={params.lang}
|
locale={lang}
|
||||||
messages={messages}
|
messages={messages}
|
||||||
>
|
>
|
||||||
<NuqsAdapter>
|
<NuqsAdapter>
|
||||||
@@ -72,7 +68,7 @@ export default async function RootLayout(
|
|||||||
strategy="beforeInteractive"
|
strategy="beforeInteractive"
|
||||||
data-blockingmode="auto"
|
data-blockingmode="auto"
|
||||||
data-cbid="6d539de8-3e67-4f0f-a0df-8cef9070f712"
|
data-cbid="6d539de8-3e67-4f0f-a0df-8cef9070f712"
|
||||||
data-culture={params.lang}
|
data-culture={lang}
|
||||||
id="Cookiebot"
|
id="Cookiebot"
|
||||||
src="https://consent.cookiebot.com/uc.js"
|
src="https://consent.cookiebot.com/uc.js"
|
||||||
async={true}
|
async={true}
|
||||||
|
|||||||
@@ -5,25 +5,20 @@ import { logger } from "@scandic-hotels/common/logger"
|
|||||||
import AccountPage from "@/components/Webviews/AccountPage"
|
import AccountPage from "@/components/Webviews/AccountPage"
|
||||||
import LoyaltyPage from "@/components/Webviews/LoyaltyPage"
|
import LoyaltyPage from "@/components/Webviews/LoyaltyPage"
|
||||||
|
|
||||||
import type {
|
type ContentType = "loyalty-page" | "account-page"
|
||||||
ContentTypeWebviewParams,
|
|
||||||
LangParams,
|
|
||||||
PageArgs,
|
|
||||||
UIDParams,
|
|
||||||
} from "@/types/params"
|
|
||||||
|
|
||||||
export default async function ContentTypePage(
|
export default async function ContentTypePage(
|
||||||
props: PageArgs<LangParams & ContentTypeWebviewParams & UIDParams>
|
props: PageProps<"/[lang]/webview/[contentType]/[uid]">
|
||||||
) {
|
) {
|
||||||
const params = await props.params
|
const params = await props.params
|
||||||
|
const contentType = params.contentType as ContentType
|
||||||
|
|
||||||
switch (params.contentType) {
|
switch (contentType) {
|
||||||
case "loyalty-page":
|
case "loyalty-page":
|
||||||
return <LoyaltyPage />
|
return <LoyaltyPage />
|
||||||
case "account-page":
|
case "account-page":
|
||||||
return <AccountPage />
|
return <AccountPage />
|
||||||
default:
|
default:
|
||||||
const type: never = params.contentType
|
const type: never = contentType
|
||||||
logger.error(`Unsupported content type given: ${type}`)
|
logger.error(`Unsupported content type given: ${type}`)
|
||||||
notFound()
|
notFound()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,33 +6,29 @@ import { myStay } from "@/constants/routes/webviews"
|
|||||||
|
|
||||||
import GuaranteeCallbackPage from "@/components/GuaranteeCallback"
|
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 { PaymentCallbackStatusEnum } from "@scandic-hotels/common/constants/paymentCallbackStatusEnum"
|
||||||
|
|
||||||
import type { LangParams, PageArgs } from "@/types/params"
|
|
||||||
|
|
||||||
export default async function GuaranteePaymentWebViewCallbackPage(
|
export default async function GuaranteePaymentWebViewCallbackPage(
|
||||||
props: PageArgs<
|
props: PageProps<"/[lang]/webview/hotelreservation/gla-payment-callback">
|
||||||
LangParams,
|
|
||||||
{
|
|
||||||
status?: PaymentCallbackStatusEnum
|
|
||||||
RefId?: string
|
|
||||||
confirmationNumber?: string
|
|
||||||
ancillary?: string
|
|
||||||
}
|
|
||||||
>
|
|
||||||
) {
|
) {
|
||||||
const searchParams = await props.searchParams
|
const searchParams = await props.searchParams
|
||||||
const params = await props.params
|
const params = await props.params
|
||||||
logger.debug(`[gla-payment-callback] callback started`)
|
const lang = params.lang as Lang
|
||||||
const lang = params.lang
|
const status = searchParams.status as PaymentCallbackStatusEnum
|
||||||
const status = searchParams.status
|
const confirmationNumber =
|
||||||
const confirmationNumber = searchParams.confirmationNumber
|
typeof searchParams.confirmationNumber === "string"
|
||||||
const refId = searchParams.RefId
|
? searchParams.confirmationNumber
|
||||||
|
: undefined
|
||||||
|
const refId =
|
||||||
|
typeof searchParams.RefId === "string" ? searchParams.RefId : undefined
|
||||||
|
|
||||||
if (!status || !confirmationNumber || !refId) {
|
if (!status || !confirmationNumber || !refId) {
|
||||||
notFound()
|
notFound()
|
||||||
}
|
}
|
||||||
const myStayUrl = `${myStay[lang]}?RefId=${encodeURIComponent(refId)}`
|
const myStayUrl = `${myStay[lang]}?RefId=${encodeURIComponent(refId)}`
|
||||||
|
|
||||||
|
logger.debug(`[gla-payment-callback] callback started`)
|
||||||
return (
|
return (
|
||||||
<GuaranteeCallbackPage
|
<GuaranteeCallbackPage
|
||||||
status={status}
|
status={status}
|
||||||
|
|||||||
@@ -6,19 +6,21 @@ import { setLang } from "@/i18n/serverContext"
|
|||||||
|
|
||||||
import Tracking from "./tracking"
|
import Tracking from "./tracking"
|
||||||
|
|
||||||
import type { LangParams, PageArgs } from "@/types/params"
|
import type { Lang } from "@scandic-hotels/common/constants/language"
|
||||||
|
|
||||||
export default async function MyStayWebviewPage(
|
export default async function MyStayWebviewPage(
|
||||||
props: PageArgs<LangParams, { RefId?: string }>
|
props: PageProps<"/[lang]/webview/hotelreservation/my-stay">
|
||||||
) {
|
) {
|
||||||
const searchParams = await props.searchParams
|
const searchParams = await props.searchParams
|
||||||
const params = await props.params
|
const params = await props.params
|
||||||
setLang(params.lang)
|
const lang = params.lang as Lang
|
||||||
const refId = searchParams.RefId
|
setLang(lang)
|
||||||
|
const refId =
|
||||||
|
typeof searchParams.RefId === "string" ? searchParams.RefId : undefined
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Suspense fallback={<MyStaySkeleton />}>
|
<Suspense fallback={<MyStaySkeleton />}>
|
||||||
<MyStay refId={refId} lang={params.lang} isWebview={true} />
|
<MyStay refId={refId} lang={lang} isWebview={true} />
|
||||||
<Tracking />
|
<Tracking />
|
||||||
</Suspense>
|
</Suspense>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -10,11 +10,7 @@ import { getProfile } from "@/lib/trpc/memoizedRequests"
|
|||||||
|
|
||||||
import { getIntl } from "@/i18n"
|
import { getIntl } from "@/i18n"
|
||||||
|
|
||||||
import type { LangParams, LayoutArgs } from "@/types/params"
|
export default async function Layout(props: LayoutProps<"/[lang]/webview">) {
|
||||||
|
|
||||||
export default async function Layout(
|
|
||||||
props: React.PropsWithChildren<LayoutArgs<LangParams>>
|
|
||||||
) {
|
|
||||||
const params = await props.params
|
const params = await props.params
|
||||||
|
|
||||||
const { children } = props
|
const { children } = props
|
||||||
|
|||||||
@@ -27,24 +27,22 @@ import styles from "./layout.module.css"
|
|||||||
|
|
||||||
import type { Metadata } from "next"
|
import type { Metadata } from "next"
|
||||||
|
|
||||||
import type { LangParams, LayoutArgs } from "@/types/params"
|
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "Webview",
|
title: "Webview",
|
||||||
}
|
}
|
||||||
|
|
||||||
export default async function RootLayout(
|
export default async function RootLayout(
|
||||||
props: React.PropsWithChildren<LayoutArgs<LangParams>>
|
props: LayoutProps<"/[lang]/webview">
|
||||||
) {
|
) {
|
||||||
const params = await props.params
|
const params = await props.params
|
||||||
|
const lang = params.lang as Lang
|
||||||
const { children } = props
|
const { children } = props
|
||||||
|
|
||||||
setLang(params.lang)
|
setLang(lang)
|
||||||
const messages = await getMessages(params.lang)
|
const messages = await getMessages(lang)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<html lang={params.lang}>
|
<html lang={lang}>
|
||||||
<head>
|
<head>
|
||||||
<FontPreload />
|
<FontPreload />
|
||||||
<AdobeSDKScript />
|
<AdobeSDKScript />
|
||||||
@@ -59,7 +57,7 @@ export default async function RootLayout(
|
|||||||
<SessionProvider basePath="/api/web/auth">
|
<SessionProvider basePath="/api/web/auth">
|
||||||
<ClientIntlProvider
|
<ClientIntlProvider
|
||||||
defaultLocale={Lang.en}
|
defaultLocale={Lang.en}
|
||||||
locale={params.lang}
|
locale={lang}
|
||||||
messages={messages}
|
messages={messages}
|
||||||
>
|
>
|
||||||
<NuqsAdapter>
|
<NuqsAdapter>
|
||||||
|
|||||||
@@ -2,9 +2,7 @@ import { LoadingSpinner } from "@scandic-hotels/design-system/LoadingSpinner"
|
|||||||
|
|
||||||
import styles from "./page.module.css"
|
import styles from "./page.module.css"
|
||||||
|
|
||||||
import type { LangParams, PageArgs } from "@/types/params"
|
export default function Refresh() {
|
||||||
|
|
||||||
export default function Refresh({}: PageArgs<LangParams>) {
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.container}>
|
<div className={styles.container}>
|
||||||
<LoadingSpinner />
|
<LoadingSpinner />
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import type { NextRequest } from "next/server"
|
|||||||
|
|
||||||
export async function GET(
|
export async function GET(
|
||||||
request: NextRequest,
|
request: NextRequest,
|
||||||
props: { params: Promise<{ lang: string }> }
|
props: RouteContext<"/api/web/add-card-callback/[lang]">
|
||||||
) {
|
) {
|
||||||
const addCardLogger = createLogger("add-card")
|
const addCardLogger = createLogger("add-card")
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ export const revalidate = 28_800 // 8 hours
|
|||||||
|
|
||||||
export async function GET(
|
export async function GET(
|
||||||
_request: Request,
|
_request: Request,
|
||||||
{ params }: { params: Promise<{ country: string; city: string }> }
|
{ params }: RouteContext<"/api/web/destinations/[country]/[city]">
|
||||||
) {
|
) {
|
||||||
try {
|
try {
|
||||||
const { country: countryParam, city: cityParam } = await params
|
const { country: countryParam, city: cityParam } = await params
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ export const revalidate = 28_800 // 8 hours
|
|||||||
|
|
||||||
export async function GET(
|
export async function GET(
|
||||||
_request: Request,
|
_request: Request,
|
||||||
{ params }: { params: Promise<{ country: string }> }
|
{ params }: RouteContext<"/api/web/destinations/[country]">
|
||||||
) {
|
) {
|
||||||
try {
|
try {
|
||||||
const { country: countryParam } = await params
|
const { country: countryParam } = await params
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ export const dynamic = "force-dynamic"
|
|||||||
const sitemapLogger = createLogger("sitemap")
|
const sitemapLogger = createLogger("sitemap")
|
||||||
export async function GET(
|
export async function GET(
|
||||||
_request: NextRequest,
|
_request: NextRequest,
|
||||||
context: { params: Promise<{ sitemapId: string }> }
|
context: RouteContext<"/sitemap/[sitemapId]">
|
||||||
) {
|
) {
|
||||||
const params = await context.params
|
const params = await context.params
|
||||||
const sitemapId = params.sitemapId
|
const sitemapId = params.sitemapId
|
||||||
|
|||||||
@@ -73,7 +73,7 @@
|
|||||||
"md5": "^2.3.0",
|
"md5": "^2.3.0",
|
||||||
"motion": "^12.10.0",
|
"motion": "^12.10.0",
|
||||||
"nanoid": "^5.1.5",
|
"nanoid": "^5.1.5",
|
||||||
"next": "15.3.4",
|
"next": "^15.5.6",
|
||||||
"next-auth": "5.0.0-beta.29",
|
"next-auth": "5.0.0-beta.29",
|
||||||
"react": "19.1.0",
|
"react": "19.1.0",
|
||||||
"react-aria-components": "^1.8.0",
|
"react-aria-components": "^1.8.0",
|
||||||
|
|||||||
@@ -7,10 +7,6 @@ export type SearchParams<S = object> = {
|
|||||||
searchParams: Promise<S & { [key: string]: string }>
|
searchParams: Promise<S & { [key: string]: string }>
|
||||||
}
|
}
|
||||||
|
|
||||||
type Params<P = object> = {
|
|
||||||
params: Promise<P>
|
|
||||||
}
|
|
||||||
|
|
||||||
export type LangParams = {
|
export type LangParams = {
|
||||||
lang: Lang
|
lang: Lang
|
||||||
}
|
}
|
||||||
@@ -33,17 +29,6 @@ export type ContentTypeParams = {
|
|||||||
| PageContentTypeEnum.startPage
|
| PageContentTypeEnum.startPage
|
||||||
}
|
}
|
||||||
|
|
||||||
export type ContentTypeWebviewParams = {
|
|
||||||
contentType: "loyalty-page" | "account-page"
|
|
||||||
}
|
|
||||||
|
|
||||||
export type UIDParams = {
|
export type UIDParams = {
|
||||||
uid: string
|
uid: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export type LayoutArgs<P = undefined> = P extends undefined
|
|
||||||
? unknown
|
|
||||||
: Params<P>
|
|
||||||
|
|
||||||
export type PageArgs<P = undefined, S = undefined> = LayoutArgs<P> &
|
|
||||||
(S extends undefined ? unknown : SearchParams<S>)
|
|
||||||
|
|||||||
@@ -11,19 +11,11 @@ import { getTitle } from "./title"
|
|||||||
import type { Metadata } from "next"
|
import type { Metadata } from "next"
|
||||||
import type { AlternateURLs } from "next/dist/lib/metadata/types/alternative-urls-types"
|
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({
|
export async function generateMetadata({
|
||||||
searchParams,
|
searchParams,
|
||||||
}: PageArgs<
|
}: {
|
||||||
LangParams & ContentTypeParams & UIDParams,
|
searchParams: Promise<{ subpage?: string; filterFromUrl?: string }>
|
||||||
{ subpage?: string; filterFromUrl?: string }
|
}) {
|
||||||
>) {
|
|
||||||
const { subpage, filterFromUrl, ...otherSearchParams } = await searchParams
|
const { subpage, filterFromUrl, ...otherSearchParams } = await searchParams
|
||||||
// If there are other (real) search params, we don't want to index the page as this will
|
// If there are other (real) search params, we don't want to index the page as this will
|
||||||
// cause duplicate content issues.
|
// cause duplicate content issues.
|
||||||
@@ -55,7 +47,7 @@ export async function generateMetadata({
|
|||||||
return {
|
return {
|
||||||
...metadata,
|
...metadata,
|
||||||
robots: {
|
robots: {
|
||||||
...(metadata.robots ?? {}),
|
...metadata.robots,
|
||||||
index: isIndexable(metadata.robots?.index, alternates),
|
index: isIndexable(metadata.robots?.index, alternates),
|
||||||
follow: isIndexable(metadata.robots?.follow, alternates),
|
follow: isIndexable(metadata.robots?.follow, alternates),
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
"jiti": "^1.21.0",
|
"jiti": "^1.21.0",
|
||||||
"lint-staged": "^15.2.2",
|
"lint-staged": "^15.2.2",
|
||||||
"prettier": "^3.6.2",
|
"prettier": "^3.6.2",
|
||||||
"turbo": "^2.5.2"
|
"turbo": "^2.6.1"
|
||||||
},
|
},
|
||||||
"resolutions": {
|
"resolutions": {
|
||||||
"vite": "^6.3.5",
|
"vite": "^6.3.5",
|
||||||
|
|||||||
515
yarn.lock
515
yarn.lock
@@ -533,6 +533,15 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@esbuild/aix-ppc64@npm:0.25.0":
|
||||||
version: 0.25.0
|
version: 0.25.0
|
||||||
resolution: "@esbuild/aix-ppc64@npm:0.25.0"
|
resolution: "@esbuild/aix-ppc64@npm:0.25.0"
|
||||||
@@ -1031,6 +1040,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@img/sharp-darwin-arm64@npm:0.34.1":
|
||||||
version: 0.34.1
|
version: 0.34.1
|
||||||
resolution: "@img/sharp-darwin-arm64@npm:0.34.1"
|
resolution: "@img/sharp-darwin-arm64@npm:0.34.1"
|
||||||
@@ -1043,6 +1059,18 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@img/sharp-darwin-x64@npm:0.34.1":
|
||||||
version: 0.34.1
|
version: 0.34.1
|
||||||
resolution: "@img/sharp-darwin-x64@npm:0.34.1"
|
resolution: "@img/sharp-darwin-x64@npm:0.34.1"
|
||||||
@@ -1055,6 +1083,18 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@img/sharp-libvips-darwin-arm64@npm:1.1.0":
|
||||||
version: 1.1.0
|
version: 1.1.0
|
||||||
resolution: "@img/sharp-libvips-darwin-arm64@npm:1.1.0"
|
resolution: "@img/sharp-libvips-darwin-arm64@npm:1.1.0"
|
||||||
@@ -1062,6 +1102,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@img/sharp-libvips-darwin-x64@npm:1.1.0":
|
||||||
version: 1.1.0
|
version: 1.1.0
|
||||||
resolution: "@img/sharp-libvips-darwin-x64@npm:1.1.0"
|
resolution: "@img/sharp-libvips-darwin-x64@npm:1.1.0"
|
||||||
@@ -1069,6 +1116,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@img/sharp-libvips-linux-arm64@npm:1.1.0":
|
||||||
version: 1.1.0
|
version: 1.1.0
|
||||||
resolution: "@img/sharp-libvips-linux-arm64@npm:1.1.0"
|
resolution: "@img/sharp-libvips-linux-arm64@npm:1.1.0"
|
||||||
@@ -1076,6 +1130,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@img/sharp-libvips-linux-arm@npm:1.1.0":
|
||||||
version: 1.1.0
|
version: 1.1.0
|
||||||
resolution: "@img/sharp-libvips-linux-arm@npm:1.1.0"
|
resolution: "@img/sharp-libvips-linux-arm@npm:1.1.0"
|
||||||
@@ -1083,6 +1144,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@img/sharp-libvips-linux-ppc64@npm:1.1.0":
|
||||||
version: 1.1.0
|
version: 1.1.0
|
||||||
resolution: "@img/sharp-libvips-linux-ppc64@npm:1.1.0"
|
resolution: "@img/sharp-libvips-linux-ppc64@npm:1.1.0"
|
||||||
@@ -1090,6 +1158,20 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@img/sharp-libvips-linux-s390x@npm:1.1.0":
|
||||||
version: 1.1.0
|
version: 1.1.0
|
||||||
resolution: "@img/sharp-libvips-linux-s390x@npm:1.1.0"
|
resolution: "@img/sharp-libvips-linux-s390x@npm:1.1.0"
|
||||||
@@ -1097,6 +1179,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@img/sharp-libvips-linux-x64@npm:1.1.0":
|
||||||
version: 1.1.0
|
version: 1.1.0
|
||||||
resolution: "@img/sharp-libvips-linux-x64@npm:1.1.0"
|
resolution: "@img/sharp-libvips-linux-x64@npm:1.1.0"
|
||||||
@@ -1104,6 +1193,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@img/sharp-libvips-linuxmusl-arm64@npm:1.1.0":
|
||||||
version: 1.1.0
|
version: 1.1.0
|
||||||
resolution: "@img/sharp-libvips-linuxmusl-arm64@npm:1.1.0"
|
resolution: "@img/sharp-libvips-linuxmusl-arm64@npm:1.1.0"
|
||||||
@@ -1111,6 +1207,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@img/sharp-libvips-linuxmusl-x64@npm:1.1.0":
|
||||||
version: 1.1.0
|
version: 1.1.0
|
||||||
resolution: "@img/sharp-libvips-linuxmusl-x64@npm:1.1.0"
|
resolution: "@img/sharp-libvips-linuxmusl-x64@npm:1.1.0"
|
||||||
@@ -1118,6 +1221,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@img/sharp-linux-arm64@npm:0.34.1":
|
||||||
version: 0.34.1
|
version: 0.34.1
|
||||||
resolution: "@img/sharp-linux-arm64@npm:0.34.1"
|
resolution: "@img/sharp-linux-arm64@npm:0.34.1"
|
||||||
@@ -1130,6 +1240,18 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@img/sharp-linux-arm@npm:0.34.1":
|
||||||
version: 0.34.1
|
version: 0.34.1
|
||||||
resolution: "@img/sharp-linux-arm@npm:0.34.1"
|
resolution: "@img/sharp-linux-arm@npm:0.34.1"
|
||||||
@@ -1142,6 +1264,42 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@img/sharp-linux-s390x@npm:0.34.1":
|
||||||
version: 0.34.1
|
version: 0.34.1
|
||||||
resolution: "@img/sharp-linux-s390x@npm:0.34.1"
|
resolution: "@img/sharp-linux-s390x@npm:0.34.1"
|
||||||
@@ -1154,6 +1312,18 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@img/sharp-linux-x64@npm:0.34.1":
|
||||||
version: 0.34.1
|
version: 0.34.1
|
||||||
resolution: "@img/sharp-linux-x64@npm:0.34.1"
|
resolution: "@img/sharp-linux-x64@npm:0.34.1"
|
||||||
@@ -1166,6 +1336,18 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@img/sharp-linuxmusl-arm64@npm:0.34.1":
|
||||||
version: 0.34.1
|
version: 0.34.1
|
||||||
resolution: "@img/sharp-linuxmusl-arm64@npm:0.34.1"
|
resolution: "@img/sharp-linuxmusl-arm64@npm:0.34.1"
|
||||||
@@ -1178,6 +1360,18 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@img/sharp-linuxmusl-x64@npm:0.34.1":
|
||||||
version: 0.34.1
|
version: 0.34.1
|
||||||
resolution: "@img/sharp-linuxmusl-x64@npm:0.34.1"
|
resolution: "@img/sharp-linuxmusl-x64@npm:0.34.1"
|
||||||
@@ -1190,6 +1384,18 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@img/sharp-wasm32@npm:0.34.1":
|
||||||
version: 0.34.1
|
version: 0.34.1
|
||||||
resolution: "@img/sharp-wasm32@npm:0.34.1"
|
resolution: "@img/sharp-wasm32@npm:0.34.1"
|
||||||
@@ -1199,6 +1405,22 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@img/sharp-win32-ia32@npm:0.34.1":
|
||||||
version: 0.34.1
|
version: 0.34.1
|
||||||
resolution: "@img/sharp-win32-ia32@npm:0.34.1"
|
resolution: "@img/sharp-win32-ia32@npm:0.34.1"
|
||||||
@@ -1206,6 +1428,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@img/sharp-win32-x64@npm:0.34.1":
|
||||||
version: 0.34.1
|
version: 0.34.1
|
||||||
resolution: "@img/sharp-win32-x64@npm:0.34.1"
|
resolution: "@img/sharp-win32-x64@npm:0.34.1"
|
||||||
@@ -1213,6 +1442,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@internationalized/date@npm:^3.8.0":
|
||||||
version: 3.8.0
|
version: 3.8.0
|
||||||
resolution: "@internationalized/date@npm:3.8.0"
|
resolution: "@internationalized/date@npm:3.8.0"
|
||||||
@@ -1527,6 +1763,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@next/env@npm:^15.0.3":
|
||||||
version: 15.4.6
|
version: 15.4.6
|
||||||
resolution: "@next/env@npm:15.4.6"
|
resolution: "@next/env@npm:15.4.6"
|
||||||
@@ -1550,6 +1793,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@next/swc-darwin-x64@npm:15.3.4":
|
||||||
version: 15.3.4
|
version: 15.3.4
|
||||||
resolution: "@next/swc-darwin-x64@npm:15.3.4"
|
resolution: "@next/swc-darwin-x64@npm:15.3.4"
|
||||||
@@ -1557,6 +1807,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@next/swc-linux-arm64-gnu@npm:15.3.4":
|
||||||
version: 15.3.4
|
version: 15.3.4
|
||||||
resolution: "@next/swc-linux-arm64-gnu@npm:15.3.4"
|
resolution: "@next/swc-linux-arm64-gnu@npm:15.3.4"
|
||||||
@@ -1564,6 +1821,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@next/swc-linux-arm64-musl@npm:15.3.4":
|
||||||
version: 15.3.4
|
version: 15.3.4
|
||||||
resolution: "@next/swc-linux-arm64-musl@npm:15.3.4"
|
resolution: "@next/swc-linux-arm64-musl@npm:15.3.4"
|
||||||
@@ -1571,6 +1835,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@next/swc-linux-x64-gnu@npm:15.3.4":
|
||||||
version: 15.3.4
|
version: 15.3.4
|
||||||
resolution: "@next/swc-linux-x64-gnu@npm:15.3.4"
|
resolution: "@next/swc-linux-x64-gnu@npm:15.3.4"
|
||||||
@@ -1578,6 +1849,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@next/swc-linux-x64-musl@npm:15.3.4":
|
||||||
version: 15.3.4
|
version: 15.3.4
|
||||||
resolution: "@next/swc-linux-x64-musl@npm:15.3.4"
|
resolution: "@next/swc-linux-x64-musl@npm:15.3.4"
|
||||||
@@ -1585,6 +1863,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@next/swc-win32-arm64-msvc@npm:15.3.4":
|
||||||
version: 15.3.4
|
version: 15.3.4
|
||||||
resolution: "@next/swc-win32-arm64-msvc@npm:15.3.4"
|
resolution: "@next/swc-win32-arm64-msvc@npm:15.3.4"
|
||||||
@@ -1592,6 +1877,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@next/swc-win32-x64-msvc@npm:15.3.4":
|
||||||
version: 15.3.4
|
version: 15.3.4
|
||||||
resolution: "@next/swc-win32-x64-msvc@npm:15.3.4"
|
resolution: "@next/swc-win32-x64-msvc@npm:15.3.4"
|
||||||
@@ -1599,6 +1891,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@nodelib/fs.scandir@npm:2.1.5":
|
||||||
version: 2.1.5
|
version: 2.1.5
|
||||||
resolution: "@nodelib/fs.scandir@npm: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"
|
eslint-plugin-simple-import-sort: "npm:^12.1.1"
|
||||||
graphql-tag: "npm:^2.12.6"
|
graphql-tag: "npm:^2.12.6"
|
||||||
iron-session: "npm:^8.0.4"
|
iron-session: "npm:^8.0.4"
|
||||||
next: "npm:15.3.4"
|
next: "npm:^15.5.6"
|
||||||
next-auth: "npm:5.0.0-beta.29"
|
next-auth: "npm:5.0.0-beta.29"
|
||||||
react: "npm:^19.0.0"
|
react: "npm:^19.0.0"
|
||||||
react-aria-components: "npm:^1.8.0"
|
react-aria-components: "npm:^1.8.0"
|
||||||
@@ -5105,7 +5404,7 @@ __metadata:
|
|||||||
md5: "npm:^2.3.0"
|
md5: "npm:^2.3.0"
|
||||||
motion: "npm:^12.10.0"
|
motion: "npm:^12.10.0"
|
||||||
nanoid: "npm:^5.1.5"
|
nanoid: "npm:^5.1.5"
|
||||||
next: "npm:15.3.4"
|
next: "npm:^15.5.6"
|
||||||
next-auth: "npm:5.0.0-beta.29"
|
next-auth: "npm:5.0.0-beta.29"
|
||||||
react: "npm:19.1.0"
|
react: "npm:19.1.0"
|
||||||
react-aria-components: "npm:^1.8.0"
|
react-aria-components: "npm:^1.8.0"
|
||||||
@@ -8410,6 +8709,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"detect-node-es@npm:^1.1.0":
|
||||||
version: 1.1.0
|
version: 1.1.0
|
||||||
resolution: "detect-node-es@npm:1.1.0"
|
resolution: "detect-node-es@npm:1.1.0"
|
||||||
@@ -11966,7 +12272,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"next@npm:*, next@npm:15.3.4":
|
"next@npm:*":
|
||||||
version: 15.3.4
|
version: 15.3.4
|
||||||
resolution: "next@npm:15.3.4"
|
resolution: "next@npm:15.3.4"
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -12027,6 +12333,65 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"node-abort-controller@npm:^3.1.1":
|
||||||
version: 3.1.1
|
version: 3.1.1
|
||||||
resolution: "node-abort-controller@npm:3.1.1"
|
resolution: "node-abort-controller@npm:3.1.1"
|
||||||
@@ -13828,7 +14193,7 @@ __metadata:
|
|||||||
jiti: "npm:^1.21.0"
|
jiti: "npm:^1.21.0"
|
||||||
lint-staged: "npm:^15.2.2"
|
lint-staged: "npm:^15.2.2"
|
||||||
prettier: "npm:^3.6.2"
|
prettier: "npm:^3.6.2"
|
||||||
turbo: "npm:^2.5.2"
|
turbo: "npm:^2.6.1"
|
||||||
languageName: unknown
|
languageName: unknown
|
||||||
linkType: soft
|
linkType: soft
|
||||||
|
|
||||||
@@ -13871,7 +14236,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"semver@npm:^7.5.3":
|
"semver@npm:^7.5.3, semver@npm:^7.7.3":
|
||||||
version: 7.7.3
|
version: 7.7.3
|
||||||
resolution: "semver@npm:7.7.3"
|
resolution: "semver@npm:7.7.3"
|
||||||
bin:
|
bin:
|
||||||
@@ -14045,6 +14410,90 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"shebang-command@npm:^2.0.0":
|
||||||
version: 2.0.0
|
version: 2.0.0
|
||||||
resolution: "shebang-command@npm:2.0.0"
|
resolution: "shebang-command@npm:2.0.0"
|
||||||
@@ -14887,58 +15336,58 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"turbo-darwin-64@npm:2.5.2":
|
"turbo-darwin-64@npm:2.6.1":
|
||||||
version: 2.5.2
|
version: 2.6.1
|
||||||
resolution: "turbo-darwin-64@npm:2.5.2"
|
resolution: "turbo-darwin-64@npm:2.6.1"
|
||||||
conditions: os=darwin & cpu=x64
|
conditions: os=darwin & cpu=x64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"turbo-darwin-arm64@npm:2.5.2":
|
"turbo-darwin-arm64@npm:2.6.1":
|
||||||
version: 2.5.2
|
version: 2.6.1
|
||||||
resolution: "turbo-darwin-arm64@npm:2.5.2"
|
resolution: "turbo-darwin-arm64@npm:2.6.1"
|
||||||
conditions: os=darwin & cpu=arm64
|
conditions: os=darwin & cpu=arm64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"turbo-linux-64@npm:2.5.2":
|
"turbo-linux-64@npm:2.6.1":
|
||||||
version: 2.5.2
|
version: 2.6.1
|
||||||
resolution: "turbo-linux-64@npm:2.5.2"
|
resolution: "turbo-linux-64@npm:2.6.1"
|
||||||
conditions: os=linux & cpu=x64
|
conditions: os=linux & cpu=x64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"turbo-linux-arm64@npm:2.5.2":
|
"turbo-linux-arm64@npm:2.6.1":
|
||||||
version: 2.5.2
|
version: 2.6.1
|
||||||
resolution: "turbo-linux-arm64@npm:2.5.2"
|
resolution: "turbo-linux-arm64@npm:2.6.1"
|
||||||
conditions: os=linux & cpu=arm64
|
conditions: os=linux & cpu=arm64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"turbo-windows-64@npm:2.5.2":
|
"turbo-windows-64@npm:2.6.1":
|
||||||
version: 2.5.2
|
version: 2.6.1
|
||||||
resolution: "turbo-windows-64@npm:2.5.2"
|
resolution: "turbo-windows-64@npm:2.6.1"
|
||||||
conditions: os=win32 & cpu=x64
|
conditions: os=win32 & cpu=x64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"turbo-windows-arm64@npm:2.5.2":
|
"turbo-windows-arm64@npm:2.6.1":
|
||||||
version: 2.5.2
|
version: 2.6.1
|
||||||
resolution: "turbo-windows-arm64@npm:2.5.2"
|
resolution: "turbo-windows-arm64@npm:2.6.1"
|
||||||
conditions: os=win32 & cpu=arm64
|
conditions: os=win32 & cpu=arm64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"turbo@npm:^2.5.2":
|
"turbo@npm:^2.6.1":
|
||||||
version: 2.5.2
|
version: 2.6.1
|
||||||
resolution: "turbo@npm:2.5.2"
|
resolution: "turbo@npm:2.6.1"
|
||||||
dependencies:
|
dependencies:
|
||||||
turbo-darwin-64: "npm:2.5.2"
|
turbo-darwin-64: "npm:2.6.1"
|
||||||
turbo-darwin-arm64: "npm:2.5.2"
|
turbo-darwin-arm64: "npm:2.6.1"
|
||||||
turbo-linux-64: "npm:2.5.2"
|
turbo-linux-64: "npm:2.6.1"
|
||||||
turbo-linux-arm64: "npm:2.5.2"
|
turbo-linux-arm64: "npm:2.6.1"
|
||||||
turbo-windows-64: "npm:2.5.2"
|
turbo-windows-64: "npm:2.6.1"
|
||||||
turbo-windows-arm64: "npm:2.5.2"
|
turbo-windows-arm64: "npm:2.6.1"
|
||||||
dependenciesMeta:
|
dependenciesMeta:
|
||||||
turbo-darwin-64:
|
turbo-darwin-64:
|
||||||
optional: true
|
optional: true
|
||||||
@@ -14954,7 +15403,7 @@ __metadata:
|
|||||||
optional: true
|
optional: true
|
||||||
bin:
|
bin:
|
||||||
turbo: bin/turbo
|
turbo: bin/turbo
|
||||||
checksum: 10c0/3eed6eba8bace18ed767785c83cd572985214e79d267f3eb631b2c147e941203746b241869fe629776704d3e69c37da90c5356c3b9506e08c468c9cab52f120c
|
checksum: 10c0/9875f8d85c5e1b26fbf95dec77b91a1f05ee4545b754469c6ddabe55759289bef02a08693380439d4443db72003e576df30b5852cbfa0da703c08b6e84c557a5
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user