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