diff --git a/apps/web/__tests__/helpers.ts b/apps/web/__tests__/helpers.ts index b1b89be32554f7f6fc567d1ca575c6229d0e5442..c1f8420a6c3132e78878b844ef7698f7e5112283 100644 --- a/apps/web/__tests__/helpers.ts +++ b/apps/web/__tests__/helpers.ts @@ -1,10 +1,10 @@ import type { IncomingMessage, ServerResponse } from 'http' import { graphql } from 'msw' -import type { NextPageContext } from 'next' +import type { GetServerSidePropsContext } from 'next' export const graphqlLink = graphql.link('http://localhost:3000/api/graphql') -export const createPageContextMock = ({ locale = 'en', ...overrides }: Partial<NextPageContext> = {}) => { +export const createPageContextMock = ({ locale = 'en', ...overrides }: Partial<GetServerSidePropsContext> = {}) => { const writeMock = jest.fn() const setHeaderMock = jest.fn() // @ts-ignore @@ -14,7 +14,7 @@ export const createPageContextMock = ({ locale = 'en', ...overrides }: Partial<N end: jest.fn(), } - const context = { res, locale, ...overrides } as NextPageContext + const context = { res, locale, ...overrides } as GetServerSidePropsContext return { context, writeMock, setHeaderMock } } diff --git a/apps/web/__tests__/sitemap/insights.page.test.ts b/apps/web/__tests__/sitemap/insights.page.test.ts index 04777d4ad6b9408d2b1c1b4667a47c949dc046c7..9ec60e44aea148f9631503f668d8ed09960bb96c 100644 --- a/apps/web/__tests__/sitemap/insights.page.test.ts +++ b/apps/web/__tests__/sitemap/insights.page.test.ts @@ -1,6 +1,6 @@ import { HttpResponse } from 'msw' import { setupServer } from 'msw/node' -import { NextPageContext } from 'next' +import type { GetServerSidePropsContext } from 'next' import { createPageContextMock, graphqlLink } from '@holi/web/__tests__/helpers' import { getServerSideProps, insightsWithRelatedIdsQuery } from '@holi/web/pages/sitemap/insights/[page]' @@ -226,7 +226,7 @@ describe('Insights sitemap page', () => { it('should render sitemap for paginated insights for german locale', async () => { const { context, writeMock } = createPageContextMock({ query: { page: '0' }, locale: 'de' }) - await getServerSideProps(context as NextPageContext) + await getServerSideProps(context as GetServerSidePropsContext) const response = writeMock.mock.lastCall[0] expect(response).toMatchInlineSnapshot(` @@ -405,7 +405,7 @@ describe('Insights sitemap page', () => { it('should set correct content type', async () => { const { context, setHeaderMock } = createPageContextMock({ query: { page: '0' } }) - await getServerSideProps(context as NextPageContext) + await getServerSideProps(context as GetServerSidePropsContext) expect(setHeaderMock).toHaveBeenCalledWith('Content-Type', 'text/xml') }) diff --git a/apps/web/__tests__/sitemap/insights.xml.test.ts b/apps/web/__tests__/sitemap/insights.xml.test.ts index 8747e9bd2008c3e6153ee09cdb5893f361bbad4f..d576ea531f9816558aa8aad6e8edc1321957f47a 100644 --- a/apps/web/__tests__/sitemap/insights.xml.test.ts +++ b/apps/web/__tests__/sitemap/insights.xml.test.ts @@ -1,6 +1,6 @@ import { HttpResponse } from 'msw' import { setupServer } from 'msw/node' -import { NextPageContext } from 'next' +import type { GetServerSidePropsContext } from 'next' import { createPageContextMock, graphqlLink } from '@holi/web/__tests__/helpers' import { getServerSideProps, insightsCountQuery } from '@holi/web/pages/sitemap/insights.xml' @@ -51,7 +51,7 @@ describe('Insights sitemap index', () => { it('should render sitemap index for insights for german locale', async () => { const { context, writeMock } = createPageContextMock({ locale: 'de' }) - await getServerSideProps(context as NextPageContext) + await getServerSideProps(context as GetServerSidePropsContext) const response = writeMock.mock.lastCall[0] expect(response).toMatchInlineSnapshot(` @@ -71,7 +71,7 @@ describe('Insights sitemap index', () => { it('should set correct content type', async () => { const { context, setHeaderMock } = createPageContextMock() - await getServerSideProps(context as NextPageContext) + await getServerSideProps(context as GetServerSidePropsContext) expect(setHeaderMock).toHaveBeenCalledWith('Content-Type', 'text/xml') }) diff --git a/apps/web/__tests__/sitemap/sitemap.xml.test.ts b/apps/web/__tests__/sitemap/sitemap.xml.test.ts index 929ebf3901ae1a538c4a77d47b19e5484a72a6e5..0680e0036ab3f2d7479fc3ee5e96fdf657d98d4e 100644 --- a/apps/web/__tests__/sitemap/sitemap.xml.test.ts +++ b/apps/web/__tests__/sitemap/sitemap.xml.test.ts @@ -1,4 +1,4 @@ -import { NextPageContext } from 'next' +import type { GetServerSidePropsContext } from 'next' import { createPageContextMock } from '@holi/web/__tests__/helpers' import { getServerSideProps } from '@holi/web/pages/sitemap.xml' @@ -37,7 +37,7 @@ describe('Root sitemap', () => { it('should set correct content type', async () => { const { context, setHeaderMock } = createPageContextMock() - await getServerSideProps(context as NextPageContext) + await getServerSideProps(context as GetServerSidePropsContext) expect(setHeaderMock).toHaveBeenCalledWith('Content-Type', 'text/xml') }) diff --git a/apps/web/__tests__/sitemap/static.xml.test.ts b/apps/web/__tests__/sitemap/static.xml.test.ts index 266e91404fa0c2de13310a60326c8a41673128f4..fd0177f35e18dc1b711f12105e71daf9003392ae 100644 --- a/apps/web/__tests__/sitemap/static.xml.test.ts +++ b/apps/web/__tests__/sitemap/static.xml.test.ts @@ -1,5 +1,5 @@ import { setupServer } from 'msw/node' -import type { NextPageContext } from 'next' +import type { GetServerSidePropsContext } from 'next' import { createPageContextMock } from '@holi/web/__tests__/helpers' import { getServerSideProps } from '@holi/web/pages/sitemap/static.xml' @@ -130,7 +130,7 @@ describe('Static sitemap index', () => { it('should render sitemap index with static urls for german locale', async () => { const { context, writeMock } = createPageContextMock({ locale: 'de' }) - await getServerSideProps(context as NextPageContext) + await getServerSideProps(context as GetServerSidePropsContext) const response = writeMock.mock.lastCall[0] expect(response).toMatchInlineSnapshot(` @@ -240,7 +240,7 @@ describe('Static sitemap index', () => { it('should set correct content type', async () => { const { context, setHeaderMock } = createPageContextMock() - await getServerSideProps(context as NextPageContext) + await getServerSideProps(context as GetServerSidePropsContext) expect(setHeaderMock).toHaveBeenCalledWith('Content-Type', 'text/xml') }) diff --git a/apps/web/helpers/__tests__/createServerSideProps.test.ts b/apps/web/helpers/__tests__/createServerSideProps.test.ts index 0614ee2e22e9d1153d53727e6b82dd56477aa081..72ff38c9c287aac4c27654bb1c31d132ea3d7c7a 100644 --- a/apps/web/helpers/__tests__/createServerSideProps.test.ts +++ b/apps/web/helpers/__tests__/createServerSideProps.test.ts @@ -5,11 +5,11 @@ import type { WebApolloClientOptions } from '@holi/api/graphql/client' import { createServerSideProps, createServerSidePropsWithLoggedInUserGuard, - type PageContext, } from '@holi/web/helpers/createServerSideProps' import { HoliPageProps } from '@holi/web/types' import { createUUID } from '@holi/core/helpers' import { GUEST_MODE_COOKIE_NAME } from '@holi/core/screens/onboarding/helpers/guestModeStorage.web' +import type { GetServerSidePropsContext } from 'next' const mockLoadTranslations = jest.fn() jest.mock('ni18n', () => ({ @@ -34,7 +34,7 @@ describe('createServerSideProps', () => { accept: 'application/json', 'accept-encoding': 'gzip', } - const context = { req: { url: '', headers } } as unknown as PageContext + const context = { req: { url: '', headers } } as unknown as GetServerSidePropsContext const mockedTranslations = { __ni18n_server__: { resources: {}, ns: [] } } const mockPosthogBootstrapValues = { featureFlags: { DONATIONS: 'on' }, @@ -89,7 +89,10 @@ describe('createServerSideProps', () => { } type UserType = 'loggedIn' | 'incompleteAccount' | 'guest' | 'newUser' | 'bot' - const setupAndCreateContextForUser = (userContextType: UserType, requestOverrides = {}): PageContext => { + const setupAndCreateContextForUser = ( + userContextType: UserType, + requestOverrides = {} + ): GetServerSidePropsContext => { const userData = userContextType === 'loggedIn' ? { id: 'test-user-id', identity: 'ada', firstName: 'Ada' } @@ -102,7 +105,7 @@ describe('createServerSideProps', () => { }) } const cookies = userContextType === 'guest' ? { [GUEST_MODE_COOKIE_NAME]: 'true' } : {} - const headers = userContextType === 'bot' ? { 'user-agent': 'bot' } : {} + const headers = userContextType === 'bot' ? { 'user-agent': 'Googlebot/2.1' } : {} return { ...context, @@ -112,7 +115,7 @@ describe('createServerSideProps', () => { cookies, headers, }, - } as unknown as PageContext + } as unknown as GetServerSidePropsContext } beforeEach(() => { @@ -133,7 +136,7 @@ describe('createServerSideProps', () => { it('should add valid locale to page props', async () => { const props = await createServerSideProps({ req: { url: '', headers: { 'accept-language': 'default' } }, - } as unknown as PageContext) + } as unknown as GetServerSidePropsContext) expect(new HoliPageProps(props).props.locale).toEqual('en') }) @@ -278,7 +281,7 @@ describe('createServerSideProps', () => { host: 'localhost:3000', 'x-forwarded-proto': 'http', } - const context = { req: { url: '', headers } } as unknown as PageContext + const context = { req: { url: '', headers } } as unknown as GetServerSidePropsContext const props = await createServerSideProps(context) diff --git a/apps/web/helpers/createServerSideProps.ts b/apps/web/helpers/createServerSideProps.ts index 05559bdf7339a0f302299096ac9411ab57c950b0..8b56bb253af11d984ee649ef3f79790a92d4a9c0 100644 --- a/apps/web/helpers/createServerSideProps.ts +++ b/apps/web/helpers/createServerSideProps.ts @@ -1,5 +1,5 @@ import type { QueryOptions } from '@apollo/client' -import type { GetServerSidePropsResult, NextPageContext } from 'next' +import type { GetServerSidePropsContext, GetServerSidePropsResult } from 'next' import { initializeWebApolloClient } from '@holi/api/graphql/client' import { authenticatedUserV2Query } from '@holi/core/domain/shared/queries' @@ -14,21 +14,20 @@ import { coerceUUIDParams } from '@holi/web/helpers/coerceUUIDParams' import { GUEST_MODE_COOKIE_NAME } from '@holi/core/screens/onboarding/helpers/guestModeStorage.web' import { isAccountComplete } from '@holi/core/screens/onboarding/helpers/isAccountComplete' import type { User } from '@holi/core/domain/shared/types' +import type { NextApiRequestCookies } from 'next/dist/server/api-utils' interface SkippableQueryOptions extends QueryOptions { skip?: boolean } -type Cookies = { [key: string]: string } -type PageContextRequest = NextPageContext['req'] & { cookies: Cookies } -export type PageContext = Omit<NextPageContext, 'req'> & { req: PageContextRequest } +type PageContextRequest = GetServerSidePropsContext['req'] // List of user agents substrings used by search engine crawlers and link preview bots (python-requests is used by Okuna) const botUserAgents = ['bot', 'crawl', 'slurp', 'spider', 'facebookexternalhit', 'whatsapp', 'python-requests'] const isBot = (headers: PageContextRequest['headers'] = {}) => botUserAgents.some((userAgent) => headers['user-agent']?.toLowerCase().includes(userAgent)) -const isGuestUser = (cookies: Cookies = {}) => !!cookies[GUEST_MODE_COOKIE_NAME] +const isGuestUser = (cookies: NextApiRequestCookies = {}) => !!cookies[GUEST_MODE_COOKIE_NAME] const createUserPageProps = (user: User | undefined, req: PageContextRequest): UserPageProps => { if (user?.id) { @@ -45,7 +44,7 @@ const createUserPageProps = (user: User | undefined, req: PageContextRequest): U } export const createServerSideProps = async ( - { req, locale: nextJsLocale }: PageContext, + { req, locale: nextJsLocale }: GetServerSidePropsContext, queries: SkippableQueryOptions[] = [], customProps?: Partial<CustomProps> ): Promise<GetServerSidePropsResult<Partial<NextJSPageProps>>> => { diff --git a/apps/web/pages/apps/challenges.tsx b/apps/web/pages/apps/challenges.tsx index cf3c10d2a0685078b8e87ac58896c449cce34f9e..28dd09555a8bf05441e4c1797827bb370f577a3c 100644 --- a/apps/web/pages/apps/challenges.tsx +++ b/apps/web/pages/apps/challenges.tsx @@ -1,4 +1,4 @@ -import { NextPage, NextPageContext } from 'next' +import type { NextPage, GetServerSidePropsContext } from 'next' import React from 'react' import { createExternalChallengesPath } from '@holi-apps/challenges/helpers/navigation' @@ -13,7 +13,7 @@ const getSinglePath = (path: string | string[] | undefined) => { return path } -export const getServerSideProps = async (context: NextPageContext) => { +export const getServerSideProps = async (context: GetServerSidePropsContext) => { const { path } = context.query const singlePath = getSinglePath(path) diff --git a/apps/web/pages/donations/[projectId].tsx b/apps/web/pages/donations/[projectId].tsx index fe3a3928c5ec219c86a1e381c2754ea9e0e7b578..53925ffdda2e8e3e44ff06f619beb1904a2497a9 100644 --- a/apps/web/pages/donations/[projectId].tsx +++ b/apps/web/pages/donations/[projectId].tsx @@ -1,5 +1,5 @@ -import { NextPageContext } from 'next' -import React, { ReactElement } from 'react' +import type { GetServerSidePropsContext } from 'next' +import React, { type ReactElement } from 'react' import { createServerSideProps } from '@holi/web/helpers/createServerSideProps' import { AppLayout } from '@holi/web/layout/NavigationLayoutDonationsApp' @@ -12,7 +12,7 @@ const DonationsAppProjectDetailPage: NextPageWithLayout = () => <DonationsAppPro DonationsAppProjectDetailPage.getLayout = (page: ReactElement) => <AppLayout>{page}</AppLayout> -export const getServerSideProps = async (context: NextPageContext) => { +export const getServerSideProps = async (context: GetServerSidePropsContext) => { const { projectId } = context.query const queries = [ diff --git a/apps/web/pages/donations/index.tsx b/apps/web/pages/donations/index.tsx index b1f6694946a4d460ace8fd52e4f26ad26d84a26a..b38b6998dfa1ff9387984e472861a2c3badb2943 100644 --- a/apps/web/pages/donations/index.tsx +++ b/apps/web/pages/donations/index.tsx @@ -1,5 +1,5 @@ -import { NextPageContext } from 'next' -import React, { ReactElement } from 'react' +import type { GetServerSidePropsContext } from 'next' +import React, { type ReactElement } from 'react' import { createServerSideProps } from '@holi/web/helpers/createServerSideProps' import { AppLayout } from '@holi/web/layout/NavigationLayoutDonationsApp' @@ -16,7 +16,7 @@ export const paths = { de: '/spenden', } -export const getServerSideProps = async (context: NextPageContext) => +export const getServerSideProps = async (context: GetServerSidePropsContext) => createServerSideProps(context, [], { seoTitle: 'seo.h1.donations', urls: paths, diff --git a/apps/web/pages/feed-posts/[idOrSlug]/index.tsx b/apps/web/pages/feed-posts/[idOrSlug]/index.tsx index a857b7904f45a32b70e648793afdb7b562f32249..8850062b4c5cd8ad1a323242a60e7e05888641a2 100644 --- a/apps/web/pages/feed-posts/[idOrSlug]/index.tsx +++ b/apps/web/pages/feed-posts/[idOrSlug]/index.tsx @@ -1,10 +1,10 @@ -import type { NextPageContext } from 'next' +import type { GetServerSidePropsContext } from 'next' import PostDetailsPage from '@holi/core/screens/individualPosts/PostDetailsPage' import { postQuery } from '@holi/core/screens/individualPosts/queries' import { createServerSideProps } from '@holi/web/helpers/createServerSideProps' -export const getServerSideProps = async (context: NextPageContext) => { +export const getServerSideProps = async (context: GetServerSidePropsContext) => { const { idOrSlug } = context.query const queries = [ diff --git a/apps/web/pages/index.tsx b/apps/web/pages/index.tsx index 2c71c6a68b2508c7db5a162c1d86bcee75b2fc4d..7f0b49bc7b6e1f9282e183ad024d9de26ea8ff33 100644 --- a/apps/web/pages/index.tsx +++ b/apps/web/pages/index.tsx @@ -1,12 +1,12 @@ -import type { NextPage } from 'next' +import type { GetServerSidePropsContext, NextPage } from 'next' import React from 'react' -import { createServerSideProps, type PageContext } from '@holi/web/helpers/createServerSideProps' +import { createServerSideProps } from '@holi/web/helpers/createServerSideProps' import HomeFeed from '@holi/core/screens/homeFeed/HomeFeed' const HomeFeedPage: NextPage = () => <HomeFeed /> -export const getServerSideProps = async (context: PageContext) => +export const getServerSideProps = async (context: GetServerSidePropsContext) => createServerSideProps(context, [], { seoTitle: 'seo.h1.home', redirectIfNewUser: '/onboarding', diff --git a/apps/web/pages/insights/[insightId]/discussions/[discussionId]/index.tsx b/apps/web/pages/insights/[insightId]/discussions/[discussionId]/index.tsx index 259cb3bd2ab91c1e2465013f2f852089c2abd2fd..d6f785856892caebdf4dce3d73e269c3009ffc60 100644 --- a/apps/web/pages/insights/[insightId]/discussions/[discussionId]/index.tsx +++ b/apps/web/pages/insights/[insightId]/discussions/[discussionId]/index.tsx @@ -1,4 +1,4 @@ -import { NextPageContext } from 'next' +import type { GetServerSidePropsContext } from 'next' import React from 'react' import DiscussionDetailPage from '@holi/core/screens/insights/discussions/DiscussionDetailPage' @@ -7,7 +7,7 @@ import { createServerSideProps } from '@holi/web/helpers/createServerSideProps' const DiscussionPage = () => <DiscussionDetailPage /> -export const getServerSideProps = async (context: NextPageContext) => { +export const getServerSideProps = async (context: GetServerSidePropsContext) => { const { discussionId } = context.query const queries = [ diff --git a/apps/web/pages/insights/[insightId]/index.tsx b/apps/web/pages/insights/[insightId]/index.tsx index a43688db98212b373833fc6803b0745b941af6ab..5aea9d17597d5e20d7201801b2cd60584233fd8b 100644 --- a/apps/web/pages/insights/[insightId]/index.tsx +++ b/apps/web/pages/insights/[insightId]/index.tsx @@ -1,4 +1,4 @@ -import type { NextPage, NextPageContext } from 'next' +import type { NextPage, GetServerSidePropsContext } from 'next' import React from 'react' import InsightDetailPage from '@holi/core/screens/insights/InsightDetailPage' @@ -7,7 +7,7 @@ import { createServerSideProps } from '@holi/web/helpers/createServerSideProps' const InsightPage: NextPage = () => <InsightDetailPage /> -export const getServerSideProps = async (context: NextPageContext) => { +export const getServerSideProps = async (context: GetServerSidePropsContext) => { const { insightId } = context.query const queries = [ diff --git a/apps/web/pages/insights/[insightId]/initiatives/[initiativeId]/index.tsx b/apps/web/pages/insights/[insightId]/initiatives/[initiativeId]/index.tsx index ff8c8fa73bb81f116441dbf5bd5aad05c23bfd18..b24fcec676cb21860805fcae886bf3143c17cee7 100644 --- a/apps/web/pages/insights/[insightId]/initiatives/[initiativeId]/index.tsx +++ b/apps/web/pages/insights/[insightId]/initiatives/[initiativeId]/index.tsx @@ -1,4 +1,4 @@ -import type { NextPageContext } from 'next' +import type { GetServerSidePropsContext } from 'next' import React from 'react' import InitiativeDetailPage from '@holi/core/screens/insights/initiatives/InitiativeDetailPage' @@ -7,7 +7,7 @@ import { createServerSideProps } from '@holi/web/helpers/createServerSideProps' const InitiativePage = () => <InitiativeDetailPage /> -export const getServerSideProps = async (context: NextPageContext) => { +export const getServerSideProps = async (context: GetServerSidePropsContext) => { const { insightId, initiativeId } = context.query const queries = [ diff --git a/apps/web/pages/insights/[insightId]/quotes/[quoteId]/index.tsx b/apps/web/pages/insights/[insightId]/quotes/[quoteId]/index.tsx index 25ced24436eb22e5f8185a98ecda3014fbac3d20..cd90fe6fab96e29e58e3eee7b278b48e35c95e19 100644 --- a/apps/web/pages/insights/[insightId]/quotes/[quoteId]/index.tsx +++ b/apps/web/pages/insights/[insightId]/quotes/[quoteId]/index.tsx @@ -1,4 +1,4 @@ -import { NextPage, NextPageContext } from 'next' +import type { NextPage, GetServerSidePropsContext } from 'next' import React from 'react' import { insightWithQuoteById } from '@holi/core/screens/insights/queries' @@ -7,7 +7,7 @@ import { createServerSideProps } from '@holi/web/helpers/createServerSideProps' const InsightQuotePage: NextPage = () => <QuoteDetailPage /> -export const getServerSideProps = async (context: NextPageContext) => { +export const getServerSideProps = async (context: GetServerSidePropsContext) => { const { insightId, quoteId } = context.query const queries = [ diff --git a/apps/web/pages/insights/[insightId]/recommendations/[recommendationId]/index.tsx b/apps/web/pages/insights/[insightId]/recommendations/[recommendationId]/index.tsx index 7c553e1f442d309872f00ccdbf148b48621dc792..86da472fcc1ac1d0d54c309ced0f8911865f3ac6 100644 --- a/apps/web/pages/insights/[insightId]/recommendations/[recommendationId]/index.tsx +++ b/apps/web/pages/insights/[insightId]/recommendations/[recommendationId]/index.tsx @@ -1,4 +1,4 @@ -import type { NextPageContext } from 'next' +import type { GetServerSidePropsContext } from 'next' import React from 'react' import { insightWithRecommendation } from '@holi/core/screens/insights/queries' @@ -7,7 +7,7 @@ import { createServerSideProps } from '@holi/web/helpers/createServerSideProps' const RecommendationPage = () => <RecommendationDetailPage /> -export const getServerSideProps = async (context: NextPageContext) => { +export const getServerSideProps = async (context: GetServerSidePropsContext) => { const { insightId, recommendationId } = context.query const queries = [ diff --git a/apps/web/pages/onboarding/index.tsx b/apps/web/pages/onboarding/index.tsx index 9924a82f5a58b35ad5a2c31b5604ab6ab87fdd3b..9630c76d8eabb5250e37eea2cd7aa555262aebb7 100644 --- a/apps/web/pages/onboarding/index.tsx +++ b/apps/web/pages/onboarding/index.tsx @@ -1,4 +1,4 @@ -import type { NextPage, NextPageContext } from 'next' +import type { NextPage, GetServerSidePropsContext } from 'next' import React from 'react' import Onboarding from '@holi/core/screens/onboarding/Onboarding' @@ -6,7 +6,7 @@ import { createServerSideProps } from '@holi/web/helpers/createServerSideProps' const OnboardingPage: NextPage = () => <Onboarding /> -export const getServerSideProps = async (context: NextPageContext) => +export const getServerSideProps = async (context: GetServerSidePropsContext) => createServerSideProps(context, [], { redirectIfLoggedIn: '/', }) diff --git a/apps/web/pages/posts/[postId]/index.tsx b/apps/web/pages/posts/[postId]/index.tsx index 628824a3a76ff074b0bc8174e322bb5b2b4e0228..37dd2ad40f4034da70d57f0ab489c191ee3dba89 100644 --- a/apps/web/pages/posts/[postId]/index.tsx +++ b/apps/web/pages/posts/[postId]/index.tsx @@ -1,4 +1,4 @@ -import { NextPage, NextPageContext } from 'next' +import type { NextPage, GetServerSidePropsContext } from 'next' import React from 'react' import PostDetailPage from '@holi/core/screens/posts/PostDetailPage' @@ -7,7 +7,7 @@ import { createServerSideProps } from '@holi/web/helpers/createServerSideProps' const PostPage: NextPage = () => <PostDetailPage /> -export const getServerSideProps = async (context: NextPageContext) => { +export const getServerSideProps = async (context: GetServerSidePropsContext) => { const { postId } = context.query const queries = [ diff --git a/apps/web/pages/profile/[userId].tsx b/apps/web/pages/profile/[userId].tsx index 2afad83ed2307f71e49c6d9874228d6f2c60b45c..a50a332d8bc248125aeaa1c9dee27129d6aedb35 100644 --- a/apps/web/pages/profile/[userId].tsx +++ b/apps/web/pages/profile/[userId].tsx @@ -1,4 +1,4 @@ -import { NextPage, NextPageContext } from 'next' +import type { NextPage, GetServerSidePropsContext } from 'next' import React from 'react' import { userByIdQuery } from '@holi/core/domain/shared/queries' @@ -7,7 +7,7 @@ import { createServerSideProps } from '@holi/web/helpers/createServerSideProps' const UserProfilePage: NextPage = () => <UserProfile /> -export const getServerSideProps = async (context: NextPageContext) => { +export const getServerSideProps = async (context: GetServerSidePropsContext) => { const { userId } = context.query const queries = [ diff --git a/apps/web/pages/sitemap.xml.ts b/apps/web/pages/sitemap.xml.ts index 861aed959de8a4d9965929ba25e3b8b320c4ed4b..321b6f80743b9ff8be30551c4ea92b602e44808a 100644 --- a/apps/web/pages/sitemap.xml.ts +++ b/apps/web/pages/sitemap.xml.ts @@ -1,4 +1,4 @@ -import type { NextPageContext } from 'next' +import type { GetServerSidePropsContext } from 'next' import { locales } from '@holi/core/i18n/locales.cjs' import { getOrigin } from '@holi/web/helpers/getOrigin' @@ -10,11 +10,11 @@ const SiteMap = () => { const sitemapIndexUrls = ['/sitemap/static', '/sitemap/insights'] -export const getServerSideProps = async ({ req, res }: NextPageContext) => { +export const getServerSideProps = async ({ req, res }: GetServerSidePropsContext) => { const origin = getOrigin(req) const sitemap = generateSitemapIndex( origin, - locales.map((locale) => sitemapIndexUrls.map((url) => `/${locale}${url}`)).flat() + locales.flatMap((locale) => sitemapIndexUrls.map((url) => `/${locale}${url}`)) ) if (res) { diff --git a/apps/web/pages/sitemap/insights.xml.ts b/apps/web/pages/sitemap/insights.xml.ts index 82f8b55fe80553d7d8d4ca93bb3e7121482fe7e7..22b5631a7dae2dd243226d394c0fc4f410296b22 100644 --- a/apps/web/pages/sitemap/insights.xml.ts +++ b/apps/web/pages/sitemap/insights.xml.ts @@ -1,5 +1,5 @@ import { gql } from '@apollo/client/core' -import type { NextPageContext } from 'next' +import type { GetServerSidePropsContext } from 'next' import pino from 'pino' import { initializeWebApolloClient } from '@holi/api/graphql/client' @@ -29,7 +29,7 @@ const InsightsSiteMapIndex = () => { // Content is written to response in getServerSideProps } -export const getServerSideProps = async ({ req, res, locale }: NextPageContext) => { +export const getServerSideProps = async ({ req, res, locale }: GetServerSidePropsContext) => { const prefix = getUrlPrefix(req, locale) const client = initializeWebApolloClient({ locale }) const totalInsightsCount = await client diff --git a/apps/web/pages/sitemap/insights/[page].ts b/apps/web/pages/sitemap/insights/[page].ts index ffccabf17575b9b2fc63267464d5aff6eb8aa8f6..7dce2fa26300a89b1dc0895177fb8e5972b7cb37 100644 --- a/apps/web/pages/sitemap/insights/[page].ts +++ b/apps/web/pages/sitemap/insights/[page].ts @@ -1,9 +1,9 @@ import { gql } from '@apollo/client/core' -import type { NextPageContext } from 'next' +import type { GetServerSidePropsContext } from 'next' import pino from 'pino' import { initializeWebApolloClient } from '@holi/api/graphql/client' -import { Insight } from '@holi/api/graphql/graphql-codegen' +import type { Insight } from '@holi/api/graphql/graphql-codegen' import { generateSitemapUrlSet, getUrlPrefix } from '@holi/web/helpers/sitemap' import { PAGE_SIZE } from '@holi/web/pages/sitemap/insights.xml' @@ -51,16 +51,16 @@ const asNum = (param: string | string[] | undefined) => { return 0 } if (Array.isArray(param)) { - return param.length ? parseInt(param[0]) : 0 + return param.length ? Number.parseInt(param[0]) : 0 } - return parseInt(param) + return Number.parseInt(param) } const InsightSiteMap = () => { // Content is written to response in getServerSideProps } -export const getServerSideProps = async ({ req, res, query, locale }: NextPageContext) => { +export const getServerSideProps = async ({ req, res, query, locale }: GetServerSidePropsContext) => { const { page } = query const prefix = getUrlPrefix(req, locale) const client = initializeWebApolloClient({ locale }) @@ -77,7 +77,7 @@ export const getServerSideProps = async ({ req, res, query, locale }: NextPageCo const sitemap = generateSitemapUrlSet( prefix, - insights.map((insight: Insight) => createEntriesForInsight(insight)).flat() + insights.flatMap((insight: Insight) => createEntriesForInsight(insight)) ) if (res) { diff --git a/apps/web/pages/sitemap/static.xml.ts b/apps/web/pages/sitemap/static.xml.ts index ffeac505f88f7466db56ea39a3f0f1f6515c1c62..7469f316f6bb7384d0fbf8e5d9149da169befed3 100644 --- a/apps/web/pages/sitemap/static.xml.ts +++ b/apps/web/pages/sitemap/static.xml.ts @@ -1,4 +1,4 @@ -import type { NextPageContext } from 'next' +import type { GetServerSidePropsContext } from 'next' import { defaultLocale } from '@holi/core/i18n/locales.cjs' import { generateSitemapUrlSet, getUrlPrefix } from '@holi/web/helpers/sitemap' import { paths as donationPaths } from '@holi/web/pages/donations' @@ -33,7 +33,7 @@ const StaticSitemapIndex = () => { // Content is written to response in getServerSideProps } -export const getServerSideProps = async ({ req, res, locale }: NextPageContext) => { +export const getServerSideProps = async ({ req, res, locale }: GetServerSidePropsContext) => { const prefix = getUrlPrefix(req, locale) const sitemap = generateSitemapUrlSet(prefix, createSitemapUrls(locale)) diff --git a/apps/web/pages/spaces/[spaceIdOrName]/appointments/[idOrSlug]/index.tsx b/apps/web/pages/spaces/[spaceIdOrName]/appointments/[idOrSlug]/index.tsx index a7c4f6539f43c0c86237449d403ca325c6247a1c..52beeb01fd18e0e90732b1c4bb4a9c435fd4d887 100644 --- a/apps/web/pages/spaces/[spaceIdOrName]/appointments/[idOrSlug]/index.tsx +++ b/apps/web/pages/spaces/[spaceIdOrName]/appointments/[idOrSlug]/index.tsx @@ -1,4 +1,4 @@ -import { NextPage, NextPageContext } from 'next' +import type { NextPage, GetServerSidePropsContext } from 'next' import React from 'react' import { appointmentByIdOrSlugQuery } from '@holi/core/screens/appointments/queries' @@ -7,7 +7,7 @@ import { createServerSideProps } from '@holi/web/helpers/createServerSideProps' const AppointmentDetailsPage: NextPage = () => <AppointmentDetails /> -export const getServerSideProps = async (context: NextPageContext) => { +export const getServerSideProps = async (context: GetServerSidePropsContext) => { const { idOrSlug } = context.query const queries = [ diff --git a/apps/web/pages/spaces/[spaceIdOrName]/appointments/index.tsx b/apps/web/pages/spaces/[spaceIdOrName]/appointments/index.tsx index a4e60a75ef1b38f6a1bdae77b1c9c6d53598f6c6..5358c1dea839dea08c02cca0d0e1243ac983909f 100644 --- a/apps/web/pages/spaces/[spaceIdOrName]/appointments/index.tsx +++ b/apps/web/pages/spaces/[spaceIdOrName]/appointments/index.tsx @@ -1,4 +1,4 @@ -import { NextPage, NextPageContext } from 'next' +import type { NextPage, GetServerSidePropsContext } from 'next' import React from 'react' import SpaceAppointments from '@holi/core/screens/spaces/appointments/SpaceAppointments' @@ -7,7 +7,7 @@ import { createServerSideProps } from '@holi/web/helpers/createServerSideProps' const SpaceAppointmentsPage: NextPage = () => <SpaceAppointments /> -export const getServerSideProps = async (context: NextPageContext) => { +export const getServerSideProps = async (context: GetServerSidePropsContext) => { const { spaceIdOrName } = context.query const queries = [ diff --git a/apps/web/pages/spaces/[spaceIdOrName]/index.tsx b/apps/web/pages/spaces/[spaceIdOrName]/index.tsx index 1148b50d6120e688bf876932f7e41c1d597d0924..01552aa47b415b1cf642c83406251dde68c9a0a5 100644 --- a/apps/web/pages/spaces/[spaceIdOrName]/index.tsx +++ b/apps/web/pages/spaces/[spaceIdOrName]/index.tsx @@ -1,4 +1,4 @@ -import { NextPage, NextPageContext } from 'next' +import type { NextPage, GetServerSidePropsContext } from 'next' import React from 'react' import SpaceDetails from '@holi/core/screens/spaces/details/SpaceDetails' @@ -7,7 +7,7 @@ import { createServerSideProps } from '@holi/web/helpers/createServerSideProps' const SpaceDetailsPage: NextPage = () => <SpaceDetails /> -export const getServerSideProps = async (context: NextPageContext) => { +export const getServerSideProps = async (context: GetServerSidePropsContext) => { const { spaceIdOrName } = context.query const queries = [ diff --git a/apps/web/pages/spaces/[spaceIdOrName]/relatedSpaces.tsx b/apps/web/pages/spaces/[spaceIdOrName]/relatedSpaces.tsx index d84b8458461c2a9d4ceb48a3a8c3fe38ccc035b6..8ee5a472a996a3a44a46747203fb2ab52a5af35c 100644 --- a/apps/web/pages/spaces/[spaceIdOrName]/relatedSpaces.tsx +++ b/apps/web/pages/spaces/[spaceIdOrName]/relatedSpaces.tsx @@ -1,4 +1,4 @@ -import { NextPage, NextPageContext } from 'next' +import type { NextPage, GetServerSidePropsContext } from 'next' import React from 'react' import { spaceRelatedSpacesQuery } from '@holi/core/screens/spaces/queries' @@ -7,7 +7,7 @@ import { createServerSideProps } from '@holi/web/helpers/createServerSideProps' const RelatedSpacesPage: NextPage = () => <RelatedSpaces /> -export const getServerSideProps = async (context: NextPageContext) => { +export const getServerSideProps = async (context: GetServerSidePropsContext) => { const { spaceIdOrName } = context.query const queries = [ diff --git a/apps/web/pages/spaces/[spaceIdOrName]/tasks/[taskId]/index.tsx b/apps/web/pages/spaces/[spaceIdOrName]/tasks/[taskId]/index.tsx index 7e4db7d71152dc87f689f154a523761ecc048494..ddaaec328165694e47325d40effbf18305cc3c0e 100644 --- a/apps/web/pages/spaces/[spaceIdOrName]/tasks/[taskId]/index.tsx +++ b/apps/web/pages/spaces/[spaceIdOrName]/tasks/[taskId]/index.tsx @@ -1,4 +1,4 @@ -import type { NextPage, NextPageContext } from 'next' +import type { NextPage, GetServerSidePropsContext } from 'next' import React from 'react' import { taskByIdQuery } from '@holi/core/screens/spaces/details/queries' @@ -7,7 +7,7 @@ import { createServerSideProps } from '@holi/web/helpers/createServerSideProps' const TaskDetailsPage: NextPage = () => <TaskDetails /> -export const getServerSideProps = async (context: NextPageContext) => { +export const getServerSideProps = async (context: GetServerSidePropsContext) => { const { spaceIdOrName, taskId } = context.query const queries = [ diff --git a/apps/web/pages/spaces/[spaceIdOrName]/tasks/index.tsx b/apps/web/pages/spaces/[spaceIdOrName]/tasks/index.tsx index cbe6bc5b4e9384151d95a5d4ffb1d97c885b98a6..9d0268affc8e1bd8086df4e6e70a13a317935198 100644 --- a/apps/web/pages/spaces/[spaceIdOrName]/tasks/index.tsx +++ b/apps/web/pages/spaces/[spaceIdOrName]/tasks/index.tsx @@ -1,4 +1,4 @@ -import { NextPage, NextPageContext } from 'next' +import type { NextPage, GetServerSidePropsContext } from 'next' import React from 'react' import { spaceByIdQuery } from '@holi/core/screens/spaces/queries' @@ -7,7 +7,7 @@ import { createServerSideProps } from '@holi/web/helpers/createServerSideProps' const SpaceTasksPage: NextPage = () => <SpaceTasks /> -export const getServerSideProps = async (context: NextPageContext) => { +export const getServerSideProps = async (context: GetServerSidePropsContext) => { const { spaceIdOrName } = context.query const queries = [ diff --git a/apps/web/pages/spaces/filter.tsx b/apps/web/pages/spaces/filter.tsx index 8f03fa959acd20cb952d9cf4db98bb058fe3d1e4..1cccc3a7bb6595d651f9538193ff1507103018fe 100644 --- a/apps/web/pages/spaces/filter.tsx +++ b/apps/web/pages/spaces/filter.tsx @@ -1,4 +1,4 @@ -import { NextPage, NextPageContext } from 'next' +import type { GetServerSidePropsContext, NextPage } from 'next' import React from 'react' import FilteredSpaces from '@holi/core/screens/spaces/filter/FilteredSpaces' @@ -6,7 +6,7 @@ import { createServerSideProps } from '@holi/web/helpers/createServerSideProps' const FilteredSpacesPage: NextPage = () => <FilteredSpaces /> -export const getServerSideProps = async (context: NextPageContext) => +export const getServerSideProps = async (context: GetServerSidePropsContext) => createServerSideProps(context, [], { seoTitle: 'seo.h1.spaces' }) export default FilteredSpacesPage diff --git a/apps/web/pages/spaces/index.tsx b/apps/web/pages/spaces/index.tsx index f83b9c5d3e7fe7f330b39c47f43f2b74a44f606a..333777a312ea9e9aac70007a2ad99155553534ea 100644 --- a/apps/web/pages/spaces/index.tsx +++ b/apps/web/pages/spaces/index.tsx @@ -1,4 +1,4 @@ -import { NextPage, NextPageContext } from 'next' +import type { NextPage, GetServerSidePropsContext } from 'next' import React from 'react' import Spaces from '@holi/core/screens/spaces/discover/Spaces' @@ -6,7 +6,7 @@ import { createServerSideProps } from '@holi/web/helpers/createServerSideProps' const SpacesPage: NextPage = () => <Spaces /> -export const getServerSideProps = async (context: NextPageContext) => +export const getServerSideProps = async (context: GetServerSidePropsContext) => createServerSideProps(context, [], { seoTitle: 'seo.h1.spaces' }) export default SpacesPage diff --git a/apps/web/pages/video-call/[roomName].tsx b/apps/web/pages/video-call/[roomName].tsx index 9bd0065b31f89c6a9f78e54190467aac31d35c12..440608cbc05edd07b0c409e8e4e0c91430a51116 100644 --- a/apps/web/pages/video-call/[roomName].tsx +++ b/apps/web/pages/video-call/[roomName].tsx @@ -1,4 +1,4 @@ -import { NextPage, NextPageContext } from 'next' +import type { NextPage, GetServerSidePropsContext } from 'next' import React from 'react' import VideoCall from '@holi/core/screens/videoCall/VideoCall' @@ -6,7 +6,7 @@ import { getOrigin } from '@holi/web/helpers/getOrigin' const VideoCallPage: NextPage = () => <VideoCall /> -export const getServerSideProps = async (context: NextPageContext) => { +export const getServerSideProps = async (context: GetServerSidePropsContext) => { const { roomName } = context.query const origin = getOrigin(context.req) diff --git a/apps/web/pages/volunteering/[engagementId].tsx b/apps/web/pages/volunteering/[engagementId].tsx index 18754eb72d9066f73b9a89888440121c1a451762..1f64afc826f6b876302d93b44eb5cb181fcc4995 100644 --- a/apps/web/pages/volunteering/[engagementId].tsx +++ b/apps/web/pages/volunteering/[engagementId].tsx @@ -1,5 +1,5 @@ -import type { NextPageContext } from 'next' -import React, { ReactElement } from 'react' +import type { GetServerSidePropsContext } from 'next' +import React, { type ReactElement } from 'react' import { createServerSideProps } from '@holi/web/helpers/createServerSideProps' import { AppLayout } from '@holi/web/layout/NavigationLayoutVolunteeringApp' @@ -12,7 +12,7 @@ const VolunteeringEngagementDetailPage: NextPageWithLayout = () => <Volunteering VolunteeringEngagementDetailPage.getLayout = (page: ReactElement) => <AppLayout>{page}</AppLayout> -export const getServerSideProps = async (context: NextPageContext) => { +export const getServerSideProps = async (context: GetServerSidePropsContext) => { const { engagementId } = context.query const queries = [ diff --git a/apps/web/pages/volunteering/index.tsx b/apps/web/pages/volunteering/index.tsx index 0239b096a51af89e24a79e0bc799124826230dbd..148e2ecdfc92fa49877d26ebc8ec799dd2d36323 100644 --- a/apps/web/pages/volunteering/index.tsx +++ b/apps/web/pages/volunteering/index.tsx @@ -1,5 +1,5 @@ -import { NextPageContext } from 'next' -import React, { ReactElement } from 'react' +import type { GetServerSidePropsContext } from 'next' +import React, { type ReactElement } from 'react' import { createServerSideProps } from '@holi/web/helpers/createServerSideProps' import { AppLayout } from '@holi/web/layout/NavigationLayoutVolunteeringApp' @@ -16,7 +16,7 @@ export const paths = { de: '/ehrenamt', } -export const getServerSideProps = async (context: NextPageContext) => +export const getServerSideProps = async (context: GetServerSidePropsContext) => createServerSideProps(context, [], { seoTitle: 'seo.h1.volunteering', urls: paths,