/home/lucas/.www/transit/.next/server/chunks/_0sipzyh._.js.map:{"version":3,"sources":["../../../app/api/trips/pdf/route.ts","../../../node_modules/next/src/build/templates/app-route.ts"],"sourcesContent":["import { NextRequest, NextResponse } from 'next/server';\nimport { getServerSession } from 'next-auth';\nimport { authOptions } from '@/app/api/auth/[...nextauth]/route';\nimport prisma from '@/lib/prisma';\nimport puppeteer from 'puppeteer-core';\n\nconst DAYS = ['일', '월', '화', '수', '목', '금', '토'];\nconst ROWS = 15;\n\n// Layout: header 2×8mm=16mm + 1mm + TH 7mm + data 15×10mm=150mm + 1mm + footer 15mm = 190mm\nconst H_ROW = '8mm';\nconst TH_ROW = '7mm';\nconst D_ROW = '10mm';\nconst FTR = '15mm';\n\nfunction slug(vNum: string, year: number, month: number) {\n  const n = new Date();\n  const p = (v: number, l = 2) => String(v).padStart(l, '0');\n  const last4 = vNum.replace(/\\D/g, '').slice(-4) || '0000';\n  return `${last4}-${year}-${p(month)}-${p(n.getHours())}${p(n.getMinutes())}${p(n.getSeconds())}`;\n}\n\nfunction fmtDate(d: Date) {\n  const yy = String(d.getFullYear()).slice(2);\n  return `${yy}/${String(d.getMonth()+1).padStart(2,'0')}/${String(d.getDate()).padStart(2,'0')}`;\n}\n\nfunction fmtFee(n: number) {\n  return n ? n.toLocaleString('ko-KR') + '원' : '';\n}\n\nfunction chunk<T>(arr: T[], n: number): T[][] {\n  const r: T[][] = [];\n  for (let i = 0; i < arr.length; i += n) r.push(arr.slice(i, i+n));\n  return r;\n}\n\ntype Trip = Awaited<ReturnType<typeof prisma.trip.findMany>>[0];\n\nconst B = 'border:1px solid #000;';\nconst base = `${B}padding:0 3px;font-size:8.5pt;vertical-align:middle;text-align:center;word-break:keep-all;overflow:hidden;`;\nconst thS  = `${base}background:#e0e0e0;font-weight:700;white-space:nowrap;`;\n\nfunction buildPage(trips: Trip[], pi: number, name: string, vNum: string, printDate: string, bankInfo: string): string {\n  const headers = ['No', '날짜', '상차지', '하차지', '거래처', '금액', '비고'];\n  const colW    = ['4%', '8%', '22%', '22%', '16%', '13%', '15%'];\n  const cols    = colW.map(w => `<col style=\"width:${w}\"/>`).join('');\n  const ths     = headers.map(h => `<th style=\"${thS}height:${TH_ROW};\">${h}</th>`).join('');\n\n  const dataRows = Array.from({length: ROWS}).map((_, i) => {\n    const t = trips[i];\n    const n = pi * ROWS + i + 1;\n    const c  = `${base}height:${D_ROW};`;\n    const cl = `${base}height:${D_ROW};text-align:left;font-size:8pt;white-space:normal;`;\n    const cr = `${base}height:${D_ROW};text-align:right;font-size:8pt;`;\n    return `<tr>\n      <td style=\"${c}\">${t ? n : ''}</td>\n      <td style=\"${c}\">${t ? fmtDate(new Date(t.date)) : ''}</td>\n      <td style=\"${cl}\">${t?.loadingLoc ?? ''}</td>\n      <td style=\"${cl}\">${t?.unloadingLoc ?? ''}</td>\n      <td style=\"${c}font-size:8pt;\">${t?.client ?? ''}</td>\n      <td style=\"${cr}\">${t ? fmtFee(t.fee) : ''}</td>\n      <td style=\"${cl}\"></td>\n    </tr>`;\n  }).join('');\n\n  const hr = `${base}height:${H_ROW};`;\n  return `<div class=\"page\">\n    <table style=\"width:100%;border-collapse:collapse;table-layout:fixed;margin-bottom:1mm;\">\n      <colgroup><col style=\"width:16mm\"/><col style=\"width:22mm\"/><col/><col style=\"width:36mm\"/></colgroup>\n      <tbody>\n        <tr>\n          <td style=\"${thS}height:${H_ROW};\">차량번호</td>\n          <td style=\"${hr}font-weight:700;\">${vNum}</td>\n          <td style=\"${hr}text-align:center;font-size:17pt;font-weight:900;letter-spacing:3px;\" rowspan=\"2\">차량 운행 일보</td>\n          <td style=\"${hr}text-align:right;font-size:8pt;white-space:normal;\" rowspan=\"2\">${printDate}</td>\n        </tr>\n        <tr>\n          <td style=\"${thS}height:${H_ROW};\">성명</td>\n          <td style=\"${hr}font-weight:700;\">${name}</td>\n        </tr>\n      </tbody>\n    </table>\n    <table style=\"width:100%;border-collapse:collapse;table-layout:fixed;\">\n      <colgroup>${cols}</colgroup>\n      <thead><tr>${ths}</tr></thead>\n      <tbody>${dataRows}</tbody>\n    </table>\n    <table style=\"width:100%;border-collapse:collapse;table-layout:fixed;margin-top:1mm;\">\n      <tbody>\n        <tr>\n          <td style=\"${base}height:${FTR};width:55%;text-align:left;vertical-align:top;white-space:normal;padding:2px 4px;\">\n            <span style=\"font-size:8.5pt;font-weight:700;\">특 이 사 항</span>\n            ${bankInfo ? `<br/><span style=\"font-size:7.5pt;color:#333;\">${bankInfo}</span>` : ''}\n          </td>\n          <td style=\"${base}height:${FTR};width:25%;text-align:right;vertical-align:middle;font-size:7.5pt;padding:2px 4px;line-height:1.8;\">\n            ${(() => { const supply = trips.reduce((s, t) => s + (t?.fee ?? 0), 0); const tax = Math.round(supply * 0.1); const total = supply + tax; return `<div>공급가액: ${supply.toLocaleString('ko-KR')}원</div><div>세&nbsp;&nbsp;&nbsp;&nbsp;액: ${tax.toLocaleString('ko-KR')}원</div><div style=\"font-weight:700;border-top:1px solid #aaa;padding-top:1px;\">합계금액: ${total.toLocaleString('ko-KR')}원</div>`; })()}\n          </td>\n          <td style=\"${base}height:${FTR};font-weight:700;font-size:9pt;\">담당자 확인</td>\n        </tr>\n      </tbody>\n    </table>\n  </div>`;\n}\n\nfunction buildHtml(trips: Trip[], name: string, vNum: string, fmt: 'pdf' | 'jpeg', bankInfo: string): string {\n  const now = new Date();\n  const printDate = `${now.getFullYear()}년 ${now.getMonth()+1}월 ${now.getDate()}일 ${DAYS[now.getDay()]}요일`;\n  const pages = chunk(trips, ROWS);\n  const body  = (pages.length > 0 ? pages : [[]]).map((p, i) => buildPage(p, i, name, vNum, printDate, bankInfo)).join('');\n\n  const pageStyle = fmt === 'pdf'\n    ? 'width:273mm;height:190mm;background:#fff;overflow:hidden;page-break-after:always;'\n    : 'width:297mm;height:210mm;background:#fff;box-sizing:border-box;padding:10mm 12mm;';\n  const atPage = fmt === 'pdf'\n    ? '@page{size:A4 landscape;}'\n    : '@page{size:A4 landscape;margin:0}';\n\n  return `<!DOCTYPE html><html><head><meta charset=\"utf-8\">\n<link href=\"https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;700;900&display=swap\" rel=\"stylesheet\">\n<style>\n${atPage}\n*{margin:0;padding:0;box-sizing:border-box}\nbody{font-family:'Noto Sans KR',sans-serif;background:#fff;}\n.page{${pageStyle}}\n.page:last-child{page-break-after:avoid}\n</style></head><body>${body}</body></html>`;\n}\n\nexport async function GET(req: NextRequest) {\n  const session = await getServerSession(authOptions);\n  if (!session?.user?.id) return NextResponse.json({ error: 'Unauthorized' }, { status: 401 });\n  const userId = parseInt(session.user.id);\n\n  const { searchParams } = new URL(req.url);\n  const year   = parseInt(searchParams.get('year')  ?? String(new Date().getFullYear()));\n  const month  = parseInt(searchParams.get('month') ?? String(new Date().getMonth()+1));\n  const fmt    = searchParams.get('format') === 'jpeg' ? 'jpeg' : 'pdf';\n  const from   = searchParams.get('from');\n  const to     = searchParams.get('to');\n  const settled = searchParams.get('settled');\n  const invoiceF = searchParams.get('invoice');\n  const clientF  = searchParams.get('client');\n\n  const dateWhere = from && to\n    ? { gte: new Date(from), lte: new Date(to) }\n    : { gte: new Date(year, month-1, 1), lt: new Date(year, month, 1) };\n\n  const where: Parameters<typeof prisma.trip.findMany>[0]['where'] = { userId, date: dateWhere };\n  if (settled === 'true') where.isSettled = true;\n  else if (settled === 'false') where.isSettled = false;\n  if (invoiceF === 'true') where.invoiceIssued = true;\n  else if (invoiceF === 'false') where.invoiceIssued = false;\n  if (clientF) where.client = clientF;\n\n  const [trips, user] = await Promise.all([\n    prisma.trip.findMany({ where, orderBy: { date: 'asc' } }),\n    prisma.user.findUnique({ where: { id: userId }, select: { name: true, vehicleNumber: true, bankName: true, accountNumber: true, accountHolder: true } }),\n  ]);\n\n  const bankInfo = [user?.bankName, user?.accountNumber, user?.accountHolder ? `(${user.accountHolder})` : ''].filter(Boolean).join(' ');\n  const html     = buildHtml(trips, user?.name ?? '', user?.vehicleNumber ?? '', fmt, bankInfo);\n  const filename = slug(user?.vehicleNumber ?? '', year, month);\n\n  const browser = await puppeteer.launch({\n    executablePath: '/usr/bin/google-chrome',\n    args: ['--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage', '--disable-gpu'],\n    headless: true,\n  });\n\n  try {\n    const page = await browser.newPage();\n\n    if (fmt === 'jpeg') {\n      await page.setViewport({ width: 1123, height: 794, deviceScaleFactor: 2 });\n      await page.setContent(html, { waitUntil: 'networkidle2', timeout: 20000 });\n      const img = await page.screenshot({ type: 'jpeg', quality: 93, fullPage: true });\n      return new NextResponse(img, {\n        headers: {\n          'Content-Type': 'image/jpeg',\n          'Content-Disposition': `attachment; filename*=UTF-8''${encodeURIComponent(filename+'.jpg')}`,\n        },\n      });\n    }\n\n    await page.setContent(html, { waitUntil: 'networkidle2', timeout: 20000 });\n    const pdf = await page.pdf({\n      format: 'A4', landscape: true, printBackground: true,\n      margin: { top: '10mm', bottom: '10mm', left: '12mm', right: '12mm' },\n    });\n    return new NextResponse(pdf, {\n      headers: {\n        'Content-Type': 'application/pdf',\n        'Content-Disposition': `attachment; filename*=UTF-8''${encodeURIComponent(filename+'.pdf')}`,\n      },\n    });\n  } finally {\n    await browser.close();\n  }\n}\n","import {\n  AppRouteRouteModule,\n  type AppRouteRouteHandlerContext,\n  type AppRouteRouteModuleOptions,\n  type AppRouteUserlandModule,\n} from '../../server/route-modules/app-route/module.compiled'\nimport { RouteKind } from '../../server/route-kind'\nimport { patchFetch as _patchFetch } from '../../server/lib/patch-fetch'\nimport type { IncomingMessage, ServerResponse } from 'node:http'\nimport {\n  addRequestMeta,\n  getRequestMeta,\n  setRequestMeta,\n  type RequestMeta,\n} from '../../server/request-meta'\nimport { getTracer, type Span, SpanKind } from '../../server/lib/trace/tracer'\nimport { setManifestsSingleton } from '../../server/app-render/manifests-singleton'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport { NodeNextRequest, NodeNextResponse } from '../../server/base-http/node'\nimport {\n  NextRequestAdapter,\n  signalFromNodeResponse,\n} from '../../server/web/spec-extension/adapters/next-request'\nimport { BaseServerSpan } from '../../server/lib/trace/constants'\nimport { getRevalidateReason } from '../../server/instrumentation/utils'\nimport { sendResponse } from '../../server/send-response'\nimport {\n  fromNodeOutgoingHttpHeaders,\n  toNodeOutgoingHttpHeaders,\n} from '../../server/web/utils'\nimport { getCacheControlHeader } from '../../server/lib/cache-control'\nimport { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from '../../lib/constants'\nimport { NoFallbackError } from '../../shared/lib/no-fallback-error.external'\nimport {\n  CachedRouteKind,\n  type ResponseCacheEntry,\n  type ResponseGenerator,\n} from '../../server/response-cache'\nimport * as userland from 'VAR_USERLAND'\n\n// These are injected by the loader afterwards. This is injected as a variable\n// instead of a replacement because this could also be `undefined` instead of\n// an empty string.\ndeclare const nextConfigOutput: AppRouteRouteModuleOptions['nextConfigOutput']\n\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\n// INJECT:nextConfigOutput\n\nconst routeModule = new AppRouteRouteModule({\n  definition: {\n    kind: RouteKind.APP_ROUTE,\n    page: 'VAR_DEFINITION_PAGE',\n    pathname: 'VAR_DEFINITION_PATHNAME',\n    filename: 'VAR_DEFINITION_FILENAME',\n    bundlePath: 'VAR_DEFINITION_BUNDLE_PATH',\n  },\n  distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '',\n  relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '',\n  resolvedPagePath: 'VAR_RESOLVED_PAGE_PATH',\n  nextConfigOutput,\n  // The static import is used for initialization (methods, dynamic, etc.).\n  userland: userland as AppRouteUserlandModule,\n  // In Turbopack dev mode, also provide a getter that calls require() on every\n  // request. This re-reads from devModuleCache so HMR updates are picked up,\n  // and the async wrapper unwraps async-module Promises (ESM-only\n  // serverExternalPackages) automatically.\n  ...(process.env.TURBOPACK && process.env.__NEXT_DEV_SERVER\n    ? {\n        getUserland: () => import('VAR_USERLAND'),\n      }\n    : {}),\n})\n\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule\n\nfunction patchFetch() {\n  return _patchFetch({\n    workAsyncStorage,\n    workUnitAsyncStorage,\n  })\n}\n\nexport {\n  routeModule,\n  workAsyncStorage,\n  workUnitAsyncStorage,\n  serverHooks,\n  patchFetch,\n}\n\nexport async function handler(\n  req: IncomingMessage,\n  res: ServerResponse,\n  ctx: {\n    waitUntil?: (prom: Promise<void>) => void\n    requestMeta?: RequestMeta\n  }\n) {\n  if (ctx.requestMeta) {\n    setRequestMeta(req, ctx.requestMeta)\n  }\n  if (routeModule.isDev) {\n    addRequestMeta(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint())\n  }\n  let srcPage = 'VAR_DEFINITION_PAGE'\n\n  // turbopack doesn't normalize `/index` in the page name\n  // so we need to to process dynamic routes properly\n  // TODO: fix turbopack providing differing value from webpack\n  if (process.env.TURBOPACK) {\n    srcPage = srcPage.replace(/\\/index$/, '') || '/'\n  } else if (srcPage === '/index') {\n    // we always normalize /index specifically\n    srcPage = '/'\n  }\n  const multiZoneDraftMode = process.env\n    .__NEXT_MULTI_ZONE_DRAFT_MODE as any as boolean\n\n  const prepareResult = await routeModule.prepare(req, res, {\n    srcPage,\n    multiZoneDraftMode,\n  })\n\n  if (!prepareResult) {\n    res.statusCode = 400\n    res.end('Bad Request')\n    ctx.waitUntil?.(Promise.resolve())\n    return null\n  }\n\n  const {\n    buildId,\n    params,\n    nextConfig,\n    parsedUrl,\n    isDraftMode,\n    prerenderManifest,\n    routerServerContext,\n    isOnDemandRevalidate,\n    revalidateOnlyGenerated,\n    resolvedPathname,\n    clientReferenceManifest,\n    serverActionsManifest,\n  } = prepareResult\n\n  const normalizedSrcPage = normalizeAppPath(srcPage)\n\n  let isIsr = Boolean(\n    prerenderManifest.dynamicRoutes[normalizedSrcPage] ||\n      prerenderManifest.routes[resolvedPathname]\n  )\n\n  const render404 = async () => {\n    // TODO: should route-module itself handle rendering the 404\n    if (routerServerContext?.render404) {\n      await routerServerContext.render404(req, res, parsedUrl, false)\n    } else {\n      res.end('This page could not be found')\n    }\n    return null\n  }\n\n  if (isIsr && !isDraftMode) {\n    const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname])\n    const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]\n\n    if (prerenderInfo) {\n      if (prerenderInfo.fallback === false && !isPrerendered) {\n        if (nextConfig.adapterPath) {\n          return await render404()\n        }\n        throw new NoFallbackError()\n      }\n    }\n  }\n\n  let cacheKey: string | null = null\n\n  if (isIsr && !routeModule.isDev && !isDraftMode) {\n    cacheKey = resolvedPathname\n    // ensure /index and / is normalized to one key\n    cacheKey = cacheKey === '/index' ? '/' : cacheKey\n  }\n\n  const supportsDynamicResponse: boolean =\n    // If we're in development, we always support dynamic HTML\n    routeModule.isDev === true ||\n    // If this is not SSG or does not have static paths, then it supports\n    // dynamic HTML.\n    !isIsr\n\n  // This is a revalidation request if the request is for a static\n  // page and it is not being resumed from a postponed render and\n  // it is not a dynamic RSC request then it is a revalidation\n  // request.\n  const isStaticGeneration = isIsr && !supportsDynamicResponse\n\n  // Before rendering (which initializes component tree modules), we have to\n  // set the reference manifests to our global store so Server Action's\n  // encryption util can access to them at the top level of the page module.\n  if (serverActionsManifest && clientReferenceManifest) {\n    setManifestsSingleton({\n      page: srcPage,\n      clientReferenceManifest,\n      serverActionsManifest,\n    })\n  }\n\n  const method = req.method || 'GET'\n  const tracer = getTracer()\n  const activeSpan = tracer.getActiveScopeSpan()\n  const isWrappedByNextServer = Boolean(\n    routerServerContext?.isWrappedByNextServer\n  )\n  const isMinimalMode = Boolean(getRequestMeta(req, 'minimalMode'))\n\n  const incrementalCache =\n    getRequestMeta(req, 'incrementalCache') ||\n    (await routeModule.getIncrementalCache(\n      req,\n      nextConfig,\n      prerenderManifest,\n      isMinimalMode\n    ))\n\n  incrementalCache?.resetRequestCache()\n  ;(globalThis as any).__incrementalCache = incrementalCache\n\n  const context: AppRouteRouteHandlerContext = {\n    params,\n    previewProps: prerenderManifest.preview,\n    renderOpts: {\n      experimental: {\n        authInterrupts: Boolean(nextConfig.experimental.authInterrupts),\n      },\n      cacheComponents: Boolean(nextConfig.cacheComponents),\n      supportsDynamicResponse,\n      incrementalCache,\n      cacheLifeProfiles: nextConfig.cacheLife,\n      waitUntil: ctx.waitUntil,\n      onClose: (cb) => {\n        res.on('close', cb)\n      },\n      onAfterTaskError: undefined,\n      onInstrumentationRequestError: (\n        error,\n        _request,\n        errorContext,\n        silenceLog\n      ) =>\n        routeModule.onRequestError(\n          req,\n          error,\n          errorContext,\n          silenceLog,\n          routerServerContext\n        ),\n    },\n    sharedContext: {\n      buildId,\n    },\n  }\n  const nodeNextReq = new NodeNextRequest(req)\n  const nodeNextRes = new NodeNextResponse(res)\n\n  const nextReq = NextRequestAdapter.fromNodeNextRequest(\n    nodeNextReq,\n    signalFromNodeResponse(res)\n  )\n\n  try {\n    let parentSpan: Span | undefined\n    const invokeRouteModule = async (span?: Span) => {\n      return routeModule.handle(nextReq, context).finally(() => {\n        if (!span) return\n\n        span.setAttributes({\n          'http.status_code': res.statusCode,\n          'next.rsc': false,\n        })\n\n        const rootSpanAttributes = tracer.getRootSpanAttributes()\n        // We were unable to get attributes, probably OTEL is not enabled\n        if (!rootSpanAttributes) {\n          return\n        }\n\n        if (\n          rootSpanAttributes.get('next.span_type') !==\n          BaseServerSpan.handleRequest\n        ) {\n          console.warn(\n            `Unexpected root span type '${rootSpanAttributes.get(\n              'next.span_type'\n            )}'. Please report this Next.js issue https://github.com/vercel/next.js`\n          )\n          return\n        }\n\n        const route = rootSpanAttributes.get('next.route')\n        if (route) {\n          const name = `${method} ${route}`\n\n          span.setAttributes({\n            'next.route': route,\n            'http.route': route,\n            'next.span_name': name,\n          })\n          span.updateName(name)\n\n          // Propagate http.route to the parent span if one exists (e.g.\n          // a platform-created HTTP span in adapter deployments).\n          if (parentSpan && parentSpan !== span) {\n            parentSpan.setAttribute('http.route', route)\n            parentSpan.updateName(name)\n          }\n        } else {\n          span.updateName(`${method} ${srcPage}`)\n        }\n      })\n    }\n\n    const handleResponse = async (currentSpan?: Span) => {\n      const responseGenerator: ResponseGenerator = async ({\n        previousCacheEntry,\n      }) => {\n        try {\n          if (\n            !isMinimalMode &&\n            isOnDemandRevalidate &&\n            revalidateOnlyGenerated &&\n            !previousCacheEntry\n          ) {\n            res.statusCode = 404\n            // on-demand revalidate always sets this header\n            res.setHeader('x-nextjs-cache', 'REVALIDATED')\n            res.end('This page could not be found')\n            return null\n          }\n\n          const response = await invokeRouteModule(currentSpan)\n\n          ;(req as any).fetchMetrics = (context.renderOpts as any).fetchMetrics\n          let pendingWaitUntil = context.renderOpts.pendingWaitUntil\n\n          // Attempt using provided waitUntil if available\n          // if it's not we fallback to sendResponse's handling\n          if (pendingWaitUntil) {\n            if (ctx.waitUntil) {\n              ctx.waitUntil(pendingWaitUntil)\n              pendingWaitUntil = undefined\n            }\n          }\n          const cacheTags = context.renderOpts.collectedTags\n\n          // If the request is for a static response, we can cache it so long\n          // as it's not edge.\n          if (isIsr) {\n            const blob = await response.blob()\n\n            // Copy the headers from the response.\n            const headers = toNodeOutgoingHttpHeaders(response.headers)\n\n            if (cacheTags) {\n              headers[NEXT_CACHE_TAGS_HEADER] = cacheTags\n            }\n\n            if (!headers['content-type'] && blob.type) {\n              headers['content-type'] = blob.type\n            }\n\n            const revalidate =\n              typeof context.renderOpts.collectedRevalidate === 'undefined' ||\n              context.renderOpts.collectedRevalidate >= INFINITE_CACHE\n                ? false\n                : context.renderOpts.collectedRevalidate\n\n            const expire =\n              typeof context.renderOpts.collectedExpire === 'undefined' ||\n              context.renderOpts.collectedExpire >= INFINITE_CACHE\n                ? undefined\n                : context.renderOpts.collectedExpire\n\n            // Create the cache entry for the response.\n            const cacheEntry: ResponseCacheEntry = {\n              value: {\n                kind: CachedRouteKind.APP_ROUTE,\n                status: response.status,\n                body: Buffer.from(await blob.arrayBuffer()),\n                headers,\n              },\n              cacheControl: { revalidate, expire },\n            }\n\n            return cacheEntry\n          } else {\n            // send response without caching if not ISR\n            await sendResponse(\n              nodeNextReq,\n              nodeNextRes,\n              response,\n              context.renderOpts.pendingWaitUntil\n            )\n            return null\n          }\n        } catch (err) {\n          // if this is a background revalidate we need to report\n          // the request error here as it won't be bubbled\n          if (previousCacheEntry?.isStale) {\n            const silenceLog = false\n            await routeModule.onRequestError(\n              req,\n              err,\n              {\n                routerKind: 'App Router',\n                routePath: srcPage,\n                routeType: 'route',\n                revalidateReason: getRevalidateReason({\n                  isStaticGeneration,\n                  isOnDemandRevalidate,\n                }),\n              },\n              silenceLog,\n              routerServerContext\n            )\n          }\n          throw err\n        }\n      }\n\n      const cacheEntry = await routeModule.handleResponse({\n        req,\n        nextConfig,\n        cacheKey,\n        routeKind: RouteKind.APP_ROUTE,\n        isFallback: false,\n        prerenderManifest,\n        isRoutePPREnabled: false,\n        isOnDemandRevalidate,\n        revalidateOnlyGenerated,\n        responseGenerator,\n        waitUntil: ctx.waitUntil,\n        isMinimalMode,\n      })\n\n      // we don't create a cacheEntry for ISR\n      if (!isIsr) {\n        return null\n      }\n\n      if (cacheEntry?.value?.kind !== CachedRouteKind.APP_ROUTE) {\n        throw new Error(\n          `Invariant: app-route received invalid cache entry ${cacheEntry?.value?.kind}`\n        )\n      }\n\n      if (!isMinimalMode) {\n        res.setHeader(\n          'x-nextjs-cache',\n          isOnDemandRevalidate\n            ? 'REVALIDATED'\n            : cacheEntry.isMiss\n              ? 'MISS'\n              : cacheEntry.isStale\n                ? 'STALE'\n                : 'HIT'\n        )\n      }\n\n      // Draft mode should never be cached\n      if (isDraftMode) {\n        res.setHeader(\n          'Cache-Control',\n          'private, no-cache, no-store, max-age=0, must-revalidate'\n        )\n      }\n\n      const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers)\n\n      if (!(isMinimalMode && isIsr)) {\n        headers.delete(NEXT_CACHE_TAGS_HEADER)\n      }\n\n      // If cache control is already set on the response we don't\n      // override it to allow users to customize it via next.config\n      if (\n        cacheEntry.cacheControl &&\n        !res.getHeader('Cache-Control') &&\n        !headers.get('Cache-Control')\n      ) {\n        headers.set(\n          'Cache-Control',\n          getCacheControlHeader(cacheEntry.cacheControl)\n        )\n      }\n\n      await sendResponse(\n        nodeNextReq,\n        nodeNextRes,\n        // @ts-expect-error - Argument of type 'Buffer<ArrayBufferLike>' is not assignable to parameter of type 'BodyInit | null | undefined'.\n        new Response(cacheEntry.value.body, {\n          headers,\n          status: cacheEntry.value.status || 200,\n        })\n      )\n      return null\n    }\n\n    // TODO: activeSpan code path is for when wrapped by\n    // next-server can be removed when this is no longer used\n    if (isWrappedByNextServer && activeSpan) {\n      await handleResponse(activeSpan)\n    } else {\n      parentSpan = tracer.getActiveScopeSpan()\n      await tracer.withPropagatedContext(\n        req.headers,\n        () =>\n          tracer.trace(\n            BaseServerSpan.handleRequest,\n            {\n              spanName: `${method} ${srcPage}`,\n              kind: SpanKind.SERVER,\n              attributes: {\n                'http.method': method,\n                'http.target': req.url,\n              },\n            },\n            handleResponse\n          ),\n        undefined,\n        !isWrappedByNextServer\n      )\n    }\n  } catch (err) {\n    if (!(err instanceof NoFallbackError)) {\n      const silenceLog = false\n      await routeModule.onRequestError(\n        req,\n        err,\n        {\n          routerKind: 'App Router',\n          routePath: normalizedSrcPage,\n          routeType: 'route',\n          revalidateReason: getRevalidateReason({\n            isStaticGeneration,\n            isOnDemandRevalidate,\n          }),\n        },\n        silenceLog,\n        routerServerContext\n      )\n    }\n\n    // rethrow so that we can handle serving error page\n\n    // If this is during static generation, throw the error again.\n    if (isIsr) throw err\n\n    // Otherwise, send a 500 response.\n    await sendResponse(\n      nodeNextReq,\n      nodeNextRes,\n      new Response(null, { status: 500 })\n    )\n    return null\n  }\n}\n"],"names":["DAYS","ROWS","H_ROW","TH_ROW","D_ROW","FTR","slug","vNum","year","month","n","Date","p","v","l","String","padStart","last4","replace","slice","getHours","getMinutes","getSeconds","fmtDate","d","yy","getFullYear","getMonth","getDate","fmtFee","toLocaleString","chunk","arr","r","i","length","push","B","base","thS","buildPage","trips","pi","name","printDate","bankInfo","headers","colW","cols","map","w","join","ths","h","dataRows","Array","from","_","t","c","cl","cr","date","loadingLoc","unloadingLoc","client","fee","hr","supply","reduce","s","tax","Math","round","total","buildHtml","fmt","now","getDay","pages","body","pageStyle","atPage","GET","req","session","user","id","json","error","status","userId","parseInt","searchParams","URL","url","get","to","settled","invoiceF","clientF","dateWhere","gte","lte","lt","where","isSettled","invoiceIssued","Promise","all","trip","findMany","orderBy","findUnique","select","vehicleNumber","bankName","accountNumber","accountHolder","filter","Boolean","html","filename","browser","launch","executablePath","args","headless","page","newPage","setViewport","width","height","deviceScaleFactor","setContent","waitUntil","timeout","img","screenshot","type","quality","fullPage","encodeURIComponent","pdf","format","landscape","printBackground","margin","top","bottom","left","right","close","AppRouteRouteModule","RouteKind","patchFetch","_patchFetch","addRequestMeta","getRequestMeta","setRequestMeta","getTracer","SpanKind","setManifestsSingleton","normalizeAppPath","NodeNextRequest","NodeNextResponse","NextRequestAdapter","signalFromNodeResponse","BaseServerSpan","getRevalidateReason","sendResponse","fromNodeOutgoingHttpHeaders","toNodeOutgoingHttpHeaders","getCacheControlHeader","INFINITE_CACHE","NEXT_CACHE_TAGS_HEADER","NoFallbackError","CachedRouteKind","userland","routeModule","definition","kind","APP_ROUTE","pathname","bundlePath","distDir","process","env","__NEXT_RELATIVE_DIST_DIR","relativeProjectDir","__NEXT_RELATIVE_PROJECT_DIR","resolvedPagePath","nextConfigOutput","TURBOPACK","__NEXT_DEV_SERVER","getUserland","workAsyncStorage","workUnitAsyncStorage","serverHooks","handler","res","ctx","requestMeta","isDev","hrtime","bigint","srcPage","multiZoneDraftMode","__NEXT_MULTI_ZONE_DRAFT_MODE","prepareResult","prepare","statusCode","end","resolve","buildId","params","nextConfig","parsedUrl","isDraftMode","prerenderManifest","routerServerContext","isOnDemandRevalidate","revalidateOnlyGenerated","resolvedPathname","clientReferenceManifest","serverActionsManifest","normalizedSrcPage","isIsr","dynamicRoutes","routes","render404","isPrerendered","prerenderInfo","fallback","adapterPath","cacheKey","supportsDynamicResponse","isStaticGeneration","method","tracer","activeSpan","getActiveScopeSpan","isWrappedByNextServer","isMinimalMode","incrementalCache","getIncrementalCache","resetRequestCache","globalThis","__incrementalCache","context","previewProps","preview","renderOpts","experimental","authInterrupts","cacheComponents","cacheLifeProfiles","cacheLife","onClose","cb","on","onAfterTaskError","undefined","onInstrumentationRequestError","_request","errorContext","silenceLog","onRequestError","sharedContext","nodeNextReq","nodeNextRes","nextReq","fromNodeNextRequest","parentSpan","invokeRouteModule","span","handle","finally","setAttributes","rootSpanAttributes","getRootSpanAttributes","handleRequest","console","warn","route","updateName","setAttribute","handleResponse","currentSpan","cacheEntry","responseGenerator","previousCacheEntry","setHeader","response","fetchMetrics","pendingWaitUntil","cacheTags","collectedTags","blob","revalidate","collectedRevalidate","expire","collectedExpire","value","Buffer","arrayBuffer","cacheControl","err","isStale","routerKind","routePath","routeType","revalidateReason","routeKind","isFallback","isRoutePPREnabled","Error","isMiss","delete","getHeader","set","Response","withPropagatedContext","trace","spanName","SERVER","attributes"],"mappings":"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","ignoreList":[1]}
/home/lucas/.www/transit/.next/server/chunks/_0vz8ckw._.js.map:{"version":3,"sources":["../../../app/api/trailer-trips/pdf/route.ts","../../../node_modules/next/src/build/templates/app-route.ts"],"sourcesContent":["import { NextRequest, NextResponse } from 'next/server';\nimport { getServerSession } from 'next-auth';\nimport { authOptions } from '@/app/api/auth/[...nextauth]/route';\nimport prisma from '@/lib/prisma';\nimport puppeteer from 'puppeteer-core';\n\nconst DAYS = ['일', '월', '화', '수', '목', '금', '토'];\nconst ROWS = 15;\n\n// Layout constants — content area 273mm × 190mm (A4 landscape, 12mm L/R, 10mm T/B margins)\n// header 2×8mm=16mm + 1mm gap + TH 7mm + data 15×10mm=150mm + 1mm gap + footer 15mm = 190mm ✓\nconst H_ROW = '8mm';   // header rows\nconst TH_ROW = '7mm';  // column-header row\nconst D_ROW = '10mm';  // data rows\nconst FTR = '15mm';    // footer row\n\nfunction slug(vNum: string, year: number, month: number) {\n  const n = new Date();\n  const p = (v: number, l = 2) => String(v).padStart(l, '0');\n  const last4 = vNum.replace(/\\D/g, '').slice(-4) || '0000';\n  return `${last4}-${year}-${p(month)}-${p(n.getHours())}${p(n.getMinutes())}${p(n.getSeconds())}`;\n}\n\nfunction fmtDate(d: Date) {\n  const yy = String(d.getFullYear()).slice(2);\n  return `${yy}/${String(d.getMonth()+1).padStart(2,'0')}/${String(d.getDate()).padStart(2,'0')}`;\n}\n\nfunction chunk<T>(arr: T[], n: number): T[][] {\n  const r: T[][] = [];\n  for (let i = 0; i < arr.length; i += n) r.push(arr.slice(i, i+n));\n  return r;\n}\n\ntype Trip = Awaited<ReturnType<typeof prisma.trailerTrip.findMany>>[0];\n\nconst B = 'border:1px solid #000;';\nconst base = `${B}padding:0 3px;font-size:8.5pt;vertical-align:middle;text-align:center;word-break:keep-all;overflow:hidden;white-space:nowrap;`;\nconst th   = `${base}background:#e0e0e0;font-weight:700;`;\n\nfunction buildPage(trips: Trip[], pi: number, name: string, vNum: string, printDate: string, bankInfo: string, companyLogo: string, companyName: string): string {\n  const headers = ['No','날짜','출발지','도착지','화주','선사','CONT No.','SEAL No.','규격','F/E','비고'];\n  const colW    = ['3%','7%','12%','12%','8%','8%','14%','14%','6%','4%','12%'];\n  const cols    = colW.map(w => `<col style=\"width:${w}\"/>`).join('');\n  const ths     = headers.map(h => `<th style=\"${th}height:${TH_ROW};\">${h}</th>`).join('');\n\n  const dataRows = Array.from({length: ROWS}).map((_, i) => {\n    const t = trips[i];\n    const n = pi * ROWS + i + 1;\n    const c  = `${base}height:${D_ROW};`;\n    const cl = `${base}height:${D_ROW};text-align:left;font-size:7.5pt;white-space:normal;`;\n    const cs = `${base}height:${D_ROW};font-size:7.5pt;`;\n    return `<tr>\n      <td style=\"${c}\">${t ? n : ''}</td>\n      <td style=\"${c}\">${t ? fmtDate(new Date(t.date)) : ''}</td>\n      <td style=\"${cl}\">${t?.loadingLoc ?? ''}</td>\n      <td style=\"${cl}\">${t?.unloadingLoc ?? ''}</td>\n      <td style=\"${cs}\">${t?.client ?? ''}</td>\n      <td style=\"${cs}\">${t?.shippingCo ?? ''}</td>\n      <td style=\"${base}height:${D_ROW};font-size:8pt;\">${t?.conNo ?? ''}</td>\n      <td style=\"${base}height:${D_ROW};font-size:8pt;\">${t?.serialNo ?? ''}</td>\n      <td style=\"${base}height:${D_ROW};font-size:8pt;\">${t?.spec ?? ''}</td>\n      <td style=\"${c}\">${t?.fullEmpty ?? ''}</td>\n      <td style=\"${cl}\">${t?.memo ?? ''}</td>\n    </tr>`;\n  }).join('');\n\n  const hr  = `${base}height:${H_ROW};`;\n  const hth = `${th}height:${H_ROW};`;\n  const logoCell = companyLogo\n    ? `<img src=\"${companyLogo}\" style=\"max-height:12mm;max-width:58mm;object-fit:contain;display:block;margin-left:auto;margin-bottom:3px;\"/>`\n    : companyName\n      ? `<div style=\"font-size:11pt;font-weight:800;text-align:right;margin-bottom:3px;\">${companyName}</div>`\n      : '';\n\n  return `<div class=\"page\">\n    <table style=\"width:100%;border-collapse:collapse;table-layout:fixed;margin-bottom:1mm;\">\n      <colgroup><col style=\"width:20mm\"/><col style=\"width:20mm\"/><col/><col style=\"width:62mm\"/></colgroup>\n      <tbody>\n        <tr>\n          <td style=\"${hth}\">차량번호</td>\n          <td style=\"${hth}\">성&nbsp;&nbsp;&nbsp;명</td>\n          <td style=\"${hr}text-align:center;font-size:18pt;font-weight:900;letter-spacing:4px;\" rowspan=\"2\">차량  운행  일보</td>\n          <td style=\"${hr}text-align:right;vertical-align:middle;padding:2px 6px;\" rowspan=\"2\">${logoCell}<div style=\"font-size:8pt;white-space:normal;text-align:right;\">${printDate}</div></td>\n        </tr>\n        <tr>\n          <td style=\"${hr}font-weight:700;font-size:9pt;\">${vNum}</td>\n          <td style=\"${hr}font-weight:700;font-size:9pt;\">${name}</td>\n        </tr>\n      </tbody>\n    </table>\n    <table style=\"width:100%;border-collapse:collapse;table-layout:fixed;\">\n      <colgroup>${cols}</colgroup>\n      <thead><tr>${ths}</tr></thead>\n      <tbody>${dataRows}</tbody>\n    </table>\n    <table style=\"width:100%;border-collapse:collapse;table-layout:fixed;margin-top:1mm;\">\n      <tbody>\n        <tr>\n          <td style=\"${base}height:${FTR};width:75%;text-align:left;vertical-align:top;white-space:normal;padding:2px 4px;\">\n            <span style=\"font-size:8.5pt;font-weight:700;\">특 이 사 항 (데미지, 대기 등)</span>\n            ${bankInfo ? `<br/><span style=\"font-size:7.5pt;color:#333;\">${bankInfo}</span>` : ''}\n          </td>\n          <td style=\"${base}height:${FTR};font-weight:700;font-size:9pt;\">담당자 확인</td>\n        </tr>\n      </tbody>\n    </table>\n  </div>`;\n}\n\nfunction buildHtml(trips: Trip[], name: string, vNum: string, fmt: 'pdf' | 'jpeg', bankInfo: string, companyLogo: string, companyName: string): string {\n  const now = new Date();\n  const printDate = `${now.getFullYear()}년 ${now.getMonth()+1}월 ${now.getDate()}일 ${DAYS[now.getDay()]}요일`;\n  const pages = chunk(trips, ROWS);\n  const body  = (pages.length > 0 ? pages : [[]]).map((p, i) => buildPage(p, i, name, vNum, printDate, bankInfo, companyLogo, companyName)).join('');\n\n  // PDF: @page CSS must NOT set margin (puppeteer's margin option takes effect)\n  // Image: .page = full A4 landscape with padding acting as margins\n  const pageStyle = fmt === 'pdf'\n    ? 'width:273mm;height:190mm;background:#fff;overflow:hidden;page-break-after:always;'\n    : 'width:297mm;height:210mm;background:#fff;box-sizing:border-box;padding:10mm 12mm;';\n\n  const atPage = fmt === 'pdf'\n    ? '@page{size:A4 landscape;}'\n    : '@page{size:A4 landscape;margin:0}';\n\n  return `<!DOCTYPE html><html><head><meta charset=\"utf-8\">\n<link href=\"https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;700;900&display=swap\" rel=\"stylesheet\">\n<style>\n${atPage}\n*{margin:0;padding:0;box-sizing:border-box}\nbody{font-family:'Noto Sans KR',sans-serif;background:#fff;}\n.page{${pageStyle}}\n.page:last-child{page-break-after:avoid}\n</style></head><body>${body}</body></html>`;\n}\n\nexport async function GET(req: NextRequest) {\n  const session = await getServerSession(authOptions);\n  if (!session?.user?.id) return NextResponse.json({ error: 'Unauthorized' }, { status: 401 });\n  const userId = parseInt(session.user.id);\n\n  const { searchParams } = new URL(req.url);\n  const year  = parseInt(searchParams.get('year')  ?? String(new Date().getFullYear()));\n  const month = parseInt(searchParams.get('month') ?? String(new Date().getMonth()+1));\n  const fmt   = searchParams.get('format') === 'jpeg' ? 'jpeg' : 'pdf';\n\n  const [trips, user] = await Promise.all([\n    prisma.trailerTrip.findMany({\n      where: { userId, date: { gte: new Date(year, month-1, 1), lt: new Date(year, month, 1) } },\n      orderBy: { date: 'asc' },\n    }),\n    prisma.user.findUnique({ where: { id: userId }, select: { name: true, vehicleNumber: true, bankName: true, accountNumber: true, accountHolder: true, companyName: true, companyLogo: true } }),\n  ]);\n\n  const bankInfo = [user?.bankName, user?.accountNumber, user?.accountHolder ? `(${user.accountHolder})` : ''].filter(Boolean).join(' ');\n  const html     = buildHtml(trips, user?.name ?? '', user?.vehicleNumber ?? '', fmt, bankInfo, user?.companyLogo ?? '', user?.companyName ?? '');\n  const filename = slug(user?.vehicleNumber ?? '', year, month);\n\n  const browser = await puppeteer.launch({\n    executablePath: '/usr/bin/google-chrome',\n    args: ['--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage', '--disable-gpu'],\n    headless: true,\n  });\n\n  try {\n    const page = await browser.newPage();\n\n    if (fmt === 'jpeg') {\n      // A4 landscape at 96 dpi: 297mm × 210mm = 1123px × 794px; ×2 deviceScaleFactor = 2246×1588\n      await page.setViewport({ width: 1123, height: 794, deviceScaleFactor: 2 });\n      await page.setContent(html, { waitUntil: 'networkidle2', timeout: 20000 });\n      const img = await page.screenshot({ type: 'jpeg', quality: 93, fullPage: true });\n      return new NextResponse(img, {\n        headers: {\n          'Content-Type': 'image/jpeg',\n          'Content-Disposition': `attachment; filename*=UTF-8''${encodeURIComponent(filename+'.jpg')}`,\n        },\n      });\n    }\n\n    // PDF: margins handled here (CSS @page has no margin so these take effect)\n    await page.setContent(html, { waitUntil: 'networkidle2', timeout: 20000 });\n    const pdf = await page.pdf({\n      format: 'A4',\n      landscape: true,\n      printBackground: true,\n      margin: { top: '10mm', bottom: '10mm', left: '12mm', right: '12mm' },\n    });\n    return new NextResponse(pdf, {\n      headers: {\n        'Content-Type': 'application/pdf',\n        'Content-Disposition': `attachment; filename*=UTF-8''${encodeURIComponent(filename+'.pdf')}`,\n      },\n    });\n  } finally {\n    await browser.close();\n  }\n}\n","import {\n  AppRouteRouteModule,\n  type AppRouteRouteHandlerContext,\n  type AppRouteRouteModuleOptions,\n  type AppRouteUserlandModule,\n} from '../../server/route-modules/app-route/module.compiled'\nimport { RouteKind } from '../../server/route-kind'\nimport { patchFetch as _patchFetch } from '../../server/lib/patch-fetch'\nimport type { IncomingMessage, ServerResponse } from 'node:http'\nimport {\n  addRequestMeta,\n  getRequestMeta,\n  setRequestMeta,\n  type RequestMeta,\n} from '../../server/request-meta'\nimport { getTracer, type Span, SpanKind } from '../../server/lib/trace/tracer'\nimport { setManifestsSingleton } from '../../server/app-render/manifests-singleton'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport { NodeNextRequest, NodeNextResponse } from '../../server/base-http/node'\nimport {\n  NextRequestAdapter,\n  signalFromNodeResponse,\n} from '../../server/web/spec-extension/adapters/next-request'\nimport { BaseServerSpan } from '../../server/lib/trace/constants'\nimport { getRevalidateReason } from '../../server/instrumentation/utils'\nimport { sendResponse } from '../../server/send-response'\nimport {\n  fromNodeOutgoingHttpHeaders,\n  toNodeOutgoingHttpHeaders,\n} from '../../server/web/utils'\nimport { getCacheControlHeader } from '../../server/lib/cache-control'\nimport { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from '../../lib/constants'\nimport { NoFallbackError } from '../../shared/lib/no-fallback-error.external'\nimport {\n  CachedRouteKind,\n  type ResponseCacheEntry,\n  type ResponseGenerator,\n} from '../../server/response-cache'\nimport * as userland from 'VAR_USERLAND'\n\n// These are injected by the loader afterwards. This is injected as a variable\n// instead of a replacement because this could also be `undefined` instead of\n// an empty string.\ndeclare const nextConfigOutput: AppRouteRouteModuleOptions['nextConfigOutput']\n\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\n// INJECT:nextConfigOutput\n\nconst routeModule = new AppRouteRouteModule({\n  definition: {\n    kind: RouteKind.APP_ROUTE,\n    page: 'VAR_DEFINITION_PAGE',\n    pathname: 'VAR_DEFINITION_PATHNAME',\n    filename: 'VAR_DEFINITION_FILENAME',\n    bundlePath: 'VAR_DEFINITION_BUNDLE_PATH',\n  },\n  distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '',\n  relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '',\n  resolvedPagePath: 'VAR_RESOLVED_PAGE_PATH',\n  nextConfigOutput,\n  // The static import is used for initialization (methods, dynamic, etc.).\n  userland: userland as AppRouteUserlandModule,\n  // In Turbopack dev mode, also provide a getter that calls require() on every\n  // request. This re-reads from devModuleCache so HMR updates are picked up,\n  // and the async wrapper unwraps async-module Promises (ESM-only\n  // serverExternalPackages) automatically.\n  ...(process.env.TURBOPACK && process.env.__NEXT_DEV_SERVER\n    ? {\n        getUserland: () => import('VAR_USERLAND'),\n      }\n    : {}),\n})\n\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule\n\nfunction patchFetch() {\n  return _patchFetch({\n    workAsyncStorage,\n    workUnitAsyncStorage,\n  })\n}\n\nexport {\n  routeModule,\n  workAsyncStorage,\n  workUnitAsyncStorage,\n  serverHooks,\n  patchFetch,\n}\n\nexport async function handler(\n  req: IncomingMessage,\n  res: ServerResponse,\n  ctx: {\n    waitUntil?: (prom: Promise<void>) => void\n    requestMeta?: RequestMeta\n  }\n) {\n  if (ctx.requestMeta) {\n    setRequestMeta(req, ctx.requestMeta)\n  }\n  if (routeModule.isDev) {\n    addRequestMeta(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint())\n  }\n  let srcPage = 'VAR_DEFINITION_PAGE'\n\n  // turbopack doesn't normalize `/index` in the page name\n  // so we need to to process dynamic routes properly\n  // TODO: fix turbopack providing differing value from webpack\n  if (process.env.TURBOPACK) {\n    srcPage = srcPage.replace(/\\/index$/, '') || '/'\n  } else if (srcPage === '/index') {\n    // we always normalize /index specifically\n    srcPage = '/'\n  }\n  const multiZoneDraftMode = process.env\n    .__NEXT_MULTI_ZONE_DRAFT_MODE as any as boolean\n\n  const prepareResult = await routeModule.prepare(req, res, {\n    srcPage,\n    multiZoneDraftMode,\n  })\n\n  if (!prepareResult) {\n    res.statusCode = 400\n    res.end('Bad Request')\n    ctx.waitUntil?.(Promise.resolve())\n    return null\n  }\n\n  const {\n    buildId,\n    params,\n    nextConfig,\n    parsedUrl,\n    isDraftMode,\n    prerenderManifest,\n    routerServerContext,\n    isOnDemandRevalidate,\n    revalidateOnlyGenerated,\n    resolvedPathname,\n    clientReferenceManifest,\n    serverActionsManifest,\n  } = prepareResult\n\n  const normalizedSrcPage = normalizeAppPath(srcPage)\n\n  let isIsr = Boolean(\n    prerenderManifest.dynamicRoutes[normalizedSrcPage] ||\n      prerenderManifest.routes[resolvedPathname]\n  )\n\n  const render404 = async () => {\n    // TODO: should route-module itself handle rendering the 404\n    if (routerServerContext?.render404) {\n      await routerServerContext.render404(req, res, parsedUrl, false)\n    } else {\n      res.end('This page could not be found')\n    }\n    return null\n  }\n\n  if (isIsr && !isDraftMode) {\n    const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname])\n    const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]\n\n    if (prerenderInfo) {\n      if (prerenderInfo.fallback === false && !isPrerendered) {\n        if (nextConfig.adapterPath) {\n          return await render404()\n        }\n        throw new NoFallbackError()\n      }\n    }\n  }\n\n  let cacheKey: string | null = null\n\n  if (isIsr && !routeModule.isDev && !isDraftMode) {\n    cacheKey = resolvedPathname\n    // ensure /index and / is normalized to one key\n    cacheKey = cacheKey === '/index' ? '/' : cacheKey\n  }\n\n  const supportsDynamicResponse: boolean =\n    // If we're in development, we always support dynamic HTML\n    routeModule.isDev === true ||\n    // If this is not SSG or does not have static paths, then it supports\n    // dynamic HTML.\n    !isIsr\n\n  // This is a revalidation request if the request is for a static\n  // page and it is not being resumed from a postponed render and\n  // it is not a dynamic RSC request then it is a revalidation\n  // request.\n  const isStaticGeneration = isIsr && !supportsDynamicResponse\n\n  // Before rendering (which initializes component tree modules), we have to\n  // set the reference manifests to our global store so Server Action's\n  // encryption util can access to them at the top level of the page module.\n  if (serverActionsManifest && clientReferenceManifest) {\n    setManifestsSingleton({\n      page: srcPage,\n      clientReferenceManifest,\n      serverActionsManifest,\n    })\n  }\n\n  const method = req.method || 'GET'\n  const tracer = getTracer()\n  const activeSpan = tracer.getActiveScopeSpan()\n  const isWrappedByNextServer = Boolean(\n    routerServerContext?.isWrappedByNextServer\n  )\n  const isMinimalMode = Boolean(getRequestMeta(req, 'minimalMode'))\n\n  const incrementalCache =\n    getRequestMeta(req, 'incrementalCache') ||\n    (await routeModule.getIncrementalCache(\n      req,\n      nextConfig,\n      prerenderManifest,\n      isMinimalMode\n    ))\n\n  incrementalCache?.resetRequestCache()\n  ;(globalThis as any).__incrementalCache = incrementalCache\n\n  const context: AppRouteRouteHandlerContext = {\n    params,\n    previewProps: prerenderManifest.preview,\n    renderOpts: {\n      experimental: {\n        authInterrupts: Boolean(nextConfig.experimental.authInterrupts),\n      },\n      cacheComponents: Boolean(nextConfig.cacheComponents),\n      supportsDynamicResponse,\n      incrementalCache,\n      cacheLifeProfiles: nextConfig.cacheLife,\n      waitUntil: ctx.waitUntil,\n      onClose: (cb) => {\n        res.on('close', cb)\n      },\n      onAfterTaskError: undefined,\n      onInstrumentationRequestError: (\n        error,\n        _request,\n        errorContext,\n        silenceLog\n      ) =>\n        routeModule.onRequestError(\n          req,\n          error,\n          errorContext,\n          silenceLog,\n          routerServerContext\n        ),\n    },\n    sharedContext: {\n      buildId,\n    },\n  }\n  const nodeNextReq = new NodeNextRequest(req)\n  const nodeNextRes = new NodeNextResponse(res)\n\n  const nextReq = NextRequestAdapter.fromNodeNextRequest(\n    nodeNextReq,\n    signalFromNodeResponse(res)\n  )\n\n  try {\n    let parentSpan: Span | undefined\n    const invokeRouteModule = async (span?: Span) => {\n      return routeModule.handle(nextReq, context).finally(() => {\n        if (!span) return\n\n        span.setAttributes({\n          'http.status_code': res.statusCode,\n          'next.rsc': false,\n        })\n\n        const rootSpanAttributes = tracer.getRootSpanAttributes()\n        // We were unable to get attributes, probably OTEL is not enabled\n        if (!rootSpanAttributes) {\n          return\n        }\n\n        if (\n          rootSpanAttributes.get('next.span_type') !==\n          BaseServerSpan.handleRequest\n        ) {\n          console.warn(\n            `Unexpected root span type '${rootSpanAttributes.get(\n              'next.span_type'\n            )}'. Please report this Next.js issue https://github.com/vercel/next.js`\n          )\n          return\n        }\n\n        const route = rootSpanAttributes.get('next.route')\n        if (route) {\n          const name = `${method} ${route}`\n\n          span.setAttributes({\n            'next.route': route,\n            'http.route': route,\n            'next.span_name': name,\n          })\n          span.updateName(name)\n\n          // Propagate http.route to the parent span if one exists (e.g.\n          // a platform-created HTTP span in adapter deployments).\n          if (parentSpan && parentSpan !== span) {\n            parentSpan.setAttribute('http.route', route)\n            parentSpan.updateName(name)\n          }\n        } else {\n          span.updateName(`${method} ${srcPage}`)\n        }\n      })\n    }\n\n    const handleResponse = async (currentSpan?: Span) => {\n      const responseGenerator: ResponseGenerator = async ({\n        previousCacheEntry,\n      }) => {\n        try {\n          if (\n            !isMinimalMode &&\n            isOnDemandRevalidate &&\n            revalidateOnlyGenerated &&\n            !previousCacheEntry\n          ) {\n            res.statusCode = 404\n            // on-demand revalidate always sets this header\n            res.setHeader('x-nextjs-cache', 'REVALIDATED')\n            res.end('This page could not be found')\n            return null\n          }\n\n          const response = await invokeRouteModule(currentSpan)\n\n          ;(req as any).fetchMetrics = (context.renderOpts as any).fetchMetrics\n          let pendingWaitUntil = context.renderOpts.pendingWaitUntil\n\n          // Attempt using provided waitUntil if available\n          // if it's not we fallback to sendResponse's handling\n          if (pendingWaitUntil) {\n            if (ctx.waitUntil) {\n              ctx.waitUntil(pendingWaitUntil)\n              pendingWaitUntil = undefined\n            }\n          }\n          const cacheTags = context.renderOpts.collectedTags\n\n          // If the request is for a static response, we can cache it so long\n          // as it's not edge.\n          if (isIsr) {\n            const blob = await response.blob()\n\n            // Copy the headers from the response.\n            const headers = toNodeOutgoingHttpHeaders(response.headers)\n\n            if (cacheTags) {\n              headers[NEXT_CACHE_TAGS_HEADER] = cacheTags\n            }\n\n            if (!headers['content-type'] && blob.type) {\n              headers['content-type'] = blob.type\n            }\n\n            const revalidate =\n              typeof context.renderOpts.collectedRevalidate === 'undefined' ||\n              context.renderOpts.collectedRevalidate >= INFINITE_CACHE\n                ? false\n                : context.renderOpts.collectedRevalidate\n\n            const expire =\n              typeof context.renderOpts.collectedExpire === 'undefined' ||\n              context.renderOpts.collectedExpire >= INFINITE_CACHE\n                ? undefined\n                : context.renderOpts.collectedExpire\n\n            // Create the cache entry for the response.\n            const cacheEntry: ResponseCacheEntry = {\n              value: {\n                kind: CachedRouteKind.APP_ROUTE,\n                status: response.status,\n                body: Buffer.from(await blob.arrayBuffer()),\n                headers,\n              },\n              cacheControl: { revalidate, expire },\n            }\n\n            return cacheEntry\n          } else {\n            // send response without caching if not ISR\n            await sendResponse(\n              nodeNextReq,\n              nodeNextRes,\n              response,\n              context.renderOpts.pendingWaitUntil\n            )\n            return null\n          }\n        } catch (err) {\n          // if this is a background revalidate we need to report\n          // the request error here as it won't be bubbled\n          if (previousCacheEntry?.isStale) {\n            const silenceLog = false\n            await routeModule.onRequestError(\n              req,\n              err,\n              {\n                routerKind: 'App Router',\n                routePath: srcPage,\n                routeType: 'route',\n                revalidateReason: getRevalidateReason({\n                  isStaticGeneration,\n                  isOnDemandRevalidate,\n                }),\n              },\n              silenceLog,\n              routerServerContext\n            )\n          }\n          throw err\n        }\n      }\n\n      const cacheEntry = await routeModule.handleResponse({\n        req,\n        nextConfig,\n        cacheKey,\n        routeKind: RouteKind.APP_ROUTE,\n        isFallback: false,\n        prerenderManifest,\n        isRoutePPREnabled: false,\n        isOnDemandRevalidate,\n        revalidateOnlyGenerated,\n        responseGenerator,\n        waitUntil: ctx.waitUntil,\n        isMinimalMode,\n      })\n\n      // we don't create a cacheEntry for ISR\n      if (!isIsr) {\n        return null\n      }\n\n      if (cacheEntry?.value?.kind !== CachedRouteKind.APP_ROUTE) {\n        throw new Error(\n          `Invariant: app-route received invalid cache entry ${cacheEntry?.value?.kind}`\n        )\n      }\n\n      if (!isMinimalMode) {\n        res.setHeader(\n          'x-nextjs-cache',\n          isOnDemandRevalidate\n            ? 'REVALIDATED'\n            : cacheEntry.isMiss\n              ? 'MISS'\n              : cacheEntry.isStale\n                ? 'STALE'\n                : 'HIT'\n        )\n      }\n\n      // Draft mode should never be cached\n      if (isDraftMode) {\n        res.setHeader(\n          'Cache-Control',\n          'private, no-cache, no-store, max-age=0, must-revalidate'\n        )\n      }\n\n      const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers)\n\n      if (!(isMinimalMode && isIsr)) {\n        headers.delete(NEXT_CACHE_TAGS_HEADER)\n      }\n\n      // If cache control is already set on the response we don't\n      // override it to allow users to customize it via next.config\n      if (\n        cacheEntry.cacheControl &&\n        !res.getHeader('Cache-Control') &&\n        !headers.get('Cache-Control')\n      ) {\n        headers.set(\n          'Cache-Control',\n          getCacheControlHeader(cacheEntry.cacheControl)\n        )\n      }\n\n      await sendResponse(\n        nodeNextReq,\n        nodeNextRes,\n        // @ts-expect-error - Argument of type 'Buffer<ArrayBufferLike>' is not assignable to parameter of type 'BodyInit | null | undefined'.\n        new Response(cacheEntry.value.body, {\n          headers,\n          status: cacheEntry.value.status || 200,\n        })\n      )\n      return null\n    }\n\n    // TODO: activeSpan code path is for when wrapped by\n    // next-server can be removed when this is no longer used\n    if (isWrappedByNextServer && activeSpan) {\n      await handleResponse(activeSpan)\n    } else {\n      parentSpan = tracer.getActiveScopeSpan()\n      await tracer.withPropagatedContext(\n        req.headers,\n        () =>\n          tracer.trace(\n            BaseServerSpan.handleRequest,\n            {\n              spanName: `${method} ${srcPage}`,\n              kind: SpanKind.SERVER,\n              attributes: {\n                'http.method': method,\n                'http.target': req.url,\n              },\n            },\n            handleResponse\n          ),\n        undefined,\n        !isWrappedByNextServer\n      )\n    }\n  } catch (err) {\n    if (!(err instanceof NoFallbackError)) {\n      const silenceLog = false\n      await routeModule.onRequestError(\n        req,\n        err,\n        {\n          routerKind: 'App Router',\n          routePath: normalizedSrcPage,\n          routeType: 'route',\n          revalidateReason: getRevalidateReason({\n            isStaticGeneration,\n            isOnDemandRevalidate,\n          }),\n        },\n        silenceLog,\n        routerServerContext\n      )\n    }\n\n    // rethrow so that we can handle serving error page\n\n    // If this is during static generation, throw the error again.\n    if (isIsr) throw err\n\n    // Otherwise, send a 500 response.\n    await sendResponse(\n      nodeNextReq,\n      nodeNextRes,\n      new Response(null, { status: 500 })\n    )\n    return null\n  }\n}\n"],"names":["DAYS","ROWS","H_ROW","TH_ROW","D_ROW","FTR","slug","vNum","year","month","n","Date","p","v","l","String","padStart","last4","replace","slice","getHours","getMinutes","getSeconds","fmtDate","d","yy","getFullYear","getMonth","getDate","chunk","arr","r","i","length","push","B","base","th","buildPage","trips","pi","name","printDate","bankInfo","companyLogo","companyName","headers","colW","cols","map","w","join","ths","h","dataRows","Array","from","_","t","c","cl","cs","date","loadingLoc","unloadingLoc","client","shippingCo","conNo","serialNo","spec","fullEmpty","memo","hr","hth","logoCell","buildHtml","fmt","now","getDay","pages","body","pageStyle","atPage","GET","req","session","user","id","json","error","status","userId","parseInt","searchParams","URL","url","get","Promise","all","trailerTrip","findMany","where","gte","lt","orderBy","findUnique","select","vehicleNumber","bankName","accountNumber","accountHolder","filter","Boolean","html","filename","browser","launch","executablePath","args","headless","page","newPage","setViewport","width","height","deviceScaleFactor","setContent","waitUntil","timeout","img","screenshot","type","quality","fullPage","encodeURIComponent","pdf","format","landscape","printBackground","margin","top","bottom","left","right","close","AppRouteRouteModule","RouteKind","patchFetch","_patchFetch","addRequestMeta","getRequestMeta","setRequestMeta","getTracer","SpanKind","setManifestsSingleton","normalizeAppPath","NodeNextRequest","NodeNextResponse","NextRequestAdapter","signalFromNodeResponse","BaseServerSpan","getRevalidateReason","sendResponse","fromNodeOutgoingHttpHeaders","toNodeOutgoingHttpHeaders","getCacheControlHeader","INFINITE_CACHE","NEXT_CACHE_TAGS_HEADER","NoFallbackError","CachedRouteKind","userland","routeModule","definition","kind","APP_ROUTE","pathname","bundlePath","distDir","process","env","__NEXT_RELATIVE_DIST_DIR","relativeProjectDir","__NEXT_RELATIVE_PROJECT_DIR","resolvedPagePath","nextConfigOutput","TURBOPACK","__NEXT_DEV_SERVER","getUserland","workAsyncStorage","workUnitAsyncStorage","serverHooks","handler","res","ctx","requestMeta","isDev","hrtime","bigint","srcPage","multiZoneDraftMode","__NEXT_MULTI_ZONE_DRAFT_MODE","prepareResult","prepare","statusCode","end","resolve","buildId","params","nextConfig","parsedUrl","isDraftMode","prerenderManifest","routerServerContext","isOnDemandRevalidate","revalidateOnlyGenerated","resolvedPathname","clientReferenceManifest","serverActionsManifest","normalizedSrcPage","isIsr","dynamicRoutes","routes","render404","isPrerendered","prerenderInfo","fallback","adapterPath","cacheKey","supportsDynamicResponse","isStaticGeneration","method","tracer","activeSpan","getActiveScopeSpan","isWrappedByNextServer","isMinimalMode","incrementalCache","getIncrementalCache","resetRequestCache","globalThis","__incrementalCache","context","previewProps","preview","renderOpts","experimental","authInterrupts","cacheComponents","cacheLifeProfiles","cacheLife","onClose","cb","on","onAfterTaskError","undefined","onInstrumentationRequestError","_request","errorContext","silenceLog","onRequestError","sharedContext","nodeNextReq","nodeNextRes","nextReq","fromNodeNextRequest","parentSpan","invokeRouteModule","span","handle","finally","setAttributes","rootSpanAttributes","getRootSpanAttributes","handleRequest","console","warn","route","updateName","setAttribute","handleResponse","currentSpan","cacheEntry","responseGenerator","previousCacheEntry","setHeader","response","fetchMetrics","pendingWaitUntil","cacheTags","collectedTags","blob","revalidate","collectedRevalidate","expire","collectedExpire","value","Buffer","arrayBuffer","cacheControl","err","isStale","routerKind","routePath","routeType","revalidateReason","routeKind","isFallback","isRoutePPREnabled","Error","isMiss","delete","getHeader","set","Response","withPropagatedContext","trace","spanName","SERVER","attributes"],"mappings":"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","ignoreList":[1]}
