[{"data":1,"prerenderedAt":771},["ShallowReactive",2],{"navigation":3,"-guide-quick-start":65,"-guide-quick-start-surround":768},[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":12,"body":67,"description":89,"extension":763,"meta":764,"navigation":765,"path":13,"seo":766,"stem":14,"__hash__":767},"content\u002F1.guide\u002F2.quick-start.md",{"type":68,"value":69,"toc":758,"icon":10},"minimark",[70,74,79,151,155,485,512,516,519,746,754],[71,72,73],"p",{},"Choose the core package when you do not need a framework adapter.",[75,76,78],"h2",{"id":77},"install","Install",[80,81,82,109,123,137],"code-group",{},[83,84,90],"pre",{"className":85,"code":86,"filename":87,"language":88,"meta":89,"style":89},"language-bash shiki shiki-themes github-light github-dark github-dark","pnpm add @omni-async\u002Fcore\n","Core","bash","",[91,92,93],"code",{"__ignoreMap":89},[94,95,98,102,106],"span",{"class":96,"line":97},"line",1,[94,99,101],{"class":100},"shcOC","pnpm",[94,103,105],{"class":104},"sfrk1"," add",[94,107,108],{"class":104}," @omni-async\u002Fcore\n",[83,110,112],{"className":85,"code":111,"filename":36,"language":88,"meta":89,"style":89},"pnpm add @omni-async\u002Freact\n",[91,113,114],{"__ignoreMap":89},[94,115,116,118,120],{"class":96,"line":97},[94,117,101],{"class":100},[94,119,105],{"class":104},[94,121,122],{"class":104}," @omni-async\u002Freact\n",[83,124,126],{"className":85,"code":125,"filename":40,"language":88,"meta":89,"style":89},"pnpm add @omni-async\u002Fvue\n",[91,127,128],{"__ignoreMap":89},[94,129,130,132,134],{"class":96,"line":97},[94,131,101],{"class":100},[94,133,105],{"class":104},[94,135,136],{"class":104}," @omni-async\u002Fvue\n",[83,138,140],{"className":85,"code":139,"filename":44,"language":88,"meta":89,"style":89},"pnpm add @omni-async\u002Fsvelte\n",[91,141,142],{"__ignoreMap":89},[94,143,144,146,148],{"class":96,"line":97},[94,145,101],{"class":100},[94,147,105],{"class":104},[94,149,150],{"class":104}," @omni-async\u002Fsvelte\n",[75,152,154],{"id":153},"create-an-operation","Create an operation",[83,156,160],{"className":157,"code":158,"language":159,"meta":89,"style":89},"language-ts shiki shiki-themes github-light github-dark github-dark","import { createAsync } from \"@omni-async\u002Fcore\";\n\nconst user = createAsync(\n  async ({ signal }, id: string) => {\n    const response = await fetch(`\u002Fapi\u002Fusers\u002F${id}`, { signal: signal ?? undefined });\n    if (!response.ok) throw new Error(\"Unable to load user\");\n    return response.json() as Promise\u003C{ id: string; name: string }>;\n  },\n  {\n    abortable: true,\n    concurrency: \"latest\",\n  },\n);\n\nconst unsubscribe = user.subscribe(() => {\n  console.log(user.getSnapshot());\n});\n\nawait user.execute(\"42\");\nunsubscribe();\n","ts",[91,161,162,181,188,207,241,281,313,356,362,368,380,391,396,401,406,429,447,453,458,476],{"__ignoreMap":89},[94,163,164,168,172,175,178],{"class":96,"line":97},[94,165,167],{"class":166},"so5gQ","import",[94,169,171],{"class":170},"slsVL"," { createAsync } ",[94,173,174],{"class":166},"from",[94,176,177],{"class":104}," \"@omni-async\u002Fcore\"",[94,179,180],{"class":170},";\n",[94,182,184],{"class":96,"line":183},2,[94,185,187],{"emptyLinePlaceholder":186},true,"\n",[94,189,191,194,198,201,204],{"class":96,"line":190},3,[94,192,193],{"class":166},"const",[94,195,197],{"class":196},"suiK_"," user",[94,199,200],{"class":166}," =",[94,202,203],{"class":100}," createAsync",[94,205,206],{"class":170},"(\n",[94,208,210,213,216,220,223,226,229,232,235,238],{"class":96,"line":209},4,[94,211,212],{"class":166},"  async",[94,214,215],{"class":170}," ({ ",[94,217,219],{"class":218},"sQHwn","signal",[94,221,222],{"class":170}," }, ",[94,224,225],{"class":218},"id",[94,227,228],{"class":166},":",[94,230,231],{"class":196}," string",[94,233,234],{"class":170},") ",[94,236,237],{"class":166},"=>",[94,239,240],{"class":170}," {\n",[94,242,244,247,250,252,255,258,261,264,266,269,272,275,278],{"class":96,"line":243},5,[94,245,246],{"class":166},"    const",[94,248,249],{"class":196}," response",[94,251,200],{"class":166},[94,253,254],{"class":166}," await",[94,256,257],{"class":100}," fetch",[94,259,260],{"class":170},"(",[94,262,263],{"class":104},"`\u002Fapi\u002Fusers\u002F${",[94,265,225],{"class":170},[94,267,268],{"class":104},"}`",[94,270,271],{"class":170},", { signal: signal ",[94,273,274],{"class":166},"??",[94,276,277],{"class":196}," undefined",[94,279,280],{"class":170}," });\n",[94,282,284,287,290,293,296,299,302,305,307,310],{"class":96,"line":283},6,[94,285,286],{"class":166},"    if",[94,288,289],{"class":170}," (",[94,291,292],{"class":166},"!",[94,294,295],{"class":170},"response.ok) ",[94,297,298],{"class":166},"throw",[94,300,301],{"class":166}," new",[94,303,304],{"class":100}," Error",[94,306,260],{"class":170},[94,308,309],{"class":104},"\"Unable to load user\"",[94,311,312],{"class":170},");\n",[94,314,316,319,322,325,328,331,334,337,339,341,343,346,349,351,353],{"class":96,"line":315},7,[94,317,318],{"class":166},"    return",[94,320,321],{"class":170}," response.",[94,323,324],{"class":100},"json",[94,326,327],{"class":170},"() ",[94,329,330],{"class":166},"as",[94,332,333],{"class":100}," Promise",[94,335,336],{"class":170},"\u003C{ ",[94,338,225],{"class":218},[94,340,228],{"class":166},[94,342,231],{"class":196},[94,344,345],{"class":170},"; ",[94,347,348],{"class":218},"name",[94,350,228],{"class":166},[94,352,231],{"class":196},[94,354,355],{"class":170}," }>;\n",[94,357,359],{"class":96,"line":358},8,[94,360,361],{"class":170},"  },\n",[94,363,365],{"class":96,"line":364},9,[94,366,367],{"class":170},"  {\n",[94,369,371,374,377],{"class":96,"line":370},10,[94,372,373],{"class":170},"    abortable: ",[94,375,376],{"class":196},"true",[94,378,379],{"class":170},",\n",[94,381,383,386,389],{"class":96,"line":382},11,[94,384,385],{"class":170},"    concurrency: ",[94,387,388],{"class":104},"\"latest\"",[94,390,379],{"class":170},[94,392,394],{"class":96,"line":393},12,[94,395,361],{"class":170},[94,397,399],{"class":96,"line":398},13,[94,400,312],{"class":170},[94,402,404],{"class":96,"line":403},14,[94,405,187],{"emptyLinePlaceholder":186},[94,407,409,411,414,416,419,422,425,427],{"class":96,"line":408},15,[94,410,193],{"class":166},[94,412,413],{"class":196}," unsubscribe",[94,415,200],{"class":166},[94,417,418],{"class":170}," user.",[94,420,421],{"class":100},"subscribe",[94,423,424],{"class":170},"(() ",[94,426,237],{"class":166},[94,428,240],{"class":170},[94,430,432,435,438,441,444],{"class":96,"line":431},16,[94,433,434],{"class":170},"  console.",[94,436,437],{"class":100},"log",[94,439,440],{"class":170},"(user.",[94,442,443],{"class":100},"getSnapshot",[94,445,446],{"class":170},"());\n",[94,448,450],{"class":96,"line":449},17,[94,451,452],{"class":170},"});\n",[94,454,456],{"class":96,"line":455},18,[94,457,187],{"emptyLinePlaceholder":186},[94,459,461,464,466,469,471,474],{"class":96,"line":460},19,[94,462,463],{"class":166},"await",[94,465,418],{"class":170},[94,467,468],{"class":100},"execute",[94,470,260],{"class":170},[94,472,473],{"class":104},"\"42\"",[94,475,312],{"class":170},[94,477,479,482],{"class":96,"line":478},20,[94,480,481],{"class":100},"unsubscribe",[94,483,484],{"class":170},"();\n",[71,486,487,488,491,492,495,496,499,500,503,504,507,508,511],{},"The snapshot moves from ",[91,489,490],{},"idle"," to ",[91,493,494],{},"loading",", then to ",[91,497,498],{},"success"," or ",[91,501,502],{},"error",". Calling ",[91,505,506],{},"reset()"," restores the initial snapshot; calling ",[91,509,510],{},"abort()"," invalidates active requests.",[75,513,515],{"id":514},"use-a-framework-adapter","Use a framework adapter",[71,517,518],{},"The adapters provide the same operation as native reactive values. For example, React exposes a trigger and independent state fields:",[83,520,524],{"className":521,"code":522,"language":523,"meta":89,"style":89},"language-tsx shiki shiki-themes github-light github-dark github-dark","import { useQuery } from \"@omni-async\u002Freact\";\n\nfunction UserSearch() {\n  const user = useQuery(async (id: string) => {\n    const response = await fetch(`\u002Fapi\u002Fusers\u002F${id}`);\n    if (!response.ok) throw new Error(\"Unable to load user\");\n    return response.json() as Promise\u003C{ name: string }>;\n  });\n\n  return (\n    \u003Cbutton disabled={user.loading} onClick={() => void user.trigger(\"42\")}>\n      {user.data?.name ?? \"Load user\"}\n    \u003C\u002Fbutton>\n  );\n}\n","tsx",[91,525,526,540,544,555,586,608,630,654,659,663,671,714,727,737,742],{"__ignoreMap":89},[94,527,528,530,533,535,538],{"class":96,"line":97},[94,529,167],{"class":166},[94,531,532],{"class":170}," { useQuery } ",[94,534,174],{"class":166},[94,536,537],{"class":104}," \"@omni-async\u002Freact\"",[94,539,180],{"class":170},[94,541,542],{"class":96,"line":183},[94,543,187],{"emptyLinePlaceholder":186},[94,545,546,549,552],{"class":96,"line":190},[94,547,548],{"class":166},"function",[94,550,551],{"class":100}," UserSearch",[94,553,554],{"class":170},"() {\n",[94,556,557,560,562,564,567,569,572,574,576,578,580,582,584],{"class":96,"line":209},[94,558,559],{"class":166},"  const",[94,561,197],{"class":196},[94,563,200],{"class":166},[94,565,566],{"class":100}," useQuery",[94,568,260],{"class":170},[94,570,571],{"class":166},"async",[94,573,289],{"class":170},[94,575,225],{"class":218},[94,577,228],{"class":166},[94,579,231],{"class":196},[94,581,234],{"class":170},[94,583,237],{"class":166},[94,585,240],{"class":170},[94,587,588,590,592,594,596,598,600,602,604,606],{"class":96,"line":243},[94,589,246],{"class":166},[94,591,249],{"class":196},[94,593,200],{"class":166},[94,595,254],{"class":166},[94,597,257],{"class":100},[94,599,260],{"class":170},[94,601,263],{"class":104},[94,603,225],{"class":170},[94,605,268],{"class":104},[94,607,312],{"class":170},[94,609,610,612,614,616,618,620,622,624,626,628],{"class":96,"line":283},[94,611,286],{"class":166},[94,613,289],{"class":170},[94,615,292],{"class":166},[94,617,295],{"class":170},[94,619,298],{"class":166},[94,621,301],{"class":166},[94,623,304],{"class":100},[94,625,260],{"class":170},[94,627,309],{"class":104},[94,629,312],{"class":170},[94,631,632,634,636,638,640,642,644,646,648,650,652],{"class":96,"line":315},[94,633,318],{"class":166},[94,635,321],{"class":170},[94,637,324],{"class":100},[94,639,327],{"class":170},[94,641,330],{"class":166},[94,643,333],{"class":100},[94,645,336],{"class":170},[94,647,348],{"class":218},[94,649,228],{"class":166},[94,651,231],{"class":196},[94,653,355],{"class":170},[94,655,656],{"class":96,"line":358},[94,657,658],{"class":170},"  });\n",[94,660,661],{"class":96,"line":364},[94,662,187],{"emptyLinePlaceholder":186},[94,664,665,668],{"class":96,"line":370},[94,666,667],{"class":166},"  return",[94,669,670],{"class":170}," (\n",[94,672,673,676,680,683,686,689,692,694,697,699,702,704,707,709,711],{"class":96,"line":382},[94,674,675],{"class":170},"    \u003C",[94,677,679],{"class":678},"sByVh","button",[94,681,682],{"class":100}," disabled",[94,684,685],{"class":166},"=",[94,687,688],{"class":170},"{user.loading} ",[94,690,691],{"class":100},"onClick",[94,693,685],{"class":166},[94,695,696],{"class":170},"{() ",[94,698,237],{"class":166},[94,700,701],{"class":166}," void",[94,703,418],{"class":170},[94,705,706],{"class":100},"trigger",[94,708,260],{"class":170},[94,710,473],{"class":104},[94,712,713],{"class":170},")}>\n",[94,715,716,719,721,724],{"class":96,"line":393},[94,717,718],{"class":170},"      {user.data?.name ",[94,720,274],{"class":166},[94,722,723],{"class":104}," \"Load user\"",[94,725,726],{"class":170},"}\n",[94,728,729,732,734],{"class":96,"line":398},[94,730,731],{"class":170},"    \u003C\u002F",[94,733,679],{"class":678},[94,735,736],{"class":170},">\n",[94,738,739],{"class":96,"line":403},[94,740,741],{"class":170},"  );\n",[94,743,744],{"class":96,"line":408},[94,745,726],{"class":170},[71,747,748,749,753],{},"See ",[750,751,752],"a",{"href":31},"framework adapters"," for Vue and Svelte examples.",[755,756,757],"style",{},"html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}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);}html pre.shiki code .so5gQ, html code.shiki .so5gQ{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F97583}html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}html pre.shiki code .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}html pre.shiki code .sQHwn, html code.shiki .sQHwn{--shiki-light:#E36209;--shiki-default:#FFAB70;--shiki-dark:#FFAB70}html pre.shiki code .sByVh, html code.shiki .sByVh{--shiki-light:#22863A;--shiki-default:#85E89D;--shiki-dark:#85E89D}",{"title":89,"searchDepth":183,"depth":183,"links":759},[760,761,762],{"id":77,"depth":183,"text":78},{"id":153,"depth":183,"text":154},{"id":514,"depth":183,"text":515},"md",{"icon":10},{"icon":10},{"title":12,"description":89},"lC0svpX31zEKwill3aZGxqLttlS7Lrm-USxWxrCN8pg",[769,770],{"title":5,"path":6,"stem":7,"description":89,"icon":10,"children":-1},{"title":16,"path":17,"stem":18,"description":89,"children":-1},1786006625354]