[{"data":1,"prerenderedAt":6421},["ShallowReactive",2],{"navigation_docs":3,"-rpc-client-batch":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":95,"body":401,"description":6415,"extension":6416,"links":6417,"meta":6418,"navigation":507,"path":96,"seo":6419,"stem":97,"__hash__":6420},"docs\u002F01.rpc\u002F04.client\u002F03.batch.md",{"type":402,"value":403},"minimark",[404,417,421,1194,1200,1205,1217,1235,2017,2021,2031,2060,2065,2068,2083,2087,2093,2321,2327,2331,2334,2342,2468,2475,2479,2490,2512,2516,2524,3654,3724,3744,3747,3751,3758,4764,4767,4769,4773,4781,5733,5736,5740,5744,5747,5806,5808,5812,5825,6002,6004,6008,6029,6298,6300,6304,6312,6320,6370,6383,6411],[405,406,407,408,412,413,416],"p",{},"A batch runs several routes in one HTTP request. You get one ",[409,410,411],"code",{},"[result, error, response]"," per route, in the order you listed them, the same as a single ",[409,414,415],{},"call()",".",[418,419,420],"note",{},"Batches need your client and server in one build, one program. The build reads your client code to find the batches the server may run.",[422,423,424,934],"code-split",{},[425,426,432],"pre",{"className":427,"code":428,"filename":429,"language":430,"meta":431,"style":431},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import {initClient, batch} from '@mionjs\u002Fclient';\nimport type {MyApi} from '.\u002Fhello-sum.routes.ts';\n\nconst {routes} = initClient\u003CMyApi>({baseURL: 'http:\u002F\u002Flocalhost:3000'});\n\nconst [[sum, sumError, response], [greeting, greetingError, sameResponse]] =\n  await batch([routes.utils.sum(5, 2), routes.sayHello('John')]).call();\n\nconsole.log(response === sameResponse); \u002F\u002F true, one response per batch\n\nif (sumError) console.log('Sum error:', sumError.publicMessage);\nelse if (sum !== undefined) console.log('Sum:', sum); \u002F\u002F 7\n\nif (greetingError) console.log('Hello error:', greetingError.publicMessage);\nelse if (greeting !== undefined) console.log(greeting); \u002F\u002F Hello John\n\n\u002F\u002F both slots are empty when the error happened outside the routes\nif (response['@thrownErrors'])\n  console.log('Batch failed:', response['@thrownErrors'][0].publicMessage);\n","client.ts","ts","",[409,433,434,476,502,509,566,571,617,682,687,714,719,752,796,801,832,860,865,871,889],{"__ignoreMap":431},[435,436,439,443,447,451,454,457,460,463,466,470,473],"span",{"class":437,"line":438},"line",1,[435,440,442],{"class":441},"s7zQu","import",[435,444,446],{"class":445},"sMK4o"," {",[435,448,450],{"class":449},"sTEyZ","initClient",[435,452,453],{"class":445},",",[435,455,456],{"class":449}," batch",[435,458,459],{"class":445},"}",[435,461,462],{"class":441}," from",[435,464,465],{"class":445}," '",[435,467,469],{"class":468},"sfazB","@mionjs\u002Fclient",[435,471,472],{"class":445},"'",[435,474,475],{"class":445},";\n",[435,477,479,481,484,486,489,491,493,495,498,500],{"class":437,"line":478},2,[435,480,442],{"class":441},[435,482,483],{"class":441}," type",[435,485,446],{"class":445},[435,487,488],{"class":449},"MyApi",[435,490,459],{"class":445},[435,492,462],{"class":441},[435,494,465],{"class":445},[435,496,497],{"class":468},".\u002Fhello-sum.routes.ts",[435,499,472],{"class":445},[435,501,475],{"class":445},[435,503,505],{"class":437,"line":504},3,[435,506,508],{"emptyLinePlaceholder":507},true,"\n",[435,510,512,516,518,521,523,526,530,533,536,539,542,545,549,552,554,557,559,561,564],{"class":437,"line":511},4,[435,513,515],{"class":514},"spNyl","const",[435,517,446],{"class":445},[435,519,520],{"class":449},"routes",[435,522,459],{"class":445},[435,524,525],{"class":445}," =",[435,527,529],{"class":528},"s2Zo4"," initClient",[435,531,532],{"class":445},"\u003C",[435,534,488],{"class":535},"sBMFI",[435,537,538],{"class":445},">",[435,540,541],{"class":449},"(",[435,543,544],{"class":445},"{",[435,546,548],{"class":547},"swJcz","baseURL",[435,550,551],{"class":445},":",[435,553,465],{"class":445},[435,555,556],{"class":468},"http:\u002F\u002Flocalhost:3000",[435,558,472],{"class":445},[435,560,459],{"class":445},[435,562,563],{"class":449},")",[435,565,475],{"class":445},[435,567,569],{"class":437,"line":568},5,[435,570,508],{"emptyLinePlaceholder":507},[435,572,574,576,579,582,584,587,589,592,595,598,601,603,606,608,611,614],{"class":437,"line":573},6,[435,575,515],{"class":514},[435,577,578],{"class":445}," [[",[435,580,581],{"class":449},"sum",[435,583,453],{"class":445},[435,585,586],{"class":449}," sumError",[435,588,453],{"class":445},[435,590,591],{"class":449}," response",[435,593,594],{"class":445},"],",[435,596,597],{"class":445}," [",[435,599,600],{"class":449},"greeting",[435,602,453],{"class":445},[435,604,605],{"class":449}," greetingError",[435,607,453],{"class":445},[435,609,610],{"class":449}," sameResponse",[435,612,613],{"class":445},"]]",[435,615,616],{"class":445}," =\n",[435,618,620,623,625,628,630,633,635,637,639,643,645,648,650,652,655,657,660,662,664,667,669,672,674,677,680],{"class":437,"line":619},7,[435,621,622],{"class":441},"  await",[435,624,456],{"class":528},[435,626,627],{"class":449},"([routes",[435,629,416],{"class":445},[435,631,632],{"class":449},"utils",[435,634,416],{"class":445},[435,636,581],{"class":528},[435,638,541],{"class":449},[435,640,642],{"class":641},"sbssI","5",[435,644,453],{"class":445},[435,646,647],{"class":641}," 2",[435,649,563],{"class":449},[435,651,453],{"class":445},[435,653,654],{"class":449}," routes",[435,656,416],{"class":445},[435,658,659],{"class":528},"sayHello",[435,661,541],{"class":449},[435,663,472],{"class":445},[435,665,666],{"class":468},"John",[435,668,472],{"class":445},[435,670,671],{"class":449},")])",[435,673,416],{"class":445},[435,675,676],{"class":528},"call",[435,678,679],{"class":449},"()",[435,681,475],{"class":445},[435,683,685],{"class":437,"line":684},8,[435,686,508],{"emptyLinePlaceholder":507},[435,688,690,693,695,698,701,704,707,710],{"class":437,"line":689},9,[435,691,692],{"class":449},"console",[435,694,416],{"class":445},[435,696,697],{"class":528},"log",[435,699,700],{"class":449},"(response ",[435,702,703],{"class":445},"===",[435,705,706],{"class":449}," sameResponse)",[435,708,709],{"class":445},";",[435,711,713],{"class":712},"sHwdD"," \u002F\u002F true, one response per batch\n",[435,715,717],{"class":437,"line":716},10,[435,718,508],{"emptyLinePlaceholder":507},[435,720,722,725,728,730,732,734,736,739,741,743,745,747,750],{"class":437,"line":721},11,[435,723,724],{"class":441},"if",[435,726,727],{"class":449}," (sumError) console",[435,729,416],{"class":445},[435,731,697],{"class":528},[435,733,541],{"class":449},[435,735,472],{"class":445},[435,737,738],{"class":468},"Sum error:",[435,740,472],{"class":445},[435,742,453],{"class":445},[435,744,586],{"class":449},[435,746,416],{"class":445},[435,748,749],{"class":449},"publicMessage)",[435,751,475],{"class":445},[435,753,755,758,761,764,767,770,773,775,777,779,781,784,786,788,791,793],{"class":437,"line":754},12,[435,756,757],{"class":441},"else",[435,759,760],{"class":441}," if",[435,762,763],{"class":449}," (sum ",[435,765,766],{"class":445},"!==",[435,768,769],{"class":445}," undefined",[435,771,772],{"class":449},") console",[435,774,416],{"class":445},[435,776,697],{"class":528},[435,778,541],{"class":449},[435,780,472],{"class":445},[435,782,783],{"class":468},"Sum:",[435,785,472],{"class":445},[435,787,453],{"class":445},[435,789,790],{"class":449}," sum)",[435,792,709],{"class":445},[435,794,795],{"class":712}," \u002F\u002F 7\n",[435,797,799],{"class":437,"line":798},13,[435,800,508],{"emptyLinePlaceholder":507},[435,802,804,806,809,811,813,815,817,820,822,824,826,828,830],{"class":437,"line":803},14,[435,805,724],{"class":441},[435,807,808],{"class":449}," (greetingError) console",[435,810,416],{"class":445},[435,812,697],{"class":528},[435,814,541],{"class":449},[435,816,472],{"class":445},[435,818,819],{"class":468},"Hello error:",[435,821,472],{"class":445},[435,823,453],{"class":445},[435,825,605],{"class":449},[435,827,416],{"class":445},[435,829,749],{"class":449},[435,831,475],{"class":445},[435,833,835,837,839,842,844,846,848,850,852,855,857],{"class":437,"line":834},15,[435,836,757],{"class":441},[435,838,760],{"class":441},[435,840,841],{"class":449}," (greeting ",[435,843,766],{"class":445},[435,845,769],{"class":445},[435,847,772],{"class":449},[435,849,416],{"class":445},[435,851,697],{"class":528},[435,853,854],{"class":449},"(greeting)",[435,856,709],{"class":445},[435,858,859],{"class":712}," \u002F\u002F Hello John\n",[435,861,863],{"class":437,"line":862},16,[435,864,508],{"emptyLinePlaceholder":507},[435,866,868],{"class":437,"line":867},17,[435,869,870],{"class":712},"\u002F\u002F both slots are empty when the error happened outside the routes\n",[435,872,874,876,879,881,884,886],{"class":437,"line":873},18,[435,875,724],{"class":441},[435,877,878],{"class":449}," (response[",[435,880,472],{"class":445},[435,882,883],{"class":468},"@thrownErrors",[435,885,472],{"class":445},[435,887,888],{"class":449},"])\n",[435,890,892,895,897,899,901,903,906,908,910,913,915,917,919,922,925,928,930,932],{"class":437,"line":891},19,[435,893,894],{"class":449},"  console",[435,896,416],{"class":445},[435,898,697],{"class":528},[435,900,541],{"class":449},[435,902,472],{"class":445},[435,904,905],{"class":468},"Batch failed:",[435,907,472],{"class":445},[435,909,453],{"class":445},[435,911,912],{"class":449}," response[",[435,914,472],{"class":445},[435,916,883],{"class":468},[435,918,472],{"class":445},[435,920,921],{"class":449},"][",[435,923,924],{"class":641},"0",[435,926,927],{"class":449},"]",[435,929,416],{"class":445},[435,931,749],{"class":449},[435,933,475],{"class":445},[425,935,938],{"className":427,"code":936,"filename":937,"language":430,"meta":431,"style":431},"import {createMionRouter, Routes} from '@mionjs\u002Frouter';\n\nconst mion = createMionRouter();\n\nconst routes = {\n  sayHello: mion.route((ctx, name: string): string => `Hello ${name}`),\n  utils: {\n    sum: mion.route((ctx, a: number, b: number): number => a + b),\n  },\n} satisfies Routes;\n\nconst myApi = mion.initRoutes(routes);\n\nexport type MyApi = typeof myApi;\n","server.routes.ts",[409,939,940,967,971,988,992,1004,1065,1074,1129,1134,1145,1149,1170,1174],{"__ignoreMap":431},[435,941,942,944,946,949,951,954,956,958,960,963,965],{"class":437,"line":438},[435,943,442],{"class":441},[435,945,446],{"class":445},[435,947,948],{"class":449},"createMionRouter",[435,950,453],{"class":445},[435,952,953],{"class":449}," Routes",[435,955,459],{"class":445},[435,957,462],{"class":441},[435,959,465],{"class":445},[435,961,962],{"class":468},"@mionjs\u002Frouter",[435,964,472],{"class":445},[435,966,475],{"class":445},[435,968,969],{"class":437,"line":478},[435,970,508],{"emptyLinePlaceholder":507},[435,972,973,975,978,981,984,986],{"class":437,"line":504},[435,974,515],{"class":514},[435,976,977],{"class":449}," mion ",[435,979,980],{"class":445},"=",[435,982,983],{"class":528}," createMionRouter",[435,985,679],{"class":449},[435,987,475],{"class":445},[435,989,990],{"class":437,"line":511},[435,991,508],{"emptyLinePlaceholder":507},[435,993,994,996,999,1001],{"class":437,"line":568},[435,995,515],{"class":514},[435,997,998],{"class":449}," routes ",[435,1000,980],{"class":445},[435,1002,1003],{"class":445}," {\n",[435,1005,1006,1009,1011,1014,1016,1019,1021,1023,1027,1029,1032,1034,1037,1040,1042,1045,1048,1051,1054,1057,1060,1062],{"class":437,"line":573},[435,1007,1008],{"class":547},"  sayHello",[435,1010,551],{"class":445},[435,1012,1013],{"class":449}," mion",[435,1015,416],{"class":445},[435,1017,1018],{"class":528},"route",[435,1020,541],{"class":449},[435,1022,541],{"class":445},[435,1024,1026],{"class":1025},"sHdIc","ctx",[435,1028,453],{"class":445},[435,1030,1031],{"class":1025}," name",[435,1033,551],{"class":445},[435,1035,1036],{"class":535}," string",[435,1038,1039],{"class":445},"):",[435,1041,1036],{"class":535},[435,1043,1044],{"class":514}," =>",[435,1046,1047],{"class":445}," `",[435,1049,1050],{"class":468},"Hello ",[435,1052,1053],{"class":445},"${",[435,1055,1056],{"class":449},"name",[435,1058,1059],{"class":445},"}`",[435,1061,563],{"class":449},[435,1063,1064],{"class":445},",\n",[435,1066,1067,1070,1072],{"class":437,"line":619},[435,1068,1069],{"class":547},"  utils",[435,1071,551],{"class":445},[435,1073,1003],{"class":445},[435,1075,1076,1079,1081,1083,1085,1087,1089,1091,1093,1095,1098,1100,1103,1105,1108,1110,1112,1114,1116,1118,1121,1124,1127],{"class":437,"line":684},[435,1077,1078],{"class":547},"    sum",[435,1080,551],{"class":445},[435,1082,1013],{"class":449},[435,1084,416],{"class":445},[435,1086,1018],{"class":528},[435,1088,541],{"class":449},[435,1090,541],{"class":445},[435,1092,1026],{"class":1025},[435,1094,453],{"class":445},[435,1096,1097],{"class":1025}," a",[435,1099,551],{"class":445},[435,1101,1102],{"class":535}," number",[435,1104,453],{"class":445},[435,1106,1107],{"class":1025}," b",[435,1109,551],{"class":445},[435,1111,1102],{"class":535},[435,1113,1039],{"class":445},[435,1115,1102],{"class":535},[435,1117,1044],{"class":514},[435,1119,1120],{"class":449}," a ",[435,1122,1123],{"class":445},"+",[435,1125,1126],{"class":449}," b)",[435,1128,1064],{"class":445},[435,1130,1131],{"class":437,"line":689},[435,1132,1133],{"class":445},"  },\n",[435,1135,1136,1138,1141,1143],{"class":437,"line":716},[435,1137,459],{"class":445},[435,1139,1140],{"class":441}," satisfies",[435,1142,953],{"class":535},[435,1144,475],{"class":445},[435,1146,1147],{"class":437,"line":721},[435,1148,508],{"emptyLinePlaceholder":507},[435,1150,1151,1153,1156,1158,1160,1162,1165,1168],{"class":437,"line":754},[435,1152,515],{"class":514},[435,1154,1155],{"class":449}," myApi ",[435,1157,980],{"class":445},[435,1159,1013],{"class":449},[435,1161,416],{"class":445},[435,1163,1164],{"class":528},"initRoutes",[435,1166,1167],{"class":449},"(routes)",[435,1169,475],{"class":445},[435,1171,1172],{"class":437,"line":798},[435,1173,508],{"emptyLinePlaceholder":507},[435,1175,1176,1179,1181,1184,1186,1189,1192],{"class":437,"line":803},[435,1177,1178],{"class":441},"export",[435,1180,483],{"class":514},[435,1182,1183],{"class":535}," MyApi",[435,1185,525],{"class":445},[435,1187,1188],{"class":445}," typeof",[435,1190,1191],{"class":449}," myApi",[435,1193,475],{"class":445},[418,1195,1196,1197,1199],{},"Each entry has the response only to match the shape of a single ",[409,1198,415],{},". Read it from any entry.",[1201,1202,1204],"h2",{"id":1203},"chaining-routes","Chaining Routes",[405,1206,1207,1208,1211,1212,1216],{},"Use ",[409,1209,1210],{},"inputFrom()"," to feed one route's output into another route's input. The mapping runs on the ",[1213,1214,1215],"strong",{},"server",", in the same HTTP request, so it adds no round trip.",[1218,1219,1220,1223,1226,1227,1230,1231,1234],"tip",{},[1213,1221,1222],{},"GraphQL alternative:",[1224,1225],"br",{},"\nInstead of a schema and resolvers, compose your existing routes from the client with ",[409,1228,1229],{},"batch"," and ",[409,1232,1233],{},"inputFrom",". You get related data in one request, fully typed, with no boilerplate.",[422,1236,1237,1566],{},[425,1238,1240],{"className":427,"code":1239,"filename":429,"language":430,"meta":431,"style":431},"import {initClient, batch, inputFrom} from '@mionjs\u002Fclient';\nimport type {MyApi} from '.\u002Fbatch-chain.routes.ts';\n\nconst {routes} = initClient\u003CMyApi>({baseURL: 'http:\u002F\u002Flocalhost:3000'});\n\nconst orderReq = routes.orders.getById('ORDER-123');\n\u002F\u002F feeds order.userId into the user route's input\nconst mapping = inputFrom(orderReq, (order) => order!.userId);\n\u002F\u002F a typed placeholder for the value the server maps in\nconst userReq = routes.users.getById(mapping.asArg());\n\nconst [[orderData], [userData]] = await batch([orderReq, userReq]).call();\nif (orderData && userData) {\n  console.log(`Order ${orderData.id} placed by ${userData.name}`);\n}\n",[409,1241,1242,1271,1294,1298,1338,1342,1376,1381,1418,1423,1456,1460,1501,1517,1561],{"__ignoreMap":431},[435,1243,1244,1246,1248,1250,1252,1254,1256,1259,1261,1263,1265,1267,1269],{"class":437,"line":438},[435,1245,442],{"class":441},[435,1247,446],{"class":445},[435,1249,450],{"class":449},[435,1251,453],{"class":445},[435,1253,456],{"class":449},[435,1255,453],{"class":445},[435,1257,1258],{"class":449}," inputFrom",[435,1260,459],{"class":445},[435,1262,462],{"class":441},[435,1264,465],{"class":445},[435,1266,469],{"class":468},[435,1268,472],{"class":445},[435,1270,475],{"class":445},[435,1272,1273,1275,1277,1279,1281,1283,1285,1287,1290,1292],{"class":437,"line":478},[435,1274,442],{"class":441},[435,1276,483],{"class":441},[435,1278,446],{"class":445},[435,1280,488],{"class":449},[435,1282,459],{"class":445},[435,1284,462],{"class":441},[435,1286,465],{"class":445},[435,1288,1289],{"class":468},".\u002Fbatch-chain.routes.ts",[435,1291,472],{"class":445},[435,1293,475],{"class":445},[435,1295,1296],{"class":437,"line":504},[435,1297,508],{"emptyLinePlaceholder":507},[435,1299,1300,1302,1304,1306,1308,1310,1312,1314,1316,1318,1320,1322,1324,1326,1328,1330,1332,1334,1336],{"class":437,"line":511},[435,1301,515],{"class":514},[435,1303,446],{"class":445},[435,1305,520],{"class":449},[435,1307,459],{"class":445},[435,1309,525],{"class":445},[435,1311,529],{"class":528},[435,1313,532],{"class":445},[435,1315,488],{"class":535},[435,1317,538],{"class":445},[435,1319,541],{"class":449},[435,1321,544],{"class":445},[435,1323,548],{"class":547},[435,1325,551],{"class":445},[435,1327,465],{"class":445},[435,1329,556],{"class":468},[435,1331,472],{"class":445},[435,1333,459],{"class":445},[435,1335,563],{"class":449},[435,1337,475],{"class":445},[435,1339,1340],{"class":437,"line":568},[435,1341,508],{"emptyLinePlaceholder":507},[435,1343,1344,1346,1349,1351,1353,1355,1358,1360,1363,1365,1367,1370,1372,1374],{"class":437,"line":573},[435,1345,515],{"class":514},[435,1347,1348],{"class":449}," orderReq ",[435,1350,980],{"class":445},[435,1352,654],{"class":449},[435,1354,416],{"class":445},[435,1356,1357],{"class":449},"orders",[435,1359,416],{"class":445},[435,1361,1362],{"class":528},"getById",[435,1364,541],{"class":449},[435,1366,472],{"class":445},[435,1368,1369],{"class":468},"ORDER-123",[435,1371,472],{"class":445},[435,1373,563],{"class":449},[435,1375,475],{"class":445},[435,1377,1378],{"class":437,"line":619},[435,1379,1380],{"class":712},"\u002F\u002F feeds order.userId into the user route's input\n",[435,1382,1383,1385,1388,1390,1392,1395,1397,1400,1403,1405,1407,1410,1413,1416],{"class":437,"line":684},[435,1384,515],{"class":514},[435,1386,1387],{"class":449}," mapping ",[435,1389,980],{"class":445},[435,1391,1258],{"class":528},[435,1393,1394],{"class":449},"(orderReq",[435,1396,453],{"class":445},[435,1398,1399],{"class":445}," (",[435,1401,1402],{"class":1025},"order",[435,1404,563],{"class":445},[435,1406,1044],{"class":514},[435,1408,1409],{"class":449}," order",[435,1411,1412],{"class":445},"!.",[435,1414,1415],{"class":449},"userId)",[435,1417,475],{"class":445},[435,1419,1420],{"class":437,"line":689},[435,1421,1422],{"class":712},"\u002F\u002F a typed placeholder for the value the server maps in\n",[435,1424,1425,1427,1430,1432,1434,1436,1439,1441,1443,1446,1448,1451,1454],{"class":437,"line":716},[435,1426,515],{"class":514},[435,1428,1429],{"class":449}," userReq ",[435,1431,980],{"class":445},[435,1433,654],{"class":449},[435,1435,416],{"class":445},[435,1437,1438],{"class":449},"users",[435,1440,416],{"class":445},[435,1442,1362],{"class":528},[435,1444,1445],{"class":449},"(mapping",[435,1447,416],{"class":445},[435,1449,1450],{"class":528},"asArg",[435,1452,1453],{"class":449},"())",[435,1455,475],{"class":445},[435,1457,1458],{"class":437,"line":721},[435,1459,508],{"emptyLinePlaceholder":507},[435,1461,1462,1464,1466,1469,1471,1473,1476,1478,1480,1483,1485,1488,1490,1493,1495,1497,1499],{"class":437,"line":754},[435,1463,515],{"class":514},[435,1465,578],{"class":445},[435,1467,1468],{"class":449},"orderData",[435,1470,594],{"class":445},[435,1472,597],{"class":445},[435,1474,1475],{"class":449},"userData",[435,1477,613],{"class":445},[435,1479,525],{"class":445},[435,1481,1482],{"class":441}," await",[435,1484,456],{"class":528},[435,1486,1487],{"class":449},"([orderReq",[435,1489,453],{"class":445},[435,1491,1492],{"class":449}," userReq])",[435,1494,416],{"class":445},[435,1496,676],{"class":528},[435,1498,679],{"class":449},[435,1500,475],{"class":445},[435,1502,1503,1505,1508,1511,1514],{"class":437,"line":798},[435,1504,724],{"class":441},[435,1506,1507],{"class":449}," (orderData ",[435,1509,1510],{"class":445},"&&",[435,1512,1513],{"class":449}," userData) ",[435,1515,1516],{"class":445},"{\n",[435,1518,1519,1521,1523,1525,1527,1530,1533,1535,1537,1539,1542,1544,1547,1549,1551,1553,1555,1557,1559],{"class":437,"line":803},[435,1520,894],{"class":449},[435,1522,416],{"class":445},[435,1524,697],{"class":528},[435,1526,541],{"class":547},[435,1528,1529],{"class":445},"`",[435,1531,1532],{"class":468},"Order ",[435,1534,1053],{"class":445},[435,1536,1468],{"class":449},[435,1538,416],{"class":445},[435,1540,1541],{"class":449},"id",[435,1543,459],{"class":445},[435,1545,1546],{"class":468}," placed by ",[435,1548,1053],{"class":445},[435,1550,1475],{"class":449},[435,1552,416],{"class":445},[435,1554,1056],{"class":449},[435,1556,1059],{"class":445},[435,1558,563],{"class":547},[435,1560,475],{"class":445},[435,1562,1563],{"class":437,"line":834},[435,1564,1565],{"class":445},"}\n",[425,1567,1569],{"className":427,"code":1568,"filename":937,"language":430,"meta":431,"style":431},"import {createMionRouter, Routes} from '@mionjs\u002Frouter';\n\nconst mion = createMionRouter();\n\ntype User = {id: string; name: string; email: string};\n\u002F\u002F each order belongs to a user\ntype Order = {id: string; userId: string; totalUSD: number};\n\n\u002F\u002F stand-in for your database\ndeclare const db: {\n  orders: {findById(id: string): Promise\u003COrder>};\n  users: {findById(id: string): Promise\u003CUser>};\n};\n\nconst routes = {\n  orders: {\n    getById: mion.route(\n      (ctx, id: string): Promise\u003COrder> => db.orders.findById(id)\n    ),\n  },\n  users: {\n    \u002F\u002F in the chain, id is the order's userId, picked by the client's inputFrom mapper on the server\n    getById: mion.route(\n      (ctx, id: string): Promise\u003CUser> => db.users.findById(id)\n    ),\n  },\n} satisfies Routes;\n\nconst myApi = mion.initRoutes(routes);\n\nexport type MyApi = typeof myApi;\n",[409,1570,1571,1595,1599,1613,1617,1655,1660,1697,1701,1706,1721,1754,1784,1788,1792,1802,1810,1826,1867,1874,1879,1888,1894,1909,1948,1955,1960,1971,1976,1995,2000],{"__ignoreMap":431},[435,1572,1573,1575,1577,1579,1581,1583,1585,1587,1589,1591,1593],{"class":437,"line":438},[435,1574,442],{"class":441},[435,1576,446],{"class":445},[435,1578,948],{"class":449},[435,1580,453],{"class":445},[435,1582,953],{"class":449},[435,1584,459],{"class":445},[435,1586,462],{"class":441},[435,1588,465],{"class":445},[435,1590,962],{"class":468},[435,1592,472],{"class":445},[435,1594,475],{"class":445},[435,1596,1597],{"class":437,"line":478},[435,1598,508],{"emptyLinePlaceholder":507},[435,1600,1601,1603,1605,1607,1609,1611],{"class":437,"line":504},[435,1602,515],{"class":514},[435,1604,977],{"class":449},[435,1606,980],{"class":445},[435,1608,983],{"class":528},[435,1610,679],{"class":449},[435,1612,475],{"class":445},[435,1614,1615],{"class":437,"line":511},[435,1616,508],{"emptyLinePlaceholder":507},[435,1618,1619,1622,1625,1627,1629,1631,1633,1635,1637,1639,1641,1643,1645,1648,1650,1652],{"class":437,"line":568},[435,1620,1621],{"class":514},"type",[435,1623,1624],{"class":535}," User",[435,1626,525],{"class":445},[435,1628,446],{"class":445},[435,1630,1541],{"class":547},[435,1632,551],{"class":445},[435,1634,1036],{"class":535},[435,1636,709],{"class":445},[435,1638,1031],{"class":547},[435,1640,551],{"class":445},[435,1642,1036],{"class":535},[435,1644,709],{"class":445},[435,1646,1647],{"class":547}," email",[435,1649,551],{"class":445},[435,1651,1036],{"class":535},[435,1653,1654],{"class":445},"};\n",[435,1656,1657],{"class":437,"line":573},[435,1658,1659],{"class":712},"\u002F\u002F each order belongs to a user\n",[435,1661,1662,1664,1667,1669,1671,1673,1675,1677,1679,1682,1684,1686,1688,1691,1693,1695],{"class":437,"line":619},[435,1663,1621],{"class":514},[435,1665,1666],{"class":535}," Order",[435,1668,525],{"class":445},[435,1670,446],{"class":445},[435,1672,1541],{"class":547},[435,1674,551],{"class":445},[435,1676,1036],{"class":535},[435,1678,709],{"class":445},[435,1680,1681],{"class":547}," userId",[435,1683,551],{"class":445},[435,1685,1036],{"class":535},[435,1687,709],{"class":445},[435,1689,1690],{"class":547}," totalUSD",[435,1692,551],{"class":445},[435,1694,1102],{"class":535},[435,1696,1654],{"class":445},[435,1698,1699],{"class":437,"line":684},[435,1700,508],{"emptyLinePlaceholder":507},[435,1702,1703],{"class":437,"line":689},[435,1704,1705],{"class":712},"\u002F\u002F stand-in for your database\n",[435,1707,1708,1711,1714,1717,1719],{"class":437,"line":716},[435,1709,1710],{"class":514},"declare",[435,1712,1713],{"class":514}," const",[435,1715,1716],{"class":449}," db",[435,1718,551],{"class":445},[435,1720,1003],{"class":445},[435,1722,1723,1726,1728,1730,1733,1735,1737,1739,1741,1743,1746,1748,1751],{"class":437,"line":721},[435,1724,1725],{"class":547},"  orders",[435,1727,551],{"class":445},[435,1729,446],{"class":445},[435,1731,1732],{"class":547},"findById",[435,1734,541],{"class":445},[435,1736,1541],{"class":1025},[435,1738,551],{"class":445},[435,1740,1036],{"class":535},[435,1742,1039],{"class":445},[435,1744,1745],{"class":535}," Promise",[435,1747,532],{"class":445},[435,1749,1750],{"class":535},"Order",[435,1752,1753],{"class":445},">};\n",[435,1755,1756,1759,1761,1763,1765,1767,1769,1771,1773,1775,1777,1779,1782],{"class":437,"line":754},[435,1757,1758],{"class":547},"  users",[435,1760,551],{"class":445},[435,1762,446],{"class":445},[435,1764,1732],{"class":547},[435,1766,541],{"class":445},[435,1768,1541],{"class":1025},[435,1770,551],{"class":445},[435,1772,1036],{"class":535},[435,1774,1039],{"class":445},[435,1776,1745],{"class":535},[435,1778,532],{"class":445},[435,1780,1781],{"class":535},"User",[435,1783,1753],{"class":445},[435,1785,1786],{"class":437,"line":798},[435,1787,1654],{"class":445},[435,1789,1790],{"class":437,"line":803},[435,1791,508],{"emptyLinePlaceholder":507},[435,1793,1794,1796,1798,1800],{"class":437,"line":834},[435,1795,515],{"class":514},[435,1797,998],{"class":449},[435,1799,980],{"class":445},[435,1801,1003],{"class":445},[435,1803,1804,1806,1808],{"class":437,"line":862},[435,1805,1725],{"class":547},[435,1807,551],{"class":445},[435,1809,1003],{"class":445},[435,1811,1812,1815,1817,1819,1821,1823],{"class":437,"line":867},[435,1813,1814],{"class":547},"    getById",[435,1816,551],{"class":445},[435,1818,1013],{"class":449},[435,1820,416],{"class":445},[435,1822,1018],{"class":528},[435,1824,1825],{"class":449},"(\n",[435,1827,1828,1831,1833,1835,1838,1840,1842,1844,1846,1848,1850,1852,1854,1856,1858,1860,1862,1864],{"class":437,"line":873},[435,1829,1830],{"class":445},"      (",[435,1832,1026],{"class":1025},[435,1834,453],{"class":445},[435,1836,1837],{"class":1025}," id",[435,1839,551],{"class":445},[435,1841,1036],{"class":535},[435,1843,1039],{"class":445},[435,1845,1745],{"class":535},[435,1847,532],{"class":445},[435,1849,1750],{"class":535},[435,1851,538],{"class":445},[435,1853,1044],{"class":514},[435,1855,1716],{"class":449},[435,1857,416],{"class":445},[435,1859,1357],{"class":449},[435,1861,416],{"class":445},[435,1863,1732],{"class":528},[435,1865,1866],{"class":449},"(id)\n",[435,1868,1869,1872],{"class":437,"line":891},[435,1870,1871],{"class":449},"    )",[435,1873,1064],{"class":445},[435,1875,1877],{"class":437,"line":1876},20,[435,1878,1133],{"class":445},[435,1880,1882,1884,1886],{"class":437,"line":1881},21,[435,1883,1758],{"class":547},[435,1885,551],{"class":445},[435,1887,1003],{"class":445},[435,1889,1891],{"class":437,"line":1890},22,[435,1892,1893],{"class":712},"    \u002F\u002F in the chain, id is the order's userId, picked by the client's inputFrom mapper on the server\n",[435,1895,1897,1899,1901,1903,1905,1907],{"class":437,"line":1896},23,[435,1898,1814],{"class":547},[435,1900,551],{"class":445},[435,1902,1013],{"class":449},[435,1904,416],{"class":445},[435,1906,1018],{"class":528},[435,1908,1825],{"class":449},[435,1910,1912,1914,1916,1918,1920,1922,1924,1926,1928,1930,1932,1934,1936,1938,1940,1942,1944,1946],{"class":437,"line":1911},24,[435,1913,1830],{"class":445},[435,1915,1026],{"class":1025},[435,1917,453],{"class":445},[435,1919,1837],{"class":1025},[435,1921,551],{"class":445},[435,1923,1036],{"class":535},[435,1925,1039],{"class":445},[435,1927,1745],{"class":535},[435,1929,532],{"class":445},[435,1931,1781],{"class":535},[435,1933,538],{"class":445},[435,1935,1044],{"class":514},[435,1937,1716],{"class":449},[435,1939,416],{"class":445},[435,1941,1438],{"class":449},[435,1943,416],{"class":445},[435,1945,1732],{"class":528},[435,1947,1866],{"class":449},[435,1949,1951,1953],{"class":437,"line":1950},25,[435,1952,1871],{"class":449},[435,1954,1064],{"class":445},[435,1956,1958],{"class":437,"line":1957},26,[435,1959,1133],{"class":445},[435,1961,1963,1965,1967,1969],{"class":437,"line":1962},27,[435,1964,459],{"class":445},[435,1966,1140],{"class":441},[435,1968,953],{"class":535},[435,1970,475],{"class":445},[435,1972,1974],{"class":437,"line":1973},28,[435,1975,508],{"emptyLinePlaceholder":507},[435,1977,1979,1981,1983,1985,1987,1989,1991,1993],{"class":437,"line":1978},29,[435,1980,515],{"class":514},[435,1982,1155],{"class":449},[435,1984,980],{"class":445},[435,1986,1013],{"class":449},[435,1988,416],{"class":445},[435,1990,1164],{"class":528},[435,1992,1167],{"class":449},[435,1994,475],{"class":445},[435,1996,1998],{"class":437,"line":1997},30,[435,1999,508],{"emptyLinePlaceholder":507},[435,2001,2003,2005,2007,2009,2011,2013,2015],{"class":437,"line":2002},31,[435,2004,1178],{"class":441},[435,2006,483],{"class":514},[435,2008,1183],{"class":535},[435,2010,525],{"class":445},[435,2012,1188],{"class":445},[435,2014,1191],{"class":449},[435,2016,475],{"class":445},[1201,2018,2020],{"id":2019},"how-batched-requests-are-compiled","How Batched Requests Are Compiled",[405,2022,2023,2024,2027,2028,2030],{},"Batches are compiled at build time. The build reads your client code and finds every ",[409,2025,2026],{},"batch([...])"," call and every ",[409,2029,1233],{}," mapper in it:",[2032,2033,2034,2041,2047,2050,2057],"ol",{},[2035,2036,2037,2038,2040],"li",{},"Each ",[409,2039,2026],{}," call gets an id from its routes, in order, and its mappers. The client and the server get the same id. A different route list or mapper makes a new batch.",[2035,2042,2043,2044,2046],{},"Each inline ",[409,2045,1233],{}," mapper is copied into the server build.",[2035,2048,2049],{},"The server build compiles a table of batch ids, each with its routes and mappers.",[2035,2051,2052,2053,2056],{},"At runtime the client sends only the id, ",[409,2054,2055],{},"POST \u002Fmion-batch?id=\u003CbatchId>",", with the route inputs in the body.",[2035,2058,2059],{},"The server looks up the id, runs the routes and mappers, and answers in one round trip.",[2061,2062,2064],"h3",{"id":2063},"why-only-compiled-batches-run","Why Only Compiled Batches Run",[405,2066,2067],{},"The server runs only the batches its build compiled in.",[2069,2070,2071,2077],"ul",{},[2035,2072,2073,2076],{},[1213,2074,2075],{},"Safer."," A caller cannot make the server run a mix of routes you never wrote.",[2035,2078,2079,2082],{},[1213,2080,2081],{},"Faster."," The server works out each batch's run order once, not again for every new batch a client sends.",[2061,2084,2086],{"id":2085},"writing-a-batch-the-build-can-read","Writing a Batch the Build Can Read",[405,2088,2089,2090,2092],{},"Write each route call inline in the array, or in a ",[409,2091,515],{}," in the same file. Anything else fails the build, because a batch the build cannot read can never be sent.",[425,2094,2096],{"className":427,"code":2095,"language":430,"meta":431,"style":431},"\u002F\u002F ✅ Inline route calls\nbatch([routes.users.getById('U1'), routes.orders.list()]).call();\n\n\u002F\u002F ✅ Route calls bound to a const in the same file\nconst user = routes.users.getById('U1');\nconst orders = routes.orders.list();\nbatch([user, orders]).call();\n\n\u002F\u002F ❌ The build cannot read a spread or a parameter\nfunction run(extra: RouteSubRequest[]) {\n  return batch([routes.users.getById('U1'), ...extra]).call();\n}\n",[409,2097,2098,2103,2152,2156,2161,2192,2215,2235,2239,2244,2269,2317],{"__ignoreMap":431},[435,2099,2100],{"class":437,"line":438},[435,2101,2102],{"class":712},"\u002F\u002F ✅ Inline route calls\n",[435,2104,2105,2107,2109,2111,2113,2115,2117,2119,2121,2124,2126,2128,2130,2132,2134,2136,2138,2141,2144,2146,2148,2150],{"class":437,"line":478},[435,2106,1229],{"class":528},[435,2108,627],{"class":449},[435,2110,416],{"class":445},[435,2112,1438],{"class":449},[435,2114,416],{"class":445},[435,2116,1362],{"class":528},[435,2118,541],{"class":449},[435,2120,472],{"class":445},[435,2122,2123],{"class":468},"U1",[435,2125,472],{"class":445},[435,2127,563],{"class":449},[435,2129,453],{"class":445},[435,2131,654],{"class":449},[435,2133,416],{"class":445},[435,2135,1357],{"class":449},[435,2137,416],{"class":445},[435,2139,2140],{"class":528},"list",[435,2142,2143],{"class":449},"()])",[435,2145,416],{"class":445},[435,2147,676],{"class":528},[435,2149,679],{"class":449},[435,2151,475],{"class":445},[435,2153,2154],{"class":437,"line":504},[435,2155,508],{"emptyLinePlaceholder":507},[435,2157,2158],{"class":437,"line":511},[435,2159,2160],{"class":712},"\u002F\u002F ✅ Route calls bound to a const in the same file\n",[435,2162,2163,2165,2168,2170,2172,2174,2176,2178,2180,2182,2184,2186,2188,2190],{"class":437,"line":568},[435,2164,515],{"class":514},[435,2166,2167],{"class":449}," user ",[435,2169,980],{"class":445},[435,2171,654],{"class":449},[435,2173,416],{"class":445},[435,2175,1438],{"class":449},[435,2177,416],{"class":445},[435,2179,1362],{"class":528},[435,2181,541],{"class":449},[435,2183,472],{"class":445},[435,2185,2123],{"class":468},[435,2187,472],{"class":445},[435,2189,563],{"class":449},[435,2191,475],{"class":445},[435,2193,2194,2196,2199,2201,2203,2205,2207,2209,2211,2213],{"class":437,"line":573},[435,2195,515],{"class":514},[435,2197,2198],{"class":449}," orders ",[435,2200,980],{"class":445},[435,2202,654],{"class":449},[435,2204,416],{"class":445},[435,2206,1357],{"class":449},[435,2208,416],{"class":445},[435,2210,2140],{"class":528},[435,2212,679],{"class":449},[435,2214,475],{"class":445},[435,2216,2217,2219,2222,2224,2227,2229,2231,2233],{"class":437,"line":619},[435,2218,1229],{"class":528},[435,2220,2221],{"class":449},"([user",[435,2223,453],{"class":445},[435,2225,2226],{"class":449}," orders])",[435,2228,416],{"class":445},[435,2230,676],{"class":528},[435,2232,679],{"class":449},[435,2234,475],{"class":445},[435,2236,2237],{"class":437,"line":684},[435,2238,508],{"emptyLinePlaceholder":507},[435,2240,2241],{"class":437,"line":689},[435,2242,2243],{"class":712},"\u002F\u002F ❌ The build cannot read a spread or a parameter\n",[435,2245,2246,2249,2252,2254,2257,2259,2262,2265,2267],{"class":437,"line":716},[435,2247,2248],{"class":514},"function",[435,2250,2251],{"class":528}," run",[435,2253,541],{"class":445},[435,2255,2256],{"class":1025},"extra",[435,2258,551],{"class":445},[435,2260,2261],{"class":535}," RouteSubRequest",[435,2263,2264],{"class":449},"[]",[435,2266,563],{"class":445},[435,2268,1003],{"class":445},[435,2270,2271,2274,2276,2279,2281,2283,2285,2287,2289,2291,2293,2295,2297,2299,2301,2304,2306,2309,2311,2313,2315],{"class":437,"line":721},[435,2272,2273],{"class":441},"  return",[435,2275,456],{"class":528},[435,2277,2278],{"class":547},"([",[435,2280,520],{"class":449},[435,2282,416],{"class":445},[435,2284,1438],{"class":449},[435,2286,416],{"class":445},[435,2288,1362],{"class":528},[435,2290,541],{"class":547},[435,2292,472],{"class":445},[435,2294,2123],{"class":468},[435,2296,472],{"class":445},[435,2298,563],{"class":547},[435,2300,453],{"class":445},[435,2302,2303],{"class":445}," ...",[435,2305,2256],{"class":449},[435,2307,2308],{"class":547},"])",[435,2310,416],{"class":445},[435,2312,676],{"class":528},[435,2314,679],{"class":547},[435,2316,475],{"class":445},[435,2318,2319],{"class":437,"line":754},[435,2320,1565],{"class":445},[418,2322,2323,2324,2326],{},"List each route once. A route you map from with ",[409,2325,1233],{}," must be in the same batch, before the route it feeds.",[1201,2328,2330],{"id":2329},"writing-a-mapper","Writing a Mapper",[405,2332,2333],{},"Write the mapper inline, in the call. The build copies it into the server, so there is nothing to register or keep in sync.",[405,2335,2336,2337,2341],{},"It must follow the RunTypes ",[2338,2339,2340],"a",{"href":214},"pure function"," rules: no closures, no outside variables, no side effects. The server runs it without your client-side scope.",[425,2343,2345],{"className":427,"code":2344,"language":430,"meta":431,"style":431},"\u002F\u002F ✅ Pure: only uses its input\ninputFrom(order, (o) => o!.userId)\n\n\u002F\u002F ✅ Pure: inline computation is fine\ninputFrom(order, (o) => o!.totalUSD * 100)\n\n\u002F\u002F ❌ Not pure: references an outside variable\nconst multiplier = 2;\ninputFrom(order, (o) => o!.totalUSD * multiplier)\n",[409,2346,2347,2352,2378,2382,2387,2419,2423,2428,2441],{"__ignoreMap":431},[435,2348,2349],{"class":437,"line":438},[435,2350,2351],{"class":712},"\u002F\u002F ✅ Pure: only uses its input\n",[435,2353,2354,2356,2359,2361,2363,2366,2368,2370,2373,2375],{"class":437,"line":478},[435,2355,1233],{"class":528},[435,2357,2358],{"class":449},"(order",[435,2360,453],{"class":445},[435,2362,1399],{"class":445},[435,2364,2365],{"class":1025},"o",[435,2367,563],{"class":445},[435,2369,1044],{"class":514},[435,2371,2372],{"class":449}," o",[435,2374,1412],{"class":445},[435,2376,2377],{"class":449},"userId)\n",[435,2379,2380],{"class":437,"line":504},[435,2381,508],{"emptyLinePlaceholder":507},[435,2383,2384],{"class":437,"line":511},[435,2385,2386],{"class":712},"\u002F\u002F ✅ Pure: inline computation is fine\n",[435,2388,2389,2391,2393,2395,2397,2399,2401,2403,2405,2407,2410,2413,2416],{"class":437,"line":568},[435,2390,1233],{"class":528},[435,2392,2358],{"class":449},[435,2394,453],{"class":445},[435,2396,1399],{"class":445},[435,2398,2365],{"class":1025},[435,2400,563],{"class":445},[435,2402,1044],{"class":514},[435,2404,2372],{"class":449},[435,2406,1412],{"class":445},[435,2408,2409],{"class":449},"totalUSD ",[435,2411,2412],{"class":445},"*",[435,2414,2415],{"class":641}," 100",[435,2417,2418],{"class":449},")\n",[435,2420,2421],{"class":437,"line":573},[435,2422,508],{"emptyLinePlaceholder":507},[435,2424,2425],{"class":437,"line":619},[435,2426,2427],{"class":712},"\u002F\u002F ❌ Not pure: references an outside variable\n",[435,2429,2430,2432,2435,2437,2439],{"class":437,"line":684},[435,2431,515],{"class":514},[435,2433,2434],{"class":449}," multiplier ",[435,2436,980],{"class":445},[435,2438,647],{"class":641},[435,2440,475],{"class":445},[435,2442,2443,2445,2447,2449,2451,2453,2455,2457,2459,2461,2463,2465],{"class":437,"line":689},[435,2444,1233],{"class":528},[435,2446,2358],{"class":449},[435,2448,453],{"class":445},[435,2450,1399],{"class":445},[435,2452,2365],{"class":1025},[435,2454,563],{"class":445},[435,2456,1044],{"class":514},[435,2458,2372],{"class":449},[435,2460,1412],{"class":445},[435,2462,2409],{"class":449},[435,2464,2412],{"class":445},[435,2466,2467],{"class":449}," multiplier)\n",[418,2469,2470,2471,2474],{},"A mapper the server cannot copy and run fails the build, with an error naming the problem. The ",[2338,2472,2473],{"href":144},"linter"," shows the same error in your editor as you type.",[1201,2476,2478],{"id":2477},"unknown-or-missing-batch-ids","Unknown or Missing Batch Ids",[405,2480,2481,2482,2485,2486,2489],{},"An id the server does not know is refused with ",[409,2483,2484],{},"batch-unknown-id"," (404) before the body is read. Only middleware that declares ",[409,2487,2488],{},"alwaysRun"," runs for it.",[405,2491,2492,2493,2496,2497,2500,2501,2504,2505,2511],{},"Without the mion build plugin, ",[409,2494,2495],{},"batch()"," throws ",[409,2498,2499],{},"batch-missing-id"," and nothing is sent. Single route calls still work. When asked for every method, the ",[2338,2502,2503],{"href":71},"metadata middleware"," also lists the registered batch ids, so a hand-written client can call a batch by id. It lists neither when the API has more methods than the ",[2338,2506,2508],{"href":2507},"\u002Frpc\u002Fmiddlewares\u002Ffetch-metadata#method-list-limit",[409,2509,2510],{},"getAllRemoteMethodsMaxNumber"," router option (100 by default).",[1201,2513,2515],{"id":2514},"batch-vs-single-route","Batch vs Single Route",[405,2517,2518,1230,2520,2523],{},[409,2519,415],{},[409,2521,2522],{},"batch([...]).call()"," differ in the response shape:",[422,2525,2526,3007],{},[425,2527,2529],{"className":427,"code":2528,"filename":429,"language":430,"meta":431,"style":431},"import {initClient, batch} from '@mionjs\u002Fclient';\nimport type {MyApi} from '.\u002Fbatch-orders.routes.ts';\n\nconst {routes} = initClient\u003CMyApi>({baseURL: 'http:\u002F\u002Flocalhost:3000'});\n\n\u002F\u002F returns [result, error, response]\nconst [user, error] = await routes.users.getById('USER-123').call();\n\nif (error?.type === 'user-not-found')\n  console.log('User not found:', error.errorData?.requestedId);\nelse console.log('User:', user?.name);\n\n\u002F\u002F returns one [result, error, response] per route\nconst [[user2, userError], [order, orderError]] = await batch([\n  routes.users.getById('USER-123'),\n  routes.orders.getById('ORDER-1'),\n]).call();\n\nif (userError) console.log('User error:', userError.publicMessage);\nelse console.log('User:', user2?.name);\n\nif (orderError) console.log('Order error:', orderError.publicMessage);\nelse console.log('Order:', order?.id);\n",[409,2530,2531,2555,2578,2582,2622,2626,2631,2680,2684,2708,2741,2773,2777,2782,2818,2843,2868,2880,2884,2914,2943,2947,2977],{"__ignoreMap":431},[435,2532,2533,2535,2537,2539,2541,2543,2545,2547,2549,2551,2553],{"class":437,"line":438},[435,2534,442],{"class":441},[435,2536,446],{"class":445},[435,2538,450],{"class":449},[435,2540,453],{"class":445},[435,2542,456],{"class":449},[435,2544,459],{"class":445},[435,2546,462],{"class":441},[435,2548,465],{"class":445},[435,2550,469],{"class":468},[435,2552,472],{"class":445},[435,2554,475],{"class":445},[435,2556,2557,2559,2561,2563,2565,2567,2569,2571,2574,2576],{"class":437,"line":478},[435,2558,442],{"class":441},[435,2560,483],{"class":441},[435,2562,446],{"class":445},[435,2564,488],{"class":449},[435,2566,459],{"class":445},[435,2568,462],{"class":441},[435,2570,465],{"class":445},[435,2572,2573],{"class":468},".\u002Fbatch-orders.routes.ts",[435,2575,472],{"class":445},[435,2577,475],{"class":445},[435,2579,2580],{"class":437,"line":504},[435,2581,508],{"emptyLinePlaceholder":507},[435,2583,2584,2586,2588,2590,2592,2594,2596,2598,2600,2602,2604,2606,2608,2610,2612,2614,2616,2618,2620],{"class":437,"line":511},[435,2585,515],{"class":514},[435,2587,446],{"class":445},[435,2589,520],{"class":449},[435,2591,459],{"class":445},[435,2593,525],{"class":445},[435,2595,529],{"class":528},[435,2597,532],{"class":445},[435,2599,488],{"class":535},[435,2601,538],{"class":445},[435,2603,541],{"class":449},[435,2605,544],{"class":445},[435,2607,548],{"class":547},[435,2609,551],{"class":445},[435,2611,465],{"class":445},[435,2613,556],{"class":468},[435,2615,472],{"class":445},[435,2617,459],{"class":445},[435,2619,563],{"class":449},[435,2621,475],{"class":445},[435,2623,2624],{"class":437,"line":568},[435,2625,508],{"emptyLinePlaceholder":507},[435,2627,2628],{"class":437,"line":573},[435,2629,2630],{"class":712},"\u002F\u002F returns [result, error, response]\n",[435,2632,2633,2635,2637,2640,2642,2645,2647,2649,2651,2653,2655,2657,2659,2661,2663,2665,2668,2670,2672,2674,2676,2678],{"class":437,"line":619},[435,2634,515],{"class":514},[435,2636,597],{"class":445},[435,2638,2639],{"class":449},"user",[435,2641,453],{"class":445},[435,2643,2644],{"class":449}," error",[435,2646,927],{"class":445},[435,2648,525],{"class":445},[435,2650,1482],{"class":441},[435,2652,654],{"class":449},[435,2654,416],{"class":445},[435,2656,1438],{"class":449},[435,2658,416],{"class":445},[435,2660,1362],{"class":528},[435,2662,541],{"class":449},[435,2664,472],{"class":445},[435,2666,2667],{"class":468},"USER-123",[435,2669,472],{"class":445},[435,2671,563],{"class":449},[435,2673,416],{"class":445},[435,2675,676],{"class":528},[435,2677,679],{"class":449},[435,2679,475],{"class":445},[435,2681,2682],{"class":437,"line":684},[435,2683,508],{"emptyLinePlaceholder":507},[435,2685,2686,2688,2691,2694,2697,2699,2701,2704,2706],{"class":437,"line":689},[435,2687,724],{"class":441},[435,2689,2690],{"class":449}," (error",[435,2692,2693],{"class":445},"?.",[435,2695,2696],{"class":449},"type ",[435,2698,703],{"class":445},[435,2700,465],{"class":445},[435,2702,2703],{"class":468},"user-not-found",[435,2705,472],{"class":445},[435,2707,2418],{"class":449},[435,2709,2710,2712,2714,2716,2718,2720,2723,2725,2727,2729,2731,2734,2736,2739],{"class":437,"line":716},[435,2711,894],{"class":449},[435,2713,416],{"class":445},[435,2715,697],{"class":528},[435,2717,541],{"class":449},[435,2719,472],{"class":445},[435,2721,2722],{"class":468},"User not found:",[435,2724,472],{"class":445},[435,2726,453],{"class":445},[435,2728,2644],{"class":449},[435,2730,416],{"class":445},[435,2732,2733],{"class":449},"errorData",[435,2735,2693],{"class":445},[435,2737,2738],{"class":449},"requestedId)",[435,2740,475],{"class":445},[435,2742,2743,2745,2748,2750,2752,2754,2756,2759,2761,2763,2766,2768,2771],{"class":437,"line":721},[435,2744,757],{"class":441},[435,2746,2747],{"class":449}," console",[435,2749,416],{"class":445},[435,2751,697],{"class":528},[435,2753,541],{"class":449},[435,2755,472],{"class":445},[435,2757,2758],{"class":468},"User:",[435,2760,472],{"class":445},[435,2762,453],{"class":445},[435,2764,2765],{"class":449}," user",[435,2767,2693],{"class":445},[435,2769,2770],{"class":449},"name)",[435,2772,475],{"class":445},[435,2774,2775],{"class":437,"line":754},[435,2776,508],{"emptyLinePlaceholder":507},[435,2778,2779],{"class":437,"line":798},[435,2780,2781],{"class":712},"\u002F\u002F returns one [result, error, response] per route\n",[435,2783,2784,2786,2788,2791,2793,2796,2798,2800,2802,2804,2807,2809,2811,2813,2815],{"class":437,"line":803},[435,2785,515],{"class":514},[435,2787,578],{"class":445},[435,2789,2790],{"class":449},"user2",[435,2792,453],{"class":445},[435,2794,2795],{"class":449}," userError",[435,2797,594],{"class":445},[435,2799,597],{"class":445},[435,2801,1402],{"class":449},[435,2803,453],{"class":445},[435,2805,2806],{"class":449}," orderError",[435,2808,613],{"class":445},[435,2810,525],{"class":445},[435,2812,1482],{"class":441},[435,2814,456],{"class":528},[435,2816,2817],{"class":449},"([\n",[435,2819,2820,2823,2825,2827,2829,2831,2833,2835,2837,2839,2841],{"class":437,"line":834},[435,2821,2822],{"class":449},"  routes",[435,2824,416],{"class":445},[435,2826,1438],{"class":449},[435,2828,416],{"class":445},[435,2830,1362],{"class":528},[435,2832,541],{"class":449},[435,2834,472],{"class":445},[435,2836,2667],{"class":468},[435,2838,472],{"class":445},[435,2840,563],{"class":449},[435,2842,1064],{"class":445},[435,2844,2845,2847,2849,2851,2853,2855,2857,2859,2862,2864,2866],{"class":437,"line":862},[435,2846,2822],{"class":449},[435,2848,416],{"class":445},[435,2850,1357],{"class":449},[435,2852,416],{"class":445},[435,2854,1362],{"class":528},[435,2856,541],{"class":449},[435,2858,472],{"class":445},[435,2860,2861],{"class":468},"ORDER-1",[435,2863,472],{"class":445},[435,2865,563],{"class":449},[435,2867,1064],{"class":445},[435,2869,2870,2872,2874,2876,2878],{"class":437,"line":867},[435,2871,2308],{"class":449},[435,2873,416],{"class":445},[435,2875,676],{"class":528},[435,2877,679],{"class":449},[435,2879,475],{"class":445},[435,2881,2882],{"class":437,"line":873},[435,2883,508],{"emptyLinePlaceholder":507},[435,2885,2886,2888,2891,2893,2895,2897,2899,2902,2904,2906,2908,2910,2912],{"class":437,"line":891},[435,2887,724],{"class":441},[435,2889,2890],{"class":449}," (userError) console",[435,2892,416],{"class":445},[435,2894,697],{"class":528},[435,2896,541],{"class":449},[435,2898,472],{"class":445},[435,2900,2901],{"class":468},"User error:",[435,2903,472],{"class":445},[435,2905,453],{"class":445},[435,2907,2795],{"class":449},[435,2909,416],{"class":445},[435,2911,749],{"class":449},[435,2913,475],{"class":445},[435,2915,2916,2918,2920,2922,2924,2926,2928,2930,2932,2934,2937,2939,2941],{"class":437,"line":1876},[435,2917,757],{"class":441},[435,2919,2747],{"class":449},[435,2921,416],{"class":445},[435,2923,697],{"class":528},[435,2925,541],{"class":449},[435,2927,472],{"class":445},[435,2929,2758],{"class":468},[435,2931,472],{"class":445},[435,2933,453],{"class":445},[435,2935,2936],{"class":449}," user2",[435,2938,2693],{"class":445},[435,2940,2770],{"class":449},[435,2942,475],{"class":445},[435,2944,2945],{"class":437,"line":1881},[435,2946,508],{"emptyLinePlaceholder":507},[435,2948,2949,2951,2954,2956,2958,2960,2962,2965,2967,2969,2971,2973,2975],{"class":437,"line":1890},[435,2950,724],{"class":441},[435,2952,2953],{"class":449}," (orderError) console",[435,2955,416],{"class":445},[435,2957,697],{"class":528},[435,2959,541],{"class":449},[435,2961,472],{"class":445},[435,2963,2964],{"class":468},"Order error:",[435,2966,472],{"class":445},[435,2968,453],{"class":445},[435,2970,2806],{"class":449},[435,2972,416],{"class":445},[435,2974,749],{"class":449},[435,2976,475],{"class":445},[435,2978,2979,2981,2983,2985,2987,2989,2991,2994,2996,2998,3000,3002,3005],{"class":437,"line":1896},[435,2980,757],{"class":441},[435,2982,2747],{"class":449},[435,2984,416],{"class":445},[435,2986,697],{"class":528},[435,2988,541],{"class":449},[435,2990,472],{"class":445},[435,2992,2993],{"class":468},"Order:",[435,2995,472],{"class":445},[435,2997,453],{"class":445},[435,2999,1409],{"class":449},[435,3001,2693],{"class":445},[435,3003,3004],{"class":449},"id)",[435,3006,475],{"class":445},[425,3008,3010],{"className":427,"code":3009,"filename":937,"language":430,"meta":431,"style":431},"import {RpcError} from '@mionjs\u002Fcore';\nimport {createMionRouter, Routes} from '@mionjs\u002Frouter';\n\nconst mion = createMionRouter();\n\nexport type User = {id: string; name: string};\nexport type Order = {id: string; userId: string; totalUSD: number};\n\nconst routes = {\n  users: {\n    getById: mion.route(\n      (\n        ctx,\n        id: string\n      ): User | RpcError\u003C'user-not-found', {requestedId: string}> => {\n        if (id !== 'USER-123') {\n          return new RpcError({\n            publicMessage: 'User not found',\n            type: 'user-not-found',\n            errorData: {requestedId: id},\n          });\n        }\n        return {id, name: 'John'};\n      }\n    ),\n  },\n  orders: {\n    getById: mion.route(\n      (\n        ctx,\n        id: string\n      ): Order | RpcError\u003C'order-not-found', {requestedId: string}> => {\n        if (id === 'ORDER-404') {\n          return new RpcError({\n            publicMessage: 'Order not found',\n            type: 'order-not-found',\n            errorData: {requestedId: id},\n          });\n        }\n        return {id, userId: 'USER-123', totalUSD: 120};\n      }\n    ),\n  },\n} satisfies Routes;\n\nconst myApi = mion.initRoutes(routes);\n\nexport type MyApi = typeof myApi;\n",[409,3011,3012,3034,3058,3062,3076,3080,3108,3144,3148,3158,3166,3180,3185,3192,3197,3238,3261,3275,3291,3306,3324,3333,3338,3361,3366,3372,3376,3384,3398,3402,3408,3412,3450,3473,3486,3502,3517,3534,3543,3548,3580,3585,3592,3597,3608,3613,3632,3637],{"__ignoreMap":431},[435,3013,3014,3016,3018,3021,3023,3025,3027,3030,3032],{"class":437,"line":438},[435,3015,442],{"class":441},[435,3017,446],{"class":445},[435,3019,3020],{"class":449},"RpcError",[435,3022,459],{"class":445},[435,3024,462],{"class":441},[435,3026,465],{"class":445},[435,3028,3029],{"class":468},"@mionjs\u002Fcore",[435,3031,472],{"class":445},[435,3033,475],{"class":445},[435,3035,3036,3038,3040,3042,3044,3046,3048,3050,3052,3054,3056],{"class":437,"line":478},[435,3037,442],{"class":441},[435,3039,446],{"class":445},[435,3041,948],{"class":449},[435,3043,453],{"class":445},[435,3045,953],{"class":449},[435,3047,459],{"class":445},[435,3049,462],{"class":441},[435,3051,465],{"class":445},[435,3053,962],{"class":468},[435,3055,472],{"class":445},[435,3057,475],{"class":445},[435,3059,3060],{"class":437,"line":504},[435,3061,508],{"emptyLinePlaceholder":507},[435,3063,3064,3066,3068,3070,3072,3074],{"class":437,"line":511},[435,3065,515],{"class":514},[435,3067,977],{"class":449},[435,3069,980],{"class":445},[435,3071,983],{"class":528},[435,3073,679],{"class":449},[435,3075,475],{"class":445},[435,3077,3078],{"class":437,"line":568},[435,3079,508],{"emptyLinePlaceholder":507},[435,3081,3082,3084,3086,3088,3090,3092,3094,3096,3098,3100,3102,3104,3106],{"class":437,"line":573},[435,3083,1178],{"class":441},[435,3085,483],{"class":514},[435,3087,1624],{"class":535},[435,3089,525],{"class":445},[435,3091,446],{"class":445},[435,3093,1541],{"class":547},[435,3095,551],{"class":445},[435,3097,1036],{"class":535},[435,3099,709],{"class":445},[435,3101,1031],{"class":547},[435,3103,551],{"class":445},[435,3105,1036],{"class":535},[435,3107,1654],{"class":445},[435,3109,3110,3112,3114,3116,3118,3120,3122,3124,3126,3128,3130,3132,3134,3136,3138,3140,3142],{"class":437,"line":619},[435,3111,1178],{"class":441},[435,3113,483],{"class":514},[435,3115,1666],{"class":535},[435,3117,525],{"class":445},[435,3119,446],{"class":445},[435,3121,1541],{"class":547},[435,3123,551],{"class":445},[435,3125,1036],{"class":535},[435,3127,709],{"class":445},[435,3129,1681],{"class":547},[435,3131,551],{"class":445},[435,3133,1036],{"class":535},[435,3135,709],{"class":445},[435,3137,1690],{"class":547},[435,3139,551],{"class":445},[435,3141,1102],{"class":535},[435,3143,1654],{"class":445},[435,3145,3146],{"class":437,"line":684},[435,3147,508],{"emptyLinePlaceholder":507},[435,3149,3150,3152,3154,3156],{"class":437,"line":689},[435,3151,515],{"class":514},[435,3153,998],{"class":449},[435,3155,980],{"class":445},[435,3157,1003],{"class":445},[435,3159,3160,3162,3164],{"class":437,"line":716},[435,3161,1758],{"class":547},[435,3163,551],{"class":445},[435,3165,1003],{"class":445},[435,3167,3168,3170,3172,3174,3176,3178],{"class":437,"line":721},[435,3169,1814],{"class":547},[435,3171,551],{"class":445},[435,3173,1013],{"class":449},[435,3175,416],{"class":445},[435,3177,1018],{"class":528},[435,3179,1825],{"class":449},[435,3181,3182],{"class":437,"line":754},[435,3183,3184],{"class":449},"      (\n",[435,3186,3187,3190],{"class":437,"line":798},[435,3188,3189],{"class":449},"        ctx",[435,3191,1064],{"class":445},[435,3193,3194],{"class":437,"line":803},[435,3195,3196],{"class":449},"        id: string\n",[435,3198,3199,3202,3204,3206,3209,3212,3214,3216,3218,3220,3222,3224,3227,3229,3231,3234,3236],{"class":437,"line":834},[435,3200,3201],{"class":449},"      )",[435,3203,551],{"class":445},[435,3205,1624],{"class":535},[435,3207,3208],{"class":445}," |",[435,3210,3211],{"class":535}," RpcError",[435,3213,532],{"class":445},[435,3215,472],{"class":445},[435,3217,2703],{"class":468},[435,3219,472],{"class":445},[435,3221,453],{"class":445},[435,3223,446],{"class":445},[435,3225,3226],{"class":547},"requestedId",[435,3228,551],{"class":445},[435,3230,1036],{"class":535},[435,3232,3233],{"class":445},"}>",[435,3235,1044],{"class":514},[435,3237,1003],{"class":445},[435,3239,3240,3243,3245,3247,3250,3252,3254,3256,3259],{"class":437,"line":862},[435,3241,3242],{"class":441},"        if",[435,3244,1399],{"class":547},[435,3246,1541],{"class":449},[435,3248,3249],{"class":445}," !==",[435,3251,465],{"class":445},[435,3253,2667],{"class":468},[435,3255,472],{"class":445},[435,3257,3258],{"class":547},") ",[435,3260,1516],{"class":445},[435,3262,3263,3266,3269,3271,3273],{"class":437,"line":867},[435,3264,3265],{"class":441},"          return",[435,3267,3268],{"class":445}," new",[435,3270,3211],{"class":528},[435,3272,541],{"class":547},[435,3274,1516],{"class":445},[435,3276,3277,3280,3282,3284,3287,3289],{"class":437,"line":873},[435,3278,3279],{"class":547},"            publicMessage",[435,3281,551],{"class":445},[435,3283,465],{"class":445},[435,3285,3286],{"class":468},"User not found",[435,3288,472],{"class":445},[435,3290,1064],{"class":445},[435,3292,3293,3296,3298,3300,3302,3304],{"class":437,"line":891},[435,3294,3295],{"class":547},"            type",[435,3297,551],{"class":445},[435,3299,465],{"class":445},[435,3301,2703],{"class":468},[435,3303,472],{"class":445},[435,3305,1064],{"class":445},[435,3307,3308,3311,3313,3315,3317,3319,3321],{"class":437,"line":1876},[435,3309,3310],{"class":547},"            errorData",[435,3312,551],{"class":445},[435,3314,446],{"class":445},[435,3316,3226],{"class":547},[435,3318,551],{"class":445},[435,3320,1837],{"class":449},[435,3322,3323],{"class":445},"},\n",[435,3325,3326,3329,3331],{"class":437,"line":1881},[435,3327,3328],{"class":445},"          }",[435,3330,563],{"class":547},[435,3332,475],{"class":445},[435,3334,3335],{"class":437,"line":1890},[435,3336,3337],{"class":445},"        }\n",[435,3339,3340,3343,3345,3347,3349,3351,3353,3355,3357,3359],{"class":437,"line":1896},[435,3341,3342],{"class":441},"        return",[435,3344,446],{"class":445},[435,3346,1541],{"class":449},[435,3348,453],{"class":445},[435,3350,1031],{"class":547},[435,3352,551],{"class":445},[435,3354,465],{"class":445},[435,3356,666],{"class":468},[435,3358,472],{"class":445},[435,3360,1654],{"class":445},[435,3362,3363],{"class":437,"line":1911},[435,3364,3365],{"class":445},"      }\n",[435,3367,3368,3370],{"class":437,"line":1950},[435,3369,1871],{"class":449},[435,3371,1064],{"class":445},[435,3373,3374],{"class":437,"line":1957},[435,3375,1133],{"class":445},[435,3377,3378,3380,3382],{"class":437,"line":1962},[435,3379,1725],{"class":547},[435,3381,551],{"class":445},[435,3383,1003],{"class":445},[435,3385,3386,3388,3390,3392,3394,3396],{"class":437,"line":1973},[435,3387,1814],{"class":547},[435,3389,551],{"class":445},[435,3391,1013],{"class":449},[435,3393,416],{"class":445},[435,3395,1018],{"class":528},[435,3397,1825],{"class":449},[435,3399,3400],{"class":437,"line":1978},[435,3401,3184],{"class":449},[435,3403,3404,3406],{"class":437,"line":1997},[435,3405,3189],{"class":449},[435,3407,1064],{"class":445},[435,3409,3410],{"class":437,"line":2002},[435,3411,3196],{"class":449},[435,3413,3415,3417,3419,3421,3423,3425,3427,3429,3432,3434,3436,3438,3440,3442,3444,3446,3448],{"class":437,"line":3414},32,[435,3416,3201],{"class":449},[435,3418,551],{"class":445},[435,3420,1666],{"class":535},[435,3422,3208],{"class":445},[435,3424,3211],{"class":535},[435,3426,532],{"class":445},[435,3428,472],{"class":445},[435,3430,3431],{"class":468},"order-not-found",[435,3433,472],{"class":445},[435,3435,453],{"class":445},[435,3437,446],{"class":445},[435,3439,3226],{"class":547},[435,3441,551],{"class":445},[435,3443,1036],{"class":535},[435,3445,3233],{"class":445},[435,3447,1044],{"class":514},[435,3449,1003],{"class":445},[435,3451,3453,3455,3457,3459,3462,3464,3467,3469,3471],{"class":437,"line":3452},33,[435,3454,3242],{"class":441},[435,3456,1399],{"class":547},[435,3458,1541],{"class":449},[435,3460,3461],{"class":445}," ===",[435,3463,465],{"class":445},[435,3465,3466],{"class":468},"ORDER-404",[435,3468,472],{"class":445},[435,3470,3258],{"class":547},[435,3472,1516],{"class":445},[435,3474,3476,3478,3480,3482,3484],{"class":437,"line":3475},34,[435,3477,3265],{"class":441},[435,3479,3268],{"class":445},[435,3481,3211],{"class":528},[435,3483,541],{"class":547},[435,3485,1516],{"class":445},[435,3487,3489,3491,3493,3495,3498,3500],{"class":437,"line":3488},35,[435,3490,3279],{"class":547},[435,3492,551],{"class":445},[435,3494,465],{"class":445},[435,3496,3497],{"class":468},"Order not found",[435,3499,472],{"class":445},[435,3501,1064],{"class":445},[435,3503,3505,3507,3509,3511,3513,3515],{"class":437,"line":3504},36,[435,3506,3295],{"class":547},[435,3508,551],{"class":445},[435,3510,465],{"class":445},[435,3512,3431],{"class":468},[435,3514,472],{"class":445},[435,3516,1064],{"class":445},[435,3518,3520,3522,3524,3526,3528,3530,3532],{"class":437,"line":3519},37,[435,3521,3310],{"class":547},[435,3523,551],{"class":445},[435,3525,446],{"class":445},[435,3527,3226],{"class":547},[435,3529,551],{"class":445},[435,3531,1837],{"class":449},[435,3533,3323],{"class":445},[435,3535,3537,3539,3541],{"class":437,"line":3536},38,[435,3538,3328],{"class":445},[435,3540,563],{"class":547},[435,3542,475],{"class":445},[435,3544,3546],{"class":437,"line":3545},39,[435,3547,3337],{"class":445},[435,3549,3551,3553,3555,3557,3559,3561,3563,3565,3567,3569,3571,3573,3575,3578],{"class":437,"line":3550},40,[435,3552,3342],{"class":441},[435,3554,446],{"class":445},[435,3556,1541],{"class":449},[435,3558,453],{"class":445},[435,3560,1681],{"class":547},[435,3562,551],{"class":445},[435,3564,465],{"class":445},[435,3566,2667],{"class":468},[435,3568,472],{"class":445},[435,3570,453],{"class":445},[435,3572,1690],{"class":547},[435,3574,551],{"class":445},[435,3576,3577],{"class":641}," 120",[435,3579,1654],{"class":445},[435,3581,3583],{"class":437,"line":3582},41,[435,3584,3365],{"class":445},[435,3586,3588,3590],{"class":437,"line":3587},42,[435,3589,1871],{"class":449},[435,3591,1064],{"class":445},[435,3593,3595],{"class":437,"line":3594},43,[435,3596,1133],{"class":445},[435,3598,3600,3602,3604,3606],{"class":437,"line":3599},44,[435,3601,459],{"class":445},[435,3603,1140],{"class":441},[435,3605,953],{"class":535},[435,3607,475],{"class":445},[435,3609,3611],{"class":437,"line":3610},45,[435,3612,508],{"emptyLinePlaceholder":507},[435,3614,3616,3618,3620,3622,3624,3626,3628,3630],{"class":437,"line":3615},46,[435,3617,515],{"class":514},[435,3619,1155],{"class":449},[435,3621,980],{"class":445},[435,3623,1013],{"class":449},[435,3625,416],{"class":445},[435,3627,1164],{"class":528},[435,3629,1167],{"class":449},[435,3631,475],{"class":445},[435,3633,3635],{"class":437,"line":3634},47,[435,3636,508],{"emptyLinePlaceholder":507},[435,3638,3640,3642,3644,3646,3648,3650,3652],{"class":437,"line":3639},48,[435,3641,1178],{"class":441},[435,3643,483],{"class":514},[435,3645,1183],{"class":535},[435,3647,525],{"class":445},[435,3649,1188],{"class":445},[435,3651,1191],{"class":449},[435,3653,475],{"class":445},[3655,3656,3657,3677],"table",{},[3658,3659,3660],"thead",{},[3661,3662,3663,3667,3672],"tr",{},[3664,3665,3666],"th",{},"Aspect",[3664,3668,3669],{},[409,3670,3671],{},"route.call()",[3664,3673,3674],{},[409,3675,3676],{},"batch([routes...]).call()",[3678,3679,3680,3694,3711],"tbody",{},[3661,3681,3682,3688,3691],{},[3683,3684,3685],"td",{},[1213,3686,3687],{},"HTTP Requests",[3683,3689,3690],{},"One per route",[3683,3692,3693],{},"One for all routes",[3661,3695,3696,3701,3705],{},[3683,3697,3698],{},[1213,3699,3700],{},"Result",[3683,3702,3703],{},[409,3704,411],{},[3683,3706,3707,3708,3710],{},"One ",[409,3709,411],{}," per route, in order",[3661,3712,3713,3718,3721],{},[3683,3714,3715],{},[1213,3716,3717],{},"Response",[3683,3719,3720],{},"One per call",[3683,3722,3723],{},"One per batch, shared by every entry",[1218,3725,3726,3731],{},[405,3727,3728],{},[1213,3729,3730],{},"When to use a batch:",[2069,3732,3733,3736,3741],{},[2035,3734,3735],{},"Fetching data for a page that needs multiple API calls",[2035,3737,3738,3739],{},"Independent routes, or routes chained with ",[409,3740,1233],{},[2035,3742,3743],{},"Reducing network latency in high-latency environments",[3745,3746],"hr",{},[1201,3748,3750],{"id":3749},"middleware-in-a-batch","Middleware in a Batch",[405,3752,3753,3754,3757],{},"A middleware's ",[409,3755,3756],{},"onRequest"," hook also sends its data with a batch.",[422,3759,3760,4271],{},[425,3761,3763],{"className":427,"code":3762,"filename":429,"language":430,"meta":431,"style":431},"import {HeadersSubset, isRpcError} from '@mionjs\u002Fcore';\nimport {initClient, batch} from '@mionjs\u002Fclient';\nimport type {MyApi} from '.\u002Fhello-sum-auth.routes.ts';\n\nconst {routes, middlewares} = initClient\u003CMyApi>({\n  baseURL: 'http:\u002F\u002Flocalhost:3000',\n});\n\n\u002F\u002F runs once per batch, so the whole batch shares one trace id\nmiddlewares.trace.onRequest((trace) =>\n  trace(new HeadersSubset({'X-Trace-Id': crypto.randomUUID()}))\n);\n\nconst [[sum, sumError, response], [greeting, greetingError]] = await batch([\n  routes.utils.sum(5, 2),\n  routes.sayHello('John'),\n]).call();\n\n\u002F\u002F one response for the whole batch\nif (isRpcError(response.auth))\n  console.log('Auth failed:', response.auth.publicMessage);\nif (response.trace) console.log('Trace:', response.trace);\nif (response['@thrownErrors'])\n  console.log('Request failed:', response['@thrownErrors'][0].publicMessage);\n\nif (!sumError) console.log('Sum:', sum);\nif (!greetingError) console.log(greeting);\n",[409,3764,3765,3791,3815,3838,3842,3871,3886,3894,3898,3903,3928,3969,3975,3979,4015,4039,4059,4071,4075,4080,4097,4129,4165,4179,4218,4222,4252],{"__ignoreMap":431},[435,3766,3767,3769,3771,3774,3776,3779,3781,3783,3785,3787,3789],{"class":437,"line":438},[435,3768,442],{"class":441},[435,3770,446],{"class":445},[435,3772,3773],{"class":449},"HeadersSubset",[435,3775,453],{"class":445},[435,3777,3778],{"class":449}," isRpcError",[435,3780,459],{"class":445},[435,3782,462],{"class":441},[435,3784,465],{"class":445},[435,3786,3029],{"class":468},[435,3788,472],{"class":445},[435,3790,475],{"class":445},[435,3792,3793,3795,3797,3799,3801,3803,3805,3807,3809,3811,3813],{"class":437,"line":478},[435,3794,442],{"class":441},[435,3796,446],{"class":445},[435,3798,450],{"class":449},[435,3800,453],{"class":445},[435,3802,456],{"class":449},[435,3804,459],{"class":445},[435,3806,462],{"class":441},[435,3808,465],{"class":445},[435,3810,469],{"class":468},[435,3812,472],{"class":445},[435,3814,475],{"class":445},[435,3816,3817,3819,3821,3823,3825,3827,3829,3831,3834,3836],{"class":437,"line":504},[435,3818,442],{"class":441},[435,3820,483],{"class":441},[435,3822,446],{"class":445},[435,3824,488],{"class":449},[435,3826,459],{"class":445},[435,3828,462],{"class":441},[435,3830,465],{"class":445},[435,3832,3833],{"class":468},".\u002Fhello-sum-auth.routes.ts",[435,3835,472],{"class":445},[435,3837,475],{"class":445},[435,3839,3840],{"class":437,"line":511},[435,3841,508],{"emptyLinePlaceholder":507},[435,3843,3844,3846,3848,3850,3852,3855,3857,3859,3861,3863,3865,3867,3869],{"class":437,"line":568},[435,3845,515],{"class":514},[435,3847,446],{"class":445},[435,3849,520],{"class":449},[435,3851,453],{"class":445},[435,3853,3854],{"class":449}," middlewares",[435,3856,459],{"class":445},[435,3858,525],{"class":445},[435,3860,529],{"class":528},[435,3862,532],{"class":445},[435,3864,488],{"class":535},[435,3866,538],{"class":445},[435,3868,541],{"class":449},[435,3870,1516],{"class":445},[435,3872,3873,3876,3878,3880,3882,3884],{"class":437,"line":573},[435,3874,3875],{"class":547},"  baseURL",[435,3877,551],{"class":445},[435,3879,465],{"class":445},[435,3881,556],{"class":468},[435,3883,472],{"class":445},[435,3885,1064],{"class":445},[435,3887,3888,3890,3892],{"class":437,"line":619},[435,3889,459],{"class":445},[435,3891,563],{"class":449},[435,3893,475],{"class":445},[435,3895,3896],{"class":437,"line":684},[435,3897,508],{"emptyLinePlaceholder":507},[435,3899,3900],{"class":437,"line":689},[435,3901,3902],{"class":712},"\u002F\u002F runs once per batch, so the whole batch shares one trace id\n",[435,3904,3905,3908,3910,3913,3915,3917,3919,3921,3923,3925],{"class":437,"line":716},[435,3906,3907],{"class":449},"middlewares",[435,3909,416],{"class":445},[435,3911,3912],{"class":449},"trace",[435,3914,416],{"class":445},[435,3916,3756],{"class":528},[435,3918,541],{"class":449},[435,3920,541],{"class":445},[435,3922,3912],{"class":1025},[435,3924,563],{"class":445},[435,3926,3927],{"class":514}," =>\n",[435,3929,3930,3933,3935,3938,3941,3943,3945,3947,3950,3952,3954,3957,3959,3962,3964,3966],{"class":437,"line":721},[435,3931,3932],{"class":528},"  trace",[435,3934,541],{"class":449},[435,3936,3937],{"class":445},"new",[435,3939,3940],{"class":528}," HeadersSubset",[435,3942,541],{"class":449},[435,3944,544],{"class":445},[435,3946,472],{"class":445},[435,3948,3949],{"class":547},"X-Trace-Id",[435,3951,472],{"class":445},[435,3953,551],{"class":445},[435,3955,3956],{"class":449}," crypto",[435,3958,416],{"class":445},[435,3960,3961],{"class":528},"randomUUID",[435,3963,679],{"class":449},[435,3965,459],{"class":445},[435,3967,3968],{"class":449},"))\n",[435,3970,3971,3973],{"class":437,"line":754},[435,3972,563],{"class":449},[435,3974,475],{"class":445},[435,3976,3977],{"class":437,"line":798},[435,3978,508],{"emptyLinePlaceholder":507},[435,3980,3981,3983,3985,3987,3989,3991,3993,3995,3997,3999,4001,4003,4005,4007,4009,4011,4013],{"class":437,"line":803},[435,3982,515],{"class":514},[435,3984,578],{"class":445},[435,3986,581],{"class":449},[435,3988,453],{"class":445},[435,3990,586],{"class":449},[435,3992,453],{"class":445},[435,3994,591],{"class":449},[435,3996,594],{"class":445},[435,3998,597],{"class":445},[435,4000,600],{"class":449},[435,4002,453],{"class":445},[435,4004,605],{"class":449},[435,4006,613],{"class":445},[435,4008,525],{"class":445},[435,4010,1482],{"class":441},[435,4012,456],{"class":528},[435,4014,2817],{"class":449},[435,4016,4017,4019,4021,4023,4025,4027,4029,4031,4033,4035,4037],{"class":437,"line":834},[435,4018,2822],{"class":449},[435,4020,416],{"class":445},[435,4022,632],{"class":449},[435,4024,416],{"class":445},[435,4026,581],{"class":528},[435,4028,541],{"class":449},[435,4030,642],{"class":641},[435,4032,453],{"class":445},[435,4034,647],{"class":641},[435,4036,563],{"class":449},[435,4038,1064],{"class":445},[435,4040,4041,4043,4045,4047,4049,4051,4053,4055,4057],{"class":437,"line":862},[435,4042,2822],{"class":449},[435,4044,416],{"class":445},[435,4046,659],{"class":528},[435,4048,541],{"class":449},[435,4050,472],{"class":445},[435,4052,666],{"class":468},[435,4054,472],{"class":445},[435,4056,563],{"class":449},[435,4058,1064],{"class":445},[435,4060,4061,4063,4065,4067,4069],{"class":437,"line":867},[435,4062,2308],{"class":449},[435,4064,416],{"class":445},[435,4066,676],{"class":528},[435,4068,679],{"class":449},[435,4070,475],{"class":445},[435,4072,4073],{"class":437,"line":873},[435,4074,508],{"emptyLinePlaceholder":507},[435,4076,4077],{"class":437,"line":891},[435,4078,4079],{"class":712},"\u002F\u002F one response for the whole batch\n",[435,4081,4082,4084,4086,4089,4092,4094],{"class":437,"line":1876},[435,4083,724],{"class":441},[435,4085,1399],{"class":449},[435,4087,4088],{"class":528},"isRpcError",[435,4090,4091],{"class":449},"(response",[435,4093,416],{"class":445},[435,4095,4096],{"class":449},"auth))\n",[435,4098,4099,4101,4103,4105,4107,4109,4112,4114,4116,4118,4120,4123,4125,4127],{"class":437,"line":1881},[435,4100,894],{"class":449},[435,4102,416],{"class":445},[435,4104,697],{"class":528},[435,4106,541],{"class":449},[435,4108,472],{"class":445},[435,4110,4111],{"class":468},"Auth failed:",[435,4113,472],{"class":445},[435,4115,453],{"class":445},[435,4117,591],{"class":449},[435,4119,416],{"class":445},[435,4121,4122],{"class":449},"auth",[435,4124,416],{"class":445},[435,4126,749],{"class":449},[435,4128,475],{"class":445},[435,4130,4131,4133,4136,4138,4141,4143,4145,4147,4149,4152,4154,4156,4158,4160,4163],{"class":437,"line":1890},[435,4132,724],{"class":441},[435,4134,4135],{"class":449}," (response",[435,4137,416],{"class":445},[435,4139,4140],{"class":449},"trace) console",[435,4142,416],{"class":445},[435,4144,697],{"class":528},[435,4146,541],{"class":449},[435,4148,472],{"class":445},[435,4150,4151],{"class":468},"Trace:",[435,4153,472],{"class":445},[435,4155,453],{"class":445},[435,4157,591],{"class":449},[435,4159,416],{"class":445},[435,4161,4162],{"class":449},"trace)",[435,4164,475],{"class":445},[435,4166,4167,4169,4171,4173,4175,4177],{"class":437,"line":1896},[435,4168,724],{"class":441},[435,4170,878],{"class":449},[435,4172,472],{"class":445},[435,4174,883],{"class":468},[435,4176,472],{"class":445},[435,4178,888],{"class":449},[435,4180,4181,4183,4185,4187,4189,4191,4194,4196,4198,4200,4202,4204,4206,4208,4210,4212,4214,4216],{"class":437,"line":1911},[435,4182,894],{"class":449},[435,4184,416],{"class":445},[435,4186,697],{"class":528},[435,4188,541],{"class":449},[435,4190,472],{"class":445},[435,4192,4193],{"class":468},"Request failed:",[435,4195,472],{"class":445},[435,4197,453],{"class":445},[435,4199,912],{"class":449},[435,4201,472],{"class":445},[435,4203,883],{"class":468},[435,4205,472],{"class":445},[435,4207,921],{"class":449},[435,4209,924],{"class":641},[435,4211,927],{"class":449},[435,4213,416],{"class":445},[435,4215,749],{"class":449},[435,4217,475],{"class":445},[435,4219,4220],{"class":437,"line":1950},[435,4221,508],{"emptyLinePlaceholder":507},[435,4223,4224,4226,4228,4231,4234,4236,4238,4240,4242,4244,4246,4248,4250],{"class":437,"line":1957},[435,4225,724],{"class":441},[435,4227,1399],{"class":449},[435,4229,4230],{"class":445},"!",[435,4232,4233],{"class":449},"sumError) console",[435,4235,416],{"class":445},[435,4237,697],{"class":528},[435,4239,541],{"class":449},[435,4241,472],{"class":445},[435,4243,783],{"class":468},[435,4245,472],{"class":445},[435,4247,453],{"class":445},[435,4249,790],{"class":449},[435,4251,475],{"class":445},[435,4253,4254,4256,4258,4260,4263,4265,4267,4269],{"class":437,"line":1962},[435,4255,724],{"class":441},[435,4257,1399],{"class":449},[435,4259,4230],{"class":445},[435,4261,4262],{"class":449},"greetingError) console",[435,4264,416],{"class":445},[435,4266,697],{"class":528},[435,4268,854],{"class":449},[435,4270,475],{"class":445},[425,4272,4274],{"className":427,"code":4273,"filename":937,"language":430,"meta":431,"style":431},"import {HeadersSubset, FatalError} from '@mionjs\u002Fcore';\nimport {createMionRouter, Routes} from '@mionjs\u002Frouter';\nimport {getSession} from '.\u002Fsession.ts';\n\nconst mion = createMionRouter();\n\nconst routes = {\n  \u002F\u002F the client sends a trace id with every request, the server echoes it back\n  trace: mion.headersMiddleware(\n    (ctx, {headers}: HeadersSubset\u003C'X-Trace-Id'>): string =>\n      headers['X-Trace-Id']\n  ),\n  \u002F\u002F runs before every route; a returned FatalError ends the request and stays typed\n  auth: mion.middleware((ctx): void | FatalError\u003C'not-authorized'> => {\n    if (!getSession(ctx.request.headers.get('cookie')))\n      return new FatalError({\n        publicMessage: 'Not Authorized',\n        type: 'not-authorized',\n      });\n  }),\n  sayHello: mion.route((ctx, name: string): string => `Hello ${name}`),\n  utils: {\n    sum: mion.route((ctx, a: number, b: number): number => a + b),\n  },\n} satisfies Routes;\n\nconst myApi = mion.initRoutes(routes);\n\nexport type MyApi = typeof myApi;\n",[409,4275,4276,4301,4325,4347,4351,4365,4369,4379,4384,4399,4433,4447,4454,4459,4503,4544,4557,4573,4588,4597,4606,4652,4660,4708,4712,4722,4726,4744,4748],{"__ignoreMap":431},[435,4277,4278,4280,4282,4284,4286,4289,4291,4293,4295,4297,4299],{"class":437,"line":438},[435,4279,442],{"class":441},[435,4281,446],{"class":445},[435,4283,3773],{"class":449},[435,4285,453],{"class":445},[435,4287,4288],{"class":449}," FatalError",[435,4290,459],{"class":445},[435,4292,462],{"class":441},[435,4294,465],{"class":445},[435,4296,3029],{"class":468},[435,4298,472],{"class":445},[435,4300,475],{"class":445},[435,4302,4303,4305,4307,4309,4311,4313,4315,4317,4319,4321,4323],{"class":437,"line":478},[435,4304,442],{"class":441},[435,4306,446],{"class":445},[435,4308,948],{"class":449},[435,4310,453],{"class":445},[435,4312,953],{"class":449},[435,4314,459],{"class":445},[435,4316,462],{"class":441},[435,4318,465],{"class":445},[435,4320,962],{"class":468},[435,4322,472],{"class":445},[435,4324,475],{"class":445},[435,4326,4327,4329,4331,4334,4336,4338,4340,4343,4345],{"class":437,"line":504},[435,4328,442],{"class":441},[435,4330,446],{"class":445},[435,4332,4333],{"class":449},"getSession",[435,4335,459],{"class":445},[435,4337,462],{"class":441},[435,4339,465],{"class":445},[435,4341,4342],{"class":468},".\u002Fsession.ts",[435,4344,472],{"class":445},[435,4346,475],{"class":445},[435,4348,4349],{"class":437,"line":511},[435,4350,508],{"emptyLinePlaceholder":507},[435,4352,4353,4355,4357,4359,4361,4363],{"class":437,"line":568},[435,4354,515],{"class":514},[435,4356,977],{"class":449},[435,4358,980],{"class":445},[435,4360,983],{"class":528},[435,4362,679],{"class":449},[435,4364,475],{"class":445},[435,4366,4367],{"class":437,"line":573},[435,4368,508],{"emptyLinePlaceholder":507},[435,4370,4371,4373,4375,4377],{"class":437,"line":619},[435,4372,515],{"class":514},[435,4374,998],{"class":449},[435,4376,980],{"class":445},[435,4378,1003],{"class":445},[435,4380,4381],{"class":437,"line":684},[435,4382,4383],{"class":712},"  \u002F\u002F the client sends a trace id with every request, the server echoes it back\n",[435,4385,4386,4388,4390,4392,4394,4397],{"class":437,"line":689},[435,4387,3932],{"class":547},[435,4389,551],{"class":445},[435,4391,1013],{"class":449},[435,4393,416],{"class":445},[435,4395,4396],{"class":528},"headersMiddleware",[435,4398,1825],{"class":449},[435,4400,4401,4404,4406,4408,4410,4413,4416,4418,4420,4422,4424,4426,4429,4431],{"class":437,"line":716},[435,4402,4403],{"class":445},"    (",[435,4405,1026],{"class":1025},[435,4407,453],{"class":445},[435,4409,446],{"class":445},[435,4411,4412],{"class":1025},"headers",[435,4414,4415],{"class":445},"}:",[435,4417,3940],{"class":535},[435,4419,532],{"class":445},[435,4421,472],{"class":445},[435,4423,3949],{"class":468},[435,4425,472],{"class":445},[435,4427,4428],{"class":445},">):",[435,4430,1036],{"class":535},[435,4432,3927],{"class":514},[435,4434,4435,4438,4440,4442,4444],{"class":437,"line":721},[435,4436,4437],{"class":449},"      headers[",[435,4439,472],{"class":445},[435,4441,3949],{"class":468},[435,4443,472],{"class":445},[435,4445,4446],{"class":449},"]\n",[435,4448,4449,4452],{"class":437,"line":754},[435,4450,4451],{"class":449},"  )",[435,4453,1064],{"class":445},[435,4455,4456],{"class":437,"line":798},[435,4457,4458],{"class":712},"  \u002F\u002F runs before every route; a returned FatalError ends the request and stays typed\n",[435,4460,4461,4464,4466,4468,4470,4473,4475,4477,4479,4481,4484,4486,4488,4490,4492,4495,4497,4499,4501],{"class":437,"line":803},[435,4462,4463],{"class":547},"  auth",[435,4465,551],{"class":445},[435,4467,1013],{"class":449},[435,4469,416],{"class":445},[435,4471,4472],{"class":528},"middleware",[435,4474,541],{"class":449},[435,4476,541],{"class":445},[435,4478,1026],{"class":1025},[435,4480,1039],{"class":445},[435,4482,4483],{"class":535}," void",[435,4485,3208],{"class":445},[435,4487,4288],{"class":535},[435,4489,532],{"class":445},[435,4491,472],{"class":445},[435,4493,4494],{"class":468},"not-authorized",[435,4496,472],{"class":445},[435,4498,538],{"class":445},[435,4500,1044],{"class":514},[435,4502,1003],{"class":445},[435,4504,4505,4508,4510,4512,4514,4516,4518,4520,4523,4525,4527,4529,4532,4534,4536,4539,4541],{"class":437,"line":834},[435,4506,4507],{"class":441},"    if",[435,4509,1399],{"class":547},[435,4511,4230],{"class":445},[435,4513,4333],{"class":528},[435,4515,541],{"class":547},[435,4517,1026],{"class":449},[435,4519,416],{"class":445},[435,4521,4522],{"class":449},"request",[435,4524,416],{"class":445},[435,4526,4412],{"class":449},[435,4528,416],{"class":445},[435,4530,4531],{"class":528},"get",[435,4533,541],{"class":547},[435,4535,472],{"class":445},[435,4537,4538],{"class":468},"cookie",[435,4540,472],{"class":445},[435,4542,4543],{"class":547},")))\n",[435,4545,4546,4549,4551,4553,4555],{"class":437,"line":862},[435,4547,4548],{"class":441},"      return",[435,4550,3268],{"class":445},[435,4552,4288],{"class":528},[435,4554,541],{"class":547},[435,4556,1516],{"class":445},[435,4558,4559,4562,4564,4566,4569,4571],{"class":437,"line":867},[435,4560,4561],{"class":547},"        publicMessage",[435,4563,551],{"class":445},[435,4565,465],{"class":445},[435,4567,4568],{"class":468},"Not Authorized",[435,4570,472],{"class":445},[435,4572,1064],{"class":445},[435,4574,4575,4578,4580,4582,4584,4586],{"class":437,"line":873},[435,4576,4577],{"class":547},"        type",[435,4579,551],{"class":445},[435,4581,465],{"class":445},[435,4583,4494],{"class":468},[435,4585,472],{"class":445},[435,4587,1064],{"class":445},[435,4589,4590,4593,4595],{"class":437,"line":891},[435,4591,4592],{"class":445},"      }",[435,4594,563],{"class":547},[435,4596,475],{"class":445},[435,4598,4599,4602,4604],{"class":437,"line":1876},[435,4600,4601],{"class":445},"  }",[435,4603,563],{"class":449},[435,4605,1064],{"class":445},[435,4607,4608,4610,4612,4614,4616,4618,4620,4622,4624,4626,4628,4630,4632,4634,4636,4638,4640,4642,4644,4646,4648,4650],{"class":437,"line":1881},[435,4609,1008],{"class":547},[435,4611,551],{"class":445},[435,4613,1013],{"class":449},[435,4615,416],{"class":445},[435,4617,1018],{"class":528},[435,4619,541],{"class":449},[435,4621,541],{"class":445},[435,4623,1026],{"class":1025},[435,4625,453],{"class":445},[435,4627,1031],{"class":1025},[435,4629,551],{"class":445},[435,4631,1036],{"class":535},[435,4633,1039],{"class":445},[435,4635,1036],{"class":535},[435,4637,1044],{"class":514},[435,4639,1047],{"class":445},[435,4641,1050],{"class":468},[435,4643,1053],{"class":445},[435,4645,1056],{"class":449},[435,4647,1059],{"class":445},[435,4649,563],{"class":449},[435,4651,1064],{"class":445},[435,4653,4654,4656,4658],{"class":437,"line":1890},[435,4655,1069],{"class":547},[435,4657,551],{"class":445},[435,4659,1003],{"class":445},[435,4661,4662,4664,4666,4668,4670,4672,4674,4676,4678,4680,4682,4684,4686,4688,4690,4692,4694,4696,4698,4700,4702,4704,4706],{"class":437,"line":1896},[435,4663,1078],{"class":547},[435,4665,551],{"class":445},[435,4667,1013],{"class":449},[435,4669,416],{"class":445},[435,4671,1018],{"class":528},[435,4673,541],{"class":449},[435,4675,541],{"class":445},[435,4677,1026],{"class":1025},[435,4679,453],{"class":445},[435,4681,1097],{"class":1025},[435,4683,551],{"class":445},[435,4685,1102],{"class":535},[435,4687,453],{"class":445},[435,4689,1107],{"class":1025},[435,4691,551],{"class":445},[435,4693,1102],{"class":535},[435,4695,1039],{"class":445},[435,4697,1102],{"class":535},[435,4699,1044],{"class":514},[435,4701,1120],{"class":449},[435,4703,1123],{"class":445},[435,4705,1126],{"class":449},[435,4707,1064],{"class":445},[435,4709,4710],{"class":437,"line":1911},[435,4711,1133],{"class":445},[435,4713,4714,4716,4718,4720],{"class":437,"line":1950},[435,4715,459],{"class":445},[435,4717,1140],{"class":441},[435,4719,953],{"class":535},[435,4721,475],{"class":445},[435,4723,4724],{"class":437,"line":1957},[435,4725,508],{"emptyLinePlaceholder":507},[435,4727,4728,4730,4732,4734,4736,4738,4740,4742],{"class":437,"line":1962},[435,4729,515],{"class":514},[435,4731,1155],{"class":449},[435,4733,980],{"class":445},[435,4735,1013],{"class":449},[435,4737,416],{"class":445},[435,4739,1164],{"class":528},[435,4741,1167],{"class":449},[435,4743,475],{"class":445},[435,4745,4746],{"class":437,"line":1973},[435,4747,508],{"emptyLinePlaceholder":507},[435,4749,4750,4752,4754,4756,4758,4760,4762],{"class":437,"line":1978},[435,4751,1178],{"class":441},[435,4753,483],{"class":514},[435,4755,1183],{"class":535},[435,4757,525],{"class":445},[435,4759,1188],{"class":445},[435,4761,1191],{"class":449},[435,4763,475],{"class":445},[418,4765,4766],{},"Middleware runs once for the whole batch, not once per route.",[3745,4768],{},[1201,4770,4772],{"id":4771},"error-handling-in-a-batch","Error Handling in a Batch",[405,4774,4775,4776,4780],{},"Each entry follows the ",[2338,4777,4779],{"href":4778},"\u002Frpc\u002Fclient\u002Ferror-handling#the-result-pattern","call() rules",": a strongly typed result or error from its own route, and every other error in the shared response.",[422,4782,4783,5133],{},[425,4784,4786],{"className":427,"code":4785,"filename":429,"language":430,"meta":431,"style":431},"import {initClient, batch} from '@mionjs\u002Fclient';\nimport type {MyApi} from '.\u002Fbatch-orders.routes.ts';\n\nconst {routes} = initClient\u003CMyApi>({baseURL: 'http:\u002F\u002Flocalhost:3000'});\n\nconst [[user, , response], [, orderError]] = await batch([\n  routes.users.getById('USER-123'),\n  routes.orders.getById('ORDER-404'), \u002F\u002F returns order-not-found\n]).call();\n\nif (user) console.log('User:', user.name); \u002F\u002F John\nif (orderError?.type === 'order-not-found')\n  console.log('No order:', orderError.errorData?.requestedId);\n\n\u002F\u002F a timeout or a thrown error leaves every result and error undefined\nfor (const thrown of response['@thrownErrors'] ?? [])\n  console.log('Batch failed:', thrown.publicMessage);\n",[409,4787,4788,4812,4834,4838,4878,4882,4914,4938,4965,4977,4981,5013,5034,5065,5069,5074,5106],{"__ignoreMap":431},[435,4789,4790,4792,4794,4796,4798,4800,4802,4804,4806,4808,4810],{"class":437,"line":438},[435,4791,442],{"class":441},[435,4793,446],{"class":445},[435,4795,450],{"class":449},[435,4797,453],{"class":445},[435,4799,456],{"class":449},[435,4801,459],{"class":445},[435,4803,462],{"class":441},[435,4805,465],{"class":445},[435,4807,469],{"class":468},[435,4809,472],{"class":445},[435,4811,475],{"class":445},[435,4813,4814,4816,4818,4820,4822,4824,4826,4828,4830,4832],{"class":437,"line":478},[435,4815,442],{"class":441},[435,4817,483],{"class":441},[435,4819,446],{"class":445},[435,4821,488],{"class":449},[435,4823,459],{"class":445},[435,4825,462],{"class":441},[435,4827,465],{"class":445},[435,4829,2573],{"class":468},[435,4831,472],{"class":445},[435,4833,475],{"class":445},[435,4835,4836],{"class":437,"line":504},[435,4837,508],{"emptyLinePlaceholder":507},[435,4839,4840,4842,4844,4846,4848,4850,4852,4854,4856,4858,4860,4862,4864,4866,4868,4870,4872,4874,4876],{"class":437,"line":511},[435,4841,515],{"class":514},[435,4843,446],{"class":445},[435,4845,520],{"class":449},[435,4847,459],{"class":445},[435,4849,525],{"class":445},[435,4851,529],{"class":528},[435,4853,532],{"class":445},[435,4855,488],{"class":535},[435,4857,538],{"class":445},[435,4859,541],{"class":449},[435,4861,544],{"class":445},[435,4863,548],{"class":547},[435,4865,551],{"class":445},[435,4867,465],{"class":445},[435,4869,556],{"class":468},[435,4871,472],{"class":445},[435,4873,459],{"class":445},[435,4875,563],{"class":449},[435,4877,475],{"class":445},[435,4879,4880],{"class":437,"line":568},[435,4881,508],{"emptyLinePlaceholder":507},[435,4883,4884,4886,4888,4890,4892,4895,4897,4899,4902,4904,4906,4908,4910,4912],{"class":437,"line":573},[435,4885,515],{"class":514},[435,4887,578],{"class":445},[435,4889,2639],{"class":449},[435,4891,453],{"class":445},[435,4893,4894],{"class":445}," ,",[435,4896,591],{"class":449},[435,4898,594],{"class":445},[435,4900,4901],{"class":445}," [,",[435,4903,2806],{"class":449},[435,4905,613],{"class":445},[435,4907,525],{"class":445},[435,4909,1482],{"class":441},[435,4911,456],{"class":528},[435,4913,2817],{"class":449},[435,4915,4916,4918,4920,4922,4924,4926,4928,4930,4932,4934,4936],{"class":437,"line":619},[435,4917,2822],{"class":449},[435,4919,416],{"class":445},[435,4921,1438],{"class":449},[435,4923,416],{"class":445},[435,4925,1362],{"class":528},[435,4927,541],{"class":449},[435,4929,472],{"class":445},[435,4931,2667],{"class":468},[435,4933,472],{"class":445},[435,4935,563],{"class":449},[435,4937,1064],{"class":445},[435,4939,4940,4942,4944,4946,4948,4950,4952,4954,4956,4958,4960,4962],{"class":437,"line":684},[435,4941,2822],{"class":449},[435,4943,416],{"class":445},[435,4945,1357],{"class":449},[435,4947,416],{"class":445},[435,4949,1362],{"class":528},[435,4951,541],{"class":449},[435,4953,472],{"class":445},[435,4955,3466],{"class":468},[435,4957,472],{"class":445},[435,4959,563],{"class":449},[435,4961,453],{"class":445},[435,4963,4964],{"class":712}," \u002F\u002F returns order-not-found\n",[435,4966,4967,4969,4971,4973,4975],{"class":437,"line":689},[435,4968,2308],{"class":449},[435,4970,416],{"class":445},[435,4972,676],{"class":528},[435,4974,679],{"class":449},[435,4976,475],{"class":445},[435,4978,4979],{"class":437,"line":716},[435,4980,508],{"emptyLinePlaceholder":507},[435,4982,4983,4985,4988,4990,4992,4994,4996,4998,5000,5002,5004,5006,5008,5010],{"class":437,"line":721},[435,4984,724],{"class":441},[435,4986,4987],{"class":449}," (user) console",[435,4989,416],{"class":445},[435,4991,697],{"class":528},[435,4993,541],{"class":449},[435,4995,472],{"class":445},[435,4997,2758],{"class":468},[435,4999,472],{"class":445},[435,5001,453],{"class":445},[435,5003,2765],{"class":449},[435,5005,416],{"class":445},[435,5007,2770],{"class":449},[435,5009,709],{"class":445},[435,5011,5012],{"class":712}," \u002F\u002F John\n",[435,5014,5015,5017,5020,5022,5024,5026,5028,5030,5032],{"class":437,"line":754},[435,5016,724],{"class":441},[435,5018,5019],{"class":449}," (orderError",[435,5021,2693],{"class":445},[435,5023,2696],{"class":449},[435,5025,703],{"class":445},[435,5027,465],{"class":445},[435,5029,3431],{"class":468},[435,5031,472],{"class":445},[435,5033,2418],{"class":449},[435,5035,5036,5038,5040,5042,5044,5046,5049,5051,5053,5055,5057,5059,5061,5063],{"class":437,"line":798},[435,5037,894],{"class":449},[435,5039,416],{"class":445},[435,5041,697],{"class":528},[435,5043,541],{"class":449},[435,5045,472],{"class":445},[435,5047,5048],{"class":468},"No order:",[435,5050,472],{"class":445},[435,5052,453],{"class":445},[435,5054,2806],{"class":449},[435,5056,416],{"class":445},[435,5058,2733],{"class":449},[435,5060,2693],{"class":445},[435,5062,2738],{"class":449},[435,5064,475],{"class":445},[435,5066,5067],{"class":437,"line":803},[435,5068,508],{"emptyLinePlaceholder":507},[435,5070,5071],{"class":437,"line":834},[435,5072,5073],{"class":712},"\u002F\u002F a timeout or a thrown error leaves every result and error undefined\n",[435,5075,5076,5079,5081,5083,5086,5089,5091,5093,5095,5097,5100,5103],{"class":437,"line":862},[435,5077,5078],{"class":441},"for",[435,5080,1399],{"class":449},[435,5082,515],{"class":514},[435,5084,5085],{"class":449}," thrown ",[435,5087,5088],{"class":445},"of",[435,5090,912],{"class":449},[435,5092,472],{"class":445},[435,5094,883],{"class":468},[435,5096,472],{"class":445},[435,5098,5099],{"class":449},"] ",[435,5101,5102],{"class":445},"??",[435,5104,5105],{"class":449}," [])\n",[435,5107,5108,5110,5112,5114,5116,5118,5120,5122,5124,5127,5129,5131],{"class":437,"line":867},[435,5109,894],{"class":449},[435,5111,416],{"class":445},[435,5113,697],{"class":528},[435,5115,541],{"class":449},[435,5117,472],{"class":445},[435,5119,905],{"class":468},[435,5121,472],{"class":445},[435,5123,453],{"class":445},[435,5125,5126],{"class":449}," thrown",[435,5128,416],{"class":445},[435,5130,749],{"class":449},[435,5132,475],{"class":445},[425,5134,5135],{"className":427,"code":3009,"filename":937,"language":430,"meta":431,"style":431},[409,5136,5137,5157,5181,5185,5199,5203,5231,5267,5271,5281,5289,5303,5307,5313,5317,5353,5373,5385,5399,5413,5429,5437,5441,5463,5467,5473,5477,5485,5499,5503,5509,5513,5549,5569,5581,5595,5609,5625,5633,5637,5667,5671,5677,5681,5691,5695,5713,5717],{"__ignoreMap":431},[435,5138,5139,5141,5143,5145,5147,5149,5151,5153,5155],{"class":437,"line":438},[435,5140,442],{"class":441},[435,5142,446],{"class":445},[435,5144,3020],{"class":449},[435,5146,459],{"class":445},[435,5148,462],{"class":441},[435,5150,465],{"class":445},[435,5152,3029],{"class":468},[435,5154,472],{"class":445},[435,5156,475],{"class":445},[435,5158,5159,5161,5163,5165,5167,5169,5171,5173,5175,5177,5179],{"class":437,"line":478},[435,5160,442],{"class":441},[435,5162,446],{"class":445},[435,5164,948],{"class":449},[435,5166,453],{"class":445},[435,5168,953],{"class":449},[435,5170,459],{"class":445},[435,5172,462],{"class":441},[435,5174,465],{"class":445},[435,5176,962],{"class":468},[435,5178,472],{"class":445},[435,5180,475],{"class":445},[435,5182,5183],{"class":437,"line":504},[435,5184,508],{"emptyLinePlaceholder":507},[435,5186,5187,5189,5191,5193,5195,5197],{"class":437,"line":511},[435,5188,515],{"class":514},[435,5190,977],{"class":449},[435,5192,980],{"class":445},[435,5194,983],{"class":528},[435,5196,679],{"class":449},[435,5198,475],{"class":445},[435,5200,5201],{"class":437,"line":568},[435,5202,508],{"emptyLinePlaceholder":507},[435,5204,5205,5207,5209,5211,5213,5215,5217,5219,5221,5223,5225,5227,5229],{"class":437,"line":573},[435,5206,1178],{"class":441},[435,5208,483],{"class":514},[435,5210,1624],{"class":535},[435,5212,525],{"class":445},[435,5214,446],{"class":445},[435,5216,1541],{"class":547},[435,5218,551],{"class":445},[435,5220,1036],{"class":535},[435,5222,709],{"class":445},[435,5224,1031],{"class":547},[435,5226,551],{"class":445},[435,5228,1036],{"class":535},[435,5230,1654],{"class":445},[435,5232,5233,5235,5237,5239,5241,5243,5245,5247,5249,5251,5253,5255,5257,5259,5261,5263,5265],{"class":437,"line":619},[435,5234,1178],{"class":441},[435,5236,483],{"class":514},[435,5238,1666],{"class":535},[435,5240,525],{"class":445},[435,5242,446],{"class":445},[435,5244,1541],{"class":547},[435,5246,551],{"class":445},[435,5248,1036],{"class":535},[435,5250,709],{"class":445},[435,5252,1681],{"class":547},[435,5254,551],{"class":445},[435,5256,1036],{"class":535},[435,5258,709],{"class":445},[435,5260,1690],{"class":547},[435,5262,551],{"class":445},[435,5264,1102],{"class":535},[435,5266,1654],{"class":445},[435,5268,5269],{"class":437,"line":684},[435,5270,508],{"emptyLinePlaceholder":507},[435,5272,5273,5275,5277,5279],{"class":437,"line":689},[435,5274,515],{"class":514},[435,5276,998],{"class":449},[435,5278,980],{"class":445},[435,5280,1003],{"class":445},[435,5282,5283,5285,5287],{"class":437,"line":716},[435,5284,1758],{"class":547},[435,5286,551],{"class":445},[435,5288,1003],{"class":445},[435,5290,5291,5293,5295,5297,5299,5301],{"class":437,"line":721},[435,5292,1814],{"class":547},[435,5294,551],{"class":445},[435,5296,1013],{"class":449},[435,5298,416],{"class":445},[435,5300,1018],{"class":528},[435,5302,1825],{"class":449},[435,5304,5305],{"class":437,"line":754},[435,5306,3184],{"class":449},[435,5308,5309,5311],{"class":437,"line":798},[435,5310,3189],{"class":449},[435,5312,1064],{"class":445},[435,5314,5315],{"class":437,"line":803},[435,5316,3196],{"class":449},[435,5318,5319,5321,5323,5325,5327,5329,5331,5333,5335,5337,5339,5341,5343,5345,5347,5349,5351],{"class":437,"line":834},[435,5320,3201],{"class":449},[435,5322,551],{"class":445},[435,5324,1624],{"class":535},[435,5326,3208],{"class":445},[435,5328,3211],{"class":535},[435,5330,532],{"class":445},[435,5332,472],{"class":445},[435,5334,2703],{"class":468},[435,5336,472],{"class":445},[435,5338,453],{"class":445},[435,5340,446],{"class":445},[435,5342,3226],{"class":547},[435,5344,551],{"class":445},[435,5346,1036],{"class":535},[435,5348,3233],{"class":445},[435,5350,1044],{"class":514},[435,5352,1003],{"class":445},[435,5354,5355,5357,5359,5361,5363,5365,5367,5369,5371],{"class":437,"line":862},[435,5356,3242],{"class":441},[435,5358,1399],{"class":547},[435,5360,1541],{"class":449},[435,5362,3249],{"class":445},[435,5364,465],{"class":445},[435,5366,2667],{"class":468},[435,5368,472],{"class":445},[435,5370,3258],{"class":547},[435,5372,1516],{"class":445},[435,5374,5375,5377,5379,5381,5383],{"class":437,"line":867},[435,5376,3265],{"class":441},[435,5378,3268],{"class":445},[435,5380,3211],{"class":528},[435,5382,541],{"class":547},[435,5384,1516],{"class":445},[435,5386,5387,5389,5391,5393,5395,5397],{"class":437,"line":873},[435,5388,3279],{"class":547},[435,5390,551],{"class":445},[435,5392,465],{"class":445},[435,5394,3286],{"class":468},[435,5396,472],{"class":445},[435,5398,1064],{"class":445},[435,5400,5401,5403,5405,5407,5409,5411],{"class":437,"line":891},[435,5402,3295],{"class":547},[435,5404,551],{"class":445},[435,5406,465],{"class":445},[435,5408,2703],{"class":468},[435,5410,472],{"class":445},[435,5412,1064],{"class":445},[435,5414,5415,5417,5419,5421,5423,5425,5427],{"class":437,"line":1876},[435,5416,3310],{"class":547},[435,5418,551],{"class":445},[435,5420,446],{"class":445},[435,5422,3226],{"class":547},[435,5424,551],{"class":445},[435,5426,1837],{"class":449},[435,5428,3323],{"class":445},[435,5430,5431,5433,5435],{"class":437,"line":1881},[435,5432,3328],{"class":445},[435,5434,563],{"class":547},[435,5436,475],{"class":445},[435,5438,5439],{"class":437,"line":1890},[435,5440,3337],{"class":445},[435,5442,5443,5445,5447,5449,5451,5453,5455,5457,5459,5461],{"class":437,"line":1896},[435,5444,3342],{"class":441},[435,5446,446],{"class":445},[435,5448,1541],{"class":449},[435,5450,453],{"class":445},[435,5452,1031],{"class":547},[435,5454,551],{"class":445},[435,5456,465],{"class":445},[435,5458,666],{"class":468},[435,5460,472],{"class":445},[435,5462,1654],{"class":445},[435,5464,5465],{"class":437,"line":1911},[435,5466,3365],{"class":445},[435,5468,5469,5471],{"class":437,"line":1950},[435,5470,1871],{"class":449},[435,5472,1064],{"class":445},[435,5474,5475],{"class":437,"line":1957},[435,5476,1133],{"class":445},[435,5478,5479,5481,5483],{"class":437,"line":1962},[435,5480,1725],{"class":547},[435,5482,551],{"class":445},[435,5484,1003],{"class":445},[435,5486,5487,5489,5491,5493,5495,5497],{"class":437,"line":1973},[435,5488,1814],{"class":547},[435,5490,551],{"class":445},[435,5492,1013],{"class":449},[435,5494,416],{"class":445},[435,5496,1018],{"class":528},[435,5498,1825],{"class":449},[435,5500,5501],{"class":437,"line":1978},[435,5502,3184],{"class":449},[435,5504,5505,5507],{"class":437,"line":1997},[435,5506,3189],{"class":449},[435,5508,1064],{"class":445},[435,5510,5511],{"class":437,"line":2002},[435,5512,3196],{"class":449},[435,5514,5515,5517,5519,5521,5523,5525,5527,5529,5531,5533,5535,5537,5539,5541,5543,5545,5547],{"class":437,"line":3414},[435,5516,3201],{"class":449},[435,5518,551],{"class":445},[435,5520,1666],{"class":535},[435,5522,3208],{"class":445},[435,5524,3211],{"class":535},[435,5526,532],{"class":445},[435,5528,472],{"class":445},[435,5530,3431],{"class":468},[435,5532,472],{"class":445},[435,5534,453],{"class":445},[435,5536,446],{"class":445},[435,5538,3226],{"class":547},[435,5540,551],{"class":445},[435,5542,1036],{"class":535},[435,5544,3233],{"class":445},[435,5546,1044],{"class":514},[435,5548,1003],{"class":445},[435,5550,5551,5553,5555,5557,5559,5561,5563,5565,5567],{"class":437,"line":3452},[435,5552,3242],{"class":441},[435,5554,1399],{"class":547},[435,5556,1541],{"class":449},[435,5558,3461],{"class":445},[435,5560,465],{"class":445},[435,5562,3466],{"class":468},[435,5564,472],{"class":445},[435,5566,3258],{"class":547},[435,5568,1516],{"class":445},[435,5570,5571,5573,5575,5577,5579],{"class":437,"line":3475},[435,5572,3265],{"class":441},[435,5574,3268],{"class":445},[435,5576,3211],{"class":528},[435,5578,541],{"class":547},[435,5580,1516],{"class":445},[435,5582,5583,5585,5587,5589,5591,5593],{"class":437,"line":3488},[435,5584,3279],{"class":547},[435,5586,551],{"class":445},[435,5588,465],{"class":445},[435,5590,3497],{"class":468},[435,5592,472],{"class":445},[435,5594,1064],{"class":445},[435,5596,5597,5599,5601,5603,5605,5607],{"class":437,"line":3504},[435,5598,3295],{"class":547},[435,5600,551],{"class":445},[435,5602,465],{"class":445},[435,5604,3431],{"class":468},[435,5606,472],{"class":445},[435,5608,1064],{"class":445},[435,5610,5611,5613,5615,5617,5619,5621,5623],{"class":437,"line":3519},[435,5612,3310],{"class":547},[435,5614,551],{"class":445},[435,5616,446],{"class":445},[435,5618,3226],{"class":547},[435,5620,551],{"class":445},[435,5622,1837],{"class":449},[435,5624,3323],{"class":445},[435,5626,5627,5629,5631],{"class":437,"line":3536},[435,5628,3328],{"class":445},[435,5630,563],{"class":547},[435,5632,475],{"class":445},[435,5634,5635],{"class":437,"line":3545},[435,5636,3337],{"class":445},[435,5638,5639,5641,5643,5645,5647,5649,5651,5653,5655,5657,5659,5661,5663,5665],{"class":437,"line":3550},[435,5640,3342],{"class":441},[435,5642,446],{"class":445},[435,5644,1541],{"class":449},[435,5646,453],{"class":445},[435,5648,1681],{"class":547},[435,5650,551],{"class":445},[435,5652,465],{"class":445},[435,5654,2667],{"class":468},[435,5656,472],{"class":445},[435,5658,453],{"class":445},[435,5660,1690],{"class":547},[435,5662,551],{"class":445},[435,5664,3577],{"class":641},[435,5666,1654],{"class":445},[435,5668,5669],{"class":437,"line":3582},[435,5670,3365],{"class":445},[435,5672,5673,5675],{"class":437,"line":3587},[435,5674,1871],{"class":449},[435,5676,1064],{"class":445},[435,5678,5679],{"class":437,"line":3594},[435,5680,1133],{"class":445},[435,5682,5683,5685,5687,5689],{"class":437,"line":3599},[435,5684,459],{"class":445},[435,5686,1140],{"class":441},[435,5688,953],{"class":535},[435,5690,475],{"class":445},[435,5692,5693],{"class":437,"line":3610},[435,5694,508],{"emptyLinePlaceholder":507},[435,5696,5697,5699,5701,5703,5705,5707,5709,5711],{"class":437,"line":3615},[435,5698,515],{"class":514},[435,5700,1155],{"class":449},[435,5702,980],{"class":445},[435,5704,1013],{"class":449},[435,5706,416],{"class":445},[435,5708,1164],{"class":528},[435,5710,1167],{"class":449},[435,5712,475],{"class":445},[435,5714,5715],{"class":437,"line":3634},[435,5716,508],{"emptyLinePlaceholder":507},[435,5718,5719,5721,5723,5725,5727,5729,5731],{"class":437,"line":3639},[435,5720,1178],{"class":441},[435,5722,483],{"class":514},[435,5724,1183],{"class":535},[435,5726,525],{"class":445},[435,5728,1188],{"class":445},[435,5730,1191],{"class":449},[435,5732,475],{"class":445},[418,5734,5735],{},"A batch with wrong params in any route is not sent. That route's error slot holds the validation error, and every other entry stays empty.",[5737,5738,5739],"warning",{},"A route that fails on the server does NOT stop the other routes.",[1201,5741,5743],{"id":5742},"errors-in-mapped-routes","Errors in Mapped Routes",[405,5745,5746],{},"A route that reads a mapped input depends on its source route:",[3655,5748,5749,5759],{},[3658,5750,5751],{},[3661,5752,5753,5756],{},[3664,5754,5755],{},"What happened",[3664,5757,5758],{},"What you get",[3678,5760,5761,5780,5795],{},[3661,5762,5763,5766],{},[3683,5764,5765],{},"The source route returned a declared error",[3683,5767,5768,5769,5772,5773,5775,5776,5779],{},"The source keeps its own error. The target does not run and its result and error stay ",[409,5770,5771],{},"undefined",". ",[409,5774,883],{}," holds ",[409,5777,5778],{},"batch-mapping-source-failed",", naming both routes.",[3661,5781,5782,5785],{},[3683,5783,5784],{},"The mapper function threw",[3683,5786,5787,5788,5790,5791,5794],{},"The whole batch stops with one error in ",[409,5789,883],{},", ",[409,5792,5793],{},"batch-mapper-failed",", naming the two routes.",[3661,5796,5797,5800],{},[3683,5798,5799],{},"The source route threw an undeclared error",[3683,5801,5802,5803,5805],{},"The batch stops with one error in ",[409,5804,883],{},", as with any thrown error.",[3745,5807],{},[1201,5809,5811],{"id":5810},"json-round-trip-in-a-batch","JSON Round Trip in a Batch",[405,5813,5814,5815,5790,5818,1230,5821,5824],{},"A batch converts ",[409,5816,5817],{},"Date",[409,5819,5820],{},"Map",[409,5822,5823],{},"Set"," like a single route call does:",[425,5826,5828],{"className":427,"code":5827,"language":430,"meta":431,"style":431},"const testDate = new Date('2024-06-15T12:30:00.000Z');\nconst testMap = new Map([['a', 1], ['b', 2]]);\n\nconst [[date, dateError], [map, mapError]] = await batch([\n    routes.getSameDate(testDate),\n    routes.getSameMap(testMap),\n]).call();\n\n\u002F\u002F date is a Date instance\n\u002F\u002F map is a Map instance\n",[409,5829,5830,5857,5907,5911,5947,5962,5976,5988,5992,5997],{"__ignoreMap":431},[435,5831,5832,5834,5837,5839,5841,5844,5846,5848,5851,5853,5855],{"class":437,"line":438},[435,5833,515],{"class":514},[435,5835,5836],{"class":449}," testDate ",[435,5838,980],{"class":445},[435,5840,3268],{"class":445},[435,5842,5843],{"class":528}," Date",[435,5845,541],{"class":449},[435,5847,472],{"class":445},[435,5849,5850],{"class":468},"2024-06-15T12:30:00.000Z",[435,5852,472],{"class":445},[435,5854,563],{"class":449},[435,5856,475],{"class":445},[435,5858,5859,5861,5864,5866,5868,5871,5874,5876,5878,5880,5882,5885,5887,5889,5891,5893,5896,5898,5900,5902,5905],{"class":437,"line":478},[435,5860,515],{"class":514},[435,5862,5863],{"class":449}," testMap ",[435,5865,980],{"class":445},[435,5867,3268],{"class":445},[435,5869,5870],{"class":528}," Map",[435,5872,5873],{"class":449},"([[",[435,5875,472],{"class":445},[435,5877,2338],{"class":468},[435,5879,472],{"class":445},[435,5881,453],{"class":445},[435,5883,5884],{"class":641}," 1",[435,5886,927],{"class":449},[435,5888,453],{"class":445},[435,5890,597],{"class":449},[435,5892,472],{"class":445},[435,5894,5895],{"class":468},"b",[435,5897,472],{"class":445},[435,5899,453],{"class":445},[435,5901,647],{"class":641},[435,5903,5904],{"class":449},"]])",[435,5906,475],{"class":445},[435,5908,5909],{"class":437,"line":504},[435,5910,508],{"emptyLinePlaceholder":507},[435,5912,5913,5915,5917,5920,5922,5925,5927,5929,5932,5934,5937,5939,5941,5943,5945],{"class":437,"line":511},[435,5914,515],{"class":514},[435,5916,578],{"class":445},[435,5918,5919],{"class":449},"date",[435,5921,453],{"class":445},[435,5923,5924],{"class":449}," dateError",[435,5926,594],{"class":445},[435,5928,597],{"class":445},[435,5930,5931],{"class":449},"map",[435,5933,453],{"class":445},[435,5935,5936],{"class":449}," mapError",[435,5938,613],{"class":445},[435,5940,525],{"class":445},[435,5942,1482],{"class":441},[435,5944,456],{"class":528},[435,5946,2817],{"class":449},[435,5948,5949,5952,5954,5957,5960],{"class":437,"line":568},[435,5950,5951],{"class":449},"    routes",[435,5953,416],{"class":445},[435,5955,5956],{"class":528},"getSameDate",[435,5958,5959],{"class":449},"(testDate)",[435,5961,1064],{"class":445},[435,5963,5964,5966,5968,5971,5974],{"class":437,"line":573},[435,5965,5951],{"class":449},[435,5967,416],{"class":445},[435,5969,5970],{"class":528},"getSameMap",[435,5972,5973],{"class":449},"(testMap)",[435,5975,1064],{"class":445},[435,5977,5978,5980,5982,5984,5986],{"class":437,"line":619},[435,5979,2308],{"class":449},[435,5981,416],{"class":445},[435,5983,676],{"class":528},[435,5985,679],{"class":449},[435,5987,475],{"class":445},[435,5989,5990],{"class":437,"line":684},[435,5991,508],{"emptyLinePlaceholder":507},[435,5993,5994],{"class":437,"line":689},[435,5995,5996],{"class":712},"\u002F\u002F date is a Date instance\n",[435,5998,5999],{"class":437,"line":716},[435,6000,6001],{"class":712},"\u002F\u002F map is a Map instance\n",[3745,6003],{},[1201,6005,6007],{"id":6006},"constraints","Constraints",[6009,6010,6012],"stylish-list",{"type":6011},"x",[2069,6013,6014,6022],{},[2035,6015,6016,6021],{},[435,6017,6020],{"className":6018},[6019],"text-highlighted","Same client instance:"," All routes in a batch must use the same client",[2035,6023,6024,6028],{},[435,6025,6027],{"className":6026},[6019],"At least one route:"," A batch requires at least one route",[425,6030,6032],{"className":427,"code":6031,"language":430,"meta":431,"style":431},"\u002F\u002F ❌ This will throw an error\nconst {routes: routes1} = initClient\u003CMyApi>({baseURL: 'http:\u002F\u002Fserver1.com'});\nconst {routes: routes2} = initClient\u003CMyApi>({baseURL: 'http:\u002F\u002Fserver2.com'});\n\nawait batch([routes1.users.getById('USER-123'), routes2.orders.getById('ORDER-1')]).call();\n\n\u002F\u002F ✅ Use routes from the same client\nconst {routes} = initClient\u003CMyApi>({baseURL: 'http:\u002F\u002Flocalhost:3000'});\nawait batch([routes.users.getById('USER-123'), routes.orders.getById('ORDER-1')]).call();\n",[409,6033,6034,6039,6085,6131,6135,6193,6197,6202,6242],{"__ignoreMap":431},[435,6035,6036],{"class":437,"line":438},[435,6037,6038],{"class":712},"\u002F\u002F ❌ This will throw an error\n",[435,6040,6041,6043,6045,6047,6049,6052,6054,6056,6058,6060,6062,6064,6066,6068,6070,6072,6074,6077,6079,6081,6083],{"class":437,"line":478},[435,6042,515],{"class":514},[435,6044,446],{"class":445},[435,6046,520],{"class":547},[435,6048,551],{"class":445},[435,6050,6051],{"class":449}," routes1",[435,6053,459],{"class":445},[435,6055,525],{"class":445},[435,6057,529],{"class":528},[435,6059,532],{"class":445},[435,6061,488],{"class":535},[435,6063,538],{"class":445},[435,6065,541],{"class":449},[435,6067,544],{"class":445},[435,6069,548],{"class":547},[435,6071,551],{"class":445},[435,6073,465],{"class":445},[435,6075,6076],{"class":468},"http:\u002F\u002Fserver1.com",[435,6078,472],{"class":445},[435,6080,459],{"class":445},[435,6082,563],{"class":449},[435,6084,475],{"class":445},[435,6086,6087,6089,6091,6093,6095,6098,6100,6102,6104,6106,6108,6110,6112,6114,6116,6118,6120,6123,6125,6127,6129],{"class":437,"line":504},[435,6088,515],{"class":514},[435,6090,446],{"class":445},[435,6092,520],{"class":547},[435,6094,551],{"class":445},[435,6096,6097],{"class":449}," routes2",[435,6099,459],{"class":445},[435,6101,525],{"class":445},[435,6103,529],{"class":528},[435,6105,532],{"class":445},[435,6107,488],{"class":535},[435,6109,538],{"class":445},[435,6111,541],{"class":449},[435,6113,544],{"class":445},[435,6115,548],{"class":547},[435,6117,551],{"class":445},[435,6119,465],{"class":445},[435,6121,6122],{"class":468},"http:\u002F\u002Fserver2.com",[435,6124,472],{"class":445},[435,6126,459],{"class":445},[435,6128,563],{"class":449},[435,6130,475],{"class":445},[435,6132,6133],{"class":437,"line":511},[435,6134,508],{"emptyLinePlaceholder":507},[435,6136,6137,6140,6142,6145,6147,6149,6151,6153,6155,6157,6159,6161,6163,6165,6167,6169,6171,6173,6175,6177,6179,6181,6183,6185,6187,6189,6191],{"class":437,"line":568},[435,6138,6139],{"class":441},"await",[435,6141,456],{"class":528},[435,6143,6144],{"class":449},"([routes1",[435,6146,416],{"class":445},[435,6148,1438],{"class":449},[435,6150,416],{"class":445},[435,6152,1362],{"class":528},[435,6154,541],{"class":449},[435,6156,472],{"class":445},[435,6158,2667],{"class":468},[435,6160,472],{"class":445},[435,6162,563],{"class":449},[435,6164,453],{"class":445},[435,6166,6097],{"class":449},[435,6168,416],{"class":445},[435,6170,1357],{"class":449},[435,6172,416],{"class":445},[435,6174,1362],{"class":528},[435,6176,541],{"class":449},[435,6178,472],{"class":445},[435,6180,2861],{"class":468},[435,6182,472],{"class":445},[435,6184,671],{"class":449},[435,6186,416],{"class":445},[435,6188,676],{"class":528},[435,6190,679],{"class":449},[435,6192,475],{"class":445},[435,6194,6195],{"class":437,"line":573},[435,6196,508],{"emptyLinePlaceholder":507},[435,6198,6199],{"class":437,"line":619},[435,6200,6201],{"class":712},"\u002F\u002F ✅ Use routes from the same client\n",[435,6203,6204,6206,6208,6210,6212,6214,6216,6218,6220,6222,6224,6226,6228,6230,6232,6234,6236,6238,6240],{"class":437,"line":684},[435,6205,515],{"class":514},[435,6207,446],{"class":445},[435,6209,520],{"class":449},[435,6211,459],{"class":445},[435,6213,525],{"class":445},[435,6215,529],{"class":528},[435,6217,532],{"class":445},[435,6219,488],{"class":535},[435,6221,538],{"class":445},[435,6223,541],{"class":449},[435,6225,544],{"class":445},[435,6227,548],{"class":547},[435,6229,551],{"class":445},[435,6231,465],{"class":445},[435,6233,556],{"class":468},[435,6235,472],{"class":445},[435,6237,459],{"class":445},[435,6239,563],{"class":449},[435,6241,475],{"class":445},[435,6243,6244,6246,6248,6250,6252,6254,6256,6258,6260,6262,6264,6266,6268,6270,6272,6274,6276,6278,6280,6282,6284,6286,6288,6290,6292,6294,6296],{"class":437,"line":689},[435,6245,6139],{"class":441},[435,6247,456],{"class":528},[435,6249,627],{"class":449},[435,6251,416],{"class":445},[435,6253,1438],{"class":449},[435,6255,416],{"class":445},[435,6257,1362],{"class":528},[435,6259,541],{"class":449},[435,6261,472],{"class":445},[435,6263,2667],{"class":468},[435,6265,472],{"class":445},[435,6267,563],{"class":449},[435,6269,453],{"class":445},[435,6271,654],{"class":449},[435,6273,416],{"class":445},[435,6275,1357],{"class":449},[435,6277,416],{"class":445},[435,6279,1362],{"class":528},[435,6281,541],{"class":449},[435,6283,472],{"class":445},[435,6285,2861],{"class":468},[435,6287,472],{"class":445},[435,6289,671],{"class":449},[435,6291,416],{"class":445},[435,6293,676],{"class":528},[435,6295,679],{"class":449},[435,6297,475],{"class":445},[3745,6299],{},[1201,6301,6303],{"id":6302},"build-configuration","Build Configuration",[405,6305,6306,6307,6309,6310,551],{},"Nothing to configure. The build writes the batch table and every inline ",[409,6308,1233],{}," mapper into one folder under its gen dir, and imports the table from the file that calls ",[409,6311,948],{},[425,6313,6318],{"className":6314,"code":6316,"language":6317},[6315],"language-text","\u003CgenDir>\u002Frpc\u002Fbatches.generated.js\n\u003CgenDir>\u002Frpc\u002Fpf\u002F…                   one module per inline mapper\n","text",[409,6319,6316],{"__ignoreMap":431},[3655,6321,6322,6332],{},[3658,6323,6324],{},[3661,6325,6326,6329],{},[3664,6327,6328],{},"Rule",[3664,6330,6331],{},"What it means for you",[3678,6333,6334,6346,6354,6362],{},[3661,6335,6336,6339],{},[3683,6337,6338],{},"Relative imports only",[3683,6340,6341,6342,6345],{},"The table imports each mapper as ",[409,6343,6344],{},".\u002Fpf\u002F…",", so the folder is self-contained and portable. No path leaks into a generated file.",[3661,6347,6348,6351],{},[3683,6349,6350],{},"Whole table replaced on load",[3683,6352,6353],{},"Every load registers exactly the batches in the file and nothing from before.",[3661,6355,6356,6359],{},[3683,6357,6358],{},"No build order",[3683,6360,6361],{},"Each batch's id and mapper hash come from the same source, so client and server bundles agree whichever is built first.",[3661,6363,6364,6367],{},[3683,6365,6366],{},"Follows client edits",[3683,6368,6369],{},"In dev a batch edit regenerates the table and reloads the API.",[405,6371,6372,6373,6376,6377,6379,6380,416],{},"See ",[2338,6374,147],{"href":6375},"\u002Frpc\u002Fdevtools\u002Fvite#batch-transport"," for the plugin reference, and ",[2338,6378,155],{"href":156}," for the same output from ",[409,6381,6382],{},"mion compile",[418,6384,6385,6391],{},[405,6386,6387,6388,6390],{},"An alias, a namespace import, a local barrel or your own wrapper around ",[409,6389,948],{}," all work. A wrapper shipped by another package (behind a declaration file) does not: a production build fails with rpc-batch-router-init-hidden, and the dev server only reports it. Add the import yourself in the module that creates the router:",[425,6392,6396],{"className":6393,"code":6394,"language":6395,"meta":431,"style":431},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import '.\u002F.mion\u002Frpc\u002Fbatches.generated.js';\n","typescript",[409,6397,6398],{"__ignoreMap":431},[435,6399,6400,6402,6404,6407,6409],{"class":437,"line":438},[435,6401,442],{"class":441},[435,6403,465],{"class":445},[435,6405,6406],{"class":468},".\u002F.mion\u002Frpc\u002Fbatches.generated.js",[435,6408,472],{"class":445},[435,6410,475],{"class":445},[6412,6413,6414],"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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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}","Run several routes in one HTTP request and feed one route's output into another.","md",null,{"toc":24},{"title":95,"description":6415},"vDF4zJCAvQVZp8Xd6B8jjMYWztgcT21F-FD3HNUbiaY",1793324370402]