[{"data":1,"prerenderedAt":1293},["ShallowReactive",2],{"page:\u002Fextensions\u002Fkubb-labs\u002Fplugin-client\u002Fguides\u002Fstreaming":3},{"id":4,"frontmatter":5,"title":6,"heading":6,"body":7,"path":1292,"source":4},"extensions\u002Fkubb-labs\u002Fplugin-client\u002Fguides\u002Fstreaming.md",{},"Stream Server-Sent Events and JSON Lines",{"type":8,"value":9,"toc":1281},"minimark",[10,19,24,34,836,880,884,892,971,975,982,1031,1035,1044,1127,1131,1145,1163,1167,1183,1247,1271],[11,12,13,14,18],"p",{},"Add ",[15,16,17],"code",{},"client.stream"," and its types to your client module, so streamed operations compile and yield typed events or lines.",[20,21,23],"h2",{"id":22},"add-a-stream-method","Add a stream method",[11,25,26,27,29,30,33],{},"When the spec has a Server-Sent Events or JSON Lines operation, its generated function calls ",[15,28,17],{}," instead of ",[15,31,32],{},"client",":",[35,36,37,446],"code-group",{},[38,39,44],"pre",{"language":40,"filename":41,"code":42,"class":43},"typescript","src\u002Fgen\u002Fclients\u002Fchat\u002FstreamChat.ts","import type { Options, StreamResult, SuccessOf, TypedEvent } from '..\u002F..\u002F..\u002Fclient'\nimport type { StreamChatOptions, StreamChatResponses } from '..\u002F..\u002Ftypes\u002FStreamChat'\nimport { client } from '..\u002F..\u002F..\u002Fclient'\n\nexport function streamChat\u003CThrowOnError extends boolean = true>(\n  options: Options\u003CStreamChatOptions, ThrowOnError> = {},\n): Promise\u003CStreamResult\u003CStreamChatResponses, ThrowOnError, TypedEvent\u003CSuccessOf\u003CStreamChatResponses>>>> {\n  const { client: apiClient = client, ...config } = options\n\n  return apiClient.stream\u003CStreamChatResponses, ThrowOnError, TypedEvent\u003CSuccessOf\u003CStreamChatResponses>>>({\n    method: 'POST',\n    url: '\u002Fchat',\n    contentType: { response: 'text\u002Fevent-stream' },\n    eventShape: 'event',\n    rawData: true,\n    ...config,\n    throwOnError: config.throwOnError ?? true,\n  })\n}","highlights",[15,45,47,94,95,94,118,94,133,94,135,94,170,94,201,94,243,94,277,94,279,94,321,94,336,94,350,94,374,94,388,94,401,94,412,94,435,94,442],{"class":46},"language-typescript",[48,49,52,56,60,64,68,71,74,76,79,81,84,87,90],"span",{"class":50,"style":51},"line","display: inline",[48,53,55],{"style":54},"color:#d73a49;--hls-dark:#f97583","import ",[48,57,59],{"style":58},"color:#24292e;--hls-dark:#e1e4e8","type ",[48,61,63],{"style":62},"color:#005cc5;--hls-dark:#79b8ff","{ ",[48,65,67],{"style":66},"color:#6f42c1;--hls-dark:#b392f0","Options",[48,69,70],{"style":54},", ",[48,72,73],{"style":66},"StreamResult",[48,75,70],{"style":54},[48,77,78],{"style":66},"SuccessOf",[48,80,70],{"style":54},[48,82,83],{"style":66},"TypedEvent ",[48,85,86],{"style":62},"} ",[48,88,89],{"style":54},"from ",[48,91,93],{"style":92},"color:#032f62;--hls-dark:#9ecbff","'..\u002F..\u002F..\u002Fclient'","\n",[48,96,97,99,101,103,106,108,111,113,115],{"class":50,"style":51},[48,98,55],{"style":54},[48,100,59],{"style":58},[48,102,63],{"style":62},[48,104,105],{"style":66},"StreamChatOptions",[48,107,70],{"style":54},[48,109,110],{"style":66},"StreamChatResponses ",[48,112,86],{"style":62},[48,114,89],{"style":54},[48,116,117],{"style":92},"'..\u002F..\u002Ftypes\u002FStreamChat'",[48,119,120,122,124,127,129,131],{"class":50,"style":51},[48,121,55],{"style":54},[48,123,63],{"style":62},[48,125,126],{"style":58},"client ",[48,128,86],{"style":62},[48,130,89],{"style":54},[48,132,93],{"style":92},[48,134],{"class":50,"style":51},[48,136,137,140,143,146,149,152,155,158,161,164,167],{"class":50,"style":51},[48,138,139],{"style":54},"export ",[48,141,142],{"style":54},"function ",[48,144,145],{"style":66},"streamChat",[48,147,148],{"style":54},"\u003C",[48,150,151],{"style":66},"ThrowOnError ",[48,153,154],{"style":54},"extends ",[48,156,157],{"style":66},"boolean ",[48,159,160],{"style":54},"= ",[48,162,163],{"style":62},"true",[48,165,166],{"style":54},">",[48,168,169],{"style":62},"(",[48,171,172,175,178,181,183,185,187,189,192,195,198],{"class":50,"style":51},[48,173,174],{"style":62},"  ",[48,176,177],{"style":58},"options",[48,179,180],{"style":58},": ",[48,182,67],{"style":66},[48,184,148],{"style":54},[48,186,105],{"style":66},[48,188,70],{"style":54},[48,190,191],{"style":66},"ThrowOnError",[48,193,194],{"style":54},"> = ",[48,196,197],{"style":62},"{}",[48,199,200],{"style":54},",",[48,202,203,206,208,211,213,215,217,220,222,224,226,229,231,233,235,237,240],{"class":50,"style":51},[48,204,205],{"style":62},")",[48,207,180],{"style":58},[48,209,210],{"style":66},"Promise",[48,212,148],{"style":54},[48,214,73],{"style":66},[48,216,148],{"style":54},[48,218,219],{"style":66},"StreamChatResponses",[48,221,70],{"style":54},[48,223,191],{"style":66},[48,225,70],{"style":54},[48,227,228],{"style":66},"TypedEvent",[48,230,148],{"style":54},[48,232,78],{"style":66},[48,234,148],{"style":54},[48,236,219],{"style":66},[48,238,239],{"style":54},">>>> ",[48,241,242],{"style":62},"{",[48,244,245,247,250,252,254,256,259,261,263,265,268,271,273,275],{"class":50,"style":51},[48,246,174],{"style":62},[48,248,249],{"style":54},"const ",[48,251,63],{"style":62},[48,253,32],{"style":62},[48,255,180],{"style":54},[48,257,258],{"style":58},"apiClient ",[48,260,160],{"style":54},[48,262,32],{"style":58},[48,264,70],{"style":54},[48,266,267],{"style":54},"...",[48,269,270],{"style":58},"config ",[48,272,86],{"style":62},[48,274,160],{"style":54},[48,276,177],{"style":58},[48,278],{"class":50,"style":51},[48,280,281,283,286,289,292,295,297,299,301,303,305,307,309,311,313,315,318],{"class":50,"style":51},[48,282,174],{"style":58},[48,284,285],{"style":54},"return ",[48,287,288],{"style":58},"apiClient",[48,290,291],{"style":54},".",[48,293,294],{"style":62},"stream",[48,296,148],{"style":54},[48,298,219],{"style":66},[48,300,70],{"style":54},[48,302,191],{"style":66},[48,304,70],{"style":54},[48,306,228],{"style":66},[48,308,148],{"style":54},[48,310,78],{"style":66},[48,312,148],{"style":54},[48,314,219],{"style":66},[48,316,317],{"style":54},">>>",[48,319,320],{"style":62},"({",[48,322,323,326,329,331,334],{"class":50,"style":51},[48,324,325],{"style":62},"    ",[48,327,328],{"style":62},"method",[48,330,180],{"style":54},[48,332,333],{"style":92},"'POST'",[48,335,200],{"style":54},[48,337,338,340,343,345,348],{"class":50,"style":51},[48,339,325],{"style":54},[48,341,342],{"style":62},"url",[48,344,180],{"style":54},[48,346,347],{"style":92},"'\u002Fchat'",[48,349,200],{"style":54},[48,351,352,354,357,359,361,364,366,369,372],{"class":50,"style":51},[48,353,325],{"style":54},[48,355,356],{"style":62},"contentType",[48,358,180],{"style":54},[48,360,63],{"style":62},[48,362,363],{"style":62},"response",[48,365,180],{"style":54},[48,367,368],{"style":92},"'text\u002Fevent-stream' ",[48,370,371],{"style":62},"}",[48,373,200],{"style":54},[48,375,376,378,381,383,386],{"class":50,"style":51},[48,377,325],{"style":54},[48,379,380],{"style":62},"eventShape",[48,382,180],{"style":54},[48,384,385],{"style":92},"'event'",[48,387,200],{"style":54},[48,389,390,392,395,397,399],{"class":50,"style":51},[48,391,325],{"style":54},[48,393,394],{"style":62},"rawData",[48,396,180],{"style":54},[48,398,163],{"style":62},[48,400,200],{"style":54},[48,402,403,405,407,410],{"class":50,"style":51},[48,404,325],{"style":54},[48,406,267],{"style":54},[48,408,409],{"style":58},"config",[48,411,200],{"style":54},[48,413,414,416,419,421,423,425,428,431,433],{"class":50,"style":51},[48,415,325],{"style":54},[48,417,418],{"style":62},"throwOnError",[48,420,180],{"style":54},[48,422,409],{"style":58},[48,424,291],{"style":54},[48,426,427],{"style":62},"throwOnError ",[48,429,430],{"style":54},"?? ",[48,432,163],{"style":62},[48,434,200],{"style":54},[48,436,437,439],{"class":50,"style":51},[48,438,174],{"style":54},[48,440,441],{"style":62},"})",[48,443,444],{"class":50,"style":51},[48,445,371],{"style":62},[38,447,450],{"language":40,"filename":448,"code":449,"class":43},"src\u002Fclient.ts","export type SuccessOf\u003CTResponses> = TResponses[Extract\u003Ckeyof TResponses, '200' | '201' | '202' | '203' | '204' | '205' | '206' | '207' | '208' | '226' | '2xx'>]\n\nexport type ServerSentEvent\u003CTData = unknown> = { data: TData; event: string; id?: string; retry?: number }\n\nexport type TypedEvent\u003CTEvent> = TEvent & Pick\u003CServerSentEvent, 'id' | 'retry'>\n\nexport type StreamResult\u003CTResponses, ThrowOnError extends boolean = true, TEvent = ServerSentEvent\u003CSuccessOf\u003CTResponses>>> = {\n  stream: AsyncGenerator\u003CTEvent>\n  response: Response\n}\n\nclient.stream = async \u003CTResponses, ThrowOnError extends boolean = true, TEvent = ServerSentEvent\u003CSuccessOf\u003CTResponses>>>(\n  config: RequestConfig,\n): Promise\u003CStreamResult\u003CTResponses, ThrowOnError, TEvent>> => {\n  \u002F\u002F send the request, then parse the body into TEvent values\n}",[15,451,452,94,543,94,545,94,609,94,611,94,651,94,653,94,698,94,715,94,726,94,730,94,732,94,782,94,795,94,824,94,832],{"class":46},[48,453,454,456,458,460,462,465,467,469,472,475,477,480,482,484,487,490,493,495,498,500,503,505,508,510,513,515,518,520,523,525,528,530,533,535,538,540],{"class":50,"style":51},[48,455,139],{"style":54},[48,457,59],{"style":54},[48,459,78],{"style":66},[48,461,148],{"style":54},[48,463,464],{"style":66},"TResponses",[48,466,194],{"style":54},[48,468,464],{"style":66},[48,470,471],{"style":62},"[",[48,473,474],{"style":66},"Extract",[48,476,148],{"style":54},[48,478,479],{"style":54},"keyof ",[48,481,464],{"style":66},[48,483,70],{"style":54},[48,485,486],{"style":92},"'200' ",[48,488,489],{"style":54},"| ",[48,491,492],{"style":92},"'201' ",[48,494,489],{"style":54},[48,496,497],{"style":92},"'202' ",[48,499,489],{"style":54},[48,501,502],{"style":92},"'203' ",[48,504,489],{"style":54},[48,506,507],{"style":92},"'204' ",[48,509,489],{"style":54},[48,511,512],{"style":92},"'205' ",[48,514,489],{"style":54},[48,516,517],{"style":92},"'206' ",[48,519,489],{"style":54},[48,521,522],{"style":92},"'207' ",[48,524,489],{"style":54},[48,526,527],{"style":92},"'208' ",[48,529,489],{"style":54},[48,531,532],{"style":92},"'226' ",[48,534,489],{"style":54},[48,536,537],{"style":92},"'2xx'",[48,539,166],{"style":54},[48,541,542],{"style":62},"]",[48,544],{"class":50,"style":51},[48,546,547,549,551,554,556,559,561,564,566,568,571,573,576,579,582,584,587,589,592,595,597,599,602,604,607],{"class":50,"style":51},[48,548,139],{"style":54},[48,550,59],{"style":54},[48,552,553],{"style":66},"ServerSentEvent",[48,555,148],{"style":54},[48,557,558],{"style":66},"TData ",[48,560,160],{"style":54},[48,562,563],{"style":58},"unknown",[48,565,194],{"style":54},[48,567,63],{"style":62},[48,569,570],{"style":62},"data",[48,572,180],{"style":58},[48,574,575],{"style":66},"TData",[48,577,578],{"style":54},"; ",[48,580,581],{"style":62},"event",[48,583,180],{"style":58},[48,585,586],{"style":66},"string",[48,588,578],{"style":54},[48,590,591],{"style":62},"id",[48,593,594],{"style":58},"?: ",[48,596,586],{"style":66},[48,598,578],{"style":54},[48,600,601],{"style":62},"retry",[48,603,594],{"style":58},[48,605,606],{"style":66},"number ",[48,608,371],{"style":62},[48,610],{"class":50,"style":51},[48,612,613,615,617,619,621,624,626,629,632,635,637,639,641,644,646,649],{"class":50,"style":51},[48,614,139],{"style":54},[48,616,59],{"style":54},[48,618,228],{"style":66},[48,620,148],{"style":54},[48,622,623],{"style":66},"TEvent",[48,625,194],{"style":54},[48,627,628],{"style":66},"TEvent ",[48,630,631],{"style":54},"& ",[48,633,634],{"style":66},"Pick",[48,636,148],{"style":54},[48,638,553],{"style":66},[48,640,70],{"style":54},[48,642,643],{"style":92},"'id' ",[48,645,489],{"style":54},[48,647,648],{"style":92},"'retry'",[48,650,166],{"style":54},[48,652],{"class":50,"style":51},[48,654,655,657,659,661,663,665,667,669,671,673,675,677,679,681,683,685,687,689,691,693,696],{"class":50,"style":51},[48,656,139],{"style":54},[48,658,59],{"style":54},[48,660,73],{"style":66},[48,662,148],{"style":54},[48,664,464],{"style":66},[48,666,70],{"style":54},[48,668,151],{"style":66},[48,670,154],{"style":54},[48,672,157],{"style":66},[48,674,160],{"style":54},[48,676,163],{"style":62},[48,678,70],{"style":54},[48,680,628],{"style":66},[48,682,160],{"style":54},[48,684,553],{"style":66},[48,686,148],{"style":54},[48,688,78],{"style":66},[48,690,148],{"style":54},[48,692,464],{"style":66},[48,694,695],{"style":54},">>> = ",[48,697,242],{"style":62},[48,699,700,702,704,706,709,711,713],{"class":50,"style":51},[48,701,174],{"style":62},[48,703,294],{"style":62},[48,705,180],{"style":58},[48,707,708],{"style":66},"AsyncGenerator",[48,710,148],{"style":54},[48,712,623],{"style":66},[48,714,166],{"style":54},[48,716,717,719,721,723],{"class":50,"style":51},[48,718,174],{"style":54},[48,720,363],{"style":58},[48,722,180],{"style":58},[48,724,725],{"style":66},"Response",[48,727,728],{"class":50,"style":51},[48,729,371],{"style":62},[48,731],{"class":50,"style":51},[48,733,734,736,738,741,743,746,748,750,752,754,756,758,760,762,764,766,768,770,772,774,776,778,780],{"class":50,"style":51},[48,735,32],{"style":58},[48,737,291],{"style":54},[48,739,740],{"style":62},"stream ",[48,742,160],{"style":54},[48,744,745],{"style":58},"async ",[48,747,148],{"style":54},[48,749,464],{"style":66},[48,751,70],{"style":54},[48,753,151],{"style":66},[48,755,154],{"style":54},[48,757,157],{"style":66},[48,759,160],{"style":54},[48,761,163],{"style":62},[48,763,70],{"style":54},[48,765,628],{"style":66},[48,767,160],{"style":54},[48,769,553],{"style":66},[48,771,148],{"style":54},[48,773,78],{"style":66},[48,775,148],{"style":54},[48,777,464],{"style":66},[48,779,317],{"style":54},[48,781,169],{"style":62},[48,783,784,786,788,790,793],{"class":50,"style":51},[48,785,174],{"style":62},[48,787,409],{"style":58},[48,789,180],{"style":58},[48,791,792],{"style":66},"RequestConfig",[48,794,200],{"style":54},[48,796,797,799,801,803,805,807,809,811,813,815,817,819,822],{"class":50,"style":51},[48,798,205],{"style":62},[48,800,180],{"style":58},[48,802,210],{"style":66},[48,804,148],{"style":54},[48,806,73],{"style":66},[48,808,148],{"style":54},[48,810,464],{"style":66},[48,812,70],{"style":54},[48,814,191],{"style":66},[48,816,70],{"style":54},[48,818,623],{"style":66},[48,820,821],{"style":54},">> => ",[48,823,242],{"style":62},[48,825,826,828],{"class":50,"style":51},[48,827,174],{"style":62},[48,829,831],{"style":830},"color:#6a737d;--hls-dark:#6a737d","\u002F\u002F send the request, then parse the body into TEvent values",[48,833,834],{"class":50,"style":51},[48,835,371],{"style":62},[837,838,839,852],"table",{},[840,841,842],"thead",{},[843,844,845,849],"tr",{},[846,847,848],"th",{},"Call",[846,850,851],{},"Must return",[853,854,855,868],"tbody",{},[843,856,857,863],{},[858,859,860],"td",{},[15,861,862],{},"client\u003CTResponses, ThrowOnError>(config)",[858,864,865],{},[15,866,867],{},"Promise\u003CRequestResult\u003CTResponses, ThrowOnError>>",[843,869,870,875],{},[858,871,872],{},[15,873,874],{},"client.stream\u003CTResponses, ThrowOnError, TItem>(config)",[858,876,877],{},[15,878,879],{},"Promise\u003CStreamResult\u003CTResponses, ThrowOnError, TItem>>",[20,881,883],{"id":882},"export-the-stream-types","Export the stream types",[11,885,886,887,33],{},"Your module needs these on top of the ",[888,889,891],"a",{"href":890},"https:\u002F\u002Fkubb.dev\u002Fextensions\u002Fkubb-labs\u002Fplugin-client\u002Fguides\u002Fwrite-your-client#check-the-contract","contract",[837,893,894,907],{},[840,895,896],{},[843,897,898,901,904],{},[846,899,900],{},"Export",[846,902,903],{},"Kind",[846,905,906],{},"Needed when",[853,908,909,923,955],{},[843,910,911,917,920],{},[858,912,913,70,915],{},[15,914,17],{},[15,916,73],{},[858,918,919],{},"method, type",[858,921,922],{},"The spec has Server-Sent Events or JSON Lines operations.",[843,924,925,930,933],{},[858,926,927],{},[15,928,929],{},"StreamResultWithHeaders",[858,931,932],{},"type",[858,934,935,936,938,939,70,942,945,946,949,950,952,953,291],{},"A stream declares response headers. It replaces ",[15,937,73],{},". With ",[15,940,941],{},"returnType: 'data'",[15,943,944],{},"UnwrappedStreamResultWithHeaders"," replaces ",[15,947,948],{},"UnwrappedStreamResult",". A stream that types only the payload also imports ",[15,951,78],{}," and ",[15,954,553],{},[843,956,957,963,965],{},[858,958,959,70,961],{},[15,960,78],{},[15,962,228],{},[858,964,932],{},[858,966,967,968,970],{},"A stream names each event (both) or streams JSON Lines (",[15,969,78],{},").",[20,972,974],{"id":973},"type-each-item","Type each item",[11,976,977,978,981],{},"The third type argument, ",[15,979,980],{},"TItem",", follows the document:",[837,983,984,995],{},[840,985,986],{},[843,987,988,991],{},[846,989,990],{},"The document",[846,992,993],{},[15,994,980],{},[853,996,997,1007,1017],{},[843,998,999,1002],{},[858,1000,1001],{},"Names each event",[858,1003,1004],{},[15,1005,1006],{},"TypedEvent\u003CSuccessOf\u003CTResponses>>",[843,1008,1009,1012],{},[858,1010,1011],{},"Streams JSON Lines",[858,1013,1014],{},[15,1015,1016],{},"SuccessOf\u003CTResponses>",[843,1018,1019,1022],{},[858,1020,1021],{},"Types only the payload",[858,1023,1024,1025,1027,1028,291],{},"Left out. Give ",[15,1026,980],{}," a default, such as ",[15,1029,1030],{},"ServerSentEvent\u003CSuccessOf\u003CTResponses>>",[20,1032,1034],{"id":1033},"read-the-stream-fields","Read the stream fields",[11,1036,1037,1038,1040,1041,33],{},"Declare these fields on ",[15,1039,792],{},". The call passes them next to the ",[888,1042,1043],{"href":890},"usual fields",[837,1045,1046,1059],{},[840,1047,1048],{},[843,1049,1050,1053,1056],{},[846,1051,1052],{},"Field",[846,1054,1055],{},"Passed when",[846,1057,1058],{},"Value",[853,1060,1061,1085,1107],{},[843,1062,1063,1067,1073],{},[858,1064,1065],{},[15,1066,356],{},[858,1068,1069,1070],{},"The operation has a body, streams, or offers ",[15,1071,1072],{},"text\u002Fevent-stream",[858,1074,1075,1078,1079,1081,1082,291],{},[15,1076,1077],{},"request"," is the body's media type, ",[15,1080,363],{}," the one to ask for in ",[15,1083,1084],{},"Accept",[843,1086,1087,1091,1094],{},[858,1088,1089],{},[15,1090,380],{},[858,1092,1093],{},"A Server-Sent Events operation",[858,1095,1096,1098,1099,1102,1103,1106],{},[15,1097,385],{}," or ",[15,1100,1101],{},"'data'",": what ",[15,1104,1105],{},"validator.response"," checks on each event.",[843,1108,1109,1113,1119],{},[858,1110,1111],{},[15,1112,394],{},[858,1114,1115,1116,1118],{},"A Server-Sent Events operation types ",[15,1117,570],{}," as a string",[858,1120,1121,1123,1124,1126],{},[15,1122,163],{},", or the names of those events. Keep their ",[15,1125,570],{}," as text.",[20,1128,1130],{"id":1129},"parse-json-lines","Parse JSON Lines",[11,1132,1133,1134,1098,1137,1140,1141,1144],{},"A JSON Lines call, such as ",[15,1135,1136],{},"application\u002Fjsonl",[15,1138,1139],{},"application\u002Fx-ndjson",", passes the media type in ",[15,1142,1143],{},"contentType.response"," and expects one parsed item per line.",[11,1146,1147,1148,1151,1152,1155,1156,1158,1159,1162],{},"The shared runtime's ",[15,1149,1150],{},"sse.ts"," exports both parsers: ",[15,1153,1154],{},"parseEventStream"," reads events and applies ",[15,1157,394],{},", and ",[15,1160,1161],{},"parseJsonLines"," reads one item per line.",[20,1164,1166],{"id":1165},"streams-with-full-or-data-return-types","Streams with full or data return types",[11,1168,1169,1170,1176,1177,1098,1180,1182],{},"With ",[888,1171,1173],{"href":1172},"https:\u002F\u002Fkubb.dev\u002Fextensions\u002Fkubb-labs\u002Fplugin-client\u002Foptions#returntype",[15,1174,1175],{},"returnType"," ",[15,1178,1179],{},"'full'",[15,1181,1101],{},", every operation imports helpers from your module, and streams import more types:",[837,1184,1185,1199],{},[840,1186,1187],{},[843,1188,1189,1193,1196],{},[846,1190,1191],{},[15,1192,1175],{},[846,1194,1195],{},"Extra exports",[846,1197,1198],{},"Stream operations also import",[853,1200,1201,1225],{},[843,1202,1203,1207,1218],{},[858,1204,1205],{},[15,1206,1179],{},[858,1208,1209,70,1212,70,1215],{},[15,1210,1211],{},"withUnwrap",[15,1213,1214],{},"resolveThrowOnError",[15,1216,1217],{},"Unwrappable",[858,1219,1220,70,1223],{},[15,1221,1222],{},"StreamOptions",[15,1224,73],{},[843,1226,1227,1231,1241],{},[858,1228,1229],{},[15,1230,1101],{},[858,1232,1233,70,1236,70,1238],{},[15,1234,1235],{},"unwrapResult",[15,1237,1214],{},[15,1239,1240],{},"UnwrappedResult",[858,1242,1243,70,1245],{},[15,1244,1222],{},[15,1246,948],{},[11,1248,1249,952,1251,1253,1254,1256,1257,952,1259,1262,1263,1266,1267,1270],{},[15,1250,1179],{},[15,1252,1101],{}," need a ",[15,1255,73],{}," with ",[15,1258,570],{},[15,1260,1261],{},"error",", so the minimal type in ",[888,1264,23],{"href":1265},"#add-a-stream-method"," is not enough. ",[15,1268,1269],{},"@kubb\u002Fplugin-client\u002Ftemplates\u002Fcore.ts"," exports all of these.",[11,1272,1273,1274,1278,1279,291],{},"Next, build the client ",[888,1275,1277],{"href":1276},"https:\u002F\u002Fkubb.dev\u002Fextensions\u002Fkubb-labs\u002Fplugin-client\u002Fguides\u002Fwrite-your-client#write-the-client","on the shared runtime",", which ships ",[15,1280,17],{},{"title":1282,"searchDepth":1283,"depth":1283,"links":1284},"",5,[1285,1287,1288,1289,1290,1291],{"id":22,"depth":1286,"text":23},2,{"id":882,"depth":1286,"text":883},{"id":973,"depth":1286,"text":974},{"id":1033,"depth":1286,"text":1034},{"id":1129,"depth":1286,"text":1130},{"id":1165,"depth":1286,"text":1166},"\u002Fextensions\u002Fkubb-labs\u002Fplugin-client\u002Fguides\u002Fstreaming",1794776437285]