[{"data":1,"prerenderedAt":2773},["ShallowReactive",2],{"navigation_docs":3,"-rpc-server-headers":399},[4,162,346],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":24},"RPC","icon-park-outline:lightning","\u002Frpc","01.rpc",[10,25,63,77,102,136],{"title":11,"icon":12,"redirect":7,"path":13,"stem":14,"children":15,"page":24},"Introduction","icon-park-outline:home","\u002Frpc\u002Fintroduction","01.rpc\u002F01.introduction",[16,20],{"title":17,"path":18,"stem":19},"Quick Start","\u002Frpc\u002Fintroduction\u002Fquick-start","01.rpc\u002F01.introduction\u002F02.quick-start",{"title":21,"path":22,"stem":23},"Manual Install","\u002Frpc\u002Fintroduction\u002Fmanual-install","01.rpc\u002F01.introduction\u002F03.manual-install",false,{"title":26,"icon":27,"path":28,"stem":29,"children":30,"page":24},"Server","icon-park-outline:server","\u002Frpc\u002Fserver","01.rpc\u002F02.server",[31,35,39,43,47,51,55,59],{"title":32,"path":33,"stem":34},"Routes","\u002Frpc\u002Fserver\u002Froutes","01.rpc\u002F02.server\u002F01.routes",{"title":36,"path":37,"stem":38},"Middleware","\u002Frpc\u002Fserver\u002Fmiddleware","01.rpc\u002F02.server\u002F02.middleware",{"title":40,"path":41,"stem":42},"Call Context","\u002Frpc\u002Fserver\u002Fcall-context","01.rpc\u002F02.server\u002F03.call-context",{"title":44,"path":45,"stem":46},"Headers","\u002Frpc\u002Fserver\u002Fheaders","01.rpc\u002F02.server\u002F04.headers",{"title":48,"path":49,"stem":50},"Error Handling","\u002Frpc\u002Fserver\u002Ferror-handling","01.rpc\u002F02.server\u002F05.error-handling",{"title":52,"path":53,"stem":54},"Validation","\u002Frpc\u002Fserver\u002Fvalidation","01.rpc\u002F02.server\u002F06.validation",{"title":56,"path":57,"stem":58},"JSON Round Trip","\u002Frpc\u002Fserver\u002Fjson-round-trip","01.rpc\u002F02.server\u002F07.json-round-trip",{"title":60,"path":61,"stem":62},"Drizzle Tables","\u002Frpc\u002Fserver\u002Fdrizzle-tables","01.rpc\u002F02.server\u002F08.drizzle-tables",{"title":64,"icon":65,"path":66,"stem":67,"children":68,"page":24},"Middlewares","icon-park-outline:link-one","\u002Frpc\u002Fmiddlewares","01.rpc\u002F03.middlewares",[69,73],{"title":70,"path":71,"stem":72},"fetchMetadata","\u002Frpc\u002Fmiddlewares\u002Ffetch-metadata","01.rpc\u002F03.middlewares\u002F01.fetch-metadata",{"title":74,"path":75,"stem":76},"syncRoutes","\u002Frpc\u002Fmiddlewares\u002Fsync-routes","01.rpc\u002F03.middlewares\u002F02.sync-routes",{"title":78,"icon":79,"path":80,"stem":81,"children":82,"page":24},"Client","icon-park-outline:computer","\u002Frpc\u002Fclient","01.rpc\u002F04.client",[83,87,91,94,98],{"title":84,"path":85,"stem":86},"Client Overview","\u002Frpc\u002Fclient\u002Fclient-overview","01.rpc\u002F04.client\u002F00.client-overview",{"title":88,"path":89,"stem":90},"Client Middleware","\u002Frpc\u002Fclient\u002Fclient-middleware","01.rpc\u002F04.client\u002F01.client-middleware",{"title":48,"path":92,"stem":93},"\u002Frpc\u002Fclient\u002Ferror-handling","01.rpc\u002F04.client\u002F02.error-handling",{"title":95,"path":96,"stem":97},"Batch Requests","\u002Frpc\u002Fclient\u002Fbatch","01.rpc\u002F04.client\u002F03.batch",{"title":99,"path":100,"stem":101},"Cancellation & Timeouts","\u002Frpc\u002Fclient\u002Fcancellation-timeouts","01.rpc\u002F04.client\u002F04.cancellation-timeouts",{"title":103,"redirect":104,"icon":105,"path":106,"stem":107,"children":108,"page":24},"Platforms","\u002Frpc\u002Fplatforms\u002Fnode-js","icon-park-outline:play","\u002Frpc\u002Fplatforms","01.rpc\u002F06.platforms",[109,112,116,120,124,128,132],{"title":110,"path":104,"stem":111},"Node.js","01.rpc\u002F06.platforms\u002F01.node-js",{"title":113,"path":114,"stem":115},"Bun","\u002Frpc\u002Fplatforms\u002Fbun","01.rpc\u002F06.platforms\u002F02.bun",{"title":117,"path":118,"stem":119},"AWS Lambda","\u002Frpc\u002Fplatforms\u002Faws-lambda","01.rpc\u002F06.platforms\u002F03.aws-lambda",{"title":121,"path":122,"stem":123},"Google Cloud Functions","\u002Frpc\u002Fplatforms\u002Fgoogle-cloud-functions","01.rpc\u002F06.platforms\u002F04.google-cloud-functions",{"title":125,"path":126,"stem":127},"Cloudflare Workers","\u002Frpc\u002Fplatforms\u002Fcloudflare","01.rpc\u002F06.platforms\u002F05.cloudflare",{"title":129,"path":130,"stem":131},"Vercel","\u002Frpc\u002Fplatforms\u002Fvercel","01.rpc\u002F06.platforms\u002F06.vercel",{"title":133,"path":134,"stem":135},"uWebSockets.js","\u002Frpc\u002Fplatforms\u002Fuwebsockets","01.rpc\u002F06.platforms\u002F07.uwebsockets",{"title":137,"icon":138,"path":139,"stem":140,"children":141,"page":24},"Devtools","icon-park-outline:tool","\u002Frpc\u002Fdevtools","01.rpc\u002F07.devtools",[142,146,150,154,158],{"title":143,"path":144,"stem":145},"Linter","\u002Frpc\u002Fdevtools\u002Flinter","01.rpc\u002F07.devtools\u002F01.linter",{"title":147,"path":148,"stem":149},"Vite","\u002Frpc\u002Fdevtools\u002Fvite","01.rpc\u002F07.devtools\u002F02.vite",{"title":151,"path":152,"stem":153},"Next.js","\u002Frpc\u002Fdevtools\u002Fnextjs","01.rpc\u002F07.devtools\u002F03.nextjs",{"title":155,"path":156,"stem":157},"CLI","\u002Frpc\u002Fdevtools\u002Fcli","01.rpc\u002F07.devtools\u002F04.cli",{"title":159,"path":160,"stem":161},"API Types","\u002Frpc\u002Fdevtools\u002Fapi-types","01.rpc\u002F07.devtools\u002F05.api-types",{"title":163,"icon":164,"path":165,"stem":166,"children":167,"page":24},"RunTypes","i-lucide-braces","\u002Fruntypes","02.runtypes",[168,184,224,254,268,290,332],{"title":11,"icon":169,"redirect":165,"path":170,"stem":171,"children":172,"page":24},"i-lucide-rocket","\u002Fruntypes\u002Fintroduction","02.runtypes\u002F01.introduction",[173,177,180],{"title":174,"path":175,"stem":176},"Built on typescript-go","\u002Fruntypes\u002Fintroduction\u002Fbuilt-on-typescript-go","02.runtypes\u002F01.introduction\u002F02.built-on-typescript-go",{"title":17,"path":178,"stem":179},"\u002Fruntypes\u002Fintroduction\u002Fquick-start","02.runtypes\u002F01.introduction\u002F03.quick-start",{"title":181,"path":182,"stem":183},"Configuration","\u002Fruntypes\u002Fintroduction\u002Fconfiguration","02.runtypes\u002F01.introduction\u002F04.configuration",{"title":185,"icon":186,"redirect":187,"path":188,"stem":189,"children":190,"page":24},"Guide","i-lucide-book-open","\u002Fruntypes\u002Fguide\u002Ftype-builders","\u002Fruntypes\u002Fguide","02.runtypes\u002F02.guide",[191,194,198,201,204,208,212,216,220],{"title":192,"path":187,"stem":193},"Types vs Type Builders","02.runtypes\u002F02.guide\u002F01.type-builders",{"title":195,"path":196,"stem":197},"Reflection","\u002Fruntypes\u002Fguide\u002Freflection","02.runtypes\u002F02.guide\u002F02.reflection",{"title":52,"path":199,"stem":200},"\u002Fruntypes\u002Fguide\u002Fvalidation","02.runtypes\u002F02.guide\u002F03.validation",{"title":56,"path":202,"stem":203},"\u002Fruntypes\u002Fguide\u002Fjson-round-trip","02.runtypes\u002F02.guide\u002F04.json-round-trip",{"title":205,"path":206,"stem":207},"Data Mocking","\u002Fruntypes\u002Fguide\u002Fmocking","02.runtypes\u002F02.guide\u002F07.mocking",{"title":209,"path":210,"stem":211},"JSON Schemas","\u002Fruntypes\u002Fguide\u002Fjson-schemas","02.runtypes\u002F02.guide\u002F08.json-schemas",{"title":213,"path":214,"stem":215},"Pure Functions","\u002Fruntypes\u002Fguide\u002Fpure-functions","02.runtypes\u002F02.guide\u002F09.pure-functions",{"title":217,"path":218,"stem":219},"Compiler Markers","\u002Fruntypes\u002Fguide\u002Fcompiler-markers","02.runtypes\u002F02.guide\u002F10.compiler-markers",{"title":221,"path":222,"stem":223},"All Compiled Functions","\u002Fruntypes\u002Fguide\u002Fall-compiled-functions","02.runtypes\u002F02.guide\u002F11.all-compiled-functions",{"title":225,"icon":226,"redirect":227,"path":228,"stem":229,"children":230,"page":24},"Type Formats","i-lucide-shapes","\u002Fruntypes\u002Ftype-formats\u002Foverview","\u002Fruntypes\u002Ftype-formats","02.runtypes\u002F03.type-formats",[231,234,238,242,246,250],{"title":232,"path":227,"stem":233},"Overview","02.runtypes\u002F03.type-formats\u002F01.overview",{"title":235,"path":236,"stem":237},"String Formats","\u002Fruntypes\u002Ftype-formats\u002Fstring","02.runtypes\u002F03.type-formats\u002F02.string",{"title":239,"path":240,"stem":241},"Number Formats","\u002Fruntypes\u002Ftype-formats\u002Fnumber","02.runtypes\u002F03.type-formats\u002F03.number",{"title":243,"path":244,"stem":245},"BigInt Formats","\u002Fruntypes\u002Ftype-formats\u002Fbigint","02.runtypes\u002F03.type-formats\u002F04.bigint",{"title":247,"path":248,"stem":249},"Date and Time Formats","\u002Fruntypes\u002Ftype-formats\u002Fdate-time","02.runtypes\u002F03.type-formats\u002F05.date-time",{"title":251,"path":252,"stem":253},"Collection Formats","\u002Fruntypes\u002Ftype-formats\u002Fcollections","02.runtypes\u002F03.type-formats\u002F06.collections",{"title":255,"icon":256,"redirect":257,"path":258,"stem":259,"children":260,"page":24},"Tooling","i-lucide-wrench","\u002Fruntypes\u002Ftooling\u002Flinting","\u002Fruntypes\u002Ftooling","02.runtypes\u002F04.tooling",[261,264],{"title":262,"path":257,"stem":263},"Linting","02.runtypes\u002F04.tooling\u002F01.linting",{"title":265,"path":266,"stem":267},"Source Conversion","\u002Fruntypes\u002Ftooling\u002Fsource-conversion","02.runtypes\u002F04.tooling\u002F02.source-conversion",{"title":269,"icon":270,"redirect":271,"path":272,"stem":273,"children":274,"page":24},"AI Integration","i-lucide-sparkles","\u002Fruntypes\u002Fai-integration\u002Fworkflow-and-commands","\u002Fruntypes\u002Fai-integration","02.runtypes\u002F05.ai-integration",[275,278,282,286],{"title":276,"path":271,"stem":277},"AI Workflow","02.runtypes\u002F05.ai-integration\u002F01.workflow-and-commands",{"title":279,"path":280,"stem":281},"FriendlyText","\u002Fruntypes\u002Fai-integration\u002Ffriendly-text","02.runtypes\u002F05.ai-integration\u002F02.friendly-text",{"title":283,"path":284,"stem":285},"MockData","\u002Fruntypes\u002Fai-integration\u002Fmock-data","02.runtypes\u002F05.ai-integration\u002F03.mock-data",{"title":287,"path":288,"stem":289},"Translations (i18n)","\u002Fruntypes\u002Fai-integration\u002Fi18n","02.runtypes\u002F05.ai-integration\u002F04.i18n",{"title":291,"icon":292,"redirect":293,"path":294,"stem":295,"children":296,"page":24},"Drizzle ORM","i-lineicons-drizzle","\u002Fruntypes\u002Fdrizzle-orm\u002Fdrizzle-overview","\u002Fruntypes\u002Fdrizzle-orm","02.runtypes\u002F06.drizzle-orm",[297,300,304,308,312,316,320,324,328],{"title":298,"path":293,"stem":299},"Drizzle Overview","02.runtypes\u002F06.drizzle-orm\u002F00.drizzle-overview",{"title":301,"path":302,"stem":303},"Column Formats","\u002Fruntypes\u002Fdrizzle-orm\u002Fcolumn-formats","02.runtypes\u002F06.drizzle-orm\u002F01.column-formats",{"title":305,"path":306,"stem":307},"Views","\u002Fruntypes\u002Fdrizzle-orm\u002Fviews","02.runtypes\u002F06.drizzle-orm\u002F02.views",{"title":309,"path":310,"stem":311},"Indexes and Constraints","\u002Fruntypes\u002Fdrizzle-orm\u002Fconstraints","02.runtypes\u002F06.drizzle-orm\u002F03.constraints",{"title":313,"path":314,"stem":315},"Row Level Security","\u002Fruntypes\u002Fdrizzle-orm\u002Frow-level-security","02.runtypes\u002F06.drizzle-orm\u002F04.row-level-security",{"title":317,"path":318,"stem":319},"Relations","\u002Fruntypes\u002Fdrizzle-orm\u002Frelations","02.runtypes\u002F06.drizzle-orm\u002F05.relations",{"title":321,"path":322,"stem":323},"The Schema File","\u002Fruntypes\u002Fdrizzle-orm\u002Fschema-file","02.runtypes\u002F06.drizzle-orm\u002F06.schema-file",{"title":325,"path":326,"stem":327},"Migrate an Existing Schema","\u002Fruntypes\u002Fdrizzle-orm\u002Fmigrate-an-existing-schema","02.runtypes\u002F06.drizzle-orm\u002F07.migrate-an-existing-schema",{"title":329,"path":330,"stem":331},"Cloudflare D1 and Durable Objects","\u002Fruntypes\u002Fdrizzle-orm\u002Fcloudflare-storage","02.runtypes\u002F06.drizzle-orm\u002F08.cloudflare-storage",{"title":333,"icon":334,"redirect":335,"path":336,"stem":337,"children":338,"page":24},"Diagnostics","i-lucide-triangle-alert","\u002Fruntypes\u002Fdiagnostics\u002Ferror-levels","\u002Fruntypes\u002Fdiagnostics","02.runtypes\u002F08.diagnostics",[339,342],{"title":340,"path":335,"stem":341},"Error Levels","02.runtypes\u002F08.diagnostics\u002F01.error-levels",{"title":343,"path":344,"stem":345},"All Diagnostics","\u002Fruntypes\u002Fdiagnostics\u002Fall-diagnostics","02.runtypes\u002F08.diagnostics\u002F02.all-diagnostics",{"title":347,"icon":348,"path":349,"stem":350,"children":351,"page":24},"Benchmarks","i-lucide-gauge","\u002Fbenchmarks","03.benchmarks",[352,372],{"title":5,"icon":6,"redirect":353,"path":354,"stem":355,"children":356,"page":24},"\u002Fbenchmarks\u002Frpc\u002Fhello-world","\u002Fbenchmarks\u002Frpc","03.benchmarks\u002F02.rpc",[357,360,364,368],{"title":358,"path":353,"stem":359},"Hello World","03.benchmarks\u002F02.rpc\u002F01.hello-world",{"title":361,"path":362,"stem":363},"Light Validation","\u002Fbenchmarks\u002Frpc\u002Flight-validation","03.benchmarks\u002F02.rpc\u002F02.light-validation",{"title":365,"path":366,"stem":367},"Heavy Validation","\u002Fbenchmarks\u002Frpc\u002Fheavy-validation","03.benchmarks\u002F02.rpc\u002F03.heavy-validation",{"title":369,"path":370,"stem":371},"Payload Sizes","\u002Fbenchmarks\u002Frpc\u002Fpayload-sizes","03.benchmarks\u002F02.rpc\u002F04.payload-sizes",{"title":163,"icon":164,"redirect":373,"path":374,"stem":375,"children":376,"page":24},"\u002Fbenchmarks\u002Fruntypes\u002Fis-valid","\u002Fbenchmarks\u002Fruntypes","03.benchmarks\u002F03.runtypes",[377,380,384,388,392,395],{"title":378,"path":373,"stem":379},"Is Valid","03.benchmarks\u002F03.runtypes\u002F01.is-valid",{"title":381,"path":382,"stem":383},"Is Valid Formats","\u002Fbenchmarks\u002Fruntypes\u002Fis-valid-formats","03.benchmarks\u002F03.runtypes\u002F02.is-valid-formats",{"title":385,"path":386,"stem":387},"Get Errors","\u002Fbenchmarks\u002Fruntypes\u002Fget-errors","03.benchmarks\u002F03.runtypes\u002F03.get-errors",{"title":389,"path":390,"stem":391},"Get Errors Formats","\u002Fbenchmarks\u002Fruntypes\u002Fget-errors-formats","03.benchmarks\u002F03.runtypes\u002F04.get-errors-formats",{"title":56,"path":393,"stem":394},"\u002Fbenchmarks\u002Fruntypes\u002Fjson-round-trip","03.benchmarks\u002F03.runtypes\u002F05.json-round-trip",{"title":396,"path":397,"stem":398},"Type Checking","\u002Fbenchmarks\u002Fruntypes\u002Ftype-checking","03.benchmarks\u002F03.runtypes\u002F07.type-checking",{"id":400,"title":44,"body":401,"description":2767,"extension":2768,"links":2769,"meta":2770,"navigation":499,"path":45,"seo":2771,"stem":46,"__hash__":2772},"docs\u002F01.rpc\u002F02.server\u002F04.headers.md",{"type":402,"value":403,"toc":2756},"minimark",[404,412,417,427,783,838,849,853,863,867,881,1206,1214,1218,1225,1359,1363,1370,1441,1490,1501,1505,1529,1535,1569,1573,1589,1603,1607,1624,2234,2244,2248,2261,2740,2752],[405,406,407,411],"p",{},[408,409,410],"code",{},"HeadersSubset"," is the type for the headers a handler reads or sends. mion validates them like any other param.",[413,414,416],"h2",{"id":415},"reading-request-headers","Reading Request Headers",[405,418,419,422,423,426],{},[408,420,421],{},"mion.headersMiddleware"," creates a middleware that reads request headers. Its second parameter is a ",[408,424,425],{},"HeadersSubset\u003CRequired, Optional>",": the first type lists the headers a request must send, the second those it may send.",[428,429,434],"pre",{"className":430,"code":431,"language":432,"meta":433,"style":433},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import {createMionRouter} from '@mionjs\u002Frouter';\nimport {HeadersSubset} from '@mionjs\u002Fcore';\n\nconst mion = createMionRouter();\n\nconst traceWithOptionalAgent = mion.headersMiddleware(\n  async (\n    ctx,\n    {headers}: HeadersSubset\u003C'X-Trace-Id', 'User-Agent'>\n  ): Promise\u003Cvoid> => {\n    const traceId = headers['X-Trace-Id']; \u002F\u002F always present\n    const userAgent = headers['User-Agent']; \u002F\u002F may be undefined\n\n    console.log(`Trace: ${traceId}, Agent: ${userAgent ?? 'unknown'}`);\n  }\n);\n\nexport {traceWithOptionalAgent};\n","ts","",[408,435,436,472,494,501,523,528,550,559,568,605,632,667,694,699,751,757,764,769],{"__ignoreMap":433},[437,438,441,445,449,453,456,459,462,466,469],"span",{"class":439,"line":440},"line",1,[437,442,444],{"class":443},"s7zQu","import",[437,446,448],{"class":447},"sMK4o"," {",[437,450,452],{"class":451},"sTEyZ","createMionRouter",[437,454,455],{"class":447},"}",[437,457,458],{"class":443}," from",[437,460,461],{"class":447}," '",[437,463,465],{"class":464},"sfazB","@mionjs\u002Frouter",[437,467,468],{"class":447},"'",[437,470,471],{"class":447},";\n",[437,473,475,477,479,481,483,485,487,490,492],{"class":439,"line":474},2,[437,476,444],{"class":443},[437,478,448],{"class":447},[437,480,410],{"class":451},[437,482,455],{"class":447},[437,484,458],{"class":443},[437,486,461],{"class":447},[437,488,489],{"class":464},"@mionjs\u002Fcore",[437,491,468],{"class":447},[437,493,471],{"class":447},[437,495,497],{"class":439,"line":496},3,[437,498,500],{"emptyLinePlaceholder":499},true,"\n",[437,502,504,508,511,514,518,521],{"class":439,"line":503},4,[437,505,507],{"class":506},"spNyl","const",[437,509,510],{"class":451}," mion ",[437,512,513],{"class":447},"=",[437,515,517],{"class":516},"s2Zo4"," createMionRouter",[437,519,520],{"class":451},"()",[437,522,471],{"class":447},[437,524,526],{"class":439,"line":525},5,[437,527,500],{"emptyLinePlaceholder":499},[437,529,531,533,536,538,541,544,547],{"class":439,"line":530},6,[437,532,507],{"class":506},[437,534,535],{"class":451}," traceWithOptionalAgent ",[437,537,513],{"class":447},[437,539,540],{"class":451}," mion",[437,542,543],{"class":447},".",[437,545,546],{"class":516},"headersMiddleware",[437,548,549],{"class":451},"(\n",[437,551,553,556],{"class":439,"line":552},7,[437,554,555],{"class":516},"  async",[437,557,558],{"class":451}," (\n",[437,560,562,565],{"class":439,"line":561},8,[437,563,564],{"class":451},"    ctx",[437,566,567],{"class":447},",\n",[437,569,571,574,577,579,582,585,587,590,592,595,597,600,602],{"class":439,"line":570},9,[437,572,573],{"class":447},"    {",[437,575,576],{"class":451},"headers",[437,578,455],{"class":447},[437,580,581],{"class":451},": HeadersSubset",[437,583,584],{"class":447},"\u003C",[437,586,468],{"class":447},[437,588,589],{"class":464},"X-Trace-Id",[437,591,468],{"class":447},[437,593,594],{"class":447},",",[437,596,461],{"class":447},[437,598,599],{"class":464},"User-Agent",[437,601,468],{"class":447},[437,603,604],{"class":447},">\n",[437,606,608,611,614,618,620,623,626,629],{"class":439,"line":607},10,[437,609,610],{"class":451},"  )",[437,612,613],{"class":447},":",[437,615,617],{"class":616},"sBMFI"," Promise",[437,619,584],{"class":447},[437,621,622],{"class":616},"void",[437,624,625],{"class":447},">",[437,627,628],{"class":506}," =>",[437,630,631],{"class":447}," {\n",[437,633,635,638,641,644,647,651,653,655,657,660,663],{"class":439,"line":634},11,[437,636,637],{"class":506},"    const",[437,639,640],{"class":451}," traceId",[437,642,643],{"class":447}," =",[437,645,646],{"class":451}," headers",[437,648,650],{"class":649},"swJcz","[",[437,652,468],{"class":447},[437,654,589],{"class":464},[437,656,468],{"class":447},[437,658,659],{"class":649},"]",[437,661,662],{"class":447},";",[437,664,666],{"class":665},"sHwdD"," \u002F\u002F always present\n",[437,668,670,672,675,677,679,681,683,685,687,689,691],{"class":439,"line":669},12,[437,671,637],{"class":506},[437,673,674],{"class":451}," userAgent",[437,676,643],{"class":447},[437,678,646],{"class":451},[437,680,650],{"class":649},[437,682,468],{"class":447},[437,684,599],{"class":464},[437,686,468],{"class":447},[437,688,659],{"class":649},[437,690,662],{"class":447},[437,692,693],{"class":665}," \u002F\u002F may be undefined\n",[437,695,697],{"class":439,"line":696},13,[437,698,500],{"emptyLinePlaceholder":499},[437,700,702,705,707,710,713,716,719,722,725,727,730,732,735,738,740,743,746,749],{"class":439,"line":701},14,[437,703,704],{"class":451},"    console",[437,706,543],{"class":447},[437,708,709],{"class":516},"log",[437,711,712],{"class":649},"(",[437,714,715],{"class":447},"`",[437,717,718],{"class":464},"Trace: ",[437,720,721],{"class":447},"${",[437,723,724],{"class":451},"traceId",[437,726,455],{"class":447},[437,728,729],{"class":464},", Agent: ",[437,731,721],{"class":447},[437,733,734],{"class":451},"userAgent ",[437,736,737],{"class":447},"??",[437,739,461],{"class":447},[437,741,742],{"class":464},"unknown",[437,744,745],{"class":447},"'}`",[437,747,748],{"class":649},")",[437,750,471],{"class":447},[437,752,754],{"class":439,"line":753},15,[437,755,756],{"class":447},"  }\n",[437,758,760,762],{"class":439,"line":759},16,[437,761,748],{"class":451},[437,763,471],{"class":447},[437,765,767],{"class":439,"line":766},17,[437,768,500],{"emptyLinePlaceholder":499},[437,770,772,775,777,780],{"class":439,"line":771},18,[437,773,774],{"class":443},"export",[437,776,448],{"class":447},[437,778,779],{"class":451},"traceWithOptionalAgent",[437,781,782],{"class":447},"};\n",[784,785,786,799],"table",{},[787,788,789],"thead",{},[790,791,792,796],"tr",{},[793,794,795],"th",{},"Rule",[793,797,798],{},"What it means",[800,801,802,819,827],"tbody",{},[790,803,804,808],{},[805,806,807],"td",{},"Name case",[805,809,810,811,814,815,818],{},"Not case sensitive: a request with ",[408,812,813],{},"authorization"," matches ",[408,816,817],{},"Authorization",". You read the value by the name you declared.",[790,820,821,824],{},[805,822,823],{},"Values",[805,825,826],{},"Always strings. Parse numbers or dates yourself.",[790,828,829,832],{},[805,830,831],{},"Other params",[805,833,834,835,837],{},"Params after the ",[408,836,410],{}," come from the request body, as in any middleware.",[839,840,841,842,845,846,543],"tip",{},"Only the declared names reach the handler. To read any other header, use ",[408,843,844],{},"ctx.request.headers.get(name)",", see ",[847,848,40],"a",{"href":41},[413,850,852],{"id":851},"missing-or-invalid-headers","Missing or Invalid Headers",[405,854,855,856,859,860,543],{},"A request without a required header, or with an empty one, ends with a ",[408,857,858],{},"validation-error"," (HTTP 422) before the handler runs. The client gets it typed like any ",[847,861,862],{"href":53},"validation error",[413,864,866],{"id":865},"sending-response-headers","Sending Response Headers",[405,868,869,870,872,873,876,877,880],{},"Return a ",[408,871,410],{}," from a middleware or a route to send its values as response headers, never in the body. In code built with mion, ",[408,874,875],{},"new HeadersSubset(...)"," throws a ",[408,878,879],{},"headers-validation-error"," inside your handler when a header is missing or has the wrong type, and no header is sent. The router does not check headers after your handler returns.",[428,882,884],{"className":430,"code":883,"language":432,"meta":433,"style":433},"import {HeadersSubset} from '@mionjs\u002Fcore';\nimport {createMionRouter, Routes} from '@mionjs\u002Frouter';\n\nconst mion = createMionRouter();\n\nconst routes = {\n  \u002F\u002F sets the header on the response of every route after it\n  noCache: mion.middleware(\n    (ctx): HeadersSubset\u003C'Cache-Control'> =>\n      new HeadersSubset({'Cache-Control': 'no-store'})\n  ),\n  \u002F\u002F reads a request header and returns a response header\n  locale: mion.headersMiddleware(\n    (\n      ctx,\n      {headers}: HeadersSubset\u003Cnever, 'Accept-Language'>\n    ): HeadersSubset\u003C'Content-Language'> =>\n      new HeadersSubset({\n        'Content-Language': headers['Accept-Language'] ?? 'en',\n      })\n  ),\n} satisfies Routes;\n",[408,885,886,906,931,935,949,953,964,969,985,1014,1046,1052,1057,1072,1077,1084,1111,1133,1144,1179,1187,1194],{"__ignoreMap":433},[437,887,888,890,892,894,896,898,900,902,904],{"class":439,"line":440},[437,889,444],{"class":443},[437,891,448],{"class":447},[437,893,410],{"class":451},[437,895,455],{"class":447},[437,897,458],{"class":443},[437,899,461],{"class":447},[437,901,489],{"class":464},[437,903,468],{"class":447},[437,905,471],{"class":447},[437,907,908,910,912,914,916,919,921,923,925,927,929],{"class":439,"line":474},[437,909,444],{"class":443},[437,911,448],{"class":447},[437,913,452],{"class":451},[437,915,594],{"class":447},[437,917,918],{"class":451}," Routes",[437,920,455],{"class":447},[437,922,458],{"class":443},[437,924,461],{"class":447},[437,926,465],{"class":464},[437,928,468],{"class":447},[437,930,471],{"class":447},[437,932,933],{"class":439,"line":496},[437,934,500],{"emptyLinePlaceholder":499},[437,936,937,939,941,943,945,947],{"class":439,"line":503},[437,938,507],{"class":506},[437,940,510],{"class":451},[437,942,513],{"class":447},[437,944,517],{"class":516},[437,946,520],{"class":451},[437,948,471],{"class":447},[437,950,951],{"class":439,"line":525},[437,952,500],{"emptyLinePlaceholder":499},[437,954,955,957,960,962],{"class":439,"line":530},[437,956,507],{"class":506},[437,958,959],{"class":451}," routes ",[437,961,513],{"class":447},[437,963,631],{"class":447},[437,965,966],{"class":439,"line":552},[437,967,968],{"class":665},"  \u002F\u002F sets the header on the response of every route after it\n",[437,970,971,974,976,978,980,983],{"class":439,"line":561},[437,972,973],{"class":649},"  noCache",[437,975,613],{"class":447},[437,977,540],{"class":451},[437,979,543],{"class":447},[437,981,982],{"class":516},"middleware",[437,984,549],{"class":451},[437,986,987,990,994,997,1000,1002,1004,1007,1009,1011],{"class":439,"line":570},[437,988,989],{"class":447},"    (",[437,991,993],{"class":992},"sHdIc","ctx",[437,995,996],{"class":447},"):",[437,998,999],{"class":616}," HeadersSubset",[437,1001,584],{"class":447},[437,1003,468],{"class":447},[437,1005,1006],{"class":464},"Cache-Control",[437,1008,468],{"class":447},[437,1010,625],{"class":447},[437,1012,1013],{"class":506}," =>\n",[437,1015,1016,1019,1021,1023,1026,1028,1030,1032,1034,1036,1039,1041,1043],{"class":439,"line":607},[437,1017,1018],{"class":447},"      new",[437,1020,999],{"class":516},[437,1022,712],{"class":451},[437,1024,1025],{"class":447},"{",[437,1027,468],{"class":447},[437,1029,1006],{"class":649},[437,1031,468],{"class":447},[437,1033,613],{"class":447},[437,1035,461],{"class":447},[437,1037,1038],{"class":464},"no-store",[437,1040,468],{"class":447},[437,1042,455],{"class":447},[437,1044,1045],{"class":451},")\n",[437,1047,1048,1050],{"class":439,"line":634},[437,1049,610],{"class":451},[437,1051,567],{"class":447},[437,1053,1054],{"class":439,"line":669},[437,1055,1056],{"class":665},"  \u002F\u002F reads a request header and returns a response header\n",[437,1058,1059,1062,1064,1066,1068,1070],{"class":439,"line":696},[437,1060,1061],{"class":649},"  locale",[437,1063,613],{"class":447},[437,1065,540],{"class":451},[437,1067,543],{"class":447},[437,1069,546],{"class":516},[437,1071,549],{"class":451},[437,1073,1074],{"class":439,"line":701},[437,1075,1076],{"class":451},"    (\n",[437,1078,1079,1082],{"class":439,"line":753},[437,1080,1081],{"class":451},"      ctx",[437,1083,567],{"class":447},[437,1085,1086,1089,1091,1093,1095,1097,1100,1102,1104,1107,1109],{"class":439,"line":759},[437,1087,1088],{"class":447},"      {",[437,1090,576],{"class":451},[437,1092,455],{"class":447},[437,1094,581],{"class":451},[437,1096,584],{"class":447},[437,1098,1099],{"class":451},"never",[437,1101,594],{"class":447},[437,1103,461],{"class":447},[437,1105,1106],{"class":464},"Accept-Language",[437,1108,468],{"class":447},[437,1110,604],{"class":447},[437,1112,1113,1116,1118,1120,1122,1124,1127,1129,1131],{"class":439,"line":766},[437,1114,1115],{"class":451},"    )",[437,1117,613],{"class":447},[437,1119,999],{"class":616},[437,1121,584],{"class":447},[437,1123,468],{"class":447},[437,1125,1126],{"class":464},"Content-Language",[437,1128,468],{"class":447},[437,1130,625],{"class":447},[437,1132,1013],{"class":506},[437,1134,1135,1137,1139,1141],{"class":439,"line":771},[437,1136,1018],{"class":447},[437,1138,999],{"class":516},[437,1140,712],{"class":451},[437,1142,1143],{"class":447},"{\n",[437,1145,1147,1150,1152,1154,1156,1159,1161,1163,1165,1168,1170,1172,1175,1177],{"class":439,"line":1146},19,[437,1148,1149],{"class":447},"        '",[437,1151,1126],{"class":649},[437,1153,468],{"class":447},[437,1155,613],{"class":447},[437,1157,1158],{"class":451}," headers[",[437,1160,468],{"class":447},[437,1162,1106],{"class":464},[437,1164,468],{"class":447},[437,1166,1167],{"class":451},"] ",[437,1169,737],{"class":447},[437,1171,461],{"class":447},[437,1173,1174],{"class":464},"en",[437,1176,468],{"class":447},[437,1178,567],{"class":447},[437,1180,1182,1185],{"class":439,"line":1181},20,[437,1183,1184],{"class":447},"      }",[437,1186,1045],{"class":451},[437,1188,1190,1192],{"class":439,"line":1189},21,[437,1191,610],{"class":451},[437,1193,567],{"class":447},[437,1195,1197,1199,1202,1204],{"class":439,"line":1196},22,[437,1198,455],{"class":447},[437,1200,1201],{"class":443}," satisfies",[437,1203,918],{"class":616},[437,1205,471],{"class":447},[839,1207,1208,1209,1213],{},"An optional header you leave out is not sent. When two handlers set the same header, the last one in the ",[847,1210,1212],{"href":1211},"\u002Frpc\u002Fserver\u002Fmiddleware#execution-chain","execution chain"," wins.",[413,1215,1217],{"id":1216},"building-headers-in-a-generic-function","Building Headers in a Generic Function",[405,1219,1220,1221,1224],{},"Inside a generic function mion does not know the header names, so the build stops with marker-in-generic-function. Pass ",[408,1222,1223],{},"undefined"," as the second argument to skip the check.",[428,1226,1228],{"className":430,"code":1227,"language":432,"meta":433,"style":433},"import {HeadersSubset} from '@mionjs\u002Fcore';\n\nfunction withHeader\u003CName extends string>(\n  headers: Record\u003CName, string>\n): HeadersSubset\u003CName> {\n  return new HeadersSubset\u003CName>(headers, undefined);\n}\n\nexport {withHeader};\n",[408,1229,1230,1250,1254,1276,1296,1310,1339,1344,1348],{"__ignoreMap":433},[437,1231,1232,1234,1236,1238,1240,1242,1244,1246,1248],{"class":439,"line":440},[437,1233,444],{"class":443},[437,1235,448],{"class":447},[437,1237,410],{"class":451},[437,1239,455],{"class":447},[437,1241,458],{"class":443},[437,1243,461],{"class":447},[437,1245,489],{"class":464},[437,1247,468],{"class":447},[437,1249,471],{"class":447},[437,1251,1252],{"class":439,"line":474},[437,1253,500],{"emptyLinePlaceholder":499},[437,1255,1256,1259,1262,1264,1267,1270,1273],{"class":439,"line":496},[437,1257,1258],{"class":506},"function",[437,1260,1261],{"class":516}," withHeader",[437,1263,584],{"class":447},[437,1265,1266],{"class":616},"Name",[437,1268,1269],{"class":506}," extends",[437,1271,1272],{"class":616}," string",[437,1274,1275],{"class":447},">(\n",[437,1277,1278,1281,1283,1286,1288,1290,1292,1294],{"class":439,"line":503},[437,1279,1280],{"class":992},"  headers",[437,1282,613],{"class":447},[437,1284,1285],{"class":616}," Record",[437,1287,584],{"class":447},[437,1289,1266],{"class":616},[437,1291,594],{"class":447},[437,1293,1272],{"class":616},[437,1295,604],{"class":447},[437,1297,1298,1300,1302,1304,1306,1308],{"class":439,"line":525},[437,1299,996],{"class":447},[437,1301,999],{"class":616},[437,1303,584],{"class":447},[437,1305,1266],{"class":616},[437,1307,625],{"class":447},[437,1309,631],{"class":447},[437,1311,1312,1315,1318,1320,1322,1324,1326,1328,1330,1332,1335,1337],{"class":439,"line":530},[437,1313,1314],{"class":443},"  return",[437,1316,1317],{"class":447}," new",[437,1319,999],{"class":516},[437,1321,584],{"class":447},[437,1323,1266],{"class":616},[437,1325,625],{"class":447},[437,1327,712],{"class":649},[437,1329,576],{"class":451},[437,1331,594],{"class":447},[437,1333,1334],{"class":447}," undefined",[437,1336,748],{"class":649},[437,1338,471],{"class":447},[437,1340,1341],{"class":439,"line":552},[437,1342,1343],{"class":447},"}\n",[437,1345,1346],{"class":439,"line":561},[437,1347,500],{"emptyLinePlaceholder":499},[437,1349,1350,1352,1354,1357],{"class":439,"line":570},[437,1351,774],{"class":443},[437,1353,448],{"class":447},[437,1355,1356],{"class":451},"withHeader",[437,1358,782],{"class":447},[413,1360,1362],{"id":1361},"headers-on-every-response","Headers on Every Response",[405,1364,1365,1366,1369],{},"The ",[408,1367,1368],{},"responseHeaders"," router option adds headers to every response, on every platform. When two sources set the same header, the one higher in the table wins.",[428,1371,1373],{"className":430,"code":1372,"language":432,"meta":433,"style":433},"import {createMionRouter} from '@mionjs\u002Frouter';\n\n\u002F\u002F also sent on error responses\ncreateMionRouter({responseHeaders: {'x-api': 'store'}});\n",[408,1374,1375,1395,1399,1404],{"__ignoreMap":433},[437,1376,1377,1379,1381,1383,1385,1387,1389,1391,1393],{"class":439,"line":440},[437,1378,444],{"class":443},[437,1380,448],{"class":447},[437,1382,452],{"class":451},[437,1384,455],{"class":447},[437,1386,458],{"class":443},[437,1388,461],{"class":447},[437,1390,465],{"class":464},[437,1392,468],{"class":447},[437,1394,471],{"class":447},[437,1396,1397],{"class":439,"line":474},[437,1398,500],{"emptyLinePlaceholder":499},[437,1400,1401],{"class":439,"line":496},[437,1402,1403],{"class":665},"\u002F\u002F also sent on error responses\n",[437,1405,1406,1408,1410,1412,1414,1416,1418,1420,1423,1425,1427,1429,1432,1434,1437,1439],{"class":439,"line":503},[437,1407,452],{"class":516},[437,1409,712],{"class":451},[437,1411,1025],{"class":447},[437,1413,1368],{"class":649},[437,1415,613],{"class":447},[437,1417,448],{"class":447},[437,1419,468],{"class":447},[437,1421,1422],{"class":649},"x-api",[437,1424,468],{"class":447},[437,1426,613],{"class":447},[437,1428,461],{"class":447},[437,1430,1431],{"class":464},"store",[437,1433,468],{"class":447},[437,1435,1436],{"class":447},"}}",[437,1438,748],{"class":451},[437,1440,471],{"class":447},[784,1442,1443,1453],{},[787,1444,1445],{},[790,1446,1447,1450],{},[793,1448,1449],{},"Order",[793,1451,1452],{},"Source",[800,1454,1455,1469,1479],{},[790,1456,1457,1460],{},[805,1458,1459],{},"1",[805,1461,1462,1463,1465,1466],{},"A handler: a returned ",[408,1464,410],{}," or ",[408,1467,1468],{},"ctx.response.headers",[790,1470,1471,1474],{},[805,1472,1473],{},"2",[805,1475,1476,1477],{},"The router's ",[408,1478,1368],{},[790,1480,1481,1484],{},[805,1482,1483],{},"3",[805,1485,1486,1489],{},[408,1487,1488],{},"server: mionjs",", added by mion",[1491,1492,1493,1494,1497,1498,1500],"note",{},"Every response has ",[408,1495,1496],{},"content-type: application\u002Fjson; charset=utf-8",". Neither a handler nor ",[408,1499,1368],{}," can change it.",[413,1502,1504],{"id":1503},"build-version-header","Build Version Header",[405,1506,1507,1508,1511,1512,1515,1516,1519,1520,1524,1525,1528],{},"Only routes that run the ",[847,1509,1510],{"href":71},"mionFetchMetadata"," middleware send an ",[408,1513,1514],{},"x-build-version"," header: the version of the API the server was built from. A client built against another version gets an ",[408,1517,1518],{},"api-version-mismatch"," error, see ",[847,1521,1523],{"href":1522},"\u002Frpc\u002Fmiddlewares\u002Ffetch-metadata#api-version-check","API Version Check",". Set ",[408,1526,1527],{},"apiVersionCheck: false"," to stop sending the header and turn the client check off.",[405,1530,1531,1532,1534],{},"A version set in ",[408,1533,1368],{}," replaces it on every response.",[428,1536,1538],{"className":430,"code":1537,"language":432,"meta":433,"style":433},"const mion = createMionRouter({apiVersionCheck: false});\n",[408,1539,1540],{"__ignoreMap":433},[437,1541,1542,1544,1546,1548,1550,1552,1554,1557,1559,1563,1565,1567],{"class":439,"line":440},[437,1543,507],{"class":506},[437,1545,510],{"class":451},[437,1547,513],{"class":447},[437,1549,517],{"class":516},[437,1551,712],{"class":451},[437,1553,1025],{"class":447},[437,1555,1556],{"class":649},"apiVersionCheck",[437,1558,613],{"class":447},[437,1560,1562],{"class":1561},"sfNiH"," false",[437,1564,455],{"class":447},[437,1566,748],{"class":451},[437,1568,471],{"class":447},[413,1570,1572],{"id":1571},"error-type-header","Error Type Header",[405,1574,1575,1576,1580,1581,1584,1585,1588],{},"When an error ",[847,1577,1579],{"href":1578},"\u002Frpc\u002Fserver\u002Ferror-handling#stopping-the-request","ends the request",", the response gets an ",[408,1582,1583],{},"x-rpc-error"," header with the error's ",[408,1586,1587],{},"type",". A proxy or a log can read it without parsing the body.",[1491,1590,1591,1592,1594,1595,1598,1599,1602],{},"Only the first error that ends the request sets it. A ",[408,1593,1587],{}," with characters other than letters, digits and ",[408,1596,1597],{},"_ . : @ -",", or longer than 128 characters, makes the header read ",[408,1600,1601],{},"unknown-error",". The body still has the full type.",[413,1604,1606],{"id":1605},"sending-headers-from-the-client","Sending Headers from the Client",[405,1608,1609,1610,1612,1613,1616,1617,1620,1621,543],{},"On the client, send a headers middleware's ",[408,1611,410],{}," from its ",[408,1614,1615],{},"onRequest"," hook. For fixed headers on every request, use ",[408,1618,1619],{},"fetchOptions.headers"," in ",[408,1622,1623],{},"initClient",[1625,1626,1627,1905],"code-split",{},[428,1628,1631],{"className":430,"code":1629,"filename":1630,"language":432,"meta":433,"style":433},"import {HeadersSubset} from '@mionjs\u002Fcore';\nimport {initClient} from '@mionjs\u002Fclient';\nimport type {HeadersApi} from '..\u002Frouter\u002Fheaders-api.routes.ts';\n\nconst {routes, middlewares} = initClient\u003CHeadersApi>({\n  baseURL: 'http:\u002F\u002Flocalhost:3000',\n  fetchOptions: {headers: {'Accept-Language': 'en'}},\n});\n\n\u002F\u002F the HeadersSubset is sent as HTTP headers, not in the body\nmiddlewares.trace.onRequest((trace) =>\n  trace(new HeadersSubset({'X-Trace-Id': crypto.randomUUID()}))\n);\n\nawait routes.getDownloadUrl('report-42').call();\n","client.ts",[408,1632,1633,1653,1674,1699,1703,1734,1750,1782,1790,1794,1799,1823,1862,1868,1872],{"__ignoreMap":433},[437,1634,1635,1637,1639,1641,1643,1645,1647,1649,1651],{"class":439,"line":440},[437,1636,444],{"class":443},[437,1638,448],{"class":447},[437,1640,410],{"class":451},[437,1642,455],{"class":447},[437,1644,458],{"class":443},[437,1646,461],{"class":447},[437,1648,489],{"class":464},[437,1650,468],{"class":447},[437,1652,471],{"class":447},[437,1654,1655,1657,1659,1661,1663,1665,1667,1670,1672],{"class":439,"line":474},[437,1656,444],{"class":443},[437,1658,448],{"class":447},[437,1660,1623],{"class":451},[437,1662,455],{"class":447},[437,1664,458],{"class":443},[437,1666,461],{"class":447},[437,1668,1669],{"class":464},"@mionjs\u002Fclient",[437,1671,468],{"class":447},[437,1673,471],{"class":447},[437,1675,1676,1678,1681,1683,1686,1688,1690,1692,1695,1697],{"class":439,"line":496},[437,1677,444],{"class":443},[437,1679,1680],{"class":443}," type",[437,1682,448],{"class":447},[437,1684,1685],{"class":451},"HeadersApi",[437,1687,455],{"class":447},[437,1689,458],{"class":443},[437,1691,461],{"class":447},[437,1693,1694],{"class":464},"..\u002Frouter\u002Fheaders-api.routes.ts",[437,1696,468],{"class":447},[437,1698,471],{"class":447},[437,1700,1701],{"class":439,"line":503},[437,1702,500],{"emptyLinePlaceholder":499},[437,1704,1705,1707,1709,1712,1714,1717,1719,1721,1724,1726,1728,1730,1732],{"class":439,"line":525},[437,1706,507],{"class":506},[437,1708,448],{"class":447},[437,1710,1711],{"class":451},"routes",[437,1713,594],{"class":447},[437,1715,1716],{"class":451}," middlewares",[437,1718,455],{"class":447},[437,1720,643],{"class":447},[437,1722,1723],{"class":516}," initClient",[437,1725,584],{"class":447},[437,1727,1685],{"class":616},[437,1729,625],{"class":447},[437,1731,712],{"class":451},[437,1733,1143],{"class":447},[437,1735,1736,1739,1741,1743,1746,1748],{"class":439,"line":530},[437,1737,1738],{"class":649},"  baseURL",[437,1740,613],{"class":447},[437,1742,461],{"class":447},[437,1744,1745],{"class":464},"http:\u002F\u002Flocalhost:3000",[437,1747,468],{"class":447},[437,1749,567],{"class":447},[437,1751,1752,1755,1757,1759,1761,1763,1765,1767,1769,1771,1773,1775,1777,1779],{"class":439,"line":552},[437,1753,1754],{"class":649},"  fetchOptions",[437,1756,613],{"class":447},[437,1758,448],{"class":447},[437,1760,576],{"class":649},[437,1762,613],{"class":447},[437,1764,448],{"class":447},[437,1766,468],{"class":447},[437,1768,1106],{"class":649},[437,1770,468],{"class":447},[437,1772,613],{"class":447},[437,1774,461],{"class":447},[437,1776,1174],{"class":464},[437,1778,468],{"class":447},[437,1780,1781],{"class":447},"}},\n",[437,1783,1784,1786,1788],{"class":439,"line":561},[437,1785,455],{"class":447},[437,1787,748],{"class":451},[437,1789,471],{"class":447},[437,1791,1792],{"class":439,"line":570},[437,1793,500],{"emptyLinePlaceholder":499},[437,1795,1796],{"class":439,"line":607},[437,1797,1798],{"class":665},"\u002F\u002F the HeadersSubset is sent as HTTP headers, not in the body\n",[437,1800,1801,1804,1806,1809,1811,1813,1815,1817,1819,1821],{"class":439,"line":634},[437,1802,1803],{"class":451},"middlewares",[437,1805,543],{"class":447},[437,1807,1808],{"class":451},"trace",[437,1810,543],{"class":447},[437,1812,1615],{"class":516},[437,1814,712],{"class":451},[437,1816,712],{"class":447},[437,1818,1808],{"class":992},[437,1820,748],{"class":447},[437,1822,1013],{"class":506},[437,1824,1825,1828,1830,1833,1835,1837,1839,1841,1843,1845,1847,1850,1852,1855,1857,1859],{"class":439,"line":669},[437,1826,1827],{"class":516},"  trace",[437,1829,712],{"class":451},[437,1831,1832],{"class":447},"new",[437,1834,999],{"class":516},[437,1836,712],{"class":451},[437,1838,1025],{"class":447},[437,1840,468],{"class":447},[437,1842,589],{"class":649},[437,1844,468],{"class":447},[437,1846,613],{"class":447},[437,1848,1849],{"class":451}," crypto",[437,1851,543],{"class":447},[437,1853,1854],{"class":516},"randomUUID",[437,1856,520],{"class":451},[437,1858,455],{"class":447},[437,1860,1861],{"class":451},"))\n",[437,1863,1864,1866],{"class":439,"line":696},[437,1865,748],{"class":451},[437,1867,471],{"class":447},[437,1869,1870],{"class":439,"line":701},[437,1871,500],{"emptyLinePlaceholder":499},[437,1873,1874,1877,1880,1882,1885,1887,1889,1892,1894,1896,1898,1901,1903],{"class":439,"line":753},[437,1875,1876],{"class":443},"await",[437,1878,1879],{"class":451}," routes",[437,1881,543],{"class":447},[437,1883,1884],{"class":516},"getDownloadUrl",[437,1886,712],{"class":451},[437,1888,468],{"class":447},[437,1890,1891],{"class":464},"report-42",[437,1893,468],{"class":447},[437,1895,748],{"class":451},[437,1897,543],{"class":447},[437,1899,1900],{"class":516},"call",[437,1902,520],{"class":451},[437,1904,471],{"class":447},[428,1906,1909],{"className":430,"code":1907,"filename":1908,"language":432,"meta":433,"style":433},"import {HeadersSubset} from '@mionjs\u002Fcore';\nimport {createMionRouter, Routes} from '@mionjs\u002Frouter';\n\nconst mion = createMionRouter();\n\nconst routes = {\n  trace: mion.headersMiddleware(\n    (ctx, {headers}: HeadersSubset\u003C'X-Trace-Id'>): void => {\n      console.log('trace', headers['X-Trace-Id']);\n    }\n  ),\n  \u002F\u002F returns a header, not a body value\n  getDownloadUrl: mion.route(\n    (ctx, fileId: string): HeadersSubset\u003C'x-download-url'> =>\n      new HeadersSubset({'x-download-url': `\u002Ffiles\u002F${fileId}`})\n  ),\n} satisfies Routes;\n\nconst api = mion.initRoutes(routes);\n\nexport type HeadersApi = typeof api;\n","server.routes.ts",[408,1910,1911,1931,1955,1959,1973,1977,1987,2001,2036,2070,2075,2081,2086,2102,2134,2170,2176,2186,2190,2211,2215],{"__ignoreMap":433},[437,1912,1913,1915,1917,1919,1921,1923,1925,1927,1929],{"class":439,"line":440},[437,1914,444],{"class":443},[437,1916,448],{"class":447},[437,1918,410],{"class":451},[437,1920,455],{"class":447},[437,1922,458],{"class":443},[437,1924,461],{"class":447},[437,1926,489],{"class":464},[437,1928,468],{"class":447},[437,1930,471],{"class":447},[437,1932,1933,1935,1937,1939,1941,1943,1945,1947,1949,1951,1953],{"class":439,"line":474},[437,1934,444],{"class":443},[437,1936,448],{"class":447},[437,1938,452],{"class":451},[437,1940,594],{"class":447},[437,1942,918],{"class":451},[437,1944,455],{"class":447},[437,1946,458],{"class":443},[437,1948,461],{"class":447},[437,1950,465],{"class":464},[437,1952,468],{"class":447},[437,1954,471],{"class":447},[437,1956,1957],{"class":439,"line":496},[437,1958,500],{"emptyLinePlaceholder":499},[437,1960,1961,1963,1965,1967,1969,1971],{"class":439,"line":503},[437,1962,507],{"class":506},[437,1964,510],{"class":451},[437,1966,513],{"class":447},[437,1968,517],{"class":516},[437,1970,520],{"class":451},[437,1972,471],{"class":447},[437,1974,1975],{"class":439,"line":525},[437,1976,500],{"emptyLinePlaceholder":499},[437,1978,1979,1981,1983,1985],{"class":439,"line":530},[437,1980,507],{"class":506},[437,1982,959],{"class":451},[437,1984,513],{"class":447},[437,1986,631],{"class":447},[437,1988,1989,1991,1993,1995,1997,1999],{"class":439,"line":552},[437,1990,1827],{"class":649},[437,1992,613],{"class":447},[437,1994,540],{"class":451},[437,1996,543],{"class":447},[437,1998,546],{"class":516},[437,2000,549],{"class":451},[437,2002,2003,2005,2007,2009,2011,2013,2016,2018,2020,2022,2024,2026,2029,2032,2034],{"class":439,"line":561},[437,2004,989],{"class":447},[437,2006,993],{"class":992},[437,2008,594],{"class":447},[437,2010,448],{"class":447},[437,2012,576],{"class":992},[437,2014,2015],{"class":447},"}:",[437,2017,999],{"class":616},[437,2019,584],{"class":447},[437,2021,468],{"class":447},[437,2023,589],{"class":464},[437,2025,468],{"class":447},[437,2027,2028],{"class":447},">):",[437,2030,2031],{"class":616}," void",[437,2033,628],{"class":506},[437,2035,631],{"class":447},[437,2037,2038,2041,2043,2045,2047,2049,2051,2053,2055,2057,2059,2061,2063,2065,2068],{"class":439,"line":570},[437,2039,2040],{"class":451},"      console",[437,2042,543],{"class":447},[437,2044,709],{"class":516},[437,2046,712],{"class":649},[437,2048,468],{"class":447},[437,2050,1808],{"class":464},[437,2052,468],{"class":447},[437,2054,594],{"class":447},[437,2056,646],{"class":451},[437,2058,650],{"class":649},[437,2060,468],{"class":447},[437,2062,589],{"class":464},[437,2064,468],{"class":447},[437,2066,2067],{"class":649},"])",[437,2069,471],{"class":447},[437,2071,2072],{"class":439,"line":607},[437,2073,2074],{"class":447},"    }\n",[437,2076,2077,2079],{"class":439,"line":634},[437,2078,610],{"class":451},[437,2080,567],{"class":447},[437,2082,2083],{"class":439,"line":669},[437,2084,2085],{"class":665},"  \u002F\u002F returns a header, not a body value\n",[437,2087,2088,2091,2093,2095,2097,2100],{"class":439,"line":696},[437,2089,2090],{"class":649},"  getDownloadUrl",[437,2092,613],{"class":447},[437,2094,540],{"class":451},[437,2096,543],{"class":447},[437,2098,2099],{"class":516},"route",[437,2101,549],{"class":451},[437,2103,2104,2106,2108,2110,2113,2115,2117,2119,2121,2123,2125,2128,2130,2132],{"class":439,"line":701},[437,2105,989],{"class":447},[437,2107,993],{"class":992},[437,2109,594],{"class":447},[437,2111,2112],{"class":992}," fileId",[437,2114,613],{"class":447},[437,2116,1272],{"class":616},[437,2118,996],{"class":447},[437,2120,999],{"class":616},[437,2122,584],{"class":447},[437,2124,468],{"class":447},[437,2126,2127],{"class":464},"x-download-url",[437,2129,468],{"class":447},[437,2131,625],{"class":447},[437,2133,1013],{"class":506},[437,2135,2136,2138,2140,2142,2144,2146,2148,2150,2152,2155,2158,2160,2163,2166,2168],{"class":439,"line":753},[437,2137,1018],{"class":447},[437,2139,999],{"class":516},[437,2141,712],{"class":451},[437,2143,1025],{"class":447},[437,2145,468],{"class":447},[437,2147,2127],{"class":649},[437,2149,468],{"class":447},[437,2151,613],{"class":447},[437,2153,2154],{"class":447}," `",[437,2156,2157],{"class":464},"\u002Ffiles\u002F",[437,2159,721],{"class":447},[437,2161,2162],{"class":451},"fileId",[437,2164,2165],{"class":447},"}`",[437,2167,455],{"class":447},[437,2169,1045],{"class":451},[437,2171,2172,2174],{"class":439,"line":759},[437,2173,610],{"class":451},[437,2175,567],{"class":447},[437,2177,2178,2180,2182,2184],{"class":439,"line":766},[437,2179,455],{"class":447},[437,2181,1201],{"class":443},[437,2183,918],{"class":616},[437,2185,471],{"class":447},[437,2187,2188],{"class":439,"line":771},[437,2189,500],{"emptyLinePlaceholder":499},[437,2191,2192,2194,2197,2199,2201,2203,2206,2209],{"class":439,"line":1146},[437,2193,507],{"class":506},[437,2195,2196],{"class":451}," api ",[437,2198,513],{"class":447},[437,2200,540],{"class":451},[437,2202,543],{"class":447},[437,2204,2205],{"class":516},"initRoutes",[437,2207,2208],{"class":451},"(routes)",[437,2210,471],{"class":447},[437,2212,2213],{"class":439,"line":1181},[437,2214,500],{"emptyLinePlaceholder":499},[437,2216,2217,2219,2221,2224,2226,2229,2232],{"class":439,"line":1189},[437,2218,774],{"class":443},[437,2220,1680],{"class":506},[437,2222,2223],{"class":616}," HeadersApi",[437,2225,643],{"class":447},[437,2227,2228],{"class":447}," typeof",[437,2230,2231],{"class":451}," api",[437,2233,471],{"class":447},[839,2235,2236,2237,2239,2240,543],{},"When both set the same header, the ",[408,2238,410],{}," value wins. More on hooks in ",[847,2241,2243],{"href":2242},"\u002Frpc\u002Fclient\u002Fclient-middleware#middleware-hooks","Middleware Hooks",[413,2245,2247],{"id":2246},"reading-response-headers-on-the-client","Reading Response Headers on the Client",[405,2249,2250,2251,2253,2254,2257,2258,2260],{},"When a route returns a ",[408,2252,410],{},", ",[408,2255,2256],{},"call()"," returns a ",[408,2259,410],{}," built from the response headers. The client reads only the names the return type declares.",[1625,2262,2263,2434],{},[428,2264,2266],{"className":430,"code":2265,"filename":1630,"language":432,"meta":433,"style":433},"import {initClient} from '@mionjs\u002Fclient';\nimport type {HeadersApi} from '..\u002Frouter\u002Fheaders-api.routes.ts';\n\nconst {routes} = initClient\u003CHeadersApi>({baseURL: 'http:\u002F\u002Flocalhost:3000'});\n\nconst [download] = await routes.getDownloadUrl('report-42').call();\n\nif (download) console.log(download.headers['x-download-url']);\n",[408,2267,2268,2288,2310,2314,2355,2359,2400,2404],{"__ignoreMap":433},[437,2269,2270,2272,2274,2276,2278,2280,2282,2284,2286],{"class":439,"line":440},[437,2271,444],{"class":443},[437,2273,448],{"class":447},[437,2275,1623],{"class":451},[437,2277,455],{"class":447},[437,2279,458],{"class":443},[437,2281,461],{"class":447},[437,2283,1669],{"class":464},[437,2285,468],{"class":447},[437,2287,471],{"class":447},[437,2289,2290,2292,2294,2296,2298,2300,2302,2304,2306,2308],{"class":439,"line":474},[437,2291,444],{"class":443},[437,2293,1680],{"class":443},[437,2295,448],{"class":447},[437,2297,1685],{"class":451},[437,2299,455],{"class":447},[437,2301,458],{"class":443},[437,2303,461],{"class":447},[437,2305,1694],{"class":464},[437,2307,468],{"class":447},[437,2309,471],{"class":447},[437,2311,2312],{"class":439,"line":496},[437,2313,500],{"emptyLinePlaceholder":499},[437,2315,2316,2318,2320,2322,2324,2326,2328,2330,2332,2334,2336,2338,2341,2343,2345,2347,2349,2351,2353],{"class":439,"line":503},[437,2317,507],{"class":506},[437,2319,448],{"class":447},[437,2321,1711],{"class":451},[437,2323,455],{"class":447},[437,2325,643],{"class":447},[437,2327,1723],{"class":516},[437,2329,584],{"class":447},[437,2331,1685],{"class":616},[437,2333,625],{"class":447},[437,2335,712],{"class":451},[437,2337,1025],{"class":447},[437,2339,2340],{"class":649},"baseURL",[437,2342,613],{"class":447},[437,2344,461],{"class":447},[437,2346,1745],{"class":464},[437,2348,468],{"class":447},[437,2350,455],{"class":447},[437,2352,748],{"class":451},[437,2354,471],{"class":447},[437,2356,2357],{"class":439,"line":525},[437,2358,500],{"emptyLinePlaceholder":499},[437,2360,2361,2363,2366,2369,2371,2373,2376,2378,2380,2382,2384,2386,2388,2390,2392,2394,2396,2398],{"class":439,"line":530},[437,2362,507],{"class":506},[437,2364,2365],{"class":447}," [",[437,2367,2368],{"class":451},"download",[437,2370,659],{"class":447},[437,2372,643],{"class":447},[437,2374,2375],{"class":443}," await",[437,2377,1879],{"class":451},[437,2379,543],{"class":447},[437,2381,1884],{"class":516},[437,2383,712],{"class":451},[437,2385,468],{"class":447},[437,2387,1891],{"class":464},[437,2389,468],{"class":447},[437,2391,748],{"class":451},[437,2393,543],{"class":447},[437,2395,1900],{"class":516},[437,2397,520],{"class":451},[437,2399,471],{"class":447},[437,2401,2402],{"class":439,"line":552},[437,2403,500],{"emptyLinePlaceholder":499},[437,2405,2406,2409,2412,2414,2416,2419,2421,2424,2426,2428,2430,2432],{"class":439,"line":561},[437,2407,2408],{"class":443},"if",[437,2410,2411],{"class":451}," (download) console",[437,2413,543],{"class":447},[437,2415,709],{"class":516},[437,2417,2418],{"class":451},"(download",[437,2420,543],{"class":447},[437,2422,2423],{"class":451},"headers[",[437,2425,468],{"class":447},[437,2427,2127],{"class":464},[437,2429,468],{"class":447},[437,2431,2067],{"class":451},[437,2433,471],{"class":447},[428,2435,2436],{"className":430,"code":1907,"filename":1908,"language":432,"meta":433,"style":433},[408,2437,2438,2458,2482,2486,2500,2504,2514,2528,2560,2592,2596,2602,2606,2620,2650,2682,2688,2698,2702,2720,2724],{"__ignoreMap":433},[437,2439,2440,2442,2444,2446,2448,2450,2452,2454,2456],{"class":439,"line":440},[437,2441,444],{"class":443},[437,2443,448],{"class":447},[437,2445,410],{"class":451},[437,2447,455],{"class":447},[437,2449,458],{"class":443},[437,2451,461],{"class":447},[437,2453,489],{"class":464},[437,2455,468],{"class":447},[437,2457,471],{"class":447},[437,2459,2460,2462,2464,2466,2468,2470,2472,2474,2476,2478,2480],{"class":439,"line":474},[437,2461,444],{"class":443},[437,2463,448],{"class":447},[437,2465,452],{"class":451},[437,2467,594],{"class":447},[437,2469,918],{"class":451},[437,2471,455],{"class":447},[437,2473,458],{"class":443},[437,2475,461],{"class":447},[437,2477,465],{"class":464},[437,2479,468],{"class":447},[437,2481,471],{"class":447},[437,2483,2484],{"class":439,"line":496},[437,2485,500],{"emptyLinePlaceholder":499},[437,2487,2488,2490,2492,2494,2496,2498],{"class":439,"line":503},[437,2489,507],{"class":506},[437,2491,510],{"class":451},[437,2493,513],{"class":447},[437,2495,517],{"class":516},[437,2497,520],{"class":451},[437,2499,471],{"class":447},[437,2501,2502],{"class":439,"line":525},[437,2503,500],{"emptyLinePlaceholder":499},[437,2505,2506,2508,2510,2512],{"class":439,"line":530},[437,2507,507],{"class":506},[437,2509,959],{"class":451},[437,2511,513],{"class":447},[437,2513,631],{"class":447},[437,2515,2516,2518,2520,2522,2524,2526],{"class":439,"line":552},[437,2517,1827],{"class":649},[437,2519,613],{"class":447},[437,2521,540],{"class":451},[437,2523,543],{"class":447},[437,2525,546],{"class":516},[437,2527,549],{"class":451},[437,2529,2530,2532,2534,2536,2538,2540,2542,2544,2546,2548,2550,2552,2554,2556,2558],{"class":439,"line":561},[437,2531,989],{"class":447},[437,2533,993],{"class":992},[437,2535,594],{"class":447},[437,2537,448],{"class":447},[437,2539,576],{"class":992},[437,2541,2015],{"class":447},[437,2543,999],{"class":616},[437,2545,584],{"class":447},[437,2547,468],{"class":447},[437,2549,589],{"class":464},[437,2551,468],{"class":447},[437,2553,2028],{"class":447},[437,2555,2031],{"class":616},[437,2557,628],{"class":506},[437,2559,631],{"class":447},[437,2561,2562,2564,2566,2568,2570,2572,2574,2576,2578,2580,2582,2584,2586,2588,2590],{"class":439,"line":570},[437,2563,2040],{"class":451},[437,2565,543],{"class":447},[437,2567,709],{"class":516},[437,2569,712],{"class":649},[437,2571,468],{"class":447},[437,2573,1808],{"class":464},[437,2575,468],{"class":447},[437,2577,594],{"class":447},[437,2579,646],{"class":451},[437,2581,650],{"class":649},[437,2583,468],{"class":447},[437,2585,589],{"class":464},[437,2587,468],{"class":447},[437,2589,2067],{"class":649},[437,2591,471],{"class":447},[437,2593,2594],{"class":439,"line":607},[437,2595,2074],{"class":447},[437,2597,2598,2600],{"class":439,"line":634},[437,2599,610],{"class":451},[437,2601,567],{"class":447},[437,2603,2604],{"class":439,"line":669},[437,2605,2085],{"class":665},[437,2607,2608,2610,2612,2614,2616,2618],{"class":439,"line":696},[437,2609,2090],{"class":649},[437,2611,613],{"class":447},[437,2613,540],{"class":451},[437,2615,543],{"class":447},[437,2617,2099],{"class":516},[437,2619,549],{"class":451},[437,2621,2622,2624,2626,2628,2630,2632,2634,2636,2638,2640,2642,2644,2646,2648],{"class":439,"line":701},[437,2623,989],{"class":447},[437,2625,993],{"class":992},[437,2627,594],{"class":447},[437,2629,2112],{"class":992},[437,2631,613],{"class":447},[437,2633,1272],{"class":616},[437,2635,996],{"class":447},[437,2637,999],{"class":616},[437,2639,584],{"class":447},[437,2641,468],{"class":447},[437,2643,2127],{"class":464},[437,2645,468],{"class":447},[437,2647,625],{"class":447},[437,2649,1013],{"class":506},[437,2651,2652,2654,2656,2658,2660,2662,2664,2666,2668,2670,2672,2674,2676,2678,2680],{"class":439,"line":753},[437,2653,1018],{"class":447},[437,2655,999],{"class":516},[437,2657,712],{"class":451},[437,2659,1025],{"class":447},[437,2661,468],{"class":447},[437,2663,2127],{"class":649},[437,2665,468],{"class":447},[437,2667,613],{"class":447},[437,2669,2154],{"class":447},[437,2671,2157],{"class":464},[437,2673,721],{"class":447},[437,2675,2162],{"class":451},[437,2677,2165],{"class":447},[437,2679,455],{"class":447},[437,2681,1045],{"class":451},[437,2683,2684,2686],{"class":439,"line":759},[437,2685,610],{"class":451},[437,2687,567],{"class":447},[437,2689,2690,2692,2694,2696],{"class":439,"line":766},[437,2691,455],{"class":447},[437,2693,1201],{"class":443},[437,2695,918],{"class":616},[437,2697,471],{"class":447},[437,2699,2700],{"class":439,"line":771},[437,2701,500],{"emptyLinePlaceholder":499},[437,2703,2704,2706,2708,2710,2712,2714,2716,2718],{"class":439,"line":1146},[437,2705,507],{"class":506},[437,2707,2196],{"class":451},[437,2709,513],{"class":447},[437,2711,540],{"class":451},[437,2713,543],{"class":447},[437,2715,2205],{"class":516},[437,2717,2208],{"class":451},[437,2719,471],{"class":447},[437,2721,2722],{"class":439,"line":1181},[437,2723,500],{"emptyLinePlaceholder":499},[437,2725,2726,2728,2730,2732,2734,2736,2738],{"class":439,"line":1189},[437,2727,774],{"class":443},[437,2729,1680],{"class":506},[437,2731,2223],{"class":616},[437,2733,643],{"class":447},[437,2735,2228],{"class":447},[437,2737,2231],{"class":451},[437,2739,471],{"class":447},[839,2741,2742,2743,2745,2746,2749,2750,543],{},"A browser calling a server on another origin hides every custom response header, ",[408,2744,1514],{}," included. List the ones the client reads in ",[408,2747,2748],{},"Access-Control-Expose-Headers",", for example with ",[408,2751,1368],{},[2753,2754,2755],"style",{},"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 .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 pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .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 .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}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":433,"searchDepth":474,"depth":474,"links":2757},[2758,2759,2760,2761,2762,2763,2764,2765,2766],{"id":415,"depth":474,"text":416},{"id":851,"depth":474,"text":852},{"id":865,"depth":474,"text":866},{"id":1216,"depth":474,"text":1217},{"id":1361,"depth":474,"text":1362},{"id":1503,"depth":474,"text":1504},{"id":1571,"depth":474,"text":1572},{"id":1605,"depth":474,"text":1606},{"id":2246,"depth":474,"text":2247},"Read and send HTTP headers on the server and in the client.","md",null,{},{"title":44,"description":2767},"mKf0ZvUvAmzUBZIVoL3kfsIsTqRFSBEwq4sd17bJ3UA",1793324369288]