[{"data":1,"prerenderedAt":3323},["ShallowReactive",2],{"navigation_docs":3,"-logging-structured-errors":282,"-logging-structured-errors-surround":3318},[4,30,65,105,188,252,268],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-zap",{"title":25,"path":26,"stem":27,"icon":28},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","1.getting-started\u002F4.agent-skills","i-lucide-sparkles",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Logging","\u002Flogging","2.logging",[35,40,45,50,55,60],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Flogging\u002Foverview","2.logging\u002F0.overview","i-lucide-list",{"title":41,"path":42,"stem":43,"icon":44},"Simple Logging","\u002Flogging\u002Fsimple-logging","2.logging\u002F1.simple-logging","i-lucide-terminal",{"title":46,"path":47,"stem":48,"icon":49},"Wide Events","\u002Flogging\u002Fwide-events","2.logging\u002F2.wide-events","i-lucide-layers",{"title":51,"path":52,"stem":53,"icon":54},"Structured Errors","\u002Flogging\u002Fstructured-errors","2.logging\u002F3.structured-errors","i-lucide-shield-alert",{"title":56,"path":57,"stem":58,"icon":59},"Client Logging","\u002Flogging\u002Fclient-logging","2.logging\u002F4.client-logging","i-lucide-monitor",{"title":61,"path":62,"stem":63,"icon":64},"AI SDK Integration","\u002Flogging\u002Fai-sdk","2.logging\u002F5.ai-sdk","i-simple-icons-vercel",{"title":66,"path":67,"stem":68,"children":69,"page":29},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[70,75,80,85,90,95,100],{"title":71,"path":72,"stem":73,"icon":74},"Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":76,"path":77,"stem":78,"icon":79},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F1.configuration","i-lucide-settings",{"title":81,"path":82,"stem":83,"icon":84},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F2.sampling","i-lucide-filter",{"title":86,"path":87,"stem":88,"icon":89},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F3.typed-fields","i-simple-icons-typescript",{"title":91,"path":92,"stem":93,"icon":94},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F4.best-practices","i-lucide-shield-check",{"title":96,"path":97,"stem":98,"icon":99},"Performance","\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F5.performance","i-lucide-gauge",{"title":101,"path":102,"stem":103,"icon":104},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F6.vite-plugin","i-custom-vite",{"title":106,"path":107,"stem":108,"children":109,"page":29},"Frameworks","\u002Fframeworks","4.frameworks",[110,114,119,124,129,134,139,144,149,154,159,164,169,174,178,183],{"title":36,"path":111,"stem":112,"icon":113},"\u002Fframeworks\u002Foverview","4.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":115,"path":116,"stem":117,"icon":118},"Nuxt","\u002Fframeworks\u002Fnuxt","4.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":120,"path":121,"stem":122,"icon":123},"Next.js","\u002Fframeworks\u002Fnextjs","4.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":125,"path":126,"stem":127,"icon":128},"SvelteKit","\u002Fframeworks\u002Fsveltekit","4.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":130,"path":131,"stem":132,"icon":133},"Nitro","\u002Fframeworks\u002Fnitro","4.frameworks\u002F04.nitro","i-custom-nitro",{"title":135,"path":136,"stem":137,"icon":138},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","4.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":140,"path":141,"stem":142,"icon":143},"NestJS","\u002Fframeworks\u002Fnestjs","4.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":145,"path":146,"stem":147,"icon":148},"Express","\u002Fframeworks\u002Fexpress","4.frameworks\u002F07.express","i-simple-icons-express",{"title":150,"path":151,"stem":152,"icon":153},"Hono","\u002Fframeworks\u002Fhono","4.frameworks\u002F08.hono","i-simple-icons-hono",{"title":155,"path":156,"stem":157,"icon":158},"Fastify","\u002Fframeworks\u002Ffastify","4.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":160,"path":161,"stem":162,"icon":163},"Elysia","\u002Fframeworks\u002Felysia","4.frameworks\u002F10.elysia","i-custom-elysia",{"title":165,"path":166,"stem":167,"icon":168},"React Router","\u002Fframeworks\u002Freact-router","4.frameworks\u002F11.react-router","i-custom-reactrouter",{"title":170,"path":171,"stem":172,"icon":173},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","4.frameworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":175,"path":176,"stem":177,"icon":89},"Standalone","\u002Fframeworks\u002Fstandalone","4.frameworks\u002F13.standalone",{"title":179,"path":180,"stem":181,"icon":182},"Astro","\u002Fframeworks\u002Fastro","4.frameworks\u002F14.astro","i-simple-icons-astro",{"title":184,"path":185,"stem":186,"icon":187},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","4.frameworks\u002F15.custom-integration","i-lucide-puzzle",{"title":189,"path":190,"stem":191,"children":192,"page":29},"Adapters","\u002Fadapters","5.adapters",[193,197,202,207,212,217,222,227,232,237,242,247],{"title":36,"path":194,"stem":195,"icon":196},"\u002Fadapters\u002Foverview","5.adapters\u002F1.overview","i-custom-plug",{"title":198,"path":199,"stem":200,"icon":201},"Custom Adapters","\u002Fadapters\u002Fcustom","5.adapters\u002F10.custom","i-lucide-code",{"title":203,"path":204,"stem":205,"icon":206},"Pipeline","\u002Fadapters\u002Fpipeline","5.adapters\u002F11.pipeline","i-lucide-workflow",{"title":208,"path":209,"stem":210,"icon":211},"Browser","\u002Fadapters\u002Fbrowser","5.adapters\u002F12.browser","i-lucide-globe",{"title":213,"path":214,"stem":215,"icon":216},"Axiom","\u002Fadapters\u002Faxiom","5.adapters\u002F2.axiom","i-custom-axiom",{"title":218,"path":219,"stem":220,"icon":221},"OTLP","\u002Fadapters\u002Fotlp","5.adapters\u002F3.otlp","i-simple-icons-opentelemetry",{"title":223,"path":224,"stem":225,"icon":226},"PostHog","\u002Fadapters\u002Fposthog","5.adapters\u002F4.posthog","i-simple-icons-posthog",{"title":228,"path":229,"stem":230,"icon":231},"Sentry","\u002Fadapters\u002Fsentry","5.adapters\u002F5.sentry","i-simple-icons-sentry",{"title":233,"path":234,"stem":235,"icon":236},"Better Stack","\u002Fadapters\u002Fbetter-stack","5.adapters\u002F6.better-stack","i-simple-icons-betterstack",{"title":238,"path":239,"stem":240,"icon":241},"File System","\u002Fadapters\u002Ffs","5.adapters\u002F7.fs","i-lucide-hard-drive",{"title":243,"path":244,"stem":245,"icon":246},"Datadog","\u002Fadapters\u002Fdatadog","5.adapters\u002F8.datadog","i-simple-icons-datadog",{"title":248,"path":249,"stem":250,"icon":251},"HyperDX","\u002Fadapters\u002Fhyperdx","5.adapters\u002F9.hyperdx","i-custom-hyperdx",{"title":253,"path":254,"stem":255,"children":256,"page":29},"Enrichers","\u002Fenrichers","6.enrichers",[257,260,264],{"title":36,"path":258,"stem":259,"icon":28},"\u002Fenrichers\u002Foverview","6.enrichers\u002F1.overview",{"title":261,"path":262,"stem":263,"icon":187},"Built-in","\u002Fenrichers\u002Fbuilt-in","6.enrichers\u002F2.built-in",{"title":265,"path":266,"stem":267,"icon":201},"Custom","\u002Fenrichers\u002Fcustom","6.enrichers\u002F3.custom",{"title":269,"path":270,"stem":271,"children":272,"page":29},"NuxtHub","\u002Fnuxthub","7.nuxthub",[273,277],{"title":36,"path":274,"stem":275,"icon":276},"\u002Fnuxthub\u002Foverview","7.nuxthub\u002F1.overview","i-lucide-database",{"title":278,"path":279,"stem":280,"icon":281},"Retention","\u002Fnuxthub\u002Fretention","7.nuxthub\u002F2.retention","i-lucide-clock",{"id":283,"title":51,"body":284,"description":3308,"extension":3309,"links":3310,"meta":3314,"navigation":3315,"path":52,"seo":3316,"stem":53,"__hash__":3317},"docs\u002F2.logging\u002F3.structured-errors.md",{"type":285,"value":286,"toc":3288},"minimark",[287,296,301,304,354,370,373,648,652,757,764,779,923,972,979,983,988,1103,1107,1333,1337,1340,1493,1497,1502,1995,1999,2002,2322,2325,2329,2606,2610,2766,2770,2773,3248,3258,3262,3284],[288,289,290,291,295],"p",{},"evlog provides a ",[292,293,294],"code",{},"createError()"," function that creates errors with rich, actionable context.",[297,298,300],"h2",{"id":299},"why-structured-errors","Why Structured Errors?",[288,302,303],{},"Traditional errors are often unhelpful:",[305,306,312],"pre",{"className":307,"code":308,"filename":309,"language":310,"meta":311,"style":311},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F Unhelpful error\nthrow new Error('Payment failed')\n","server\u002Fapi\u002Fcheckout.post.ts","typescript","",[292,313,314,323],{"__ignoreMap":311},[315,316,319],"span",{"class":317,"line":318},"line",1,[315,320,322],{"class":321},"sHwdD","\u002F\u002F Unhelpful error\n",[315,324,326,330,334,338,342,345,349,351],{"class":317,"line":325},2,[315,327,329],{"class":328},"s7zQu","throw",[315,331,333],{"class":332},"sMK4o"," new",[315,335,337],{"class":336},"s2Zo4"," Error",[315,339,341],{"class":340},"sTEyZ","(",[315,343,344],{"class":332},"'",[315,346,348],{"class":347},"sfazB","Payment failed",[315,350,344],{"class":332},[315,352,353],{"class":340},")\n",[288,355,356,357,361,362,365,366,369],{},"This tells you ",[358,359,360],"em",{},"what"," happened, but not ",[358,363,364],{},"why"," or ",[358,367,368],{},"how to fix it",".",[288,371,372],{},"Structured errors provide context:",[374,375,376,517],"code-group",{},[305,377,379],{"className":307,"code":378,"filename":309,"language":310,"meta":311,"style":311},"import { createError } from 'evlog'\n\nthrow createError({\n  message: 'Payment failed',\n  status: 402,\n  why: 'Card declined by issuer (insufficient funds)',\n  fix: 'Try a different payment method or contact your bank',\n  link: 'https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined',\n})\n",[292,380,381,407,413,425,444,458,475,492,509],{"__ignoreMap":311},[315,382,383,386,389,392,395,398,401,404],{"class":317,"line":318},[315,384,385],{"class":328},"import",[315,387,388],{"class":332}," {",[315,390,391],{"class":340}," createError",[315,393,394],{"class":332}," }",[315,396,397],{"class":328}," from",[315,399,400],{"class":332}," '",[315,402,403],{"class":347},"evlog",[315,405,406],{"class":332},"'\n",[315,408,409],{"class":317,"line":325},[315,410,412],{"emptyLinePlaceholder":411},true,"\n",[315,414,416,418,420,422],{"class":317,"line":415},3,[315,417,329],{"class":328},[315,419,391],{"class":336},[315,421,341],{"class":340},[315,423,424],{"class":332},"{\n",[315,426,428,432,435,437,439,441],{"class":317,"line":427},4,[315,429,431],{"class":430},"swJcz","  message",[315,433,434],{"class":332},":",[315,436,400],{"class":332},[315,438,348],{"class":347},[315,440,344],{"class":332},[315,442,443],{"class":332},",\n",[315,445,447,450,452,456],{"class":317,"line":446},5,[315,448,449],{"class":430},"  status",[315,451,434],{"class":332},[315,453,455],{"class":454},"sbssI"," 402",[315,457,443],{"class":332},[315,459,461,464,466,468,471,473],{"class":317,"line":460},6,[315,462,463],{"class":430},"  why",[315,465,434],{"class":332},[315,467,400],{"class":332},[315,469,470],{"class":347},"Card declined by issuer (insufficient funds)",[315,472,344],{"class":332},[315,474,443],{"class":332},[315,476,478,481,483,485,488,490],{"class":317,"line":477},7,[315,479,480],{"class":430},"  fix",[315,482,434],{"class":332},[315,484,400],{"class":332},[315,486,487],{"class":347},"Try a different payment method or contact your bank",[315,489,344],{"class":332},[315,491,443],{"class":332},[315,493,495,498,500,502,505,507],{"class":317,"line":494},8,[315,496,497],{"class":430},"  link",[315,499,434],{"class":332},[315,501,400],{"class":332},[315,503,504],{"class":347},"https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined",[315,506,344],{"class":332},[315,508,443],{"class":332},[315,510,512,515],{"class":317,"line":511},9,[315,513,514],{"class":332},"}",[315,516,353],{"class":340},[305,518,523],{"className":519,"code":520,"filename":521,"language":522,"meta":311,"style":311},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"statusCode\": 402,\n  \"message\": \"Payment failed\",\n  \"data\": {\n    \"why\": \"Card declined by issuer (insufficient funds)\",\n    \"fix\": \"Try a different payment method or contact your bank\",\n    \"link\": \"https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined\"\n  }\n}\n","Response","json",[292,524,525,529,547,567,581,601,620,638,643],{"__ignoreMap":311},[315,526,527],{"class":317,"line":318},[315,528,424],{"class":332},[315,530,531,534,538,541,543,545],{"class":317,"line":325},[315,532,533],{"class":332},"  \"",[315,535,537],{"class":536},"spNyl","statusCode",[315,539,540],{"class":332},"\"",[315,542,434],{"class":332},[315,544,455],{"class":454},[315,546,443],{"class":332},[315,548,549,551,554,556,558,561,563,565],{"class":317,"line":415},[315,550,533],{"class":332},[315,552,553],{"class":536},"message",[315,555,540],{"class":332},[315,557,434],{"class":332},[315,559,560],{"class":332}," \"",[315,562,348],{"class":347},[315,564,540],{"class":332},[315,566,443],{"class":332},[315,568,569,571,574,576,578],{"class":317,"line":427},[315,570,533],{"class":332},[315,572,573],{"class":536},"data",[315,575,540],{"class":332},[315,577,434],{"class":332},[315,579,580],{"class":332}," {\n",[315,582,583,586,589,591,593,595,597,599],{"class":317,"line":446},[315,584,585],{"class":332},"    \"",[315,587,364],{"class":588},"sBMFI",[315,590,540],{"class":332},[315,592,434],{"class":332},[315,594,560],{"class":332},[315,596,470],{"class":347},[315,598,540],{"class":332},[315,600,443],{"class":332},[315,602,603,605,608,610,612,614,616,618],{"class":317,"line":460},[315,604,585],{"class":332},[315,606,607],{"class":588},"fix",[315,609,540],{"class":332},[315,611,434],{"class":332},[315,613,560],{"class":332},[315,615,487],{"class":347},[315,617,540],{"class":332},[315,619,443],{"class":332},[315,621,622,624,627,629,631,633,635],{"class":317,"line":477},[315,623,585],{"class":332},[315,625,626],{"class":588},"link",[315,628,540],{"class":332},[315,630,434],{"class":332},[315,632,560],{"class":332},[315,634,504],{"class":347},[315,636,637],{"class":332},"\"\n",[315,639,640],{"class":317,"line":494},[315,641,642],{"class":332},"  }\n",[315,644,645],{"class":317,"line":511},[315,646,647],{"class":332},"}\n",[297,649,651],{"id":650},"error-fields","Error Fields",[653,654,655,671],"table",{},[656,657,658],"thead",{},[659,660,661,665,668],"tr",{},[662,663,664],"th",{},"Field",[662,666,667],{},"Required",[662,669,670],{},"Description",[672,673,674,687,700,711,722,733,745],"tbody",{},[659,675,676,681,684],{},[677,678,679],"td",{},[292,680,553],{},[677,682,683],{},"Yes",[677,685,686],{},"What happened (shown to users)",[659,688,689,694,697],{},[677,690,691],{},[292,692,693],{},"status",[677,695,696],{},"No",[677,698,699],{},"HTTP status code (default: 500)",[659,701,702,706,708],{},[677,703,704],{},[292,705,364],{},[677,707,696],{},[677,709,710],{},"Technical reason (for debugging)",[659,712,713,717,719],{},[677,714,715],{},[292,716,607],{},[677,718,696],{},[677,720,721],{},"Actionable solution",[659,723,724,728,730],{},[677,725,726],{},[292,727,626],{},[677,729,696],{},[677,731,732],{},"Documentation URL",[659,734,735,740,742],{},[677,736,737],{},[292,738,739],{},"cause",[677,741,696],{},[677,743,744],{},"Original error (for error chaining)",[659,746,747,752,754],{},[677,748,749],{},[292,750,751],{},"internal",[677,753,696],{},[677,755,756],{},"Backend-only context (see below)",[297,758,760,761,763],{"id":759},"backend-only-context-internal","Backend-only context (",[292,762,751],{},")",[288,765,766,767,769,770,774,775,778],{},"Use ",[292,768,751],{}," when you need extra fields for logs, drains, or support tools, but ",[771,772,773],"strong",{},"must not"," expose them in API responses or to ",[292,776,777],{},"parseError()"," on the client.",[305,780,782],{"className":307,"code":781,"language":310,"meta":311,"style":311},"throw createError({\n  message: 'Payment could not be completed',\n  status: 402,\n  why: 'Your card was declined',\n  fix: 'Try another payment method',\n  internal: {\n    correlationId: 'pay_8x2k',\n    processorCode: 'insufficient_funds',\n    rawIssuerResponse: '…', \u002F\u002F never sent to the client\n  },\n})\n",[292,783,784,794,809,819,834,849,858,874,890,910,916],{"__ignoreMap":311},[315,785,786,788,790,792],{"class":317,"line":318},[315,787,329],{"class":328},[315,789,391],{"class":336},[315,791,341],{"class":340},[315,793,424],{"class":332},[315,795,796,798,800,802,805,807],{"class":317,"line":325},[315,797,431],{"class":430},[315,799,434],{"class":332},[315,801,400],{"class":332},[315,803,804],{"class":347},"Payment could not be completed",[315,806,344],{"class":332},[315,808,443],{"class":332},[315,810,811,813,815,817],{"class":317,"line":415},[315,812,449],{"class":430},[315,814,434],{"class":332},[315,816,455],{"class":454},[315,818,443],{"class":332},[315,820,821,823,825,827,830,832],{"class":317,"line":427},[315,822,463],{"class":430},[315,824,434],{"class":332},[315,826,400],{"class":332},[315,828,829],{"class":347},"Your card was declined",[315,831,344],{"class":332},[315,833,443],{"class":332},[315,835,836,838,840,842,845,847],{"class":317,"line":446},[315,837,480],{"class":430},[315,839,434],{"class":332},[315,841,400],{"class":332},[315,843,844],{"class":347},"Try another payment method",[315,846,344],{"class":332},[315,848,443],{"class":332},[315,850,851,854,856],{"class":317,"line":460},[315,852,853],{"class":430},"  internal",[315,855,434],{"class":332},[315,857,580],{"class":332},[315,859,860,863,865,867,870,872],{"class":317,"line":477},[315,861,862],{"class":430},"    correlationId",[315,864,434],{"class":332},[315,866,400],{"class":332},[315,868,869],{"class":347},"pay_8x2k",[315,871,344],{"class":332},[315,873,443],{"class":332},[315,875,876,879,881,883,886,888],{"class":317,"line":494},[315,877,878],{"class":430},"    processorCode",[315,880,434],{"class":332},[315,882,400],{"class":332},[315,884,885],{"class":347},"insufficient_funds",[315,887,344],{"class":332},[315,889,443],{"class":332},[315,891,892,895,897,899,902,904,907],{"class":317,"line":511},[315,893,894],{"class":430},"    rawIssuerResponse",[315,896,434],{"class":332},[315,898,400],{"class":332},[315,900,901],{"class":347},"…",[315,903,344],{"class":332},[315,905,906],{"class":332},",",[315,908,909],{"class":321}," \u002F\u002F never sent to the client\n",[315,911,913],{"class":317,"line":912},10,[315,914,915],{"class":332},"  },\n",[315,917,919,921],{"class":317,"line":918},11,[315,920,514],{"class":332},[315,922,353],{"class":340},[924,925,926,941,955],"ul",{},[927,928,929,932,933,938,939,369],"li",{},[771,930,931],{},"HTTP responses"," (Nuxt\u002FNitro error handler, Next.js, SvelteKit, etc.) and ",[771,934,935],{},[292,936,937],{},"toJSON()"," omit ",[292,940,751],{},[927,942,943,947,948,950,951,954],{},[771,944,945],{},[292,946,777],{}," does not surface ",[292,949,751],{}," for UI; the thrown error may still carry it server-side on ",[292,952,953],{},"raw"," when debugging.",[927,956,957,960,961,964,965,968,969,369],{},[771,958,959],{},"Wide events",": when the framework records the error (e.g. ",[292,962,963],{},"log.error(err)"," or automatic capture on thrown ",[292,966,967],{},"EvlogError","), the emitted payload includes ",[292,970,971],{},"error.internal",[288,973,974,975,369],{},"In debuggers, the payload may appear under a symbol key; in code, always use ",[771,976,977],{},[292,978,971],{},[297,980,982],{"id":981},"basic-usage","Basic Usage",[984,985,987],"h3",{"id":986},"simple-error","Simple Error",[374,989,990,1060],{},[305,991,994],{"className":307,"code":992,"filename":993,"language":310,"meta":311,"style":311},"import { createError } from 'evlog'\n\nthrow createError({\n  message: 'User not found',\n  status: 404,\n})\n","server\u002Fapi\u002Fusers\u002F[id].get.ts",[292,995,996,1014,1018,1028,1043,1054],{"__ignoreMap":311},[315,997,998,1000,1002,1004,1006,1008,1010,1012],{"class":317,"line":318},[315,999,385],{"class":328},[315,1001,388],{"class":332},[315,1003,391],{"class":340},[315,1005,394],{"class":332},[315,1007,397],{"class":328},[315,1009,400],{"class":332},[315,1011,403],{"class":347},[315,1013,406],{"class":332},[315,1015,1016],{"class":317,"line":325},[315,1017,412],{"emptyLinePlaceholder":411},[315,1019,1020,1022,1024,1026],{"class":317,"line":415},[315,1021,329],{"class":328},[315,1023,391],{"class":336},[315,1025,341],{"class":340},[315,1027,424],{"class":332},[315,1029,1030,1032,1034,1036,1039,1041],{"class":317,"line":427},[315,1031,431],{"class":430},[315,1033,434],{"class":332},[315,1035,400],{"class":332},[315,1037,1038],{"class":347},"User not found",[315,1040,344],{"class":332},[315,1042,443],{"class":332},[315,1044,1045,1047,1049,1052],{"class":317,"line":446},[315,1046,449],{"class":430},[315,1048,434],{"class":332},[315,1050,1051],{"class":454}," 404",[315,1053,443],{"class":332},[315,1055,1056,1058],{"class":317,"line":460},[315,1057,514],{"class":332},[315,1059,353],{"class":340},[305,1061,1063],{"className":519,"code":1062,"filename":521,"language":522,"meta":311,"style":311},"{\n  \"statusCode\": 404,\n  \"message\": \"User not found\"\n}\n",[292,1064,1065,1069,1083,1099],{"__ignoreMap":311},[315,1066,1067],{"class":317,"line":318},[315,1068,424],{"class":332},[315,1070,1071,1073,1075,1077,1079,1081],{"class":317,"line":325},[315,1072,533],{"class":332},[315,1074,537],{"class":536},[315,1076,540],{"class":332},[315,1078,434],{"class":332},[315,1080,1051],{"class":454},[315,1082,443],{"class":332},[315,1084,1085,1087,1089,1091,1093,1095,1097],{"class":317,"line":415},[315,1086,533],{"class":332},[315,1088,553],{"class":536},[315,1090,540],{"class":332},[315,1092,434],{"class":332},[315,1094,560],{"class":332},[315,1096,1038],{"class":347},[315,1098,637],{"class":332},[315,1100,1101],{"class":317,"line":427},[315,1102,647],{"class":332},[984,1104,1106],{"id":1105},"error-with-full-context","Error with Full Context",[374,1108,1109,1220],{},[305,1110,1112],{"className":307,"code":1111,"filename":309,"language":310,"meta":311,"style":311},"import { createError } from 'evlog'\n\nthrow createError({\n  message: 'Payment failed',\n  status: 402,\n  why: 'Card declined by issuer',\n  fix: 'Try a different payment method',\n  link: 'https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined',\n})\n",[292,1113,1114,1132,1136,1146,1160,1170,1185,1200,1214],{"__ignoreMap":311},[315,1115,1116,1118,1120,1122,1124,1126,1128,1130],{"class":317,"line":318},[315,1117,385],{"class":328},[315,1119,388],{"class":332},[315,1121,391],{"class":340},[315,1123,394],{"class":332},[315,1125,397],{"class":328},[315,1127,400],{"class":332},[315,1129,403],{"class":347},[315,1131,406],{"class":332},[315,1133,1134],{"class":317,"line":325},[315,1135,412],{"emptyLinePlaceholder":411},[315,1137,1138,1140,1142,1144],{"class":317,"line":415},[315,1139,329],{"class":328},[315,1141,391],{"class":336},[315,1143,341],{"class":340},[315,1145,424],{"class":332},[315,1147,1148,1150,1152,1154,1156,1158],{"class":317,"line":427},[315,1149,431],{"class":430},[315,1151,434],{"class":332},[315,1153,400],{"class":332},[315,1155,348],{"class":347},[315,1157,344],{"class":332},[315,1159,443],{"class":332},[315,1161,1162,1164,1166,1168],{"class":317,"line":446},[315,1163,449],{"class":430},[315,1165,434],{"class":332},[315,1167,455],{"class":454},[315,1169,443],{"class":332},[315,1171,1172,1174,1176,1178,1181,1183],{"class":317,"line":460},[315,1173,463],{"class":430},[315,1175,434],{"class":332},[315,1177,400],{"class":332},[315,1179,1180],{"class":347},"Card declined by issuer",[315,1182,344],{"class":332},[315,1184,443],{"class":332},[315,1186,1187,1189,1191,1193,1196,1198],{"class":317,"line":477},[315,1188,480],{"class":430},[315,1190,434],{"class":332},[315,1192,400],{"class":332},[315,1194,1195],{"class":347},"Try a different payment method",[315,1197,344],{"class":332},[315,1199,443],{"class":332},[315,1201,1202,1204,1206,1208,1210,1212],{"class":317,"line":494},[315,1203,497],{"class":430},[315,1205,434],{"class":332},[315,1207,400],{"class":332},[315,1209,504],{"class":347},[315,1211,344],{"class":332},[315,1213,443],{"class":332},[315,1215,1216,1218],{"class":317,"line":511},[315,1217,514],{"class":332},[315,1219,353],{"class":340},[305,1221,1223],{"className":519,"code":1222,"filename":521,"language":522,"meta":311,"style":311},"{\n  \"statusCode\": 402,\n  \"message\": \"Payment failed\",\n  \"data\": {\n    \"why\": \"Card declined by issuer\",\n    \"fix\": \"Try a different payment method\",\n    \"link\": \"https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined\"\n  }\n}\n",[292,1224,1225,1229,1243,1261,1273,1291,1309,1325,1329],{"__ignoreMap":311},[315,1226,1227],{"class":317,"line":318},[315,1228,424],{"class":332},[315,1230,1231,1233,1235,1237,1239,1241],{"class":317,"line":325},[315,1232,533],{"class":332},[315,1234,537],{"class":536},[315,1236,540],{"class":332},[315,1238,434],{"class":332},[315,1240,455],{"class":454},[315,1242,443],{"class":332},[315,1244,1245,1247,1249,1251,1253,1255,1257,1259],{"class":317,"line":415},[315,1246,533],{"class":332},[315,1248,553],{"class":536},[315,1250,540],{"class":332},[315,1252,434],{"class":332},[315,1254,560],{"class":332},[315,1256,348],{"class":347},[315,1258,540],{"class":332},[315,1260,443],{"class":332},[315,1262,1263,1265,1267,1269,1271],{"class":317,"line":427},[315,1264,533],{"class":332},[315,1266,573],{"class":536},[315,1268,540],{"class":332},[315,1270,434],{"class":332},[315,1272,580],{"class":332},[315,1274,1275,1277,1279,1281,1283,1285,1287,1289],{"class":317,"line":446},[315,1276,585],{"class":332},[315,1278,364],{"class":588},[315,1280,540],{"class":332},[315,1282,434],{"class":332},[315,1284,560],{"class":332},[315,1286,1180],{"class":347},[315,1288,540],{"class":332},[315,1290,443],{"class":332},[315,1292,1293,1295,1297,1299,1301,1303,1305,1307],{"class":317,"line":460},[315,1294,585],{"class":332},[315,1296,607],{"class":588},[315,1298,540],{"class":332},[315,1300,434],{"class":332},[315,1302,560],{"class":332},[315,1304,1195],{"class":347},[315,1306,540],{"class":332},[315,1308,443],{"class":332},[315,1310,1311,1313,1315,1317,1319,1321,1323],{"class":317,"line":477},[315,1312,585],{"class":332},[315,1314,626],{"class":588},[315,1316,540],{"class":332},[315,1318,434],{"class":332},[315,1320,560],{"class":332},[315,1322,504],{"class":347},[315,1324,637],{"class":332},[315,1326,1327],{"class":317,"line":494},[315,1328,642],{"class":332},[315,1330,1331],{"class":317,"line":511},[315,1332,647],{"class":332},[984,1334,1336],{"id":1335},"error-chaining","Error Chaining",[288,1338,1339],{},"Wrap underlying errors while preserving the original:",[305,1341,1343],{"className":307,"code":1342,"filename":309,"language":310,"meta":311,"style":311},"import { createError } from 'evlog'\n\ntry {\n  await stripe.charges.create(charge)\n} catch (err) {\n  throw createError({\n    message: 'Payment processing failed',\n    status: 500,\n    why: 'Stripe API returned an error',\n    cause: err, \u002F\u002F Original error preserved\n  })\n}\n",[292,1344,1345,1363,1367,1374,1399,1411,1422,1438,1450,1466,1481,1488],{"__ignoreMap":311},[315,1346,1347,1349,1351,1353,1355,1357,1359,1361],{"class":317,"line":318},[315,1348,385],{"class":328},[315,1350,388],{"class":332},[315,1352,391],{"class":340},[315,1354,394],{"class":332},[315,1356,397],{"class":328},[315,1358,400],{"class":332},[315,1360,403],{"class":347},[315,1362,406],{"class":332},[315,1364,1365],{"class":317,"line":325},[315,1366,412],{"emptyLinePlaceholder":411},[315,1368,1369,1372],{"class":317,"line":415},[315,1370,1371],{"class":328},"try",[315,1373,580],{"class":332},[315,1375,1376,1379,1382,1384,1387,1389,1392,1394,1397],{"class":317,"line":427},[315,1377,1378],{"class":328},"  await",[315,1380,1381],{"class":340}," stripe",[315,1383,369],{"class":332},[315,1385,1386],{"class":340},"charges",[315,1388,369],{"class":332},[315,1390,1391],{"class":336},"create",[315,1393,341],{"class":430},[315,1395,1396],{"class":340},"charge",[315,1398,353],{"class":430},[315,1400,1401,1403,1406,1409],{"class":317,"line":446},[315,1402,514],{"class":332},[315,1404,1405],{"class":328}," catch",[315,1407,1408],{"class":340}," (err) ",[315,1410,424],{"class":332},[315,1412,1413,1416,1418,1420],{"class":317,"line":460},[315,1414,1415],{"class":328},"  throw",[315,1417,391],{"class":336},[315,1419,341],{"class":430},[315,1421,424],{"class":332},[315,1423,1424,1427,1429,1431,1434,1436],{"class":317,"line":477},[315,1425,1426],{"class":430},"    message",[315,1428,434],{"class":332},[315,1430,400],{"class":332},[315,1432,1433],{"class":347},"Payment processing failed",[315,1435,344],{"class":332},[315,1437,443],{"class":332},[315,1439,1440,1443,1445,1448],{"class":317,"line":494},[315,1441,1442],{"class":430},"    status",[315,1444,434],{"class":332},[315,1446,1447],{"class":454}," 500",[315,1449,443],{"class":332},[315,1451,1452,1455,1457,1459,1462,1464],{"class":317,"line":511},[315,1453,1454],{"class":430},"    why",[315,1456,434],{"class":332},[315,1458,400],{"class":332},[315,1460,1461],{"class":347},"Stripe API returned an error",[315,1463,344],{"class":332},[315,1465,443],{"class":332},[315,1467,1468,1471,1473,1476,1478],{"class":317,"line":912},[315,1469,1470],{"class":430},"    cause",[315,1472,434],{"class":332},[315,1474,1475],{"class":340}," err",[315,1477,906],{"class":332},[315,1479,1480],{"class":321}," \u002F\u002F Original error preserved\n",[315,1482,1483,1486],{"class":317,"line":918},[315,1484,1485],{"class":332},"  }",[315,1487,353],{"class":430},[315,1489,1491],{"class":317,"line":1490},12,[315,1492,647],{"class":332},[297,1494,1496],{"id":1495},"frontend-error-handling","Frontend Error Handling",[288,1498,766,1499,1501],{},[292,1500,777],{}," to extract all fields from caught errors:",[374,1503,1504,1713],{},[305,1505,1508],{"className":307,"code":1506,"filename":1507,"language":310,"meta":311,"style":311},"import { parseError } from 'evlog'\n\ntry {\n  await $fetch('\u002Fapi\u002Fcheckout', { method: 'POST', body: cart })\n} catch (err) {\n  const error = parseError(err)\n\n  console.log(error.message)  \u002F\u002F \"Payment failed\"\n  console.log(error.status)   \u002F\u002F 402\n  console.log(error.why)      \u002F\u002F \"Card declined\"\n  console.log(error.fix)      \u002F\u002F \"Try another card\"\n}\n","composables\u002FuseCheckout.ts",[292,1509,1510,1529,1533,1539,1585,1595,1615,1619,1644,1666,1688,1709],{"__ignoreMap":311},[315,1511,1512,1514,1516,1519,1521,1523,1525,1527],{"class":317,"line":318},[315,1513,385],{"class":328},[315,1515,388],{"class":332},[315,1517,1518],{"class":340}," parseError",[315,1520,394],{"class":332},[315,1522,397],{"class":328},[315,1524,400],{"class":332},[315,1526,403],{"class":347},[315,1528,406],{"class":332},[315,1530,1531],{"class":317,"line":325},[315,1532,412],{"emptyLinePlaceholder":411},[315,1534,1535,1537],{"class":317,"line":415},[315,1536,1371],{"class":328},[315,1538,580],{"class":332},[315,1540,1541,1543,1546,1548,1550,1553,1555,1557,1559,1562,1564,1566,1569,1571,1573,1576,1578,1581,1583],{"class":317,"line":427},[315,1542,1378],{"class":328},[315,1544,1545],{"class":336}," $fetch",[315,1547,341],{"class":430},[315,1549,344],{"class":332},[315,1551,1552],{"class":347},"\u002Fapi\u002Fcheckout",[315,1554,344],{"class":332},[315,1556,906],{"class":332},[315,1558,388],{"class":332},[315,1560,1561],{"class":430}," method",[315,1563,434],{"class":332},[315,1565,400],{"class":332},[315,1567,1568],{"class":347},"POST",[315,1570,344],{"class":332},[315,1572,906],{"class":332},[315,1574,1575],{"class":430}," body",[315,1577,434],{"class":332},[315,1579,1580],{"class":340}," cart",[315,1582,394],{"class":332},[315,1584,353],{"class":430},[315,1586,1587,1589,1591,1593],{"class":317,"line":446},[315,1588,514],{"class":332},[315,1590,1405],{"class":328},[315,1592,1408],{"class":340},[315,1594,424],{"class":332},[315,1596,1597,1600,1603,1606,1608,1610,1613],{"class":317,"line":460},[315,1598,1599],{"class":536},"  const",[315,1601,1602],{"class":340}," error",[315,1604,1605],{"class":332}," =",[315,1607,1518],{"class":336},[315,1609,341],{"class":430},[315,1611,1612],{"class":340},"err",[315,1614,353],{"class":430},[315,1616,1617],{"class":317,"line":477},[315,1618,412],{"emptyLinePlaceholder":411},[315,1620,1621,1624,1626,1629,1631,1634,1636,1638,1641],{"class":317,"line":494},[315,1622,1623],{"class":340},"  console",[315,1625,369],{"class":332},[315,1627,1628],{"class":336},"log",[315,1630,341],{"class":430},[315,1632,1633],{"class":340},"error",[315,1635,369],{"class":332},[315,1637,553],{"class":340},[315,1639,1640],{"class":430},")  ",[315,1642,1643],{"class":321},"\u002F\u002F \"Payment failed\"\n",[315,1645,1646,1648,1650,1652,1654,1656,1658,1660,1663],{"class":317,"line":511},[315,1647,1623],{"class":340},[315,1649,369],{"class":332},[315,1651,1628],{"class":336},[315,1653,341],{"class":430},[315,1655,1633],{"class":340},[315,1657,369],{"class":332},[315,1659,693],{"class":340},[315,1661,1662],{"class":430},")   ",[315,1664,1665],{"class":321},"\u002F\u002F 402\n",[315,1667,1668,1670,1672,1674,1676,1678,1680,1682,1685],{"class":317,"line":912},[315,1669,1623],{"class":340},[315,1671,369],{"class":332},[315,1673,1628],{"class":336},[315,1675,341],{"class":430},[315,1677,1633],{"class":340},[315,1679,369],{"class":332},[315,1681,364],{"class":340},[315,1683,1684],{"class":430},")      ",[315,1686,1687],{"class":321},"\u002F\u002F \"Card declined\"\n",[315,1689,1690,1692,1694,1696,1698,1700,1702,1704,1706],{"class":317,"line":918},[315,1691,1623],{"class":340},[315,1693,369],{"class":332},[315,1695,1628],{"class":336},[315,1697,341],{"class":430},[315,1699,1633],{"class":340},[315,1701,369],{"class":332},[315,1703,607],{"class":340},[315,1705,1684],{"class":430},[315,1707,1708],{"class":321},"\u002F\u002F \"Try another card\"\n",[315,1710,1711],{"class":317,"line":1490},[315,1712,647],{"class":332},[305,1714,1717],{"className":307,"code":1715,"filename":1716,"language":310,"meta":311,"style":311},"import { parseError } from 'evlog'\n\nconst toast = useToast()\n\ntry {\n  await $fetch('\u002Fapi\u002Fcheckout', { method: 'POST', body: cart })\n} catch (err) {\n  const error = parseError(err)\n\n  toast.add({\n    title: error.message,\n    description: error.why,\n    color: 'error',\n    actions: error.link\n      ? [{ label: 'Learn more', onClick: () => window.open(error.link) }]\n      : undefined,\n  })\n}\n","composables\u002FuseCheckout.ts (Nuxt UI)",[292,1718,1719,1737,1741,1758,1762,1768,1808,1818,1834,1838,1852,1867,1882,1898,1913,1974,1983,1990],{"__ignoreMap":311},[315,1720,1721,1723,1725,1727,1729,1731,1733,1735],{"class":317,"line":318},[315,1722,385],{"class":328},[315,1724,388],{"class":332},[315,1726,1518],{"class":340},[315,1728,394],{"class":332},[315,1730,397],{"class":328},[315,1732,400],{"class":332},[315,1734,403],{"class":347},[315,1736,406],{"class":332},[315,1738,1739],{"class":317,"line":325},[315,1740,412],{"emptyLinePlaceholder":411},[315,1742,1743,1746,1749,1752,1755],{"class":317,"line":415},[315,1744,1745],{"class":536},"const",[315,1747,1748],{"class":340}," toast ",[315,1750,1751],{"class":332},"=",[315,1753,1754],{"class":336}," useToast",[315,1756,1757],{"class":340},"()\n",[315,1759,1760],{"class":317,"line":427},[315,1761,412],{"emptyLinePlaceholder":411},[315,1763,1764,1766],{"class":317,"line":446},[315,1765,1371],{"class":328},[315,1767,580],{"class":332},[315,1769,1770,1772,1774,1776,1778,1780,1782,1784,1786,1788,1790,1792,1794,1796,1798,1800,1802,1804,1806],{"class":317,"line":460},[315,1771,1378],{"class":328},[315,1773,1545],{"class":336},[315,1775,341],{"class":430},[315,1777,344],{"class":332},[315,1779,1552],{"class":347},[315,1781,344],{"class":332},[315,1783,906],{"class":332},[315,1785,388],{"class":332},[315,1787,1561],{"class":430},[315,1789,434],{"class":332},[315,1791,400],{"class":332},[315,1793,1568],{"class":347},[315,1795,344],{"class":332},[315,1797,906],{"class":332},[315,1799,1575],{"class":430},[315,1801,434],{"class":332},[315,1803,1580],{"class":340},[315,1805,394],{"class":332},[315,1807,353],{"class":430},[315,1809,1810,1812,1814,1816],{"class":317,"line":477},[315,1811,514],{"class":332},[315,1813,1405],{"class":328},[315,1815,1408],{"class":340},[315,1817,424],{"class":332},[315,1819,1820,1822,1824,1826,1828,1830,1832],{"class":317,"line":494},[315,1821,1599],{"class":536},[315,1823,1602],{"class":340},[315,1825,1605],{"class":332},[315,1827,1518],{"class":336},[315,1829,341],{"class":430},[315,1831,1612],{"class":340},[315,1833,353],{"class":430},[315,1835,1836],{"class":317,"line":511},[315,1837,412],{"emptyLinePlaceholder":411},[315,1839,1840,1843,1845,1848,1850],{"class":317,"line":912},[315,1841,1842],{"class":340},"  toast",[315,1844,369],{"class":332},[315,1846,1847],{"class":336},"add",[315,1849,341],{"class":430},[315,1851,424],{"class":332},[315,1853,1854,1857,1859,1861,1863,1865],{"class":317,"line":918},[315,1855,1856],{"class":430},"    title",[315,1858,434],{"class":332},[315,1860,1602],{"class":340},[315,1862,369],{"class":332},[315,1864,553],{"class":340},[315,1866,443],{"class":332},[315,1868,1869,1872,1874,1876,1878,1880],{"class":317,"line":1490},[315,1870,1871],{"class":430},"    description",[315,1873,434],{"class":332},[315,1875,1602],{"class":340},[315,1877,369],{"class":332},[315,1879,364],{"class":340},[315,1881,443],{"class":332},[315,1883,1885,1888,1890,1892,1894,1896],{"class":317,"line":1884},13,[315,1886,1887],{"class":430},"    color",[315,1889,434],{"class":332},[315,1891,400],{"class":332},[315,1893,1633],{"class":347},[315,1895,344],{"class":332},[315,1897,443],{"class":332},[315,1899,1901,1904,1906,1908,1910],{"class":317,"line":1900},14,[315,1902,1903],{"class":430},"    actions",[315,1905,434],{"class":332},[315,1907,1602],{"class":340},[315,1909,369],{"class":332},[315,1911,1912],{"class":340},"link\n",[315,1914,1916,1919,1922,1925,1928,1930,1932,1935,1937,1939,1942,1944,1947,1950,1953,1955,1958,1960,1962,1964,1966,1969,1971],{"class":317,"line":1915},15,[315,1917,1918],{"class":332},"      ?",[315,1920,1921],{"class":430}," [",[315,1923,1924],{"class":332},"{",[315,1926,1927],{"class":430}," label",[315,1929,434],{"class":332},[315,1931,400],{"class":332},[315,1933,1934],{"class":347},"Learn more",[315,1936,344],{"class":332},[315,1938,906],{"class":332},[315,1940,1941],{"class":336}," onClick",[315,1943,434],{"class":332},[315,1945,1946],{"class":332}," ()",[315,1948,1949],{"class":536}," =>",[315,1951,1952],{"class":340}," window",[315,1954,369],{"class":332},[315,1956,1957],{"class":336},"open",[315,1959,341],{"class":430},[315,1961,1633],{"class":340},[315,1963,369],{"class":332},[315,1965,626],{"class":340},[315,1967,1968],{"class":430},") ",[315,1970,514],{"class":332},[315,1972,1973],{"class":430},"]\n",[315,1975,1977,1980],{"class":317,"line":1976},16,[315,1978,1979],{"class":332},"      :",[315,1981,1982],{"class":332}," undefined,\n",[315,1984,1986,1988],{"class":317,"line":1985},17,[315,1987,1485],{"class":332},[315,1989,353],{"class":430},[315,1991,1993],{"class":317,"line":1992},18,[315,1994,647],{"class":332},[984,1996,1998],{"id":1997},"error-display-component","Error Display Component",[288,2000,2001],{},"Create a reusable error display:",[305,2003,2008],{"className":2004,"code":2005,"filename":2006,"language":2007,"meta":311,"style":311},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nimport { parseError } from 'evlog'\n\nconst { error } = defineProps\u003C{\n  error: unknown\n}>()\n\nconst parsed = computed(() => parseError(error))\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CUAlert\n    :title=\"parsed.message\"\n    :description=\"parsed.why\"\n    color=\"error\"\n    icon=\"i-lucide-alert-circle\"\n  >\n    \u003Ctemplate v-if=\"parsed.fix\" #description>\n      \u003Cp>{{ parsed.why }}\u003C\u002Fp>\n      \u003Cp class=\"mt-2 font-medium\">{{ parsed.fix }}\u003C\u002Fp>\n    \u003C\u002Ftemplate>\n  \u003C\u002FUAlert>\n\u003C\u002Ftemplate>\n","components\u002FErrorAlert.vue","vue",[292,2009,2010,2036,2054,2058,2077,2087,2094,2098,2122,2131,2135,2144,2152,2166,2180,2192,2206,2211,2242,2262,2292,2302,2313],{"__ignoreMap":311},[315,2011,2012,2015,2018,2021,2024,2026,2028,2031,2033],{"class":317,"line":318},[315,2013,2014],{"class":332},"\u003C",[315,2016,2017],{"class":430},"script",[315,2019,2020],{"class":536}," setup",[315,2022,2023],{"class":536}," lang",[315,2025,1751],{"class":332},[315,2027,540],{"class":332},[315,2029,2030],{"class":347},"ts",[315,2032,540],{"class":332},[315,2034,2035],{"class":332},">\n",[315,2037,2038,2040,2042,2044,2046,2048,2050,2052],{"class":317,"line":325},[315,2039,385],{"class":328},[315,2041,388],{"class":332},[315,2043,1518],{"class":340},[315,2045,394],{"class":332},[315,2047,397],{"class":328},[315,2049,400],{"class":332},[315,2051,403],{"class":347},[315,2053,406],{"class":332},[315,2055,2056],{"class":317,"line":415},[315,2057,412],{"emptyLinePlaceholder":411},[315,2059,2060,2062,2064,2067,2069,2071,2074],{"class":317,"line":427},[315,2061,1745],{"class":536},[315,2063,388],{"class":332},[315,2065,2066],{"class":340}," error ",[315,2068,514],{"class":332},[315,2070,1605],{"class":332},[315,2072,2073],{"class":336}," defineProps",[315,2075,2076],{"class":332},"\u003C{\n",[315,2078,2079,2082,2084],{"class":317,"line":446},[315,2080,2081],{"class":430},"  error",[315,2083,434],{"class":332},[315,2085,2086],{"class":588}," unknown\n",[315,2088,2089,2092],{"class":317,"line":460},[315,2090,2091],{"class":332},"}>",[315,2093,1757],{"class":340},[315,2095,2096],{"class":317,"line":477},[315,2097,412],{"emptyLinePlaceholder":411},[315,2099,2100,2102,2105,2107,2110,2112,2115,2117,2119],{"class":317,"line":494},[315,2101,1745],{"class":536},[315,2103,2104],{"class":340}," parsed ",[315,2106,1751],{"class":332},[315,2108,2109],{"class":336}," computed",[315,2111,341],{"class":340},[315,2113,2114],{"class":332},"()",[315,2116,1949],{"class":536},[315,2118,1518],{"class":336},[315,2120,2121],{"class":340},"(error))\n",[315,2123,2124,2127,2129],{"class":317,"line":511},[315,2125,2126],{"class":332},"\u003C\u002F",[315,2128,2017],{"class":430},[315,2130,2035],{"class":332},[315,2132,2133],{"class":317,"line":912},[315,2134,412],{"emptyLinePlaceholder":411},[315,2136,2137,2139,2142],{"class":317,"line":918},[315,2138,2014],{"class":332},[315,2140,2141],{"class":430},"template",[315,2143,2035],{"class":332},[315,2145,2146,2149],{"class":317,"line":1490},[315,2147,2148],{"class":332},"  \u003C",[315,2150,2151],{"class":430},"UAlert\n",[315,2153,2154,2157,2159,2161,2164],{"class":317,"line":1884},[315,2155,2156],{"class":536},"    :title",[315,2158,1751],{"class":332},[315,2160,540],{"class":332},[315,2162,2163],{"class":347},"parsed.message",[315,2165,637],{"class":332},[315,2167,2168,2171,2173,2175,2178],{"class":317,"line":1900},[315,2169,2170],{"class":536},"    :description",[315,2172,1751],{"class":332},[315,2174,540],{"class":332},[315,2176,2177],{"class":347},"parsed.why",[315,2179,637],{"class":332},[315,2181,2182,2184,2186,2188,2190],{"class":317,"line":1915},[315,2183,1887],{"class":536},[315,2185,1751],{"class":332},[315,2187,540],{"class":332},[315,2189,1633],{"class":347},[315,2191,637],{"class":332},[315,2193,2194,2197,2199,2201,2204],{"class":317,"line":1976},[315,2195,2196],{"class":536},"    icon",[315,2198,1751],{"class":332},[315,2200,540],{"class":332},[315,2202,2203],{"class":347},"i-lucide-alert-circle",[315,2205,637],{"class":332},[315,2207,2208],{"class":317,"line":1985},[315,2209,2210],{"class":332},"  >\n",[315,2212,2213,2216,2218,2221,2223,2225,2228,2230,2232,2234,2237,2240],{"class":317,"line":1992},[315,2214,2215],{"class":332},"    \u003C",[315,2217,2141],{"class":430},[315,2219,2220],{"class":328}," v-if",[315,2222,1751],{"class":332},[315,2224,540],{"class":332},[315,2226,2227],{"class":340},"parsed",[315,2229,369],{"class":332},[315,2231,607],{"class":340},[315,2233,540],{"class":332},[315,2235,2236],{"class":332}," #",[315,2238,2239],{"class":536},"description",[315,2241,2035],{"class":332},[315,2243,2245,2248,2250,2253,2256,2258,2260],{"class":317,"line":2244},19,[315,2246,2247],{"class":332},"      \u003C",[315,2249,288],{"class":430},[315,2251,2252],{"class":332},">",[315,2254,2255],{"class":340},"{{ parsed.why }}",[315,2257,2126],{"class":332},[315,2259,288],{"class":430},[315,2261,2035],{"class":332},[315,2263,2265,2267,2269,2272,2274,2276,2279,2281,2283,2286,2288,2290],{"class":317,"line":2264},20,[315,2266,2247],{"class":332},[315,2268,288],{"class":430},[315,2270,2271],{"class":536}," class",[315,2273,1751],{"class":332},[315,2275,540],{"class":332},[315,2277,2278],{"class":347},"mt-2 font-medium",[315,2280,540],{"class":332},[315,2282,2252],{"class":332},[315,2284,2285],{"class":340},"{{ parsed.fix }}",[315,2287,2126],{"class":332},[315,2289,288],{"class":430},[315,2291,2035],{"class":332},[315,2293,2295,2298,2300],{"class":317,"line":2294},21,[315,2296,2297],{"class":332},"    \u003C\u002F",[315,2299,2141],{"class":430},[315,2301,2035],{"class":332},[315,2303,2305,2308,2311],{"class":317,"line":2304},22,[315,2306,2307],{"class":332},"  \u003C\u002F",[315,2309,2310],{"class":430},"UAlert",[315,2312,2035],{"class":332},[315,2314,2316,2318,2320],{"class":317,"line":2315},23,[315,2317,2126],{"class":332},[315,2319,2141],{"class":430},[315,2321,2035],{"class":332},[297,2323,91],{"id":2324},"best-practices",[984,2326,2328],{"id":2327},"use-appropriate-status-codes","Use Appropriate Status Codes",[374,2330,2331,2399,2482,2534],{},[305,2332,2335],{"className":307,"code":2333,"filename":2334,"language":310,"meta":311,"style":311},"\u002F\u002F Client error - user can fix\nthrow createError({\n  message: 'Invalid email format',\n  status: 400,\n  fix: 'Please enter a valid email address',\n})\n","400 - Bad Request",[292,2336,2337,2342,2352,2367,2378,2393],{"__ignoreMap":311},[315,2338,2339],{"class":317,"line":318},[315,2340,2341],{"class":321},"\u002F\u002F Client error - user can fix\n",[315,2343,2344,2346,2348,2350],{"class":317,"line":325},[315,2345,329],{"class":328},[315,2347,391],{"class":336},[315,2349,341],{"class":340},[315,2351,424],{"class":332},[315,2353,2354,2356,2358,2360,2363,2365],{"class":317,"line":415},[315,2355,431],{"class":430},[315,2357,434],{"class":332},[315,2359,400],{"class":332},[315,2361,2362],{"class":347},"Invalid email format",[315,2364,344],{"class":332},[315,2366,443],{"class":332},[315,2368,2369,2371,2373,2376],{"class":317,"line":427},[315,2370,449],{"class":430},[315,2372,434],{"class":332},[315,2374,2375],{"class":454}," 400",[315,2377,443],{"class":332},[315,2379,2380,2382,2384,2386,2389,2391],{"class":317,"line":446},[315,2381,480],{"class":430},[315,2383,434],{"class":332},[315,2385,400],{"class":332},[315,2387,2388],{"class":347},"Please enter a valid email address",[315,2390,344],{"class":332},[315,2392,443],{"class":332},[315,2394,2395,2397],{"class":317,"line":460},[315,2396,514],{"class":332},[315,2398,353],{"class":340},[305,2400,2403],{"className":307,"code":2401,"filename":2402,"language":310,"meta":311,"style":311},"\u002F\u002F Authentication required\nthrow createError({\n  message: 'Please log in to continue',\n  status: 401,\n  fix: 'Sign in to your account',\n  link: '\u002Flogin',\n})\n","401 - Unauthorized",[292,2404,2405,2410,2420,2435,2446,2461,2476],{"__ignoreMap":311},[315,2406,2407],{"class":317,"line":318},[315,2408,2409],{"class":321},"\u002F\u002F Authentication required\n",[315,2411,2412,2414,2416,2418],{"class":317,"line":325},[315,2413,329],{"class":328},[315,2415,391],{"class":336},[315,2417,341],{"class":340},[315,2419,424],{"class":332},[315,2421,2422,2424,2426,2428,2431,2433],{"class":317,"line":415},[315,2423,431],{"class":430},[315,2425,434],{"class":332},[315,2427,400],{"class":332},[315,2429,2430],{"class":347},"Please log in to continue",[315,2432,344],{"class":332},[315,2434,443],{"class":332},[315,2436,2437,2439,2441,2444],{"class":317,"line":427},[315,2438,449],{"class":430},[315,2440,434],{"class":332},[315,2442,2443],{"class":454}," 401",[315,2445,443],{"class":332},[315,2447,2448,2450,2452,2454,2457,2459],{"class":317,"line":446},[315,2449,480],{"class":430},[315,2451,434],{"class":332},[315,2453,400],{"class":332},[315,2455,2456],{"class":347},"Sign in to your account",[315,2458,344],{"class":332},[315,2460,443],{"class":332},[315,2462,2463,2465,2467,2469,2472,2474],{"class":317,"line":460},[315,2464,497],{"class":430},[315,2466,434],{"class":332},[315,2468,400],{"class":332},[315,2470,2471],{"class":347},"\u002Flogin",[315,2473,344],{"class":332},[315,2475,443],{"class":332},[315,2477,2478,2480],{"class":317,"line":477},[315,2479,514],{"class":332},[315,2481,353],{"class":340},[305,2483,2486],{"className":307,"code":2484,"filename":2485,"language":310,"meta":311,"style":311},"\u002F\u002F Resource not found\nthrow createError({\n  message: 'Order not found',\n  status: 404,\n})\n","404 - Not Found",[292,2487,2488,2493,2503,2518,2528],{"__ignoreMap":311},[315,2489,2490],{"class":317,"line":318},[315,2491,2492],{"class":321},"\u002F\u002F Resource not found\n",[315,2494,2495,2497,2499,2501],{"class":317,"line":325},[315,2496,329],{"class":328},[315,2498,391],{"class":336},[315,2500,341],{"class":340},[315,2502,424],{"class":332},[315,2504,2505,2507,2509,2511,2514,2516],{"class":317,"line":415},[315,2506,431],{"class":430},[315,2508,434],{"class":332},[315,2510,400],{"class":332},[315,2512,2513],{"class":347},"Order not found",[315,2515,344],{"class":332},[315,2517,443],{"class":332},[315,2519,2520,2522,2524,2526],{"class":317,"line":427},[315,2521,449],{"class":430},[315,2523,434],{"class":332},[315,2525,1051],{"class":454},[315,2527,443],{"class":332},[315,2529,2530,2532],{"class":317,"line":446},[315,2531,514],{"class":332},[315,2533,353],{"class":340},[305,2535,2538],{"className":307,"code":2536,"filename":2537,"language":310,"meta":311,"style":311},"\u002F\u002F Server error - not user's fault\nthrow createError({\n  message: 'Something went wrong',\n  status: 500,\n  why: 'Database connection timeout',\n  \u002F\u002F No 'fix' - user can't fix server errors\n})\n","500 - Server Error",[292,2539,2540,2545,2555,2570,2580,2595,2600],{"__ignoreMap":311},[315,2541,2542],{"class":317,"line":318},[315,2543,2544],{"class":321},"\u002F\u002F Server error - not user's fault\n",[315,2546,2547,2549,2551,2553],{"class":317,"line":325},[315,2548,329],{"class":328},[315,2550,391],{"class":336},[315,2552,341],{"class":340},[315,2554,424],{"class":332},[315,2556,2557,2559,2561,2563,2566,2568],{"class":317,"line":415},[315,2558,431],{"class":430},[315,2560,434],{"class":332},[315,2562,400],{"class":332},[315,2564,2565],{"class":347},"Something went wrong",[315,2567,344],{"class":332},[315,2569,443],{"class":332},[315,2571,2572,2574,2576,2578],{"class":317,"line":427},[315,2573,449],{"class":430},[315,2575,434],{"class":332},[315,2577,1447],{"class":454},[315,2579,443],{"class":332},[315,2581,2582,2584,2586,2588,2591,2593],{"class":317,"line":446},[315,2583,463],{"class":430},[315,2585,434],{"class":332},[315,2587,400],{"class":332},[315,2589,2590],{"class":347},"Database connection timeout",[315,2592,344],{"class":332},[315,2594,443],{"class":332},[315,2596,2597],{"class":317,"line":460},[315,2598,2599],{"class":321},"  \u002F\u002F No 'fix' - user can't fix server errors\n",[315,2601,2602,2604],{"class":317,"line":477},[315,2603,514],{"class":332},[315,2605,353],{"class":340},[984,2607,2609],{"id":2608},"provide-actionable-fixes","Provide Actionable Fixes",[374,2611,2612,2669],{},[305,2613,2616],{"className":307,"code":2614,"filename":2615,"language":310,"meta":311,"style":311},"\u002F\u002F Unhelpful fix\nthrow createError({\n  message: 'Upload failed',\n  fix: 'Try again',\n})\n","Bad",[292,2617,2618,2623,2633,2648,2663],{"__ignoreMap":311},[315,2619,2620],{"class":317,"line":318},[315,2621,2622],{"class":321},"\u002F\u002F Unhelpful fix\n",[315,2624,2625,2627,2629,2631],{"class":317,"line":325},[315,2626,329],{"class":328},[315,2628,391],{"class":336},[315,2630,341],{"class":340},[315,2632,424],{"class":332},[315,2634,2635,2637,2639,2641,2644,2646],{"class":317,"line":415},[315,2636,431],{"class":430},[315,2638,434],{"class":332},[315,2640,400],{"class":332},[315,2642,2643],{"class":347},"Upload failed",[315,2645,344],{"class":332},[315,2647,443],{"class":332},[315,2649,2650,2652,2654,2656,2659,2661],{"class":317,"line":427},[315,2651,480],{"class":430},[315,2653,434],{"class":332},[315,2655,400],{"class":332},[315,2657,2658],{"class":347},"Try again",[315,2660,344],{"class":332},[315,2662,443],{"class":332},[315,2664,2665,2667],{"class":317,"line":446},[315,2666,514],{"class":332},[315,2668,353],{"class":340},[305,2670,2673],{"className":307,"code":2671,"filename":2672,"language":310,"meta":311,"style":311},"\u002F\u002F Actionable fix\nthrow createError({\n  message: 'Upload failed',\n  status: 413,\n  why: 'File exceeds maximum size (10MB)',\n  fix: 'Reduce the file size or compress the image before uploading',\n  link: '\u002Fdocs\u002Fupload-limits',\n})\n","Good",[292,2674,2675,2680,2690,2704,2715,2730,2745,2760],{"__ignoreMap":311},[315,2676,2677],{"class":317,"line":318},[315,2678,2679],{"class":321},"\u002F\u002F Actionable fix\n",[315,2681,2682,2684,2686,2688],{"class":317,"line":325},[315,2683,329],{"class":328},[315,2685,391],{"class":336},[315,2687,341],{"class":340},[315,2689,424],{"class":332},[315,2691,2692,2694,2696,2698,2700,2702],{"class":317,"line":415},[315,2693,431],{"class":430},[315,2695,434],{"class":332},[315,2697,400],{"class":332},[315,2699,2643],{"class":347},[315,2701,344],{"class":332},[315,2703,443],{"class":332},[315,2705,2706,2708,2710,2713],{"class":317,"line":427},[315,2707,449],{"class":430},[315,2709,434],{"class":332},[315,2711,2712],{"class":454}," 413",[315,2714,443],{"class":332},[315,2716,2717,2719,2721,2723,2726,2728],{"class":317,"line":446},[315,2718,463],{"class":430},[315,2720,434],{"class":332},[315,2722,400],{"class":332},[315,2724,2725],{"class":347},"File exceeds maximum size (10MB)",[315,2727,344],{"class":332},[315,2729,443],{"class":332},[315,2731,2732,2734,2736,2738,2741,2743],{"class":317,"line":460},[315,2733,480],{"class":430},[315,2735,434],{"class":332},[315,2737,400],{"class":332},[315,2739,2740],{"class":347},"Reduce the file size or compress the image before uploading",[315,2742,344],{"class":332},[315,2744,443],{"class":332},[315,2746,2747,2749,2751,2753,2756,2758],{"class":317,"line":477},[315,2748,497],{"class":430},[315,2750,434],{"class":332},[315,2752,400],{"class":332},[315,2754,2755],{"class":347},"\u002Fdocs\u002Fupload-limits",[315,2757,344],{"class":332},[315,2759,443],{"class":332},[315,2761,2762,2764],{"class":317,"line":494},[315,2763,514],{"class":332},[315,2765,353],{"class":340},[297,2767,2769],{"id":2768},"error-categories","Error Categories",[288,2771,2772],{},"Consider creating factory functions for common error types:",[374,2774,2775,3085],{},[305,2776,2779],{"className":307,"code":2777,"filename":2778,"language":310,"meta":311,"style":311},"\u002F\u002F server\u002Futils\u002Ferrors.ts\nimport { createError } from 'evlog'\n\nexport const errors = {\n  notFound: (resource: string) =>\n    createError({\n      message: `${resource} not found`,\n      status: 404,\n    }),\n\n  unauthorized: () =>\n    createError({\n      message: 'Please log in to continue',\n      status: 401,\n      fix: 'Sign in to your account',\n    }),\n\n  validation: (field: string, issue: string) =>\n    createError({\n      message: `Invalid ${field}`,\n      status: 400,\n      why: issue,\n      fix: `Please provide a valid ${field}`,\n    }),\n}\n","Definition",[292,2780,2781,2786,2804,2808,2823,2847,2856,2878,2889,2898,2902,2913,2921,2935,2945,2960,2968,2972,3001,3009,3031,3041,3052,3071,3080],{"__ignoreMap":311},[315,2782,2783],{"class":317,"line":318},[315,2784,2785],{"class":321},"\u002F\u002F server\u002Futils\u002Ferrors.ts\n",[315,2787,2788,2790,2792,2794,2796,2798,2800,2802],{"class":317,"line":325},[315,2789,385],{"class":328},[315,2791,388],{"class":332},[315,2793,391],{"class":340},[315,2795,394],{"class":332},[315,2797,397],{"class":328},[315,2799,400],{"class":332},[315,2801,403],{"class":347},[315,2803,406],{"class":332},[315,2805,2806],{"class":317,"line":415},[315,2807,412],{"emptyLinePlaceholder":411},[315,2809,2810,2813,2816,2819,2821],{"class":317,"line":427},[315,2811,2812],{"class":328},"export",[315,2814,2815],{"class":536}," const",[315,2817,2818],{"class":340}," errors ",[315,2820,1751],{"class":332},[315,2822,580],{"class":332},[315,2824,2825,2828,2830,2833,2837,2839,2842,2844],{"class":317,"line":446},[315,2826,2827],{"class":336},"  notFound",[315,2829,434],{"class":332},[315,2831,2832],{"class":332}," (",[315,2834,2836],{"class":2835},"sHdIc","resource",[315,2838,434],{"class":332},[315,2840,2841],{"class":588}," string",[315,2843,763],{"class":332},[315,2845,2846],{"class":536}," =>\n",[315,2848,2849,2852,2854],{"class":317,"line":460},[315,2850,2851],{"class":336},"    createError",[315,2853,341],{"class":340},[315,2855,424],{"class":332},[315,2857,2858,2861,2863,2866,2868,2870,2873,2876],{"class":317,"line":477},[315,2859,2860],{"class":430},"      message",[315,2862,434],{"class":332},[315,2864,2865],{"class":332}," `${",[315,2867,2836],{"class":340},[315,2869,514],{"class":332},[315,2871,2872],{"class":347}," not found",[315,2874,2875],{"class":332},"`",[315,2877,443],{"class":332},[315,2879,2880,2883,2885,2887],{"class":317,"line":494},[315,2881,2882],{"class":430},"      status",[315,2884,434],{"class":332},[315,2886,1051],{"class":454},[315,2888,443],{"class":332},[315,2890,2891,2894,2896],{"class":317,"line":511},[315,2892,2893],{"class":332},"    }",[315,2895,763],{"class":340},[315,2897,443],{"class":332},[315,2899,2900],{"class":317,"line":912},[315,2901,412],{"emptyLinePlaceholder":411},[315,2903,2904,2907,2909,2911],{"class":317,"line":918},[315,2905,2906],{"class":336},"  unauthorized",[315,2908,434],{"class":332},[315,2910,1946],{"class":332},[315,2912,2846],{"class":536},[315,2914,2915,2917,2919],{"class":317,"line":1490},[315,2916,2851],{"class":336},[315,2918,341],{"class":340},[315,2920,424],{"class":332},[315,2922,2923,2925,2927,2929,2931,2933],{"class":317,"line":1884},[315,2924,2860],{"class":430},[315,2926,434],{"class":332},[315,2928,400],{"class":332},[315,2930,2430],{"class":347},[315,2932,344],{"class":332},[315,2934,443],{"class":332},[315,2936,2937,2939,2941,2943],{"class":317,"line":1900},[315,2938,2882],{"class":430},[315,2940,434],{"class":332},[315,2942,2443],{"class":454},[315,2944,443],{"class":332},[315,2946,2947,2950,2952,2954,2956,2958],{"class":317,"line":1915},[315,2948,2949],{"class":430},"      fix",[315,2951,434],{"class":332},[315,2953,400],{"class":332},[315,2955,2456],{"class":347},[315,2957,344],{"class":332},[315,2959,443],{"class":332},[315,2961,2962,2964,2966],{"class":317,"line":1976},[315,2963,2893],{"class":332},[315,2965,763],{"class":340},[315,2967,443],{"class":332},[315,2969,2970],{"class":317,"line":1985},[315,2971,412],{"emptyLinePlaceholder":411},[315,2973,2974,2977,2979,2981,2984,2986,2988,2990,2993,2995,2997,2999],{"class":317,"line":1992},[315,2975,2976],{"class":336},"  validation",[315,2978,434],{"class":332},[315,2980,2832],{"class":332},[315,2982,2983],{"class":2835},"field",[315,2985,434],{"class":332},[315,2987,2841],{"class":588},[315,2989,906],{"class":332},[315,2991,2992],{"class":2835}," issue",[315,2994,434],{"class":332},[315,2996,2841],{"class":588},[315,2998,763],{"class":332},[315,3000,2846],{"class":536},[315,3002,3003,3005,3007],{"class":317,"line":2244},[315,3004,2851],{"class":336},[315,3006,341],{"class":340},[315,3008,424],{"class":332},[315,3010,3011,3013,3015,3018,3021,3024,3026,3029],{"class":317,"line":2264},[315,3012,2860],{"class":430},[315,3014,434],{"class":332},[315,3016,3017],{"class":332}," `",[315,3019,3020],{"class":347},"Invalid ",[315,3022,3023],{"class":332},"${",[315,3025,2983],{"class":340},[315,3027,3028],{"class":332},"}`",[315,3030,443],{"class":332},[315,3032,3033,3035,3037,3039],{"class":317,"line":2294},[315,3034,2882],{"class":430},[315,3036,434],{"class":332},[315,3038,2375],{"class":454},[315,3040,443],{"class":332},[315,3042,3043,3046,3048,3050],{"class":317,"line":2304},[315,3044,3045],{"class":430},"      why",[315,3047,434],{"class":332},[315,3049,2992],{"class":340},[315,3051,443],{"class":332},[315,3053,3054,3056,3058,3060,3063,3065,3067,3069],{"class":317,"line":2315},[315,3055,2949],{"class":430},[315,3057,434],{"class":332},[315,3059,3017],{"class":332},[315,3061,3062],{"class":347},"Please provide a valid ",[315,3064,3023],{"class":332},[315,3066,2983],{"class":340},[315,3068,3028],{"class":332},[315,3070,443],{"class":332},[315,3072,3074,3076,3078],{"class":317,"line":3073},24,[315,3075,2893],{"class":332},[315,3077,763],{"class":340},[315,3079,443],{"class":332},[315,3081,3083],{"class":317,"line":3082},25,[315,3084,647],{"class":332},[305,3086,3089],{"className":307,"code":3087,"filename":3088,"language":310,"meta":311,"style":311},"\u002F\u002F server\u002Fapi\u002Forders\u002F[id].get.ts\nimport { errors } from '~\u002Fserver\u002Futils\u002Ferrors'\n\nexport default defineEventHandler(async (event) => {\n  const order = await getOrder(event.context.params.id)\n\n  if (!order) {\n    throw errors.notFound('Order')\n  }\n\n  return order\n})\n","Usage",[292,3090,3091,3096,3116,3120,3146,3182,3186,3203,3226,3230,3234,3242],{"__ignoreMap":311},[315,3092,3093],{"class":317,"line":318},[315,3094,3095],{"class":321},"\u002F\u002F server\u002Fapi\u002Forders\u002F[id].get.ts\n",[315,3097,3098,3100,3102,3105,3107,3109,3111,3114],{"class":317,"line":325},[315,3099,385],{"class":328},[315,3101,388],{"class":332},[315,3103,3104],{"class":340}," errors",[315,3106,394],{"class":332},[315,3108,397],{"class":328},[315,3110,400],{"class":332},[315,3112,3113],{"class":347},"~\u002Fserver\u002Futils\u002Ferrors",[315,3115,406],{"class":332},[315,3117,3118],{"class":317,"line":415},[315,3119,412],{"emptyLinePlaceholder":411},[315,3121,3122,3124,3127,3130,3132,3135,3137,3140,3142,3144],{"class":317,"line":427},[315,3123,2812],{"class":328},[315,3125,3126],{"class":328}," default",[315,3128,3129],{"class":336}," defineEventHandler",[315,3131,341],{"class":340},[315,3133,3134],{"class":536},"async",[315,3136,2832],{"class":332},[315,3138,3139],{"class":2835},"event",[315,3141,763],{"class":332},[315,3143,1949],{"class":536},[315,3145,580],{"class":332},[315,3147,3148,3150,3153,3155,3158,3161,3163,3165,3167,3170,3172,3175,3177,3180],{"class":317,"line":446},[315,3149,1599],{"class":536},[315,3151,3152],{"class":340}," order",[315,3154,1605],{"class":332},[315,3156,3157],{"class":328}," await",[315,3159,3160],{"class":336}," getOrder",[315,3162,341],{"class":430},[315,3164,3139],{"class":340},[315,3166,369],{"class":332},[315,3168,3169],{"class":340},"context",[315,3171,369],{"class":332},[315,3173,3174],{"class":340},"params",[315,3176,369],{"class":332},[315,3178,3179],{"class":340},"id",[315,3181,353],{"class":430},[315,3183,3184],{"class":317,"line":460},[315,3185,412],{"emptyLinePlaceholder":411},[315,3187,3188,3191,3193,3196,3199,3201],{"class":317,"line":477},[315,3189,3190],{"class":328},"  if",[315,3192,2832],{"class":430},[315,3194,3195],{"class":332},"!",[315,3197,3198],{"class":340},"order",[315,3200,1968],{"class":430},[315,3202,424],{"class":332},[315,3204,3205,3208,3210,3212,3215,3217,3219,3222,3224],{"class":317,"line":494},[315,3206,3207],{"class":328},"    throw",[315,3209,3104],{"class":340},[315,3211,369],{"class":332},[315,3213,3214],{"class":336},"notFound",[315,3216,341],{"class":430},[315,3218,344],{"class":332},[315,3220,3221],{"class":347},"Order",[315,3223,344],{"class":332},[315,3225,353],{"class":430},[315,3227,3228],{"class":317,"line":511},[315,3229,642],{"class":332},[315,3231,3232],{"class":317,"line":912},[315,3233,412],{"emptyLinePlaceholder":411},[315,3235,3236,3239],{"class":317,"line":918},[315,3237,3238],{"class":328},"  return",[315,3240,3241],{"class":340}," order\n",[315,3243,3244,3246],{"class":317,"line":1490},[315,3245,514],{"class":332},[315,3247,353],{"class":340},[3249,3250,3252,3253,3257],"callout",{"color":3251,"icon":201},"neutral","See the ",[3254,3255,3256],"a",{"href":121},"Next.js guide"," for a working implementation.",[297,3259,3261],{"id":3260},"next-steps","Next Steps",[924,3263,3264,3269,3274,3279],{},[927,3265,3266,3268],{},[3254,3267,46],{"href":47},": Accumulate context and emit comprehensive events",[927,3270,3271,3273],{},[3254,3272,189],{"href":194},": Send errors and events to Axiom, Sentry, PostHog, and more",[927,3275,3276,3278],{},[3254,3277,106],{"href":111},": Auto-managed request logging per framework",[927,3280,3281,3283],{},[3254,3282,20],{"href":21},": See all evlog APIs in action",[3285,3286,3287],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":311,"searchDepth":325,"depth":325,"links":3289},[3290,3291,3292,3294,3299,3302,3306,3307],{"id":299,"depth":325,"text":300},{"id":650,"depth":325,"text":651},{"id":759,"depth":325,"text":3293},"Backend-only context (internal)",{"id":981,"depth":325,"text":982,"children":3295},[3296,3297,3298],{"id":986,"depth":415,"text":987},{"id":1105,"depth":415,"text":1106},{"id":1335,"depth":415,"text":1336},{"id":1495,"depth":325,"text":1496,"children":3300},[3301],{"id":1997,"depth":415,"text":1998},{"id":2324,"depth":325,"text":91,"children":3303},[3304,3305],{"id":2327,"depth":415,"text":2328},{"id":2608,"depth":415,"text":2609},{"id":2768,"depth":325,"text":2769},{"id":3260,"depth":325,"text":3261},"Create errors that explain why they occurred and how to fix them. Add actionable context with why, fix, and link fields for humans and AI agents.","md",[3311,3313],{"label":46,"icon":49,"to":47,"color":3251,"variant":3312},"subtle",{"label":91,"icon":94,"to":92,"color":3251,"variant":3312},{},{"icon":54},{"title":51,"description":3308},"V0oC7k0ZSQWkNcm4mp2Gn0IT3il5xo60mRZnwvpd62Y",[3319,3321],{"title":46,"path":47,"stem":48,"description":3320,"icon":49,"children":-1},"Accumulate context over any unit of work and emit a single comprehensive event. Works for HTTP requests, scripts, background jobs, queue workers, and workflows.",{"title":56,"path":57,"stem":58,"description":3322,"icon":59,"children":-1},"Capture browser events with structured logging. Same API as the server, with automatic console styling, user identity context, and optional server transport.",1775319206781]