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
10 KiB
Text
1 line
No EOL
10 KiB
Text
{"version":3,"sources":["../../../src/server/dev/log-requests.ts"],"sourcesContent":["import { hrtimeBigIntDurationToString } from '../../build/duration-to-string'\nimport {\n blue,\n bold,\n gray,\n green,\n red,\n white,\n yellow,\n dim,\n} from '../../lib/picocolors'\nimport { stripNextRscUnionQuery } from '../../lib/url'\nimport type { FetchMetric } from '../base-http'\nimport type { NodeNextRequest, NodeNextResponse } from '../base-http/node'\nimport type { LoggingConfig } from '../config-shared'\nimport { getRequestMeta } from '../request-meta'\n\n/**\n * Returns true if the incoming request should be ignored for logging.\n */\nexport function ignoreLoggingIncomingRequests(\n request: NodeNextRequest,\n loggingConfig: LoggingConfig | undefined\n): boolean {\n // If it's boolean use the boolean value\n if (typeof loggingConfig?.incomingRequests === 'boolean') {\n return !loggingConfig.incomingRequests\n }\n\n // Any of the value on the chain is falsy, will not ignore the request.\n const ignore = loggingConfig?.incomingRequests?.ignore\n\n // If ignore is not set, don't ignore anything\n if (!ignore) {\n return false\n }\n\n // If array of RegExp, ignore if any pattern matches\n return ignore.some((pattern) => pattern.test(request.url))\n}\n\nexport function logRequests(\n request: NodeNextRequest,\n response: NodeNextResponse,\n loggingConfig: LoggingConfig,\n requestStartTime: bigint,\n requestEndTime: bigint,\n devRequestTimingMiddlewareStart: bigint | undefined,\n devRequestTimingMiddlewareEnd: bigint | undefined,\n devRequestTimingInternalsEnd: bigint | undefined\n): void {\n if (!ignoreLoggingIncomingRequests(request, loggingConfig)) {\n logIncomingRequests(\n request,\n requestStartTime,\n requestEndTime,\n response.statusCode,\n devRequestTimingMiddlewareStart,\n devRequestTimingMiddlewareEnd,\n devRequestTimingInternalsEnd\n )\n }\n\n if (request.fetchMetrics) {\n for (const fetchMetric of request.fetchMetrics) {\n logFetchMetric(fetchMetric, loggingConfig)\n }\n }\n}\n\nfunction logIncomingRequests(\n request: NodeNextRequest,\n requestStartTime: bigint,\n requestEndTime: bigint,\n statusCode: number,\n devRequestTimingMiddlewareStart: bigint | undefined,\n devRequestTimingMiddlewareEnd: bigint | undefined,\n devRequestTimingInternalsEnd: bigint | undefined\n): void {\n const isRSC = getRequestMeta(request, 'isRSCRequest')\n const url = isRSC ? stripNextRscUnionQuery(request.url) : request.url\n\n const statusCodeColor =\n statusCode < 200\n ? white\n : statusCode < 300\n ? green\n : statusCode < 400\n ? blue\n : statusCode < 500\n ? yellow\n : red\n\n const coloredStatus = statusCodeColor(statusCode.toString())\n\n const totalRequestTime = requestEndTime - requestStartTime\n\n const times: Array<[label: string, time: bigint]> = []\n\n let middlewareTime: bigint | undefined\n if (devRequestTimingMiddlewareStart && devRequestTimingMiddlewareEnd) {\n middlewareTime =\n devRequestTimingMiddlewareEnd - devRequestTimingMiddlewareStart\n times.push(['proxy.ts', middlewareTime])\n }\n\n if (devRequestTimingInternalsEnd) {\n let frameworkTime = devRequestTimingInternalsEnd - requestStartTime\n\n /* Middleware runs during the internals so we have to subtract it from the framework time */\n if (middlewareTime) {\n frameworkTime -= middlewareTime\n }\n // Insert as the first item to be rendered in the list\n times.unshift(['compile', frameworkTime])\n times.push(['render', requestEndTime - devRequestTimingInternalsEnd])\n }\n\n return writeLine(\n `${request.method} ${url} ${coloredStatus} in ${hrtimeBigIntDurationToString(totalRequestTime)}${times.length > 0 ? dim(` (${times.map(([label, time]) => `${label}: ${hrtimeBigIntDurationToString(time)}`).join(', ')})`) : ''}`\n )\n}\n\nfunction logFetchMetric(\n fetchMetric: FetchMetric,\n loggingConfig: LoggingConfig | undefined\n): void {\n let {\n cacheReason,\n cacheStatus,\n cacheWarning,\n end,\n method,\n start,\n status,\n url,\n } = fetchMetric\n\n if (cacheStatus === 'hmr' && !loggingConfig?.fetches?.hmrRefreshes) {\n // Cache hits during HMR refreshes are intentionally not logged, unless\n // explicitly enabled in the logging config.\n return\n }\n\n if (loggingConfig?.fetches) {\n if (url.length > 48 && !loggingConfig.fetches.fullUrl) {\n url = truncateUrl(url)\n }\n\n writeLine(\n white(\n `${method} ${url} ${status} in ${Math.round(end - start)}ms ${formatCacheStatus(cacheStatus)}`\n ),\n 1\n )\n\n if (cacheStatus === 'skip' || cacheStatus === 'miss') {\n writeLine(\n gray(\n `Cache ${cacheStatus === 'skip' ? 'skipped' : 'missed'} reason: (${white(cacheReason)})`\n ),\n 2\n )\n }\n } else if (cacheWarning) {\n // When logging for fetches is not enabled, we still want to print any\n // associated warnings, so we print the request first to provide context.\n writeLine(white(`${method} ${url}`), 1)\n }\n\n if (cacheWarning) {\n writeLine(`${yellow(bold('⚠'))} ${white(cacheWarning)}`, 2)\n }\n}\n\nfunction writeLine(text: string, indentationLevel = 0): void {\n process.stdout.write(` ${'│ '.repeat(indentationLevel)}${text}\\n`)\n}\n\nfunction truncate(text: string, maxLength: number): string {\n return maxLength !== undefined && text.length > maxLength\n ? text.substring(0, maxLength) + '..'\n : text\n}\n\nfunction truncateUrl(url: string): string {\n const { protocol, host, pathname, search } = new URL(url)\n\n return (\n protocol +\n '//' +\n truncate(host, 16) +\n truncate(pathname, 24) +\n truncate(search, 16)\n )\n}\n\nfunction formatCacheStatus(cacheStatus: FetchMetric['cacheStatus']): string {\n switch (cacheStatus) {\n case 'hmr':\n return green('(HMR cache)')\n case 'hit':\n return green('(cache hit)')\n case 'miss':\n case 'skip':\n return yellow(`(cache ${cacheStatus})`)\n default:\n return cacheStatus satisfies never\n }\n}\n"],"names":["ignoreLoggingIncomingRequests","logRequests","request","loggingConfig","incomingRequests","ignore","some","pattern","test","url","response","requestStartTime","requestEndTime","devRequestTimingMiddlewareStart","devRequestTimingMiddlewareEnd","devRequestTimingInternalsEnd","logIncomingRequests","statusCode","fetchMetrics","fetchMetric","logFetchMetric","isRSC","getRequestMeta","stripNextRscUnionQuery","statusCodeColor","white","green","blue","yellow","red","coloredStatus","toString","totalRequestTime","times","middlewareTime","push","frameworkTime","unshift","writeLine","method","hrtimeBigIntDurationToString","length","dim","map","label","time","join","cacheReason","cacheStatus","cacheWarning","end","start","status","fetches","hmrRefreshes","fullUrl","truncateUrl","Math","round","formatCacheStatus","gray","bold","text","indentationLevel","process","stdout","write","repeat","truncate","maxLength","undefined","substring","protocol","host","pathname","search","URL"],"mappings":"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","ignoreList":[0]} |