UNPKG

@pantheon-systems/pcc-react-sdk

Version:
1 lines 10 kB
{"version":3,"sources":["../../src/server/index.ts","../../src/core/pantheon-api.ts"],"names":["NextPantheonAPI","options","api","PantheonAPI","req","res","__async","_a","_b","isPagesRouterResponse","nextReq","nextRes","level","coreStatus","platform","buildPlatformDiagnostics","payload","__spreadProps","__spreadValues","context","params","responseHeaders","value","key","cookiesToObj","status","path","data","cookies","acc","cookie","_level","routingMode","runtime"],"mappings":"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","file":"index.mjs","sourcesContent":["export type {\n PantheonClientConfig,\n PantheonAPIOptions,\n} from \"@pantheon-systems/pcc-sdk-core\";\nexport { PantheonClient } from \"@pantheon-systems/pcc-sdk-core\";\n\nexport {\n getArticles,\n getPaginatedArticles,\n getRecommendedArticles,\n getArticle,\n getAllTags,\n getArticleBySlugOrId,\n PCCConvenienceFunctions,\n getArticlePathComponentsFromContentStructure,\n getArticleURLFromSite,\n getArticleURLFromSiteWithOptions,\n updateConfig,\n GQL,\n getSite,\n findTab,\n flattenDocumentTabs,\n} from \"@pantheon-systems/pcc-sdk-core\";\nexport * from \"@pantheon-systems/pcc-sdk-core/types\";\n\nexport { NextPantheonAPI as PantheonAPI } from \"../core/pantheon-api\";\n","import {\n PantheonAPI,\n PantheonAPIOptions,\n} from \"@pantheon-systems/pcc-sdk-core\";\nimport type { NextApiRequest, NextApiResponse } from \"next\";\nimport type { NextRequest } from \"next/server\";\n\nexport interface AppRouterContext {\n params: Promise<\n { command?: string | string[] } & {\n [key: string]: string | string[] | undefined;\n }\n >;\n}\n\ntype Handler = {\n // In Pages routing, req and res are NextApiRequest and NextApiResponse\n (req: NextApiRequest, res: NextApiResponse): Promise<unknown>;\n // App Router has a slightly different approach.\n (\n request: NextRequest,\n context: AppRouterContext,\n ): void | Response | Promise<void | Response>;\n};\n\nexport function NextPantheonAPI(options?: PantheonAPIOptions) {\n const api = PantheonAPI(options);\n\n const handler: Handler = async (req, res) => {\n if (isPagesRouterResponse(res)) {\n // Pages router\n const nextReq = req as NextApiRequest;\n const nextRes = res as NextApiResponse;\n const command = nextReq.query.command?.toString();\n\n // Handle status requests here\n if (command === \"status\" && typeof api.buildStatus === \"function\") {\n const level =\n nextReq.query.level?.toString() === \"debug\" ? \"debug\" : \"basic\";\n const coreStatus = api.buildStatus(level);\n const platform = buildPlatformDiagnostics(level, \"pages\");\n const payload = { ...coreStatus, platform };\n return void nextRes.json(payload);\n }\n\n // Non-status flows: pass through to core\n return void (await api.handler(\n nextReq as NextApiRequest,\n nextRes as NextApiResponse,\n ));\n }\n\n // App router\n const context = res as { params: Promise<{ command: string | string[] }> };\n const nextReq = req as NextRequest;\n const params = await context.params;\n const command =\n params.command != null && Array.isArray(params.command)\n ? params.command[0]\n : params.command ||\n nextReq.nextUrl.searchParams.get(\"command\") ||\n undefined;\n\n // Handle status requests here\n if (command === \"status\" && typeof api.buildStatus === \"function\") {\n const levelParam = nextReq.nextUrl.searchParams.get(\"level\");\n const level = levelParam === \"debug\" ? \"debug\" : \"basic\";\n const coreStatus = api.buildStatus(level);\n const platform = buildPlatformDiagnostics(level, \"app\");\n const payload = { ...coreStatus, platform };\n return Response.json(payload);\n }\n\n // Non-status flows: pass through to core\n const responseHeaders = new Headers();\n nextReq.headers.forEach((value, key) => {\n responseHeaders.set(key, value);\n });\n\n return (await api.handler(\n {\n query: {\n ...Object.fromEntries(nextReq.nextUrl.searchParams),\n ...params,\n },\n cookies: cookiesToObj(nextReq.cookies),\n },\n {\n getHeader: (key) => responseHeaders.get(key) || \"\",\n setHeader: (key, value) => responseHeaders.set(key, value.toString()),\n redirect: (status, path) => {\n responseHeaders.set(\"Location\", path);\n return new Response(null, {\n status,\n headers: responseHeaders,\n });\n },\n json: (data) => {\n return Response.json(data, {\n headers: responseHeaders,\n });\n },\n },\n )) as void | Response;\n };\n\n return handler;\n}\n\nfunction isPagesRouterResponse(\n res: { params: Promise<{ command?: string | string[] }> } | NextApiResponse,\n): res is NextApiResponse {\n // We can differentiate between app router vs pages api\n // by checking for params\n // reference: (https://github.com/nextauthjs/next-auth/blob/v4/packages/next-auth/src/next/index.ts)\n return res != null && typeof res === \"object\" && !(\"params\" in res);\n}\n\nfunction cookiesToObj(cookies: NextRequest[\"cookies\"]) {\n // Convert to name value pairs\n return cookies.getAll().reduce(\n (acc, cookie) => {\n acc[cookie.name] = cookie.value;\n return acc;\n },\n {} as Record<string, string>,\n );\n}\n\nfunction buildPlatformDiagnostics(\n _level: \"basic\" | \"debug\",\n routingMode: \"app\" | \"pages\",\n) {\n const runtime =\n typeof (globalThis as unknown as { EdgeRuntime?: unknown }).EdgeRuntime !==\n \"undefined\"\n ? \"edge\"\n : \"node\";\n\n const base = {\n name: \"next\",\n routing: { mode: routingMode },\n runtime,\n };\n\n return base;\n}\n"]}