[{"data":1,"prerenderedAt":680},["ShallowReactive",2],{"navigation":3,"-api-vue":65,"-api-vue-surround":677},[4,15,29,47],{"title":5,"path":6,"stem":7,"children":8,"icon":10},"Omni Async","\u002Fguide","1.guide\u002F1.index",[9,11],{"title":5,"path":6,"stem":7,"icon":10},"i-lucide-book-open",{"title":12,"path":13,"stem":14,"icon":10},"Quick start","\u002Fguide\u002Fquick-start","1.guide\u002F2.quick-start",{"title":16,"path":17,"stem":18,"children":19},"Async state","\u002Fconcepts","2.concepts\u002F1.index",[20,21,25],{"title":16,"path":17,"stem":18},{"title":22,"path":23,"stem":24},"Concurrency and cancellation","\u002Fconcepts\u002Fconcurrency-and-cancellation","2.concepts\u002F2.concurrency-and-cancellation",{"title":26,"path":27,"stem":28},"Notifications and equality","\u002Fconcepts\u002Fnotifications","2.concepts\u002F3.notifications",{"title":30,"path":31,"stem":32,"children":33},"Framework adapters","\u002Fframeworks","3.frameworks\u002F1.index",[34,35,39,43],{"title":30,"path":31,"stem":32},{"title":36,"path":37,"stem":38},"React","\u002Fframeworks\u002Freact","3.frameworks\u002F2.react",{"title":40,"path":41,"stem":42},"Vue","\u002Fframeworks\u002Fvue","3.frameworks\u002F3.vue",{"title":44,"path":45,"stem":46},"Svelte","\u002Fframeworks\u002Fsvelte","3.frameworks\u002F4.svelte",{"title":48,"path":49,"stem":50,"children":51},"Core API","\u002Fapi","4.api\u002F1.index",[52,53,57,61],{"title":48,"path":49,"stem":50},{"title":54,"path":55,"stem":56},"React API","\u002Fapi\u002Freact","4.api\u002F2.react",{"title":58,"path":59,"stem":60},"Vue API","\u002Fapi\u002Fvue","4.api\u002F3.vue",{"title":62,"path":63,"stem":64},"Svelte API","\u002Fapi\u002Fsvelte","4.api\u002F4.svelte",{"id":66,"title":58,"body":67,"description":101,"extension":671,"meta":672,"navigation":674,"path":59,"seo":675,"stem":60,"__hash__":676},"content\u002F4.api\u002F3.vue.md",{"type":68,"value":69,"toc":659},"minimark",[70,79,86,89,95,175,181,184,188,242,248,251,255,300,306,309,313,365,369,451,458,559,565,571,585,591,608,614,623,655],[71,72,73,74,78],"p",{},"Composables exported by ",[75,76,77],"code",{},"@omni-async\u002Fvue",".",[80,81,83],"h2",{"id":82},"useactionhandler-options",[75,84,85],{},"useAction(handler, options?)",[71,87,88],{},"Creates an on-demand Vue async action without retaining its resolved value.",[71,90,91],{},[92,93,94],"strong",{},"Example:",[96,97,102],"pre",{"className":98,"code":99,"language":100,"meta":101,"style":101},"language-ts shiki shiki-themes github-light github-dark github-dark","const removeUser = useAction((id: string) => api.deleteUser(id));\nawait removeUser.trigger(\"42\");\n","ts","",[75,103,104,153],{"__ignoreMap":101},[105,106,109,113,117,120,124,128,132,135,138,141,144,147,150],"span",{"class":107,"line":108},"line",1,[105,110,112],{"class":111},"so5gQ","const",[105,114,116],{"class":115},"suiK_"," removeUser",[105,118,119],{"class":111}," =",[105,121,123],{"class":122},"shcOC"," useAction",[105,125,127],{"class":126},"slsVL","((",[105,129,131],{"class":130},"sQHwn","id",[105,133,134],{"class":111},":",[105,136,137],{"class":115}," string",[105,139,140],{"class":126},") ",[105,142,143],{"class":111},"=>",[105,145,146],{"class":126}," api.",[105,148,149],{"class":122},"deleteUser",[105,151,152],{"class":126},"(id));\n",[105,154,156,159,162,165,168,172],{"class":107,"line":155},2,[105,157,158],{"class":111},"await",[105,160,161],{"class":126}," removeUser.",[105,163,164],{"class":122},"trigger",[105,166,167],{"class":126},"(",[105,169,171],{"class":170},"sfrk1","\"42\"",[105,173,174],{"class":126},");\n",[80,176,178],{"id":177},"useasynchandler-options",[75,179,180],{},"useAsync(handler, options)",[71,182,183],{},"Creates Vue refs for an async handler with configurable concurrency and fallback data.",[71,185,186],{},[92,187,94],{},[96,189,191],{"className":98,"code":190,"language":100,"meta":101,"style":101},"const save = useAsync((name: string) => api.saveProfile({ name }));\nawait save.trigger(\"Ada\");\n",[75,192,193,226],{"__ignoreMap":101},[105,194,195,197,200,202,205,207,210,212,214,216,218,220,223],{"class":107,"line":108},[105,196,112],{"class":111},[105,198,199],{"class":115}," save",[105,201,119],{"class":111},[105,203,204],{"class":122}," useAsync",[105,206,127],{"class":126},[105,208,209],{"class":130},"name",[105,211,134],{"class":111},[105,213,137],{"class":115},[105,215,140],{"class":126},[105,217,143],{"class":111},[105,219,146],{"class":126},[105,221,222],{"class":122},"saveProfile",[105,224,225],{"class":126},"({ name }));\n",[105,227,228,230,233,235,237,240],{"class":107,"line":155},[105,229,158],{"class":111},[105,231,232],{"class":126}," save.",[105,234,164],{"class":122},[105,236,167],{"class":126},[105,238,239],{"class":170},"\"Ada\"",[105,241,174],{"class":126},[80,243,245],{"id":244},"usefetchhandler-options",[75,246,247],{},"useFetch(handler, options?)",[71,249,250],{},"Runs an abortable fetch when the component mounts and cancels it on unmount.",[71,252,253],{},[92,254,94],{},[96,256,258],{"className":98,"code":257,"language":100,"meta":101,"style":101},"const profile = useFetch((signal) => fetchProfile({ signal }));\nawait profile.fetch();\n",[75,259,260,287],{"__ignoreMap":101},[105,261,262,264,267,269,272,274,277,279,281,284],{"class":107,"line":108},[105,263,112],{"class":111},[105,265,266],{"class":115}," profile",[105,268,119],{"class":111},[105,270,271],{"class":122}," useFetch",[105,273,127],{"class":126},[105,275,276],{"class":130},"signal",[105,278,140],{"class":126},[105,280,143],{"class":111},[105,282,283],{"class":122}," fetchProfile",[105,285,286],{"class":126},"({ signal }));\n",[105,288,289,291,294,297],{"class":107,"line":155},[105,290,158],{"class":111},[105,292,293],{"class":126}," profile.",[105,295,296],{"class":122},"fetch",[105,298,299],{"class":126},"();\n",[80,301,303],{"id":302},"usequeryhandler-options",[75,304,305],{},"useQuery(handler, options?)",[71,307,308],{},"Creates a latest-request-wins Vue query that may optionally share an external data ref.",[71,310,311],{},[92,312,94],{},[96,314,316],{"className":98,"code":315,"language":100,"meta":101,"style":101},"const users = useQuery(() => api.listUsers(), { initial: () => [] });\nawait users.trigger();\n",[75,317,318,354],{"__ignoreMap":101},[105,319,320,322,325,327,330,333,335,337,340,343,346,349,351],{"class":107,"line":108},[105,321,112],{"class":111},[105,323,324],{"class":115}," users",[105,326,119],{"class":111},[105,328,329],{"class":122}," useQuery",[105,331,332],{"class":126},"(() ",[105,334,143],{"class":111},[105,336,146],{"class":126},[105,338,339],{"class":122},"listUsers",[105,341,342],{"class":126},"(), { ",[105,344,345],{"class":122},"initial",[105,347,348],{"class":126},": () ",[105,350,143],{"class":111},[105,352,353],{"class":126}," [] });\n",[105,355,356,358,361,363],{"class":107,"line":155},[105,357,158],{"class":111},[105,359,360],{"class":126}," users.",[105,362,164],{"class":122},[105,364,299],{"class":126},[80,366,368],{"id":367},"shared-result-state","Shared result state",[370,371,372,388],"table",{},[373,374,375],"thead",{},[376,377,378,382,385],"tr",{},[379,380,381],"th",{},"Field",[379,383,384],{},"Type",[379,386,387],{},"Description",[389,390,391,407,422,437],"tbody",{},[376,392,393,399,404],{},[394,395,396],"td",{},[75,397,398],{},"data",[394,400,401],{},[75,402,403],{},"Ref\u003CData | null | undefined>",[394,405,406],{},"Most recently accepted data",[376,408,409,414,419],{},[394,410,411],{},[75,412,413],{},"error",[394,415,416],{},[75,417,418],{},"Ref\u003Cunknown | null>",[394,420,421],{},"Most recently accepted error",[376,423,424,429,434],{},[394,425,426],{},[75,427,428],{},"loading",[394,430,431],{},[75,432,433],{},"Ref\u003Cboolean>",[394,435,436],{},"Whether an accepted request is still running",[376,438,439,443,448],{},[394,440,441],{},[75,442,164],{},[394,444,445],{},[75,446,447],{},"(...params: Params) => Promise\u003CData>",[394,449,450],{},"Starts the handler with typed parameters",[80,452,454,457],{"id":453},"useasync-options",[75,455,456],{},"useAsync"," options",[370,459,460,472],{},[373,461,462],{},[376,463,464,467,470],{},[379,465,466],{},"Option",[379,468,469],{},"Default",[379,471,387],{},[389,473,474,489,508,521,534,547],{},[376,475,476,481,486],{},[394,477,478],{},[75,479,480],{},"initialData",[394,482,483],{},[75,484,485],{},"null",[394,487,488],{},"Initial data and the value restored by the operation",[376,490,491,496,501],{},[394,492,493],{},[75,494,495],{},"concurrency",[394,497,498],{},[75,499,500],{},"\"all\"",[394,502,503,504,507],{},"Use ",[75,505,506],{},"\"latest\""," to prevent older requests updating state",[376,509,510,515,518],{},[394,511,512],{},[75,513,514],{},"dataOnError",[394,516,517],{},"Preserve",[394,519,520],{},"Produces replacement data after a rejected request",[376,522,523,528,531],{},[394,524,525],{},[75,526,527],{},"isEqual",[394,529,530],{},"Fields",[394,532,533],{},"Suppresses updates when the previous and next states are equal",[376,535,536,541,544],{},[394,537,538],{},[75,539,540],{},"onSuccess",[394,542,543],{},"—",[394,545,546],{},"Runs after an accepted successful update",[376,548,549,554,556],{},[394,550,551],{},[75,552,553],{},"onError",[394,555,543],{},[394,557,558],{},"Runs after an accepted error update",[71,560,561,562,564],{},"When called inside an active Vue scope, ",[75,563,456],{}," unsubscribes and aborts active work when that\nscope is disposed.",[80,566,568],{"id":567},"usequery",[75,569,570],{},"useQuery",[71,572,573,575,576,578,579,581,582,584],{},[75,574,570],{}," uses ",[75,577,506],{}," concurrency. Pass ",[75,580,398],{}," to synchronize results with an existing ref, or\nuse ",[75,583,345],{}," to create initial and error-fallback data.",[80,586,588],{"id":587},"useaction",[75,589,590],{},"useAction",[71,592,593,595,596,598,599,601,602,604,605,607],{},[75,594,590],{}," exposes ",[75,597,413],{},", ",[75,600,428],{},", and ",[75,603,164],{},". The resolved value is returned by ",[75,606,164],{},"\ninstead of being retained in a data ref.",[80,609,611],{"id":610},"usefetch",[75,612,613],{},"useFetch",[71,615,616,618,619,622],{},[75,617,613],{}," calls ",[75,620,621],{},"fetch()"," on mount and aborts the current controller on unmount.",[370,624,625,634],{},[373,626,627],{},[376,628,629,632],{},[379,630,631],{},"Control",[379,633,387],{},[389,635,636,645],{},[376,637,638,642],{},[394,639,640],{},[75,641,621],{},[394,643,644],{},"Starts a request and returns its promise",[376,646,647,652],{},[394,648,649],{},[75,650,651],{},"abort()",[394,653,654],{},"Aborts the current request, when one exists",[656,657,658],"style",{},"html pre.shiki code .so5gQ, html code.shiki .so5gQ{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F97583}html pre.shiki code .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}html pre.shiki code .sQHwn, html code.shiki .sQHwn{--shiki-light:#E36209;--shiki-default:#FFAB70;--shiki-dark:#FFAB70}html pre.shiki code .sfrk1, html code.shiki .sfrk1{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF}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);}",{"title":101,"searchDepth":155,"depth":155,"links":660},[661,662,663,664,665,666,668,669,670],{"id":82,"depth":155,"text":85},{"id":177,"depth":155,"text":180},{"id":244,"depth":155,"text":247},{"id":302,"depth":155,"text":305},{"id":367,"depth":155,"text":368},{"id":453,"depth":155,"text":667},"useAsync options",{"id":567,"depth":155,"text":570},{"id":587,"depth":155,"text":590},{"id":610,"depth":155,"text":613},"md",{"automd":673},true,{},{"title":58,"description":101},"HysXIbi8CzEzzor0z9dSC7LV8M0bWqbUGgAlyDKwnNQ",[678,679],{"title":54,"path":55,"stem":56,"description":101,"children":-1},{"title":62,"path":63,"stem":64,"description":101,"children":-1},1786006625960]