[{"data":1,"prerenderedAt":522},["ShallowReactive",2],{"navigation_docs":3,"-guide-types":55,"-guide-types-surround":517},[4,25],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"\u002Fgetting-started","1.getting-started",[10,15,20],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Local Postgres & PostgREST","\u002Fgetting-started\u002Flocal-postgrest","1.getting-started\u002F3.local-postgrest","i-simple-icons-docker",{"title":26,"icon":6,"path":27,"stem":28,"children":29,"page":6},"Guide","\u002Fguide","2.guide",[30,35,40,45,50],{"title":31,"path":32,"stem":33,"icon":34},"Configuration","\u002Fguide\u002Fconfiguration","2.guide\u002F1.configuration","i-lucide-settings",{"title":36,"path":37,"stem":38,"icon":39},"Composables","\u002Fguide\u002Fcomposables","2.guide\u002F2.composables","i-lucide-code",{"title":41,"path":42,"stem":43,"icon":44},"Authentication","\u002Fguide\u002Fauthentication","2.guide\u002F3.authentication","i-lucide-key-round",{"title":46,"path":47,"stem":48,"icon":49},"Types","\u002Fguide\u002Ftypes","2.guide\u002F4.types","i-lucide-braces",{"title":51,"path":52,"stem":53,"icon":54},"Coming from Supabase","\u002Fguide\u002Fmigrating-from-supabase","2.guide\u002F5.migrating-from-supabase","i-lucide-arrow-right-left",{"id":56,"title":46,"body":57,"description":510,"extension":511,"links":512,"meta":513,"navigation":514,"path":47,"seo":515,"stem":48,"__hash__":516},"docs\u002F2.guide\u002F4.types.md",{"type":58,"value":59,"toc":502},"minimark",[60,77,199,204,207,215,275,294,308,312,316,373,376,380,398,440,498],[61,62,63,64,68,69,72,73,76],"p",{},"Clients are typed from a ",[65,66,67],"code",{},"Database"," type in the format produced by ",[65,70,71],{},"supabase gen types typescript",". The module reads it from ",[65,74,75],{},"~~\u002Fshared\u002Ftypes\u002Fdatabase.types.ts",". Without the file, clients are untyped.",[78,79,84],"pre",{"className":80,"code":81,"language":82,"meta":83,"style":83},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const { data } = await usePostgrest().from('todos').select('id, title')\n\u002F\u002F      ^? { id: number, title: string }[] | null\n\nusePostgrest().from('todo') \u002F\u002F ❌ compile error: unknown table\n","ts","",[65,85,86,158,165,172],{"__ignoreMap":83},[87,88,91,95,99,103,106,109,113,117,120,123,126,129,132,136,138,141,143,146,148,150,153,155],"span",{"class":89,"line":90},"line",1,[87,92,94],{"class":93},"spNyl","const",[87,96,98],{"class":97},"sMK4o"," {",[87,100,102],{"class":101},"sTEyZ"," data ",[87,104,105],{"class":97},"}",[87,107,108],{"class":97}," =",[87,110,112],{"class":111},"s7zQu"," await",[87,114,116],{"class":115},"s2Zo4"," usePostgrest",[87,118,119],{"class":101},"()",[87,121,122],{"class":97},".",[87,124,125],{"class":115},"from",[87,127,128],{"class":101},"(",[87,130,131],{"class":97},"'",[87,133,135],{"class":134},"sfazB","todos",[87,137,131],{"class":97},[87,139,140],{"class":101},")",[87,142,122],{"class":97},[87,144,145],{"class":115},"select",[87,147,128],{"class":101},[87,149,131],{"class":97},[87,151,152],{"class":134},"id, title",[87,154,131],{"class":97},[87,156,157],{"class":101},")\n",[87,159,161],{"class":89,"line":160},2,[87,162,164],{"class":163},"sHwdD","\u002F\u002F      ^? { id: number, title: string }[] | null\n",[87,166,168],{"class":89,"line":167},3,[87,169,171],{"emptyLinePlaceholder":170},true,"\n",[87,173,175,178,180,182,184,186,188,191,193,196],{"class":89,"line":174},4,[87,176,177],{"class":115},"usePostgrest",[87,179,119],{"class":101},[87,181,122],{"class":97},[87,183,125],{"class":115},[87,185,128],{"class":101},[87,187,131],{"class":97},[87,189,190],{"class":134},"todo",[87,192,131],{"class":97},[87,194,195],{"class":101},") ",[87,197,198],{"class":163},"\u002F\u002F ❌ compile error: unknown table\n",[200,201,203],"h2",{"id":202},"generating-the-file","Generating the file",[61,205,206],{},"The generator only needs a Postgres connection string. It does not depend on Supabase hosting.",[208,209,211,212],"h3",{"id":210},"automatically-on-nuxt-dev","Automatically on ",[65,213,214],{},"nuxt dev",[78,216,219],{"className":80,"code":217,"filename":218,"language":82,"meta":83,"style":83},"export default defineNuxtConfig({\n  postgrest: {\n    generateTypes: true,\n  },\n})\n","nuxt.config.ts",[65,220,221,237,249,263,268],{"__ignoreMap":83},[87,222,223,226,229,232,234],{"class":89,"line":90},[87,224,225],{"class":111},"export",[87,227,228],{"class":111}," default",[87,230,231],{"class":115}," defineNuxtConfig",[87,233,128],{"class":101},[87,235,236],{"class":97},"{\n",[87,238,239,243,246],{"class":89,"line":160},[87,240,242],{"class":241},"swJcz","  postgrest",[87,244,245],{"class":97},":",[87,247,248],{"class":97}," {\n",[87,250,251,254,256,260],{"class":89,"line":167},[87,252,253],{"class":241},"    generateTypes",[87,255,245],{"class":97},[87,257,259],{"class":258},"sfNiH"," true",[87,261,262],{"class":97},",\n",[87,264,265],{"class":89,"line":174},[87,266,267],{"class":97},"  },\n",[87,269,271,273],{"class":89,"line":270},5,[87,272,105],{"class":97},[87,274,157],{"class":101},[78,276,281],{"className":277,"code":278,"filename":279,"language":280,"meta":83,"style":83},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","NUXT_POSTGREST_DB_URI=postgres:\u002F\u002Fpostgres:postgres@localhost:5432\u002Fpostgres\n",".env","bash",[65,282,283],{"__ignoreMap":83},[87,284,285,288,291],{"class":89,"line":90},[87,286,287],{"class":101},"NUXT_POSTGREST_DB_URI",[87,289,290],{"class":97},"=",[87,292,293],{"class":134},"postgres:\u002F\u002Fpostgres:postgres@localhost:5432\u002Fpostgres\n",[61,295,296,297,299,300,303,304,307],{},"Types are regenerated on ",[65,298,214],{}," and ",[65,301,302],{},"nuxt prepare",". This requires Docker, because the Supabase CLI runs its introspection in a container. Generation never runs during ",[65,305,306],{},"nuxt build",", so CI and production builds use the committed file.",[309,310,311],"note",{},"If generation fails, the existing file is kept and a warning is logged. Your dev server still starts.",[208,313,315],{"id":314},"manually","Manually",[78,317,320],{"className":277,"code":318,"filename":319,"language":280,"meta":83,"style":83},"npx supabase gen types typescript \\\n  --db-url \"$NUXT_POSTGREST_DB_URI\" \\\n  --schema public > shared\u002Ftypes\u002Fdatabase.types.ts\n","Terminal",[65,321,322,343,359],{"__ignoreMap":83},[87,323,324,328,331,334,337,340],{"class":89,"line":90},[87,325,327],{"class":326},"sBMFI","npx",[87,329,330],{"class":134}," supabase",[87,332,333],{"class":134}," gen",[87,335,336],{"class":134}," types",[87,338,339],{"class":134}," typescript",[87,341,342],{"class":101}," \\\n",[87,344,345,348,351,354,357],{"class":89,"line":160},[87,346,347],{"class":134},"  --db-url",[87,349,350],{"class":97}," \"",[87,352,353],{"class":101},"$NUXT_POSTGREST_DB_URI",[87,355,356],{"class":97},"\"",[87,358,342],{"class":101},[87,360,361,364,367,370],{"class":89,"line":167},[87,362,363],{"class":134},"  --schema",[87,365,366],{"class":134}," public",[87,368,369],{"class":97}," >",[87,371,372],{"class":134}," shared\u002Ftypes\u002Fdatabase.types.ts\n",[61,374,375],{},"Commit the generated file so builds don't need database access.",[200,377,379],{"id":378},"non-default-schemas","Non-default schemas",[61,381,382,383,386,387,390,391,393,394,397],{},"Automatic generation (",[65,384,385],{},"generateTypes: true",") only covers the ",[65,388,389],{},"public"," schema. For a ",[65,392,67],{}," type that also includes another schema, generate it manually with an explicit ",[65,395,396],{},"--schema"," list, then target it the same way:",[78,399,401],{"className":277,"code":400,"filename":319,"language":280,"meta":83,"style":83},"npx supabase gen types typescript \\\n  --db-url \"$NUXT_POSTGREST_DB_URI\" \\\n  --schema public,internal > shared\u002Ftypes\u002Fdatabase.types.ts\n",[65,402,403,417,429],{"__ignoreMap":83},[87,404,405,407,409,411,413,415],{"class":89,"line":90},[87,406,327],{"class":326},[87,408,330],{"class":134},[87,410,333],{"class":134},[87,412,336],{"class":134},[87,414,339],{"class":134},[87,416,342],{"class":101},[87,418,419,421,423,425,427],{"class":89,"line":160},[87,420,347],{"class":134},[87,422,350],{"class":97},[87,424,353],{"class":101},[87,426,356],{"class":97},[87,428,342],{"class":101},[87,430,431,433,436,438],{"class":89,"line":167},[87,432,363],{"class":134},[87,434,435],{"class":134}," public,internal",[87,437,369],{"class":97},[87,439,372],{"class":134},[78,441,443],{"className":80,"code":442,"language":82,"meta":83,"style":83},"usePostgrestAdmin().schema('internal').from('audit_log').select('*')\n",[65,444,445],{"__ignoreMap":83},[87,446,447,450,452,454,457,459,461,464,466,468,470,472,474,476,479,481,483,485,487,489,491,494,496],{"class":89,"line":90},[87,448,449],{"class":115},"usePostgrestAdmin",[87,451,119],{"class":101},[87,453,122],{"class":97},[87,455,456],{"class":115},"schema",[87,458,128],{"class":101},[87,460,131],{"class":97},[87,462,463],{"class":134},"internal",[87,465,131],{"class":97},[87,467,140],{"class":101},[87,469,122],{"class":97},[87,471,125],{"class":115},[87,473,128],{"class":101},[87,475,131],{"class":97},[87,477,478],{"class":134},"audit_log",[87,480,131],{"class":97},[87,482,140],{"class":101},[87,484,122],{"class":97},[87,486,145],{"class":115},[87,488,128],{"class":101},[87,490,131],{"class":97},[87,492,493],{"class":134},"*",[87,495,131],{"class":97},[87,497,157],{"class":101},[499,500,501],"style",{},"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 .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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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}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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":83,"searchDepth":160,"depth":160,"links":503},[504,509],{"id":202,"depth":160,"text":203,"children":505},[506,508],{"id":210,"depth":167,"text":507},"Automatically on nuxt dev",{"id":314,"depth":167,"text":315},{"id":378,"depth":160,"text":379},"Type every table, column and schema from your database.","md",null,{},{"icon":49},{"title":46,"description":510},"7biZhPUf5amSlxWiZoKqkvEQKyqa_DMxsJxhVy3Mv5c",[518,520],{"title":41,"path":42,"stem":43,"description":519,"icon":44,"children":-1},"Forward the user's JWT so PostgREST row-level security applies.",{"title":51,"path":52,"stem":53,"description":521,"icon":54,"children":-1},"Map @nuxtjs\u002Fsupabase patterns to Nuxt PostgREST.",1790352863872]