Next.js website for Rocky Mountain Vending company featuring: - Product catalog with Stripe integration - Service areas and parts pages - Admin dashboard with Clerk authentication - SEO optimized pages with JSON-LD structured data Co-authored-by: Cursor <cursoragent@cursor.com>
1 line
No EOL
26 KiB
Text
1 line
No EOL
26 KiB
Text
{"version":3,"sources":["../../../../src/server/api-utils/node/api-resolver.ts"],"sourcesContent":["import type { IncomingMessage, ServerResponse } from 'http'\nimport type { NextApiRequest, NextApiResponse } from '../../../shared/lib/utils'\nimport type { PageConfig, ResponseLimit } from '../../../types'\nimport type { __ApiPreviewProps } from '../.'\nimport type { CookieSerializeOptions } from 'next/dist/compiled/cookie'\n\nimport bytes from 'next/dist/compiled/bytes'\nimport { generateETag } from '../../lib/etag'\nimport { sendEtagResponse } from '../../send-payload'\nimport { Stream } from 'stream'\nimport isError from '../../../lib/is-error'\nimport { isResSent } from '../../../shared/lib/utils'\nimport { interopDefault } from '../../../lib/interop-default'\nimport {\n setLazyProp,\n sendStatusCode,\n redirect,\n clearPreviewData,\n sendError,\n ApiError,\n COOKIE_NAME_PRERENDER_BYPASS,\n COOKIE_NAME_PRERENDER_DATA,\n RESPONSE_LIMIT_DEFAULT,\n} from './../index'\nimport { getCookieParser } from './../get-cookie-parser'\nimport {\n JSON_CONTENT_TYPE_HEADER,\n PRERENDER_REVALIDATE_HEADER,\n PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER,\n} from '../../../lib/constants'\nimport { tryGetPreviewData } from './try-get-preview-data'\nimport { parseBody } from './parse-body'\nimport type { RevalidateFn } from '../../lib/router-utils/router-server-context'\nimport type { InstrumentationOnRequestError } from '../../instrumentation/types'\n\ntype ApiContext = __ApiPreviewProps & {\n trustHostHeader?: boolean\n allowedRevalidateHeaderKeys?: string[]\n hostname?: string\n multiZoneDraftMode?: boolean\n dev: boolean\n internalRevalidate?: RevalidateFn\n}\n\nfunction getMaxContentLength(responseLimit?: ResponseLimit) {\n if (responseLimit && typeof responseLimit !== 'boolean') {\n return bytes.parse(responseLimit)\n }\n return RESPONSE_LIMIT_DEFAULT\n}\n\n/**\n * Send `any` body to response\n * @param req request object\n * @param res response object\n * @param body of response\n */\nfunction sendData(req: NextApiRequest, res: NextApiResponse, body: any): void {\n if (body === null || body === undefined) {\n res.end()\n return\n }\n\n // strip irrelevant headers/body\n if (res.statusCode === 204 || res.statusCode === 304) {\n res.removeHeader('Content-Type')\n res.removeHeader('Content-Length')\n res.removeHeader('Transfer-Encoding')\n\n if (process.env.NODE_ENV === 'development' && body) {\n console.warn(\n `A body was attempted to be set with a 204 statusCode for ${req.url}, this is invalid and the body was ignored.\\n` +\n `See more info here https://nextjs.org/docs/messages/invalid-api-status-body`\n )\n }\n res.end()\n return\n }\n\n const contentType = res.getHeader('Content-Type')\n\n if (body instanceof Stream) {\n if (!contentType) {\n res.setHeader('Content-Type', 'application/octet-stream')\n }\n body.pipe(res)\n return\n }\n\n const isJSONLike = ['object', 'number', 'boolean'].includes(typeof body)\n const stringifiedBody = isJSONLike ? JSON.stringify(body) : body\n const etag = generateETag(stringifiedBody)\n if (sendEtagResponse(req, res, etag)) {\n return\n }\n\n if (Buffer.isBuffer(body)) {\n if (!contentType) {\n res.setHeader('Content-Type', 'application/octet-stream')\n }\n res.setHeader('Content-Length', body.length)\n res.end(body)\n return\n }\n\n if (isJSONLike) {\n res.setHeader('Content-Type', JSON_CONTENT_TYPE_HEADER)\n }\n\n res.setHeader('Content-Length', Buffer.byteLength(stringifiedBody))\n res.end(stringifiedBody)\n}\n\n/**\n * Send `JSON` object\n * @param res response object\n * @param jsonBody of data\n */\nfunction sendJson(res: NextApiResponse, jsonBody: any): void {\n // Set header to application/json\n res.setHeader('Content-Type', JSON_CONTENT_TYPE_HEADER)\n\n // Use send to handle request\n res.send(JSON.stringify(jsonBody))\n}\n\nfunction isValidData(str: any): str is string {\n return typeof str === 'string' && str.length >= 16\n}\n\nfunction setDraftMode<T>(\n res: NextApiResponse<T>,\n options: {\n enable: boolean\n previewModeId?: string\n }\n): NextApiResponse<T> {\n if (!isValidData(options.previewModeId)) {\n throw new Error('invariant: invalid previewModeId')\n }\n const expires = options.enable ? undefined : new Date(0)\n // To delete a cookie, set `expires` to a date in the past:\n // https://tools.ietf.org/html/rfc6265#section-4.1.1\n // `Max-Age: 0` is not valid, thus ignored, and the cookie is persisted.\n const { serialize } =\n require('next/dist/compiled/cookie') as typeof import('next/dist/compiled/cookie')\n const previous = res.getHeader('Set-Cookie')\n res.setHeader(`Set-Cookie`, [\n ...(typeof previous === 'string'\n ? [previous]\n : Array.isArray(previous)\n ? previous\n : []),\n serialize(COOKIE_NAME_PRERENDER_BYPASS, options.previewModeId, {\n httpOnly: true,\n sameSite: process.env.NODE_ENV !== 'development' ? 'none' : 'lax',\n secure: process.env.NODE_ENV !== 'development',\n path: '/',\n expires,\n }),\n ])\n return res\n}\n\nfunction setPreviewData<T>(\n res: NextApiResponse<T>,\n data: object | string, // TODO: strict runtime type checking\n options: {\n maxAge?: number\n path?: string\n } & __ApiPreviewProps\n): NextApiResponse<T> {\n if (!isValidData(options.previewModeId)) {\n throw new Error('invariant: invalid previewModeId')\n }\n if (!isValidData(options.previewModeEncryptionKey)) {\n throw new Error('invariant: invalid previewModeEncryptionKey')\n }\n if (!isValidData(options.previewModeSigningKey)) {\n throw new Error('invariant: invalid previewModeSigningKey')\n }\n\n const jsonwebtoken =\n require('next/dist/compiled/jsonwebtoken') as typeof import('next/dist/compiled/jsonwebtoken')\n const { encryptWithSecret } =\n require('../../crypto-utils') as typeof import('../../crypto-utils')\n const payload = jsonwebtoken.sign(\n {\n data: encryptWithSecret(\n Buffer.from(options.previewModeEncryptionKey),\n JSON.stringify(data)\n ),\n },\n options.previewModeSigningKey,\n {\n algorithm: 'HS256',\n ...(options.maxAge !== undefined\n ? { expiresIn: options.maxAge }\n : undefined),\n }\n )\n\n // limit preview mode cookie to 2KB since we shouldn't store too much\n // data here and browsers drop cookies over 4KB\n if (payload.length > 2048) {\n throw new Error(\n `Preview data is limited to 2KB currently, reduce how much data you are storing as preview data to continue`\n )\n }\n\n const { serialize } =\n require('next/dist/compiled/cookie') as typeof import('next/dist/compiled/cookie')\n const previous = res.getHeader('Set-Cookie')\n res.setHeader(`Set-Cookie`, [\n ...(typeof previous === 'string'\n ? [previous]\n : Array.isArray(previous)\n ? previous\n : []),\n serialize(COOKIE_NAME_PRERENDER_BYPASS, options.previewModeId, {\n httpOnly: true,\n sameSite: process.env.NODE_ENV !== 'development' ? 'none' : 'lax',\n secure: process.env.NODE_ENV !== 'development',\n path: '/',\n ...(options.maxAge !== undefined\n ? ({ maxAge: options.maxAge } as CookieSerializeOptions)\n : undefined),\n ...(options.path !== undefined\n ? ({ path: options.path } as CookieSerializeOptions)\n : undefined),\n }),\n serialize(COOKIE_NAME_PRERENDER_DATA, payload, {\n httpOnly: true,\n sameSite: process.env.NODE_ENV !== 'development' ? 'none' : 'lax',\n secure: process.env.NODE_ENV !== 'development',\n path: '/',\n ...(options.maxAge !== undefined\n ? ({ maxAge: options.maxAge } as CookieSerializeOptions)\n : undefined),\n ...(options.path !== undefined\n ? ({ path: options.path } as CookieSerializeOptions)\n : undefined),\n }),\n ])\n return res\n}\n\nasync function revalidate(\n urlPath: string,\n opts: {\n unstable_onlyGenerated?: boolean\n },\n req: IncomingMessage,\n context: ApiContext\n) {\n if (typeof urlPath !== 'string' || !urlPath.startsWith('/')) {\n throw new Error(\n `Invalid urlPath provided to revalidate(), must be a path e.g. /blog/post-1, received ${urlPath}`\n )\n }\n const revalidateHeaders: HeadersInit = {\n [PRERENDER_REVALIDATE_HEADER]: context.previewModeId,\n ...(opts.unstable_onlyGenerated\n ? {\n [PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER]: '1',\n }\n : {}),\n }\n const allowedRevalidateHeaderKeys = [\n ...(context.allowedRevalidateHeaderKeys || []),\n ]\n\n if (context.trustHostHeader || context.dev) {\n allowedRevalidateHeaderKeys.push('cookie')\n }\n\n if (context.trustHostHeader) {\n allowedRevalidateHeaderKeys.push('x-vercel-protection-bypass')\n }\n\n for (const key of Object.keys(req.headers)) {\n if (allowedRevalidateHeaderKeys.includes(key)) {\n revalidateHeaders[key] = req.headers[key] as string\n }\n }\n\n const internalRevalidate = context.internalRevalidate\n\n try {\n // We use the revalidate in router-server if available.\n // If we are operating without router-server (serverless)\n // we must go through network layer with fetch request\n if (internalRevalidate) {\n return await internalRevalidate({\n urlPath,\n revalidateHeaders,\n opts,\n })\n }\n\n if (context.trustHostHeader) {\n const res = await fetch(`https://${req.headers.host}${urlPath}`, {\n method: 'HEAD',\n headers: revalidateHeaders,\n })\n // we use the cache header to determine successful revalidate as\n // a non-200 status code can be returned from a successful revalidate\n // e.g. notFound: true returns 404 status code but is successful\n const cacheHeader =\n res.headers.get('x-vercel-cache') || res.headers.get('x-nextjs-cache')\n\n if (\n cacheHeader?.toUpperCase() !== 'REVALIDATED' &&\n res.status !== 200 &&\n !(res.status === 404 && opts.unstable_onlyGenerated)\n ) {\n throw new Error(`Invalid response ${res.status}`)\n }\n } else {\n throw new Error(\n `Invariant: missing internal router-server-methods this is an internal bug`\n )\n }\n } catch (err: unknown) {\n throw new Error(\n `Failed to revalidate ${urlPath}: ${isError(err) ? err.message : err}`\n )\n }\n}\n\nexport async function apiResolver(\n req: IncomingMessage,\n res: ServerResponse,\n query: any,\n resolverModule: any,\n apiContext: ApiContext,\n propagateError: boolean,\n dev?: boolean,\n page?: string,\n onError?: InstrumentationOnRequestError\n): Promise<void> {\n const apiReq = req as NextApiRequest\n const apiRes = res as NextApiResponse\n\n try {\n if (!resolverModule) {\n res.statusCode = 404\n res.end('Not Found')\n return\n }\n const config: PageConfig = resolverModule.config || {}\n const bodyParser = config.api?.bodyParser !== false\n const responseLimit = config.api?.responseLimit ?? true\n const externalResolver = config.api?.externalResolver || false\n\n // Parsing of cookies\n setLazyProp({ req: apiReq }, 'cookies', getCookieParser(req.headers))\n // Parsing query string\n apiReq.query = query\n // Parsing preview data\n setLazyProp({ req: apiReq }, 'previewData', () =>\n tryGetPreviewData(req, res, apiContext, !!apiContext.multiZoneDraftMode)\n )\n // Checking if preview mode is enabled\n setLazyProp({ req: apiReq }, 'preview', () =>\n apiReq.previewData !== false ? true : undefined\n )\n // Set draftMode to the same value as preview\n setLazyProp({ req: apiReq }, 'draftMode', () => apiReq.preview)\n\n // Parsing of body\n if (bodyParser && !apiReq.body) {\n apiReq.body = await parseBody(\n apiReq,\n config.api && config.api.bodyParser && config.api.bodyParser.sizeLimit\n ? config.api.bodyParser.sizeLimit\n : '1mb'\n )\n }\n\n let contentLength = 0\n const maxContentLength = getMaxContentLength(responseLimit)\n const writeData = apiRes.write\n const endResponse = apiRes.end\n apiRes.write = (...args: any[2]) => {\n contentLength += Buffer.byteLength(args[0] || '')\n return writeData.apply(apiRes, args)\n }\n apiRes.end = (...args: any[2]) => {\n if (args.length && typeof args[0] !== 'function') {\n contentLength += Buffer.byteLength(args[0] || '')\n }\n\n if (responseLimit && contentLength >= maxContentLength) {\n console.warn(\n `API response for ${req.url} exceeds ${bytes.format(\n maxContentLength\n )}. API Routes are meant to respond quickly. https://nextjs.org/docs/messages/api-routes-response-size-limit`\n )\n }\n\n return endResponse.apply(apiRes, args)\n }\n apiRes.status = (statusCode) => sendStatusCode(apiRes, statusCode)\n apiRes.send = (data) => sendData(apiReq, apiRes, data)\n apiRes.json = (data) => sendJson(apiRes, data)\n apiRes.redirect = (statusOrUrl: number | string, url?: string) =>\n redirect(apiRes, statusOrUrl, url)\n apiRes.setDraftMode = (options = { enable: true }) =>\n setDraftMode(apiRes, Object.assign({}, apiContext, options))\n apiRes.setPreviewData = (data, options = {}) =>\n setPreviewData(apiRes, data, Object.assign({}, apiContext, options))\n apiRes.clearPreviewData = (options = {}) =>\n clearPreviewData(apiRes, options)\n apiRes.revalidate = (\n urlPath: string,\n opts?: {\n unstable_onlyGenerated?: boolean\n }\n ) => revalidate(urlPath, opts || {}, req, apiContext)\n\n const resolver = interopDefault(resolverModule)\n let wasPiped = false\n\n if (process.env.NODE_ENV !== 'production') {\n // listen for pipe event and don't show resolve warning\n res.once('pipe', () => (wasPiped = true))\n }\n\n const apiRouteResult = await resolver(req, res)\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof apiRouteResult !== 'undefined') {\n if (apiRouteResult instanceof Response) {\n throw new Error(\n 'API route returned a Response object in the Node.js runtime, this is not supported. Please use `runtime: \"edge\"` instead: https://nextjs.org/docs/api-routes/edge-api-routes'\n )\n }\n console.warn(\n `API handler should not return a value, received ${typeof apiRouteResult}.`\n )\n }\n\n if (!externalResolver && !isResSent(res) && !wasPiped) {\n console.warn(\n `API resolved without sending a response for ${req.url}, this may result in stalled requests.`\n )\n }\n }\n } catch (err) {\n await onError?.(\n err,\n {\n method: req.method || 'GET',\n headers: req.headers,\n path: req.url || '/',\n },\n {\n routerKind: 'Pages Router',\n routePath: page || '',\n routeType: 'route',\n revalidateReason: undefined,\n }\n )\n\n if (err instanceof ApiError) {\n sendError(apiRes, err.statusCode, err.message)\n } else {\n if (dev) {\n if (isError(err)) {\n err.page = page\n }\n throw err\n }\n\n console.error(err)\n if (propagateError) {\n throw err\n }\n sendError(apiRes, 500, 'Internal Server Error')\n }\n }\n}\n"],"names":["bytes","generateETag","sendEtagResponse","Stream","isError","isResSent","interopDefault","setLazyProp","sendStatusCode","redirect","clearPreviewData","sendError","ApiError","COOKIE_NAME_PRERENDER_BYPASS","COOKIE_NAME_PRERENDER_DATA","RESPONSE_LIMIT_DEFAULT","getCookieParser","JSON_CONTENT_TYPE_HEADER","PRERENDER_REVALIDATE_HEADER","PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER","tryGetPreviewData","parseBody","getMaxContentLength","responseLimit","parse","sendData","req","res","body","undefined","end","statusCode","removeHeader","process","env","NODE_ENV","console","warn","url","contentType","getHeader","setHeader","pipe","isJSONLike","includes","stringifiedBody","JSON","stringify","etag","Buffer","isBuffer","length","byteLength","sendJson","jsonBody","send","isValidData","str","setDraftMode","options","previewModeId","Error","expires","enable","Date","serialize","require","previous","Array","isArray","httpOnly","sameSite","secure","path","setPreviewData","data","previewModeEncryptionKey","previewModeSigningKey","jsonwebtoken","encryptWithSecret","payload","sign","from","algorithm","maxAge","expiresIn","revalidate","urlPath","opts","context","startsWith","revalidateHeaders","unstable_onlyGenerated","allowedRevalidateHeaderKeys","trustHostHeader","dev","push","key","Object","keys","headers","internalRevalidate","fetch","host","method","cacheHeader","get","toUpperCase","status","err","message","apiResolver","query","resolverModule","apiContext","propagateError","page","onError","apiReq","apiRes","config","bodyParser","api","externalResolver","multiZoneDraftMode","previewData","preview","sizeLimit","contentLength","maxContentLength","writeData","write","endResponse","args","apply","format","json","statusOrUrl","assign","resolver","wasPiped","once","apiRouteResult","Response","routerKind","routePath","routeType","revalidateReason","error"],"mappings":"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","ignoreList":[0]} |