[{"data":1,"prerenderedAt":651},["ShallowReactive",2],{"navigation":3,"/composables/use-surreal-async-data":67,"/composables/use-surreal-async-data-surround":646},[4,22,51],{"title":5,"path":6,"stem":7,"children":8,"page":21},"Guide","/guide","1.guide",[9,13,17],{"title":10,"path":11,"stem":12},"Installation","/guide/installation","1.guide/1.installation",{"title":14,"path":15,"stem":16},"Configuration","/guide/configuration","1.guide/2.configuration",{"title":18,"path":19,"stem":20},"Hooks","/guide/hooks","1.guide/3.hooks",false,{"title":23,"path":24,"stem":25,"children":26,"page":21},"Composables","/composables","2.composables",[27,31,35,39,43,47],{"title":28,"path":29,"stem":30},"useSurreal","/composables/use-surreal","2.composables/1.use-surreal",{"title":32,"path":33,"stem":34},"useSurrealAsyncData","/composables/use-surreal-async-data","2.composables/2.use-surreal-async-data",{"title":36,"path":37,"stem":38},"useSurrealQuery","/composables/use-surreal-query","2.composables/3.use-surreal-query",{"title":40,"path":41,"stem":42},"useSurrealSelect","/composables/use-surreal-select","2.composables/4.use-surreal-select",{"title":44,"path":45,"stem":46},"useSurrealAuth","/composables/use-surreal-auth","2.composables/5.use-surreal-auth",{"title":48,"path":49,"stem":50},"Other Composables","/composables/other-composables","2.composables/6.other-composables",{"title":52,"path":53,"stem":54,"children":55,"page":21},"Server","/server","3.server",[56,59,63],{"title":28,"path":57,"stem":58},"/server/use-surreal","3.server/1.use-surreal",{"title":60,"path":61,"stem":62},"useSurrealMemory","/server/use-surreal-memory","3.server/2.use-surreal-memory",{"title":64,"path":65,"stem":66},"useSurrealLocal","/server/use-surreal-local","3.server/3.use-surreal-local",{"id":68,"title":32,"body":69,"description":637,"extension":638,"head":639,"links":639,"meta":640,"navigation":642,"ogImage":639,"path":33,"robots":639,"schemaOrg":639,"seo":643,"sitemap":644,"stem":34,"__hash__":645},"docs/2.composables/2.use-surreal-async-data.md",{"type":70,"value":71,"toc":631},"minimark",[72,76,91,96,273,277,333,337,343,512,516,534,540,627],[73,74,32],"h1",{"id":75},"usesurrealasyncdata",[77,78,79,80,84,85,87,88,90],"p",{},"A low-level composable that wraps Nuxt's ",[81,82,83],"code",{},"useAsyncData"," with automatic SurrealDB client connection. All other SSR-safe composables (",[81,86,36],{},", ",[81,89,40],{},", etc.) are built on top of this.",[92,93,95],"h2",{"id":94},"usage","Usage",[97,98,104],"pre",{"className":99,"code":100,"filename":101,"language":102,"meta":103,"style":103},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nconst { data, pending, error, refresh } = await useSurrealAsyncData(\n  (client) => {\n    return client.select(new Table('products')).json()\n  },\n)\n\u003C/script>\n","app/pages/index.vue","vue","",[81,105,106,141,187,206,251,257,263],{"__ignoreMap":103},[107,108,111,115,119,123,126,129,132,136,138],"span",{"class":109,"line":110},"line",1,[107,112,114],{"class":113},"sMK4o","\u003C",[107,116,118],{"class":117},"swJcz","script",[107,120,122],{"class":121},"spNyl"," setup",[107,124,125],{"class":121}," lang",[107,127,128],{"class":113},"=",[107,130,131],{"class":113},"\"",[107,133,135],{"class":134},"sfazB","ts",[107,137,131],{"class":113},[107,139,140],{"class":113},">\n",[107,142,144,147,150,154,157,160,162,165,167,170,173,176,180,184],{"class":109,"line":143},2,[107,145,146],{"class":121},"const",[107,148,149],{"class":113}," {",[107,151,153],{"class":152},"sTEyZ"," data",[107,155,156],{"class":113},",",[107,158,159],{"class":152}," pending",[107,161,156],{"class":113},[107,163,164],{"class":152}," error",[107,166,156],{"class":113},[107,168,169],{"class":152}," refresh ",[107,171,172],{"class":113},"}",[107,174,175],{"class":113}," =",[107,177,179],{"class":178},"s7zQu"," await",[107,181,183],{"class":182},"s2Zo4"," useSurrealAsyncData",[107,185,186],{"class":152},"(\n",[107,188,190,193,197,200,203],{"class":109,"line":189},3,[107,191,192],{"class":113},"  (",[107,194,196],{"class":195},"sHdIc","client",[107,198,199],{"class":113},")",[107,201,202],{"class":121}," =>",[107,204,205],{"class":113}," {\n",[107,207,209,212,215,218,221,224,227,230,232,235,238,240,243,245,248],{"class":109,"line":208},4,[107,210,211],{"class":178},"    return",[107,213,214],{"class":152}," client",[107,216,217],{"class":113},".",[107,219,220],{"class":182},"select",[107,222,223],{"class":117},"(",[107,225,226],{"class":113},"new",[107,228,229],{"class":182}," Table",[107,231,223],{"class":117},[107,233,234],{"class":113},"'",[107,236,237],{"class":134},"products",[107,239,234],{"class":113},[107,241,242],{"class":117},"))",[107,244,217],{"class":113},[107,246,247],{"class":182},"json",[107,249,250],{"class":117},"()\n",[107,252,254],{"class":109,"line":253},5,[107,255,256],{"class":113},"  },\n",[107,258,260],{"class":109,"line":259},6,[107,261,262],{"class":152},")\n",[107,264,266,269,271],{"class":109,"line":265},7,[107,267,268],{"class":113},"\u003C/",[107,270,118],{"class":117},[107,272,140],{"class":113},[92,274,276],{"id":275},"arguments","Arguments",[278,279,280,296],"table",{},[281,282,283],"thead",{},[284,285,286,290,293],"tr",{},[287,288,289],"th",{},"Argument",[287,291,292],{},"Type",[287,294,295],{},"Description",[297,298,299,315],"tbody",{},[284,300,301,307,312],{},[302,303,304],"td",{},[81,305,306],{},"cb",[302,308,309],{},[81,310,311],{},"(client: Surreal) => MaybePromise\u003CT>",[302,313,314],{},"Callback receiving the connected client",[284,316,317,322,327],{},[302,318,319],{},[81,320,321],{},"asyncDataOptions?",[302,323,324],{},[81,325,326],{},"AsyncDataOptions",[302,328,329,330,332],{},"Standard Nuxt ",[81,331,83],{}," options",[92,334,336],{"id":335},"return-type","Return type",[77,338,339,340,342],{},"Returns the same shape as ",[81,341,83],{},":",[97,344,347],{"className":345,"code":346,"language":135,"meta":103,"style":103},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  data: Ref\u003CT | undefined>\n  pending: Ref\u003Cboolean>\n  error: Ref\u003CError | undefined>\n  status: Ref\u003C'idle' | 'pending' | 'success' | 'error'>\n  refresh: () => Promise\u003Cvoid>\n  execute: () => Promise\u003Cvoid>\n  clear: () => void\n}\n",[81,348,349,354,376,392,410,458,476,491,506],{"__ignoreMap":103},[107,350,351],{"class":109,"line":110},[107,352,353],{"class":113},"{\n",[107,355,356,360,362,365,367,370,373],{"class":109,"line":143},[107,357,359],{"class":358},"sBMFI","  data",[107,361,342],{"class":113},[107,363,364],{"class":152}," Ref",[107,366,114],{"class":113},[107,368,369],{"class":152},"T",[107,371,372],{"class":113}," |",[107,374,375],{"class":113}," undefined>\n",[107,377,378,381,383,385,387,390],{"class":109,"line":189},[107,379,380],{"class":358},"  pending",[107,382,342],{"class":113},[107,384,364],{"class":152},[107,386,114],{"class":113},[107,388,389],{"class":152},"boolean",[107,391,140],{"class":113},[107,393,394,397,399,401,403,406,408],{"class":109,"line":208},[107,395,396],{"class":358},"  error",[107,398,342],{"class":113},[107,400,364],{"class":152},[107,402,114],{"class":113},[107,404,405],{"class":152},"Error",[107,407,372],{"class":113},[107,409,375],{"class":113},[107,411,412,415,417,419,421,423,426,428,430,433,436,438,440,442,445,447,449,451,454,456],{"class":109,"line":253},[107,413,414],{"class":358},"  status",[107,416,342],{"class":113},[107,418,364],{"class":152},[107,420,114],{"class":113},[107,422,234],{"class":113},[107,424,425],{"class":134},"idle",[107,427,234],{"class":113},[107,429,372],{"class":113},[107,431,432],{"class":113}," '",[107,434,435],{"class":134},"pending",[107,437,234],{"class":113},[107,439,372],{"class":113},[107,441,432],{"class":113},[107,443,444],{"class":134},"success",[107,446,234],{"class":113},[107,448,372],{"class":113},[107,450,432],{"class":113},[107,452,453],{"class":134},"error",[107,455,234],{"class":113},[107,457,140],{"class":113},[107,459,460,463,465,468,470,473],{"class":109,"line":259},[107,461,462],{"class":358},"  refresh",[107,464,342],{"class":113},[107,466,467],{"class":113}," ()",[107,469,202],{"class":121},[107,471,472],{"class":358}," Promise",[107,474,475],{"class":113},"\u003Cvoid>\n",[107,477,478,481,483,485,487,489],{"class":109,"line":265},[107,479,480],{"class":358},"  execute",[107,482,342],{"class":113},[107,484,467],{"class":113},[107,486,202],{"class":121},[107,488,472],{"class":358},[107,490,475],{"class":113},[107,492,494,497,499,501,503],{"class":109,"line":493},8,[107,495,496],{"class":358},"  clear",[107,498,342],{"class":113},[107,500,467],{"class":113},[107,502,202],{"class":121},[107,504,505],{"class":113}," void\n",[107,507,509],{"class":109,"line":508},9,[107,510,511],{"class":113},"}\n",[92,513,515],{"id":514},"automatic-key-injection","Automatic key injection",[77,517,518,519,528,529,533],{},"All SSR-safe composables in this module use Nuxt's ",[520,521,525],"a",{"href":522,"rel":523},"https://nuxt.com/docs/guide/modules/recipes-basics#add-keyed-functions",[524],"nofollow",[81,526,527],{},"keyedComposables"," feature (available since Nuxt 3.21 / 4.3). A unique, stable key is automatically injected at build time based on the file path and call location — you ",[530,531,532],"strong",{},"do not"," need to provide a key manually.",[77,535,536,537,539],{},"This means the key is guaranteed to match between SSR and client hydration without any extra work. Under the hood, ",[81,538,83],{}," is still used for caching, deduplication, and payload transfer.",[541,542,543,556],"tip",{},[77,544,545,546,548,549,551,552,555],{},"For advanced use cases not covered by the provided composables, you can always combine ",[81,547,28],{}," with Nuxt's ",[81,550,83],{}," directly, make sure to append ",[81,553,554],{},".json()"," to the client calls for proper serialization:",[97,557,559],{"className":345,"code":558,"language":135,"meta":103,"style":103},"const { data } = await useAsyncData('my-custom-key', async () => {\n  const client = await useSurreal()\n  // ... custom logic\n})\n",[81,560,561,599,615,621],{"__ignoreMap":103},[107,562,563,565,567,570,572,574,576,579,581,583,586,588,590,593,595,597],{"class":109,"line":110},[107,564,146],{"class":121},[107,566,149],{"class":113},[107,568,569],{"class":152}," data ",[107,571,172],{"class":113},[107,573,175],{"class":113},[107,575,179],{"class":178},[107,577,578],{"class":182}," useAsyncData",[107,580,223],{"class":152},[107,582,234],{"class":113},[107,584,585],{"class":134},"my-custom-key",[107,587,234],{"class":113},[107,589,156],{"class":113},[107,591,592],{"class":121}," async",[107,594,467],{"class":113},[107,596,202],{"class":121},[107,598,205],{"class":113},[107,600,601,604,606,608,610,613],{"class":109,"line":143},[107,602,603],{"class":121},"  const",[107,605,214],{"class":152},[107,607,175],{"class":113},[107,609,179],{"class":178},[107,611,612],{"class":182}," useSurreal",[107,614,250],{"class":117},[107,616,617],{"class":109,"line":189},[107,618,620],{"class":619},"sHwdD","  // ... custom logic\n",[107,622,623,625],{"class":109,"line":208},[107,624,172],{"class":113},[107,626,262],{"class":152},[628,629,630],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html .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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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}",{"title":103,"searchDepth":110,"depth":143,"links":632},[633,634,635,636],{"id":94,"depth":143,"text":95},{"id":275,"depth":143,"text":276},{"id":335,"depth":143,"text":336},{"id":514,"depth":143,"text":515},"SSR-safe async data fetching with the SurrealDB client.","md",null,{"icon":641},"i-lucide-loader",true,{"title":32,"description":637},{"loc":33},"r6BSnJkMppqDfG91qJpFCW6F3aBWwJgBhtMH143F0PI",[647,649],{"title":28,"path":29,"stem":30,"description":648,"children":-1},"Access the remote SurrealDB client in your Vue components.",{"title":36,"path":37,"stem":38,"description":650,"children":-1},"Execute SurrealQL queries with SSR-safe async data.",1772382804111]