[{"data":1,"prerenderedAt":538},["ShallowReactive",2],{"navigation":3,"\u002Fguide\u002Fserver":208,"\u002Fguide\u002Fserver-surround":533},[4,98,175],{"title":5,"path":6,"stem":7,"children":8,"icon":97},"Guide","\u002Fguide","1.guide\u002F1.index",[9,12,17,22,46,61,79],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-house",{"title":13,"path":14,"stem":15,"icon":16},"Installation","\u002Fguide\u002Finstallation","1.guide\u002F2.installation","i-lucide-download",{"title":18,"path":19,"stem":20,"icon":21},"Quick start","\u002Fguide\u002Fquick-start","1.guide\u002F3.quick-start","i-lucide-rocket",{"title":23,"path":24,"stem":25,"children":26,"icon":45},"Server","\u002Fguide\u002Fserver","1.guide\u002F4.server\u002F1.index",[27,30,35,40],{"title":28,"path":24,"stem":25,"icon":29},"Usage","i-lucide-server",{"title":31,"path":32,"stem":33,"icon":34},"Config file","\u002Fguide\u002Fserver\u002Fconfig-file","1.guide\u002F4.server\u002F2.config-file","i-lucide-file-cog",{"title":36,"path":37,"stem":38,"icon":39},"Options","\u002Fguide\u002Fserver\u002Foptions","1.guide\u002F4.server\u002F3.options","i-lucide-settings",{"title":41,"path":42,"stem":43,"icon":44},"Advanced","\u002Fguide\u002Fserver\u002Fadvanced","1.guide\u002F4.server\u002F4.advanced","i-lucide-flask-conical",false,{"title":47,"path":48,"stem":49,"children":50,"icon":45},"Client","\u002Fguide\u002Fclient","1.guide\u002F5.client\u002F1.index",[51,53,58],{"title":28,"path":48,"stem":49,"icon":52},"i-lucide-monitor-smartphone",{"title":54,"path":55,"stem":56,"icon":57},"Live queries","\u002Fguide\u002Fclient\u002Flive-queries","1.guide\u002F5.client\u002F2.live-queries","i-lucide-radio",{"title":41,"path":59,"stem":60,"icon":44},"\u002Fguide\u002Fclient\u002Fadvanced","1.guide\u002F5.client\u002F3.advanced",{"title":62,"path":63,"stem":64,"children":65,"icon":45},"Development socket","\u002Fguide\u002Fsocket","1.guide\u002F6.socket\u002F1.index",[66,68,71,74],{"title":28,"path":63,"stem":64,"icon":67},"i-lucide-plug",{"title":36,"path":69,"stem":70,"icon":39},"\u002Fguide\u002Fsocket\u002Foptions","1.guide\u002F6.socket\u002F2.options",{"title":41,"path":72,"stem":73,"icon":44},"\u002Fguide\u002Fsocket\u002Fadvanced","1.guide\u002F6.socket\u002F3.advanced",{"title":75,"path":76,"stem":77,"icon":78},"PGlite in dev, Postgres in prod","\u002Fguide\u002Fsocket\u002Fdevelopment-only","1.guide\u002F6.socket\u002F4.development-only","i-lucide-cloud-upload",{"title":80,"path":81,"stem":82,"children":83,"icon":45},"DevTools & tooling","\u002Fguide\u002Fdevtools","1.guide\u002F7.devtools\u002F1.index",[84,87,92],{"title":85,"path":81,"stem":82,"icon":86},"DevTools tab","i-lucide-wrench",{"title":88,"path":89,"stem":90,"icon":91},"Actions","\u002Fguide\u002Fdevtools\u002Factions","1.guide\u002F7.devtools\u002F2.actions","i-lucide-zap",{"title":93,"path":94,"stem":95,"icon":96},"Terminal","\u002Fguide\u002Fdevtools\u002Fterminal","1.guide\u002F7.devtools\u002F3.terminal","i-lucide-square-terminal","i-lucide-book-open",{"title":99,"icon":100,"path":101,"stem":102,"children":103,"page":45},"Recipes","i-lucide-chef-hat","\u002Frecipes","2.recipes",[104,116,138,159,171],{"title":105,"path":106,"stem":107,"children":108,"icon":45},"Migrations","\u002Frecipes\u002Fmigrations","2.recipes\u002F1.migrations\u002F1.index",[109,111],{"title":28,"path":106,"stem":107,"icon":110},"i-lucide-database-backup",{"title":112,"path":113,"stem":114,"icon":115},"Edited migrations","\u002Frecipes\u002Fmigrations\u002Fedited-migrations","2.recipes\u002F1.migrations\u002F2.edited-migrations","i-lucide-file-diff",{"title":117,"path":118,"stem":119,"children":120,"icon":45},"Testing","\u002Frecipes\u002Ftesting","2.recipes\u002F2.testing\u002F1.index",[121,123,128,133],{"title":28,"path":118,"stem":119,"icon":122},"i-lucide-test-tube",{"title":124,"path":125,"stem":126,"icon":127},"Isolation","\u002Frecipes\u002Ftesting\u002Fisolation","2.recipes\u002F2.testing\u002F2.isolation","i-lucide-git-fork",{"title":129,"path":130,"stem":131,"icon":132},"vitest","\u002Frecipes\u002Ftesting\u002Fvitest","2.recipes\u002F2.testing\u002F3.vitest","i-simple-icons-vitest",{"title":134,"path":135,"stem":136,"icon":137},"@nuxt\u002Ftest-utils","\u002Frecipes\u002Ftesting\u002Fnuxt-test-utils","2.recipes\u002F2.testing\u002F4.nuxt-test-utils","i-simple-icons-nuxt",{"title":139,"path":140,"stem":141,"children":142,"icon":45},"Deploy","\u002Frecipes\u002Fdeploy","2.recipes\u002F3.deploy\u002F1.index",[143,144,149,154],{"title":139,"path":140,"stem":141},{"title":145,"path":146,"stem":147,"icon":148},"Any Postgres","\u002Frecipes\u002Fdeploy\u002Fpostgres","2.recipes\u002F3.deploy\u002F2.postgres","i-lucide-database",{"title":150,"path":151,"stem":152,"icon":153},"Netlify","\u002Frecipes\u002Fdeploy\u002Fnetlify","2.recipes\u002F3.deploy\u002F3.netlify","i-simple-icons-netlify",{"title":155,"path":156,"stem":157,"icon":158},"Neon","\u002Frecipes\u002Fdeploy\u002Fneon","2.recipes\u002F3.deploy\u002F4.neon","i-simple-icons-neon",{"title":160,"path":161,"stem":162,"children":163,"icon":45},"Outside Nuxt","\u002Frecipes\u002Foutside-nuxt","2.recipes\u002F4.outside-nuxt\u002F1.index",[164,167],{"title":165,"path":161,"stem":162,"icon":166},"Config and provider","i-lucide-package",{"title":168,"path":169,"stem":170,"icon":67},"Socket server","\u002Frecipes\u002Foutside-nuxt\u002Fsocket","2.recipes\u002F4.outside-nuxt\u002F2.socket",{"title":172,"path":173,"stem":174,"icon":67},"Nitro's useDatabase","\u002Frecipes\u002Fnitro-database","2.recipes\u002F5.nitro-database",{"title":176,"icon":177,"path":178,"stem":179,"children":180,"page":45},"Reference","i-lucide-code-xml","\u002Freference","3.reference",[181,185,189,193,198,203],{"title":182,"path":183,"stem":184,"icon":34},"Config files","\u002Freference\u002Fconfig-files","3.reference\u002F1.config-files",{"title":186,"path":187,"stem":188,"icon":39},"Module options","\u002Freference\u002Fmodule-options","3.reference\u002F2.module-options",{"title":190,"path":191,"stem":192,"icon":67},"Socket options","\u002Freference\u002Fsocket-options","3.reference\u002F3.socket-options",{"title":194,"path":195,"stem":196,"icon":197},"Exports","\u002Freference\u002Fexports","3.reference\u002F4.exports","i-lucide-boxes",{"title":199,"path":200,"stem":201,"icon":202},"Hooks","\u002Freference\u002Fhooks","3.reference\u002F5.hooks","i-lucide-anchor",{"title":204,"path":205,"stem":206,"icon":207},"Environment","\u002Freference\u002Fenvironment","3.reference\u002F6.environment","i-lucide-variable",{"id":209,"title":210,"body":211,"description":526,"extension":527,"links":528,"meta":529,"navigation":530,"path":24,"seo":531,"stem":25,"__hash__":532},"docs\u002F1.guide\u002F4.server\u002F1.index.md","Server instance",{"type":212,"value":213,"toc":521},"minimark",[214,223,325,330,349,353,360,426,433,437,500,517],[215,216,217,218,222],"p",{},"The server side is enabled by default. ",[219,220,221],"code",{},"usePGlite()"," is auto-imported in your server code and resolves to a single PGlite instance, created on first use and closed when the server shuts down.",[224,225,231],"pre",{"className":226,"code":227,"filename":228,"language":229,"meta":230,"style":230},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineEventHandler(async () => {\n  const pg = await usePGlite()\n  return pg.query('SELECT now()')\n})\n","server\u002Fapi\u002Fhello.get.ts","ts","",[219,232,233,267,289,317],{"__ignoreMap":230},[234,235,238,242,245,249,253,257,261,264],"span",{"class":236,"line":237},"line",1,[234,239,241],{"class":240},"s7zQu","export",[234,243,244],{"class":240}," default",[234,246,248],{"class":247},"s2Zo4"," defineEventHandler",[234,250,252],{"class":251},"sTEyZ","(",[234,254,256],{"class":255},"spNyl","async",[234,258,260],{"class":259},"sMK4o"," ()",[234,262,263],{"class":255}," =>",[234,265,266],{"class":259}," {\n",[234,268,270,273,276,279,282,285],{"class":236,"line":269},2,[234,271,272],{"class":255},"  const",[234,274,275],{"class":251}," pg",[234,277,278],{"class":259}," =",[234,280,281],{"class":240}," await",[234,283,284],{"class":247}," usePGlite",[234,286,288],{"class":287},"swJcz","()\n",[234,290,292,295,297,300,303,305,308,312,314],{"class":236,"line":291},3,[234,293,294],{"class":240},"  return",[234,296,275],{"class":251},[234,298,299],{"class":259},".",[234,301,302],{"class":247},"query",[234,304,252],{"class":287},[234,306,307],{"class":259},"'",[234,309,311],{"class":310},"sfazB","SELECT now()",[234,313,307],{"class":259},[234,315,316],{"class":287},")\n",[234,318,320,323],{"class":236,"line":319},4,[234,321,322],{"class":259},"}",[234,324,316],{"class":251},[326,327,329],"h2",{"id":328},"configuring-it","Configuring it",[215,331,332,333,336,337,343,344,299],{},"Extensions, ",[219,334,335],{},"init"," and anything else that is code go in ",[338,339,340],"a",{"href":32},[219,341,342],{},"server\u002Fpglite.config.ts","; build-time options that fit in JSON, such as the data directory, in ",[338,345,346],{"href":37},[219,347,348],{},"nuxt.config.ts",[326,350,352],{"id":351},"data-directory","Data directory",[215,354,355,356,359],{},"The data lives in ",[219,357,358],{},".data\u002Fpglite"," under your project unless you say otherwise. There are three places to set it, from the most static to the most dynamic:",[361,362,363,379],"table",{},[364,365,366],"thead",{},[367,368,369,373,376],"tr",{},[370,371,372],"th",{},"Where",[370,374,375],{},"Resolved from",[370,377,378],{},"Use it for",[380,381,382,399,414],"tbody",{},[367,383,384,393,396],{},[385,386,387,390,391],"td",{},[219,388,389],{},"pglite.server.options.dataDir"," in ",[219,392,348],{},[385,394,395],{},"the project root, at build time",[385,397,398],{},"a path inside the project",[367,400,401,408,411],{},[385,402,403,390,406],{},[219,404,405],{},"dataDir",[219,407,342],{},[385,409,410],{},"the working directory, at runtime",[385,412,413],{},"a path decided by code",[367,415,416,421,423],{},[385,417,418],{},[219,419,420],{},"NUXT_PGLITE_DATA_DIR",[385,422,410],{},[385,424,425],{},"a path chosen at deploy time; wins over both",[215,427,428,429,432],{},"PGlite's own schemes (",[219,430,431],{},"memory:\u002F\u002F",", …) are passed through untouched.",[326,434,436],{"id":435},"disabling-the-server-side","Disabling the server side",[224,438,440],{"className":226,"code":439,"filename":348,"language":229,"meta":230,"style":230},"export default defineNuxtConfig({\n  pglite: {\n    server: { enabled: false },\n  },\n})\n",[219,441,442,456,466,488,493],{"__ignoreMap":230},[234,443,444,446,448,451,453],{"class":236,"line":237},[234,445,241],{"class":240},[234,447,244],{"class":240},[234,449,450],{"class":247}," defineNuxtConfig",[234,452,252],{"class":251},[234,454,455],{"class":259},"{\n",[234,457,458,461,464],{"class":236,"line":269},[234,459,460],{"class":287},"  pglite",[234,462,463],{"class":259},":",[234,465,266],{"class":259},[234,467,468,471,473,476,479,481,485],{"class":236,"line":291},[234,469,470],{"class":287},"    server",[234,472,463],{"class":259},[234,474,475],{"class":259}," {",[234,477,478],{"class":287}," enabled",[234,480,463],{"class":259},[234,482,484],{"class":483},"sfNiH"," false",[234,486,487],{"class":259}," },\n",[234,489,490],{"class":236,"line":319},[234,491,492],{"class":259},"  },\n",[234,494,496,498],{"class":236,"line":495},5,[234,497,322],{"class":259},[234,499,316],{"class":251},[215,501,502,503,506,507,509,510,513,514,516],{},"Nothing of PGlite is then in the server bundle. ",[219,504,505],{},"#pglite\u002Fserver"," still resolves, to a stub whose ",[219,508,221],{}," rejects with a pointer, so a leftover import fails clearly at runtime rather than at bundling. The ",[338,511,512],{"href":63},"development socket"," keeps working: that is the ",[338,515,75],{"href":76}," recipe.",[518,519,520],"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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":230,"searchDepth":237,"depth":269,"links":522},[523,524,525],{"id":328,"depth":269,"text":329},{"id":351,"depth":269,"text":352},{"id":435,"depth":269,"text":436},"usePGlite() in your Nitro routes, configured in server\u002Fpglite.config.ts.","md",null,{},{"title":28,"icon":29},{"title":210,"description":526},"IBRUeMMEdpXy3kmpLTNBs1VCES-FGQ-TiYjBlskjORc",[534,536],{"title":18,"path":19,"stem":20,"description":535,"icon":21,"children":-1},"A server route and a component, each talking to its own PGlite.",{"title":31,"path":32,"stem":33,"description":537,"icon":34,"children":-1},"Extensions, init, dispose and per-environment settings in server\u002Fpglite.config.ts.",1791474259253]