@supabase/lite 0.2.0 → 0.2.1-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import {jsonStringify}from'@supabase/lite';import {Kysely,PostgresQueryCompiler,PostgresIntrospector,DummyDriver,PostgresAdapter,SqliteQueryCompiler,SqliteIntrospector,SqliteAdapter,sql}from'kysely';import {jsonObjectFrom as jsonObjectFrom$1,jsonArrayFrom as jsonArrayFrom$1}from'kysely/helpers/postgres';import {jsonObjectFrom,jsonArrayFrom}from'kysely/helpers/sqlite';import Wf from'bcryptjs';import {v7}from'uuid';import {createClient}from'@supabase/supabase-js';try {
1
+ import {jsonStringify}from'@supabase/lite';import {Kysely,PostgresQueryCompiler,PostgresIntrospector,DummyDriver,PostgresAdapter,SqliteQueryCompiler,SqliteIntrospector,SqliteAdapter,sql}from'kysely';import {jsonObjectFrom as jsonObjectFrom$1,jsonArrayFrom as jsonArrayFrom$1}from'kysely/helpers/postgres';import {jsonObjectFrom,jsonArrayFrom}from'kysely/helpers/sqlite';import Od from'bcryptjs';import {v7}from'uuid';import {createClient}from'@supabase/supabase-js';import {Deparser,QuoteUtils}from'pgsql-deparser';import {DeparserContext}from'pgsql-deparser/visitors/base.js';import {SqlFormatter}from'pgsql-deparser/utils/sql-formatter.js';try {
2
2
  /**
3
3
  * Adding this to avoid warnings from node:sqlite being experimental
4
4
  */
@@ -9,83 +9,81 @@ import {jsonStringify}from'@supabase/lite';import {Kysely,PostgresQueryCompiler,
9
9
  };
10
10
  } catch {}
11
11
 
12
- var Lh=Object.create;var xa=Object.defineProperty;var kh=Object.getOwnPropertyDescriptor;var $h=Object.getOwnPropertyNames;var Ph=Object.getPrototypeOf,Dh=Object.prototype.hasOwnProperty;var jh=(s,e)=>()=>(s&&(e=s(s=0)),e);var Mn=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports),Fn=(s,e)=>{for(var r in e)xa(s,r,{get:e[r],enumerable:true});},xh=(s,e,r,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of $h(e))!Dh.call(s,n)&&n!==r&&xa(s,n,{get:()=>e[n],enumerable:!(t=kh(e,n))||t.enumerable});return s};var qn=(s,e,r)=>(r=s!=null?Lh(Ph(s)):{},xh(xa(r,"default",{value:s,enumerable:true}),s));var Tp=Mn((i_,Fo)=>{var Ii=process||{},Sp=Ii.argv||[],Ni=Ii.env||{},mE=!(Ni.NO_COLOR||Sp.includes("--no-color"))&&(!!Ni.FORCE_COLOR||Sp.includes("--color")||Ii.platform==="win32"||(Ii.stdout||{}).isTTY&&Ni.TERM!=="dumb"||!!Ni.CI),hE=(s,e,r=s)=>t=>{let n=""+t,i=n.indexOf(e,s.length);return ~i?s+dE(n,e,r,i)+e:s+n+e},dE=(s,e,r,t)=>{let n="",i=0;do n+=s.substring(i,t)+r,i=t+e.length,t=s.indexOf(e,i);while(~t);return n+s.substring(i)},bp=(s=mE)=>{let e=s?hE:()=>String;return {isColorSupported:s,reset:e("\x1B[0m","\x1B[0m"),bold:e("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:e("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:e("\x1B[3m","\x1B[23m"),underline:e("\x1B[4m","\x1B[24m"),inverse:e("\x1B[7m","\x1B[27m"),hidden:e("\x1B[8m","\x1B[28m"),strikethrough:e("\x1B[9m","\x1B[29m"),black:e("\x1B[30m","\x1B[39m"),red:e("\x1B[31m","\x1B[39m"),green:e("\x1B[32m","\x1B[39m"),yellow:e("\x1B[33m","\x1B[39m"),blue:e("\x1B[34m","\x1B[39m"),magenta:e("\x1B[35m","\x1B[39m"),cyan:e("\x1B[36m","\x1B[39m"),white:e("\x1B[37m","\x1B[39m"),gray:e("\x1B[90m","\x1B[39m"),bgBlack:e("\x1B[40m","\x1B[49m"),bgRed:e("\x1B[41m","\x1B[49m"),bgGreen:e("\x1B[42m","\x1B[49m"),bgYellow:e("\x1B[43m","\x1B[49m"),bgBlue:e("\x1B[44m","\x1B[49m"),bgMagenta:e("\x1B[45m","\x1B[49m"),bgCyan:e("\x1B[46m","\x1B[49m"),bgWhite:e("\x1B[47m","\x1B[49m"),blackBright:e("\x1B[90m","\x1B[39m"),redBright:e("\x1B[91m","\x1B[39m"),greenBright:e("\x1B[92m","\x1B[39m"),yellowBright:e("\x1B[93m","\x1B[39m"),blueBright:e("\x1B[94m","\x1B[39m"),magentaBright:e("\x1B[95m","\x1B[39m"),cyanBright:e("\x1B[96m","\x1B[39m"),whiteBright:e("\x1B[97m","\x1B[39m"),bgBlackBright:e("\x1B[100m","\x1B[49m"),bgRedBright:e("\x1B[101m","\x1B[49m"),bgGreenBright:e("\x1B[102m","\x1B[49m"),bgYellowBright:e("\x1B[103m","\x1B[49m"),bgBlueBright:e("\x1B[104m","\x1B[49m"),bgMagentaBright:e("\x1B[105m","\x1B[49m"),bgCyanBright:e("\x1B[106m","\x1B[49m"),bgWhiteBright:e("\x1B[107m","\x1B[49m")}};Fo.exports=bp();Fo.exports.createColors=bp;});var Rf={};Fn(Rf,{AwsClient:()=>yl,AwsV4Signer:()=>Qi});async function Hs(s,e){let r=await crypto.subtle.importKey("raw",typeof s=="string"?gl.encode(s):s,{name:"HMAC",hash:{name:"SHA-256"}},false,["sign"]);return crypto.subtle.sign("HMAC",r,gl.encode(e))}async function wf(s){return crypto.subtle.digest("SHA-256",typeof s=="string"?gl.encode(s):s)}function dl(s){let e=new Uint8Array(s),r="";for(let t=0;t<e.length;t++){let n=e[t];r+=Cf[n>>>4&15],r+=Cf[n&15];}return r}function Af(s){return s.replace(/[!'()*]/g,e=>"%"+e.charCodeAt(0).toString(16).toUpperCase())}function sS(s,e){let{hostname:r,pathname:t}=s;if(r.endsWith(".on.aws")){let o=r.match(/^[^.]{1,63}\.lambda-url\.([^.]{1,63})\.on\.aws$/);return o!=null?["lambda",o[1]||""]:["",""]}if(r.endsWith(".r2.cloudflarestorage.com"))return ["s3","auto"];if(r.endsWith(".backblazeb2.com")){let o=r.match(/^(?:[^.]{1,63}\.)?s3\.([^.]{1,63})\.backblazeb2\.com$/);return o!=null?["s3",o[1]||""]:["",""]}let n=r.replace("dualstack.","").match(/([^.]{1,63})\.(?:([^.]{0,63})\.)?amazonaws\.com(?:\.cn)?$/),i=n&&n[1]||"",a=n&&n[2];if(a==="us-gov")a="us-gov-west-1";else if(a==="s3"||a==="s3-accelerate")a="us-east-1",i="s3";else if(i==="iot")r.startsWith("iot.")?i="execute-api":r.startsWith("data.jobs.iot.")?i="iot-jobs-data":i=t==="/mqtt"?"iotdevicegateway":"iotdata";else if(i==="autoscaling"){let o=(e.get("X-Amz-Target")||"").split(".")[0];o==="AnyScaleFrontendService"?i="application-autoscaling":o==="AnyScaleScalingPlannerFrontendService"&&(i="autoscaling-plans");}else a==null&&i.startsWith("s3-")?(a=i.slice(3).replace(/^fips-|^external-1/,""),i="s3"):i.endsWith("-fips")?i=i.slice(0,-5):a&&/-\d$/.test(i)&&!/-\d$/.test(a)&&([i,a]=[a,i]);return [tS[i]||i,a||""]}var gl,tS,rS,yl,Qi,Cf,_f=jh(()=>{gl=new TextEncoder,tS={appstream2:"appstream",cloudhsmv2:"cloudhsm",email:"ses",marketplace:"aws-marketplace",mobile:"AWSMobileHubService",pinpoint:"mobiletargeting",queue:"sqs","git-codecommit":"codecommit","mturk-requester-sandbox":"mturk-requester","personalize-runtime":"personalize"},rS=new Set(["authorization","content-type","content-length","user-agent","presigned-expires","expect","x-amzn-trace-id","range","connection"]),yl=class{constructor({accessKeyId:e,secretAccessKey:r,sessionToken:t,service:n,region:i,cache:a,retries:o,initRetryMs:l}){if(e==null)throw new TypeError("accessKeyId is a required option");if(r==null)throw new TypeError("secretAccessKey is a required option");this.accessKeyId=e,this.secretAccessKey=r,this.sessionToken=t,this.service=n,this.region=i,this.cache=a||new Map,this.retries=o??10,this.initRetryMs=l||50;}async sign(e,r){if(e instanceof Request){let{method:i,url:a,headers:o,body:l}=e;r=Object.assign({method:i,url:a,headers:o},r),r.body==null&&o.has("Content-Type")&&(r.body=l!=null&&o.has("X-Amz-Content-Sha256")?l:await e.clone().arrayBuffer()),e=a;}let t=new Qi(Object.assign({url:e.toString()},r,this,r&&r.aws)),n=Object.assign({},r,await t.sign());delete n.aws;try{return new Request(n.url.toString(),n)}catch(i){if(i instanceof TypeError)return new Request(n.url.toString(),Object.assign({duplex:"half"},n));throw i}}async fetch(e,r){for(let t=0;t<=this.retries;t++){let n=fetch(await this.sign(e,r));if(t===this.retries)return n;let i=await n;if(i.status<500&&i.status!==429)return i;await new Promise(a=>setTimeout(a,Math.random()*this.initRetryMs*Math.pow(2,t)));}throw new Error("An unknown error occurred, ensure retries is not negative")}},Qi=class{constructor({method:e,url:r,headers:t,body:n,accessKeyId:i,secretAccessKey:a,sessionToken:o,service:l,region:u,cache:p,datetime:c,signQuery:f,appendSessionToken:m,allHeaders:d,singleEncode:g}){if(r==null)throw new TypeError("url is a required option");if(i==null)throw new TypeError("accessKeyId is a required option");if(a==null)throw new TypeError("secretAccessKey is a required option");this.method=e||(n?"POST":"GET"),this.url=new URL(r),this.headers=new Headers(t||{}),this.body=n,this.accessKeyId=i,this.secretAccessKey=a,this.sessionToken=o;let b,y;(!l||!u)&&([b,y]=sS(this.url,this.headers)),this.service=l||b||"",this.region=u||y||"us-east-1",this.cache=p||new Map,this.datetime=c||new Date().toISOString().replace(/[:-]|\.\d{3}/g,""),this.signQuery=f,this.appendSessionToken=m||this.service==="iotdevicegateway",this.headers.delete("Host"),this.service==="s3"&&!this.signQuery&&!this.headers.has("X-Amz-Content-Sha256")&&this.headers.set("X-Amz-Content-Sha256","UNSIGNED-PAYLOAD");let T=this.signQuery?this.url.searchParams:this.headers;if(T.set("X-Amz-Date",this.datetime),this.sessionToken&&!this.appendSessionToken&&T.set("X-Amz-Security-Token",this.sessionToken),this.signableHeaders=["host",...this.headers.keys()].filter(w=>d||!rS.has(w)).sort(),this.signedHeaders=this.signableHeaders.join(";"),this.canonicalHeaders=this.signableHeaders.map(w=>w+":"+(w==="host"?this.url.host:(this.headers.get(w)||"").replace(/\s+/g," "))).join(`
13
- `),this.credentialString=[this.datetime.slice(0,8),this.region,this.service,"aws4_request"].join("/"),this.signQuery&&(this.service==="s3"&&!T.has("X-Amz-Expires")&&T.set("X-Amz-Expires","86400"),T.set("X-Amz-Algorithm","AWS4-HMAC-SHA256"),T.set("X-Amz-Credential",this.accessKeyId+"/"+this.credentialString),T.set("X-Amz-SignedHeaders",this.signedHeaders)),this.service==="s3")try{this.encodedPath=decodeURIComponent(this.url.pathname.replace(/\+/g," "));}catch{this.encodedPath=this.url.pathname;}else this.encodedPath=this.url.pathname.replace(/\/+/g,"/");g||(this.encodedPath=encodeURIComponent(this.encodedPath).replace(/%2F/g,"/")),this.encodedPath=Af(this.encodedPath);let C=new Set;this.encodedSearch=[...this.url.searchParams].filter(([w])=>{if(!w)return false;if(this.service==="s3"){if(C.has(w))return false;C.add(w);}return true}).map(w=>w.map(A=>Af(encodeURIComponent(A)))).sort(([w,A],[v,R])=>w<v?-1:w>v?1:A<R?-1:A>R?1:0).map(w=>w.join("=")).join("&");}async sign(){return this.signQuery?(this.url.searchParams.set("X-Amz-Signature",await this.signature()),this.sessionToken&&this.appendSessionToken&&this.url.searchParams.set("X-Amz-Security-Token",this.sessionToken)):this.headers.set("Authorization",await this.authHeader()),{method:this.method,url:this.url,headers:this.headers,body:this.body}}async authHeader(){return ["AWS4-HMAC-SHA256 Credential="+this.accessKeyId+"/"+this.credentialString,"SignedHeaders="+this.signedHeaders,"Signature="+await this.signature()].join(", ")}async signature(){let e=this.datetime.slice(0,8),r=[this.secretAccessKey,e,this.region,this.service].join(),t=this.cache.get(r);if(!t){let n=await Hs("AWS4"+this.secretAccessKey,e),i=await Hs(n,this.region),a=await Hs(i,this.service);t=await Hs(a,"aws4_request"),this.cache.set(r,t);}return dl(await Hs(t,await this.stringToSign()))}async stringToSign(){return ["AWS4-HMAC-SHA256",this.datetime,this.credentialString,dl(await wf(await this.canonicalString()))].join(`
12
+ var fm=Object.create;var To=Object.defineProperty;var dm=Object.getOwnPropertyDescriptor;var pm=Object.getOwnPropertyNames;var mm=Object.getPrototypeOf,hm=Object.prototype.hasOwnProperty;var gm=(t,e)=>()=>(t&&(e=t(t=0)),e);var uc=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Is=(t,e)=>{for(var r in e)To(t,r,{get:e[r],enumerable:true});},ym=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of pm(e))!hm.call(t,s)&&s!==r&&To(t,s,{get:()=>e[s],enumerable:!(n=dm(e,s))||n.enumerable});return t};var fc=(t,e,r)=>(r=t!=null?fm(mm(t)):{},ym(To(r,"default",{value:t,enumerable:true}),t));var cf=uc((FC,$a)=>{var Ei=process||{},af=Ei.argv||[],Si=Ei.env||{},zy=!(Si.NO_COLOR||af.includes("--no-color"))&&(!!Si.FORCE_COLOR||af.includes("--color")||Ei.platform==="win32"||(Ei.stdout||{}).isTTY&&Si.TERM!=="dumb"||!!Si.CI),Gy=(t,e,r=t)=>n=>{let s=""+n,i=s.indexOf(e,t.length);return ~i?t+Vy(s,e,r,i)+e:t+s+e},Vy=(t,e,r,n)=>{let s="",i=0;do s+=t.substring(i,n)+r,i=n+e.length,n=t.indexOf(e,i);while(~n);return s+t.substring(i)},lf=(t=zy)=>{let e=t?Gy:()=>String;return {isColorSupported:t,reset:e("\x1B[0m","\x1B[0m"),bold:e("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:e("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:e("\x1B[3m","\x1B[23m"),underline:e("\x1B[4m","\x1B[24m"),inverse:e("\x1B[7m","\x1B[27m"),hidden:e("\x1B[8m","\x1B[28m"),strikethrough:e("\x1B[9m","\x1B[29m"),black:e("\x1B[30m","\x1B[39m"),red:e("\x1B[31m","\x1B[39m"),green:e("\x1B[32m","\x1B[39m"),yellow:e("\x1B[33m","\x1B[39m"),blue:e("\x1B[34m","\x1B[39m"),magenta:e("\x1B[35m","\x1B[39m"),cyan:e("\x1B[36m","\x1B[39m"),white:e("\x1B[37m","\x1B[39m"),gray:e("\x1B[90m","\x1B[39m"),bgBlack:e("\x1B[40m","\x1B[49m"),bgRed:e("\x1B[41m","\x1B[49m"),bgGreen:e("\x1B[42m","\x1B[49m"),bgYellow:e("\x1B[43m","\x1B[49m"),bgBlue:e("\x1B[44m","\x1B[49m"),bgMagenta:e("\x1B[45m","\x1B[49m"),bgCyan:e("\x1B[46m","\x1B[49m"),bgWhite:e("\x1B[47m","\x1B[49m"),blackBright:e("\x1B[90m","\x1B[39m"),redBright:e("\x1B[91m","\x1B[39m"),greenBright:e("\x1B[92m","\x1B[39m"),yellowBright:e("\x1B[93m","\x1B[39m"),blueBright:e("\x1B[94m","\x1B[39m"),magentaBright:e("\x1B[95m","\x1B[39m"),cyanBright:e("\x1B[96m","\x1B[39m"),whiteBright:e("\x1B[97m","\x1B[39m"),bgBlackBright:e("\x1B[100m","\x1B[49m"),bgRedBright:e("\x1B[101m","\x1B[49m"),bgGreenBright:e("\x1B[102m","\x1B[49m"),bgYellowBright:e("\x1B[103m","\x1B[49m"),bgBlueBright:e("\x1B[104m","\x1B[49m"),bgMagentaBright:e("\x1B[105m","\x1B[49m"),bgCyanBright:e("\x1B[106m","\x1B[49m"),bgWhiteBright:e("\x1B[107m","\x1B[49m")}};$a.exports=lf();$a.exports.createColors=lf;});var dd={};Is(dd,{AwsClient:()=>ol,AwsV4Signer:()=>Ji});async function Mn(t,e){let r=await crypto.subtle.importKey("raw",typeof t=="string"?il.encode(t):t,{name:"HMAC",hash:{name:"SHA-256"}},false,["sign"]);return crypto.subtle.sign("HMAC",r,il.encode(e))}async function cd(t){return crypto.subtle.digest("SHA-256",typeof t=="string"?il.encode(t):t)}function sl(t){let e=new Uint8Array(t),r="";for(let n=0;n<e.length;n++){let s=e[n];r+=ud[s>>>4&15],r+=ud[s&15];}return r}function fd(t){return t.replace(/[!'()*]/g,e=>"%"+e.charCodeAt(0).toString(16).toUpperCase())}function Lb(t,e){let{hostname:r,pathname:n}=t;if(r.endsWith(".on.aws")){let a=r.match(/^[^.]{1,63}\.lambda-url\.([^.]{1,63})\.on\.aws$/);return a!=null?["lambda",a[1]||""]:["",""]}if(r.endsWith(".r2.cloudflarestorage.com"))return ["s3","auto"];if(r.endsWith(".backblazeb2.com")){let a=r.match(/^(?:[^.]{1,63}\.)?s3\.([^.]{1,63})\.backblazeb2\.com$/);return a!=null?["s3",a[1]||""]:["",""]}let s=r.replace("dualstack.","").match(/([^.]{1,63})\.(?:([^.]{0,63})\.)?amazonaws\.com(?:\.cn)?$/),i=s&&s[1]||"",o=s&&s[2];if(o==="us-gov")o="us-gov-west-1";else if(o==="s3"||o==="s3-accelerate")o="us-east-1",i="s3";else if(i==="iot")r.startsWith("iot.")?i="execute-api":r.startsWith("data.jobs.iot.")?i="iot-jobs-data":i=n==="/mqtt"?"iotdevicegateway":"iotdata";else if(i==="autoscaling"){let a=(e.get("X-Amz-Target")||"").split(".")[0];a==="AnyScaleFrontendService"?i="application-autoscaling":a==="AnyScaleScalingPlannerFrontendService"&&(i="autoscaling-plans");}else o==null&&i.startsWith("s3-")?(o=i.slice(3).replace(/^fips-|^external-1/,""),i="s3"):i.endsWith("-fips")?i=i.slice(0,-5):o&&/-\d$/.test(i)&&!/-\d$/.test(o)&&([i,o]=[o,i]);return [jb[i]||i,o||""]}var il,jb,Db,ol,Ji,ud,pd=gm(()=>{il=new TextEncoder,jb={appstream2:"appstream",cloudhsmv2:"cloudhsm",email:"ses",marketplace:"aws-marketplace",mobile:"AWSMobileHubService",pinpoint:"mobiletargeting",queue:"sqs","git-codecommit":"codecommit","mturk-requester-sandbox":"mturk-requester","personalize-runtime":"personalize"},Db=new Set(["authorization","content-type","content-length","user-agent","presigned-expires","expect","x-amzn-trace-id","range","connection"]),ol=class{constructor({accessKeyId:e,secretAccessKey:r,sessionToken:n,service:s,region:i,cache:o,retries:a,initRetryMs:l}){if(e==null)throw new TypeError("accessKeyId is a required option");if(r==null)throw new TypeError("secretAccessKey is a required option");this.accessKeyId=e,this.secretAccessKey=r,this.sessionToken=n,this.service=s,this.region=i,this.cache=o||new Map,this.retries=a??10,this.initRetryMs=l||50;}async sign(e,r){if(e instanceof Request){let{method:i,url:o,headers:a,body:l}=e;r=Object.assign({method:i,url:o,headers:a},r),r.body==null&&a.has("Content-Type")&&(r.body=l!=null&&a.has("X-Amz-Content-Sha256")?l:await e.clone().arrayBuffer()),e=o;}let n=new Ji(Object.assign({url:e.toString()},r,this,r&&r.aws)),s=Object.assign({},r,await n.sign());delete s.aws;try{return new Request(s.url.toString(),s)}catch(i){if(i instanceof TypeError)return new Request(s.url.toString(),Object.assign({duplex:"half"},s));throw i}}async fetch(e,r){for(let n=0;n<=this.retries;n++){let s=fetch(await this.sign(e,r));if(n===this.retries)return s;let i=await s;if(i.status<500&&i.status!==429)return i;await new Promise(o=>setTimeout(o,Math.random()*this.initRetryMs*Math.pow(2,n)));}throw new Error("An unknown error occurred, ensure retries is not negative")}},Ji=class{constructor({method:e,url:r,headers:n,body:s,accessKeyId:i,secretAccessKey:o,sessionToken:a,service:l,region:u,cache:f,datetime:c,signQuery:d,appendSessionToken:p,allHeaders:y,singleEncode:h}){if(r==null)throw new TypeError("url is a required option");if(i==null)throw new TypeError("accessKeyId is a required option");if(o==null)throw new TypeError("secretAccessKey is a required option");this.method=e||(s?"POST":"GET"),this.url=new URL(r),this.headers=new Headers(n||{}),this.body=s,this.accessKeyId=i,this.secretAccessKey=o,this.sessionToken=a;let b,m;(!l||!u)&&([b,m]=Lb(this.url,this.headers)),this.service=l||b||"",this.region=u||m||"us-east-1",this.cache=f||new Map,this.datetime=c||new Date().toISOString().replace(/[:-]|\.\d{3}/g,""),this.signQuery=d,this.appendSessionToken=p||this.service==="iotdevicegateway",this.headers.delete("Host"),this.service==="s3"&&!this.signQuery&&!this.headers.has("X-Amz-Content-Sha256")&&this.headers.set("X-Amz-Content-Sha256","UNSIGNED-PAYLOAD");let w=this.signQuery?this.url.searchParams:this.headers;if(w.set("X-Amz-Date",this.datetime),this.sessionToken&&!this.appendSessionToken&&w.set("X-Amz-Security-Token",this.sessionToken),this.signableHeaders=["host",...this.headers.keys()].filter(S=>y||!Db.has(S)).sort(),this.signedHeaders=this.signableHeaders.join(";"),this.canonicalHeaders=this.signableHeaders.map(S=>S+":"+(S==="host"?this.url.host:(this.headers.get(S)||"").replace(/\s+/g," "))).join(`
13
+ `),this.credentialString=[this.datetime.slice(0,8),this.region,this.service,"aws4_request"].join("/"),this.signQuery&&(this.service==="s3"&&!w.has("X-Amz-Expires")&&w.set("X-Amz-Expires","86400"),w.set("X-Amz-Algorithm","AWS4-HMAC-SHA256"),w.set("X-Amz-Credential",this.accessKeyId+"/"+this.credentialString),w.set("X-Amz-SignedHeaders",this.signedHeaders)),this.service==="s3")try{this.encodedPath=decodeURIComponent(this.url.pathname.replace(/\+/g," "));}catch{this.encodedPath=this.url.pathname;}else this.encodedPath=this.url.pathname.replace(/\/+/g,"/");h||(this.encodedPath=encodeURIComponent(this.encodedPath).replace(/%2F/g,"/")),this.encodedPath=fd(this.encodedPath);let _=new Set;this.encodedSearch=[...this.url.searchParams].filter(([S])=>{if(!S)return false;if(this.service==="s3"){if(_.has(S))return false;_.add(S);}return true}).map(S=>S.map(E=>fd(encodeURIComponent(E)))).sort(([S,E],[C,x])=>S<C?-1:S>C?1:E<x?-1:E>x?1:0).map(S=>S.join("=")).join("&");}async sign(){return this.signQuery?(this.url.searchParams.set("X-Amz-Signature",await this.signature()),this.sessionToken&&this.appendSessionToken&&this.url.searchParams.set("X-Amz-Security-Token",this.sessionToken)):this.headers.set("Authorization",await this.authHeader()),{method:this.method,url:this.url,headers:this.headers,body:this.body}}async authHeader(){return ["AWS4-HMAC-SHA256 Credential="+this.accessKeyId+"/"+this.credentialString,"SignedHeaders="+this.signedHeaders,"Signature="+await this.signature()].join(", ")}async signature(){let e=this.datetime.slice(0,8),r=[this.secretAccessKey,e,this.region,this.service].join(),n=this.cache.get(r);if(!n){let s=await Mn("AWS4"+this.secretAccessKey,e),i=await Mn(s,this.region),o=await Mn(i,this.service);n=await Mn(o,"aws4_request"),this.cache.set(r,n);}return sl(await Mn(n,await this.stringToSign()))}async stringToSign(){return ["AWS4-HMAC-SHA256",this.datetime,this.credentialString,sl(await cd(await this.canonicalString()))].join(`
14
14
  `)}async canonicalString(){return [this.method.toUpperCase(),this.encodedPath,this.encodedSearch,this.canonicalHeaders+`
15
15
  `,this.signedHeaders,await this.hexBodyHash()].join(`
16
- `)}async hexBodyHash(){let e=this.headers.get("X-Amz-Content-Sha256")||(this.service==="s3"&&this.signQuery?"UNSIGNED-PAYLOAD":null);if(e==null){if(this.body&&typeof this.body!="string"&&!("byteLength"in this.body))throw new Error("body must be a string, ArrayBuffer or ArrayBufferView, unless you include the X-Amz-Content-Sha256 header");e=dl(await wf(this.body||""));}return e}};Cf=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];});var Xm=Mn((Jk,Rb)=>{Rb.exports={"dev/vite/main.tsx":{file:"assets/main-BsWx0q9l.js",name:"main",src:"dev/vite/main.tsx",isEntry:true,css:["assets/main-DexXgo9R.css"]}};});var Su=Mn(_a=>{Object.defineProperty(_a,"__esModule",{value:true});_a.SqlFormatter=void 0;var Eu=class{newlineChar;tabChar;prettyMode;constructor(e=`
17
- `,r=" ",t=true){this.newlineChar=e,this.tabChar=r,this.prettyMode=t;}format(e,r=" "){return e.filter(t=>t!=null&&t!=="").join(r)}indent(e,r=1){if(!this.prettyMode)return e;let t=this.tabChar.repeat(r);return e.split(this.newlineChar).map(n=>n.trim()?t+n:n).join(this.newlineChar)}parens(e){return `(${e})`}newline(){return this.newlineChar}tab(){return this.tabChar}isPretty(){return this.prettyMode}};_a.SqlFormatter=Eu;});var dh=Mn(as=>{Object.defineProperty(as,"__esModule",{value:true});as.BaseVisitor=as.DeparserContext=void 0;var Fb=Su(),bu=class s{indentLevel;prettyMode;isStringLiteral;parentNodeTypes;formatter;select;from;group;sort;insertColumns;update;bool;isColumnConstraint;isDomainConstraint;alterColumnOptions;alterTableOptions;isEnumValue;objtype;subtype;constructor({indentLevel:e=0,prettyMode:r=true,isStringLiteral:t,parentNodeTypes:n=[],formatter:i,select:a,from:o,group:l,sort:u,insertColumns:p,update:c,bool:f,isColumnConstraint:m,isDomainConstraint:d,alterColumnOptions:g,alterTableOptions:b,isEnumValue:y,objtype:T,subtype:C,...w}={}){this.indentLevel=e,this.prettyMode=r,this.isStringLiteral=t,this.parentNodeTypes=n,this.formatter=i||new Fb.SqlFormatter(`
18
- `," ",r),this.select=a,this.from=o,this.group=l,this.sort=u,this.insertColumns=p,this.update=c,this.bool=f,this.isColumnConstraint=m,this.isDomainConstraint=d,this.alterColumnOptions=g,this.alterTableOptions=b,this.isEnumValue=y,this.objtype=T,this.subtype=C,Object.assign(this,w);}spawn(e,r={}){return new s({indentLevel:this.indentLevel,prettyMode:this.prettyMode,isStringLiteral:this.isStringLiteral,parentNodeTypes:[...this.parentNodeTypes,e],formatter:this.formatter,select:this.select,from:this.from,group:this.group,sort:this.sort,insertColumns:this.insertColumns,update:this.update,bool:this.bool,isColumnConstraint:this.isColumnConstraint,isDomainConstraint:this.isDomainConstraint,alterColumnOptions:this.alterColumnOptions,alterTableOptions:this.alterTableOptions,isEnumValue:this.isEnumValue,objtype:this.objtype,subtype:this.subtype,...r})}indent(e,r){if(!this.prettyMode)return e;let t=r!==void 0?r:this.indentLevel+1;return this.formatter.indent(e,t)}newline(){return this.formatter.newline()}parens(e){return this.formatter.parens(e)}format(e,r){return this.formatter.format(e,r)}isPretty(){return this.formatter.isPretty()}};as.DeparserContext=bu;var Tu=class{getNodeType(e){return Object.keys(e)[0]}getNodeData(e){let r=this.getNodeType(e);return e[r]}formatList(e,r=", ",t="",n){return !e||e.length===0?"":e.map(i=>`${t}${n(i)}`).join(r)}formatParts(e,r=" "){return e.filter(t=>t!=null&&t!=="").join(r)}formatParens(e){return `(${e})`}formatIndent(e,r=1){return e}};as.BaseVisitor=Tu;});var Ma=(s=[],e="")=>"/"+[e,...s.map(r=>String(r).replace(/\./g,"/"))].filter(Boolean).join("/"),Ou=s=>s.split("/").slice(1);function Uh(s,e,r=void 0){let t=typeof e=="string"?Ou(e):Ma(e);return Hn(s,t,r)}function Hn(s,e,r=void 0){let t=typeof e=="string"?e.split(/[.\[\]\"]+/).filter(n=>n):e;if(t.length===0)return s;try{let[n,...i]=t;return !n||!(n in s)?r:Hn(s[n],i,r)}catch{if(typeof r<"u")return r;throw new Error(`Invalid path: ${t.join(".")}`)}}var X=(s={},e,r,t)=>({valid:false,errors:[...s.errors??[],{keywordLocation:Ma([...s.keywordPath??[],e]),instanceLocation:Ma(s.instancePath),error:typeof r=="string"?r:`Invalid value for ${e}`,data:t}]}),N=()=>({valid:true,errors:[]}),Ir=(s,e,r)=>{let t=Array.isArray(e)?e:[e],n=r?Array.isArray(r)?r:[r]:[];return {...s,keywordPath:[...s.keywordPath??[],...t],instancePath:n?[...s.instancePath??[],...n]:s.instancePath}},Wn=(s={})=>({...s,errors:[]}),rr=class extends Error{constructor(s){super(`Expected ${s}`);}},Bh=class extends Error{constructor(s,e){super(`${s??"Invalid raw schema"}: ${JSON.stringify(e)}`),this.schema=e;}},Mh=class extends Error{constructor(s,e){super(`${s}, got: 'type "${typeof e}": ${JSON.stringify(e)}'`),this.value=e;}},Ce=Symbol.for("jsonv-ts:schema");function Fh(s){return s===null}function pe(s){return !Array.isArray(s)&&typeof s=="object"&&s!==null}function qh(s){return Object.prototype.toString.call(s)==="[object Object]"}function it(s){return typeof s=="string"}function Et(s){return typeof s=="number"}function Jh(s){return typeof s=="number"&&Number.isInteger(s)}function Ja(s){return typeof s=="boolean"}function qt(s){return Array.isArray(s)}function Wh(s){return typeof s!="boolean"}function Hh(s){return s!==void 0&&Wh(s)&&"type"in s}function Ae(s){return s!==void 0&&pe(s)&&Ce in s}function Gh(s){return Ae(s)&&typeof s.toJSON()=="boolean"}function Vh(s,e,r){if(!s)throw new Mh(e,r)}function Nu(s){return it(s)?s.normalize("NFC"):s}function fs(s,e){let r=typeof s;if(r!==typeof e)return false;if(Array.isArray(s)){if(!Array.isArray(e))return false;let t=s.length;if(t!==e.length)return false;for(let n=0;n<t;n++)if(!fs(s[n],e[n]))return false;return true}if(r==="object"){if(!s||!e)return s===e;let t=Object.keys(s),n=Object.keys(e);if(t.length!==n.length)return false;for(let i of t)if(!fs(s[i],e[i]))return false;return true}return s===e}function Kh(s,e){return e.reduce((r,t)=>(t in s&&(r[t]=s[t]),r),{})}function Iu(s){try{return structuredClone(s)}catch{return s}}var Wa=class{constructor(s){this.root=s,this.cache=new Map;}cache;hasRef(s,e){return e!==void 0&&"$ref"in s&&it(s.$ref)}resolve(s){let e=this.cache.get(s);if(!e){if(e=Uh(this.root,s),!Ae(e))throw new Error(`ref not found: ${s}`);if("$ref"in e&&e.$ref===s)throw new Error(`ref loop: ${s}`);this.cache.set(s,e);}return e}};function Yh(s,e,r={}){let t=e;try{t=structuredClone(e);}catch{t=JSON.parse(JSON.stringify(e));}let n={resolver:r.resolver||new Wa(s),depth:r.depth||0,dropUnknown:r.dropUnknown??false};return n.resolver.hasRef(s,t)?n.resolver.resolve(s.$ref).coerce(t,{...n,depth:n.depth+1}):t}var zh=({type:s},e,r={})=>{if(s===void 0||e===void 0)return N();let t,n={string:it,number:Et,integer:Jh,object:pe,array:qt,boolean:Ja,null:Fh};if(Array.isArray(s)){for(let i of s){if(!(i in n))throw new rr(`Unknown type: ${i}`);if(n[i](e))return N()}t=`Expected one of: ${s.join(", ")}`;}else {if(!(s in n))throw new rr(`Unknown type: ${s}`);n[s](e)||(t=`Expected ${s}`);}return t?X(r,"type",t,e):N()},Xh=({const:s},e,r={})=>fs(s,e)?N():X(r,"const",`Expected const: ${s}`,e),Qh=({enum:s=[]},e,r={})=>s.some(t=>fs(t,e))?N():X(r,"enum",`Expected enum: ${JSON.stringify(s)}`,e);function Gn(s,e,r={}){return s.map(t=>t.validate(e,Wn(r)).valid?t:void 0).filter(Boolean)}var Zh=({anyOf:s=[]},e,r={})=>Gn(s,e,r).length>0?N():X(r,"anyOf","Expected at least one to match",e),ed=({oneOf:s=[]},e,r={})=>Gn(s,e).length===1?N():X(r,"oneOf","Expected exactly one to match",e),td=({allOf:s=[]},e,r={})=>Gn(s,e,r).length===s.length?N():X(r,"allOf","Expected all to match",e),rd=({not:s},e,r={})=>e===void 0?N():Ae(s)&&s.validate(e,r).valid?X(r,"not","Expected not to match",e):N(),sd=({if:s,then:e,else:r},t,n={})=>{if(s&&(e||r)){if(s.validate(t,Wn(n)).valid)return e?e.validate(t,Wn(n)):N();if(r)return r.validate(t,Wn(n))}return N()},nd=({pattern:s=""},e,r={})=>{if(!it(e))return N();if(s instanceof RegExp){if(s.test(e))return N()}else if(new RegExp(s,"u").test(e))return N();return X(r,"pattern",`Expected string matching pattern ${s}`,e)},id=({minLength:s=0},e,r={})=>it(e)?[...Nu(e)].length>=s?N():X(r,"minLength",`Expected string with minimum length of ${s}`,e):N(),ad=({maxLength:s=0},e,r={})=>it(e)?[...Nu(e)].length<=s?N():X(r,"maxLength",`Expected string with maximum length of ${s}`,e):N(),od=({multipleOf:s=0},e,r={})=>{if(!Et(e))return N();if(!(Number.isFinite(e)&&Number.isFinite(s))||s<=0)throw new rr("number");let t=e/s,n=Number.EPSILON*Math.max(1,Math.abs(t));return Math.abs(t-Math.round(t))<=n?N():X(r,"multipleOf",`Expected number being a multiple of ${s}`,e)},ld=({maximum:s=0},e,r={})=>!Et(e)||e<=s?N():X(r,"maximum",`Expected number less than or equal to ${s}`,e),ud=({exclusiveMaximum:s=0},e,r={})=>!Et(e)||e<s?N():X(r,"exclusiveMaximum",`Expected number less than ${s}`,e),cd=({minimum:s=0},e,r={})=>!Et(e)||e>=s?N():X(r,"minimum",`Expected number greater than or equal to ${s}`,e),pd=({exclusiveMinimum:s=0},e,r={})=>!Et(e)||e>s?N():X(r,"exclusiveMinimum",`Expected number greater than ${s}`,e),fd=({properties:s={}},e,r={})=>{if(!pe(e))return N();for(let[t,n]of Object.entries(e)){let i=s[t];if(!Ae(i))continue;let a=i.validate(n,Ir(r,["properties",t],t));if(!a.valid)return a}return N()},md=({properties:s={},additionalProperties:e,patternProperties:r},t,n={})=>{if(!pe(t))return N();if(!Ae(e))throw new rr("additionalProperties must be a boolean or a managed schema");let i=Object.keys(s),a=pe(r)?Object.keys(t).filter(l=>Object.keys(r).some(u=>new RegExp(u).test(l))):[],o=Object.keys(t).filter(l=>!i.includes(l)&&!a.includes(l));if(o.length>0){if(Gh(e)){if(e.toJSON()===true)return N();let l=o.reduce((u,p)=>(u[p]=t[p],u),{});return X(n,"additionalProperties","Additional properties are not allowed",l)}else if(Ae(e))for(let l of o){let u=e.validate(t[l],Ir(n,["additionalProperties"],l));if(!u.valid)return u}}return N()},hd=({dependentRequired:s},e,r={})=>{if(!pe(e))return N();let t=Object.keys(e).filter(n=>typeof e[n]!="function");if(pe(s)){for(let[n,i]of Object.entries(s))if(t.includes(n)){for(let a of i)if(!t.includes(a))return X(r,"dependentRequired",`Expected dependent required property ${a}`,e)}}return N()},dd=({required:s=[]},e,r={})=>{if(!pe(e))return N();let t=Object.keys(e).filter(n=>typeof e[n]!="function");return s.every(n=>t.includes(n))?N():X(r,"required",`Expected object with required properties ${s.join(", ")}`,e)},gd=({dependentSchemas:s},e,r={})=>{if(!pe(e))return N();let t=Object.keys(e).filter(n=>typeof e[n]!="function");if(pe(s)){for(let[n,i]of Object.entries(s))if(t.includes(n)){let a=i.validate(e,r);if(!a.valid)return a}}return N()},yd=({minProperties:s=0},e,r={})=>pe(e)?Object.keys(e).length>=s?N():X(r,"minProperties",`Expected object with at least ${s} properties`,e):N(),Ed=({maxProperties:s=0},e,r={})=>!pe(e)||Object.keys(e).length<=s?N():X(r,"maxProperties",`Expected object with at most ${s} properties`,e),Sd=({patternProperties:s={}},e,r={})=>{if(!pe(e))return N();if(!pe(s))throw new rr("patternProperties must be an object");for(let[t,n]of Object.entries(e))for(let[i,a]of Object.entries(s))if(new RegExp(i,"u").test(t)){let o=a.validate(n,Ir(r,["patternProperties"],t));if(!o.valid)return o}return N()},bd=({propertyNames:s},e,r={})=>{if(!pe(e)||s===void 0)return N();if(!Ae(s))throw new rr("propertyNames must be a managed schema");for(let t of Object.keys(e)){let n=s.validate(t,Ir(r,["propertyNames"],t));if(!n.valid)return n}return N()},Td=({items:s,prefixItems:e=[]},r,t={})=>{if(!qt(r)||s===void 0)return N();if(!Ae(s))throw new rr("items must be a managed schema");for(let[n,i]of r.slice(e.length).entries()){let a=s.validate(i,Ir(t,["items"],String(n)));if(!a.valid)return a}return N()},wd=({minItems:s=0},e,r={})=>!qt(e)||e.length>=s?N():X(r,"minItems",`Expected array with at least ${s} items`,e),Cd=({maxItems:s=0},e,r={})=>!qt(e)||e.length<=s?N():X(r,"maxItems",`Expected array with at most ${s} items`,e),Ad=({uniqueItems:s=false},e,r={})=>{if(!qt(e)||!s)return N();for(let t=0;t<e.length;t++){let n=e[t];for(let i=0;i<e.length;i++){if(t===i)continue;let a=e[i];if(fs(n,a))return X(r,"uniqueItems",`Duplicated items at index ${t} and ${i}`,e)}}return N()},Rd=({contains:s,minContains:e,maxContains:r},t,n={})=>{if(!Ae(s))throw new Error("contains must be a managed schema");if(!qt(t))return N();let i=t.filter(a=>s.validate(a).valid).length;return i<(e??1)?X(n,e?"minContains":"contains",`Expected array to contain at least ${e??1}, but found ${i}`,t):r!==void 0&&i>r?X(n,"maxContains",`Expected array to contain at most ${r}, but found ${i}`,t):N()},_d=({prefixItems:s=[]},e,r={})=>{if(!qt(e))return N();for(let t=0;t<e.length;t++){let n=s[t]?.validate(e[t],Ir(r,String(t),String(t)));if(n&&n?.valid!==true)return n}return N()},Ru={email:s=>{if(s.length>318)return false;if(/^[a-z0-9!#$%&'*+/=?^_`{|}~-]{1,20}(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]{1,21}){0,2}@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,60}[a-z0-9])?){0,3}$/i.test(s))return true;if(!s.includes("@")||/(^\.|^"|\.@|\.\.)/.test(s))return false;let[e,r,...t]=s.split("@");return !e||!r||t.length!==0||e.length>64||r.length>253||!/^[a-z0-9.-]+$/i.test(r)||!/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+$/i.test(e)?false:r.split(".").every(n=>/^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$/i.test(n))},hostname:s=>s.length>(s.endsWith(".")?254:253)?false:/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*\.?$/i.test(s),date:s=>{if(s.length!==10)return false;if(s[5]==="0"&&s[6]==="2"){if(/^\d\d\d\d-02-(?:[012][1-8]|[12]0|[01]9)$/.test(s))return true;let e=s.match(/^(\d\d\d\d)-02-29$/);if(!e)return false;let r=Number(e[1]);return r%16===0||r%4===0&&r%25!==0}return s.endsWith("31")?/^\d\d\d\d-(?:0[13578]|1[02])-31$/.test(s):/^\d\d\d\d-(?:0[13-9]|1[012])-(?:[012][1-9]|[123]0)$/.test(s)},time:s=>{if(s.length>27||!/^(?:2[0-3]|[0-1]\d):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:z|[+-](?:2[0-3]|[0-1]\d)(?::?[0-5]\d)?)?$/i.test(s))return false;if(!/:60/.test(s))return true;let e=s.match(/([0-9.]+|[^0-9.])/g);if(!e)return false;let r=Number(e[0])*60+Number(e[2]);return e[5]==="+"?r+=1440-Number(e[6]||0)*60-Number(e[8]||0):e[5]==="-"&&(r+=Number(e[6]||0)*60+Number(e[8]||0)),r%1440===1439},"date-time":s=>{if(s.length>38)return false;let e=/^\d\d\d\d-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])[t\s](?:2[0-3]|[0-1]\d):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:z|[+-](?:2[0-3]|[0-1]\d)(?::?[0-5]\d)?)$/i,r=s[5]==="0"&&s[6]==="2";if(r&&s[8]==="3"||!e.test(s))return false;if(s[17]==="6"){let t=s.slice(11).match(/([0-9.]+|[^0-9.])/g);if(!t)return false;let n=Number(t[0])*60+Number(t[2]);if(t[5]==="+"?n+=1440-Number(t[6]||0)*60-Number(t[8]||0):t[5]==="-"&&(n+=Number(t[6]||0)*60+Number(t[8]||0)),n%1440!==1439)return false}if(r){if(/^\d\d\d\d-02-(?:[012][1-8]|[12]0|[01]9)/.test(s))return true;let t=s.match(/^(\d\d\d\d)-02-29/);if(!t)return false;let n=Number(t[1]??0);return n%16===0||n%4===0&&n%25!==0}return s[8]==="3"&&s[9]==="1"?/^\d\d\d\d-(?:0[13578]|1[02])-31/.test(s):/^\d\d\d\d-(?:0[13-9]|1[012])-(?:[012][1-9]|[123]0)/.test(s)},ipv4:s=>s.length<=15&&/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d\d?)$/.test(s),ipv6:s=>{if(s.length>45||s.length<2)return false;let e=0,r=0,t=0,n=false,i=false,a=0,o=true;for(let u=0;u<s.length;u++){let p=s.charCodeAt(u);if(u===1&&a===58&&p!==58)return false;if(p>=48&&p<=57){if(++t>4)return false}else if(p===46){if(e>6||r>=3||t===0||i)return false;r++,t=0;}else if(p===58){if(r>0||e>=7)return false;if(a===58){if(n)return false;n=true;}else u===0&&(o=false);e++,t=0,i=false;}else if(p>=97&&p<=102||p>=65&&p<=70){if(r>0||++t>4)return false;i=true;}else return false;a=p;}if(e<2||r>0&&(r!==3||t===0))return false;if(n&&s.length===2)return true;if(r>0&&!/(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}$/.test(s))return false;let l=r>0?6:7;return n?(o||t>0)&&e<l:e===l&&o&&t>0},uri:s=>/^[a-z][a-z0-9+\-.]*:(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|v[0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/?(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i.test(s),"uri-reference":s=>/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|v[0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/?(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?)?(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i.test(s),"uri-template":s=>/^(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2}|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i.test(s),"json-pointer":s=>/^(?:|\/(?:[^~]|~0|~1)*)$/.test(s),"relative-json-pointer":s=>/^(?:0|[1-9][0-9]*)(?:|#|\/(?:[^~]|~0|~1)*)$/.test(s),uuid:s=>/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(s),duration:s=>s.length>1&&s.length<80&&(/^P\d+([.,]\d+)?W$/.test(s)||/^P[\dYMDTHS]*(\d[.,]\d+)?[YMDHS]$/.test(s)&&/^P([.,\d]+Y)?([.,\d]+M)?([.,\d]+D)?(T([.,\d]+H)?([.,\d]+M)?([.,\d]+S)?)?$/.test(s)),regex:s=>{if(/[^\\]\\Z/.test(s))return false;try{return new RegExp(s,"u"),!0}catch{return false}},binary:()=>true,password:()=>true},vd=({format:s},e,r={})=>!it(e)||!s?N():Ru[s]?Ru[s](e)?N():X(r,"format",`Expected format: ${s}`,e):N();var Ua={type:zh,const:Xh,enum:Qh,allOf:td,anyOf:Zh,oneOf:ed,not:rd,minLength:id,maxLength:ad,pattern:nd,format:vd,minimum:cd,exclusiveMinimum:pd,maximum:ld,exclusiveMaximum:ud,multipleOf:od,required:dd,dependentRequired:hd,dependentSchemas:gd,minProperties:yd,maxProperties:Ed,propertyNames:bd,properties:fd,patternProperties:Sd,additionalProperties:md,minItems:wd,maxItems:Cd,uniqueItems:Ad,contains:Rd,prefixItems:_d,items:Td,if:sd};function Od(s,e,r={}){let t={keywordPath:r.keywordPath||[],instancePath:r.instancePath||[],coerce:r.coerce||false,errors:r.errors||[],shortCircuit:r.shortCircuit||false,ignoreUnsupported:r.ignoreUnsupported||false,resolver:r.resolver||s.getResolver?.()||new Wa(s),depth:r.depth?r.depth+1:0,skipClone:r.skipClone||false},n;if(r?.coerce&&s.coerce){let i=s.coerce(e,{resolver:t.resolver,depth:t.depth});n=t.skipClone?i:structuredClone(i);}else n=t.skipClone?e:structuredClone(e);if(r.ignoreUnsupported!==true){let i=["$defs"];for(let a of i)if(s[a])throw new Error(`${a} not implemented`)}if(t.resolver.hasRef(s,n)){let i=t.resolver.resolve(s.$ref).validate(n,{...t,errors:[]});i.valid||t.errors.push(...i.errors);}else {let i={keywordPath:t.keywordPath,instancePath:t.instancePath,coerce:t.coerce,errors:[],shortCircuit:t.shortCircuit,ignoreUnsupported:t.ignoreUnsupported,resolver:t.resolver,depth:t.depth};for(let a in s)if(a==="type"&&s.type!==void 0){if(n!==void 0){let o=Ua[a];if(o){i.errors=[];let l=o(s,n,i);if(!l.valid){if(r.shortCircuit)return l;t.errors.push(...l.errors);}}}}else if(a in Ua&&s[a]!==void 0){if(n===void 0)continue;let o=Ua[a];if(o){i.errors=[];let l=o(s,n,i);if(!l.valid){if(r.shortCircuit)return l;t.errors.push(...l.errors);}}}}return {valid:t.errors.length===0,errors:t.errors}}var St=class{"~standard";[Ce];_resolver;type;$id;$ref;$schema;title;description;readOnly;writeOnly;$comment;examples;constructor(s,e){let{type:r,validate:t,coerce:n,template:i,...a}=s||{};Object.assign(this,{type:r},a),this[Ce]={raw:s,optional:false,overrides:e},this["~standard"]={version:1,vendor:"jsonv-ts",validate:o=>{let l=this.validate(o);return l.valid?{value:o}:{issues:l.errors.map(u=>({message:u.error,path:Ou(u.instanceLocation)}))}}};}template(s,e){let r=this,t=s;if(r.const!==void 0?t=r.const:t===void 0&&(r.default!==void 0&&(t=r.default),e?.withExtendedOptional&&r.enum!==void 0&&(t=r.enum[0])),e?.withOptional!==true&&t===void 0&&this.isOptional())return t;if(this[Ce].raw?.template){let i=this[Ce].raw.template(t,e);i!==void 0&&(t=i);}let n=this[Ce].overrides?.template?.(t,e);return n!==void 0&&(t=n),t}validate(s,e){let r={keywordPath:e?.keywordPath||[],instancePath:e?.instancePath||[],coerce:e?.coerce||false,errors:e?.errors||[],shortCircuit:e?.shortCircuit||false,ignoreUnsupported:e?.ignoreUnsupported||false,resolver:e?.resolver||this.getResolver(),depth:e?.depth?e.depth+1:0,skipClone:e?.skipClone??true},t=this[Ce].raw?.validate;if(t!==void 0){let n=t(s,r);if(!n.valid)return n}return Od(this,s,r)}coerce(s,e){let r={...e,resolver:e?.resolver||this.getResolver(),depth:e?.depth?e.depth+1:0,dropUnknown:e?.dropUnknown??false},t=this[Ce].raw?.coerce;if(t!==void 0)return t(s,r);let n=this[Ce].overrides?.coerce?.(s,r)??s;return Yh(this,n,r)}optional(){return this[Ce].optional=true,this}isOptional(){return this[Ce].optional}getResolver(){return this._resolver||(this._resolver=new Wa(this)),this._resolver}children(s){return []}*walk({instancePath:s=[],keywordPath:e=[],data:r,maxDepth:t=Number.POSITIVE_INFINITY,...n}={}){let i=s.length===0&&r?Iu(r):r;if(n.includeSelf!==false&&(yield new ms(this,{instancePath:s,keywordPath:e,data:i,...n})),!(s.length>=t))for(let a of this.children(n)){let o=[...s,...a.instancePath];yield*a.schema.walk({...n,data:i,maxDepth:t,instancePath:o,keywordPath:[...e,...a.keywordPath]});}}*[Symbol.iterator](s){for(let e of this.walk(s))yield e;}toJSON(){let{toJSON:s,"~standard":e,_resolver:r,...t}=this;return JSON.parse(JSON.stringify(t))}},ms=class{constructor(s,e={}){this.schema=s,this.instancePath=e.instancePath||[],this.keywordPath=e.keywordPath||[],this.depth=this.instancePath.length;try{if(e.data!==void 0){let r=Hn(e.data,this.instancePath);s.validate(r).valid&&(this.data=r);}}catch{}}instancePath;keywordPath;data;depth;appendInstancePath(s){return this.instancePath=[...this.instancePath,...s],this}appendKeywordPath(s){return this.keywordPath=[...this.keywordPath,...s],this}setData(s){return this.data=s,this}};function Vn(s,e,r){return new class extends St{type=s}(e,r)}var Nd=class extends St{constructor(s){super(),this.bool=s;}toJSON(){return this.bool}validate(s,e){return this.bool?N():X(e,"","Always fails",s)}};function Fa(s){return new Nd(s)}var Lu=s=>Vn(s?.type,s),Id=(s,e)=>Vn(void 0,{...e,const:s}),Ld=class extends St{type="object";properties;required;constructor(s,e){let r=[];for(let[n,i]of Object.entries(s||{}))Vh(Ae(i),"properties must be managed schemas",i),i[Ce].optional||r.push(n);let t=e?.additionalProperties===false?Fa(false):e?.additionalProperties;r=r.length>0?r:void 0,super({...e,additionalProperties:t,properties:s,required:r},{template:(n,i)=>{let a=structuredClone(pe(n)?n:{}),o={...a};if(this.properties)for(let[l,u]of Object.entries(this.properties)){let p=Hn(a,l);if(u.isOptional()&&i?.withOptional!==true&&p===void 0&&n===void 0)continue;let c=u.template(p,i);c!==void 0&&(o[l]=c);}if(!(Object.keys(o).length===0&&!i?.withExtendedOptional))return o},coerce:(n,i)=>{let a=Object.keys(this.properties),o=Iu(n),l=a.length>0&&Object.values(this.properties).every(p=>!p[Ce].optional);if(qh(o)&&(i?.dropUnknown===true||l)&&(o=Kh(o,a)),typeof o=="string"&&o.match(/^\{/)&&(o=JSON.parse(o)),typeof o!="object"||o===null)return;if(this.properties)for(let[p,c]of Object.entries(this.properties)){let f=o[p];f!==void 0&&(o[p]=c.coerce(f,i));}let u=this.additionalProperties;if(i?.dropUnknown!==true&&(!u||u.validate(null).valid)){let p=pe(n)?n:{},c=Object.keys(p).filter(f=>!a.includes(f));for(let f of c)o[f]=u?u.coerce(p[f],i):p[f];}return o}}),this.properties=s,this.required=r;}strict(){return this.additionalProperties=Fa(false),this[Ce].raw.additionalProperties=false,this}partial(){for(let[,s]of Object.entries(this.properties))s[Ce].optional=true;return this.required=void 0,this}children(s){let e=[];for(let[r,t]of Object.entries(this.properties)){let n=new ms(t,s);n.appendInstancePath([r]),n.appendKeywordPath(["properties",r]),e.push(n);}return e}},Kn=(s,e)=>new Ld(s,e),Lr=(s,e)=>Kn(s,e).strict(),kd=(s,e)=>Kn(s,e).partial(),$d=class extends St{type="object";additionalProperties;constructor(s,e){super({...e,additionalProperties:s},{template:(r,t)=>t?.withExtendedOptional&&(r===void 0||!pe(r))?{}:r}),this.additionalProperties=s;}children(s){let e=[],r=new ms(this.additionalProperties,s);return r.appendKeywordPath(["additionalProperties"]),e.push(r),e}},Pd=(s,e)=>new $d(s,e),Ha=class extends St{type="string";constructor(s){super(s,{template:(e,r)=>r?.withExtendedOptional&&(e===void 0||!it(e))?"":e,coerce:e=>Et(e)?String(e):e});}toJSON(){let{pattern:s,"~standard":e,_resolver:r,...t}=this;return JSON.parse(JSON.stringify({...t,pattern:s instanceof RegExp?s.source:s}))}},sr=s=>new Ha(s),ku=(s,e,r)=>Vn(s,r,{template:(t,n)=>n?.withExtendedOptional&&(t===void 0||!Et(t))?r?.minimum??0:t,coerce:t=>{if(it(t)){let n=e.parseFn(t);if(!Number.isNaN(n))return n}return t}}),$u=s=>ku("number",{parseFn:Number},s),Pu=s=>ku("integer",{parseFn:Number.parseInt},s),Dd=class extends St{constructor(s,e={}){super({...e,items:s},{template:r=>r===void 0||!Array.isArray(r)?[]:r,coerce:(r,t)=>{try{let n=typeof r=="string"?JSON.parse(r):r;if(!Array.isArray(n))return;if(Ae(this.items))for(let[i,a]of n.entries())n[i]=this.items.coerce(a,t);return n}catch{}return r}}),this.items=s,this.items=s;}type="array";children(s){let e=[];if(this.items){let r=new ms(this.items,s);r.appendKeywordPath(["items"]),e.push(r);}return e}},Du=(s,e)=>new Dd(s,e),hs=s=>Vn("boolean",s,{template:(e,r)=>r?.withExtendedOptional&&(e===void 0||!Ja(e))?false:e,coerce:e=>{if(it(e)&&["true","false","1","0"].includes(e))return e==="true"||e==="1";if(Et(e)){if(e===1)return true;if(e===0)return false}return e}}),Jn=Symbol.for("unionType"),ju=class extends St{[Jn];constructor(s,e,r){super({...r,[e]:s},{coerce:(t,n)=>{let i=r?.coerce;if(i!==void 0)return i.bind(this)(t,n);let a=Gn(s,t,{ignoreUnsupported:true,resolver:n?.resolver,coerce:true});return a.length>0?a[0].coerce(t,n):t}}),this[Jn]=e;}get schemas(){return this[this[Jn]]}children(s){let e=[];for(let[r,t]of this.schemas.entries()){let n=new ms(t,s);n.appendKeywordPath([this[Jn],r]),e.push(n);}return e}},jd=(s,e)=>new ju(s,"anyOf",e),xd=(s,e)=>new ju(s,"oneOf",e);function _u(s,e){return Array.isArray(s)?s.map(e):s!==void 0?[e(s)]:[]}function vu(s,e,r=t=>t){return Object.fromEntries(Object.entries(s).map(([t,n])=>[t,r(e(n,t),t)]))}function Ft(s){if(Ja(s))return Fa(s);let e=structuredClone(s);if(!pe(e))throw new Bh("non-object schemas cannot be converted to a schema",e);"properties"in e&&e.properties&&(e.properties=vu(e.properties,(i,a)=>{try{return Ft(i)}catch(o){throw new Error(`Couldn't schemaize property "${a}": ${String(o)}`)}},(i,a)=>"required"in e&&Array.isArray(e.required)&&e.required.includes(a)?i:i.optional()));let r=["patternProperties","dependentSchemas","$defs"];for(let i of r)i in e&&e[i]&&(e[i]=vu(e[i],Ft));let t=["additionalProperties","items","prefixItems","propertyNames","contains","not","if","then","else"];for(let i of t)i in e&&typeof e[i]<"u"&&(qt(e[i])?e[i]=_u(e[i],Ft):e[i]=Ft(e[i]));let n=["anyOf","oneOf","allOf"];for(let i of n)if(i in e){let{[i]:a}=e;e[i]=_u(a,Ft);}if(Hh(e))switch(e.type){case "string":return sr(e);case "number":return $u(e);case "integer":return Pu(e);case "boolean":return hs(e);case "object":{let{properties:i,...a}=e;return Kn(i,a)}case "array":{let{items:i,...a}=e;return Du(i,a)}}return Lu(e)}var qa=s=>typeof s=="object"&&s!==null&&!Array.isArray(s),Ba=s=>typeof globalThis.structuredClone=="function"?globalThis.structuredClone(s):JSON.parse(JSON.stringify(s)),Ud=["maximum","exclusiveMaximum","maxLength","maxItems","maxProperties"],Bd=["minimum","exclusiveMinimum","minLength","minItems","minProperties"];function Md(){return {type(s){let e=s.map(r=>Array.isArray(r)?new Set(r):new Set([r])).reduce((r,t)=>r?new Set([...r].filter(n=>t.has(n))):new Set(t));if(!e.size)throw new Error('Incompatible "type" in allOf');return e.size===1?[...e][0]:[...e]},enum(s){let e=s.map(r=>new Set(r)).reduce((r,t)=>new Set([...r].filter(n=>t.has(n))));if(!e.size)throw new Error('Incompatible "enum" in allOf');return [...e]},required(s){return [...new Set(s.flat())]},properties(s,e,r){return s.reduce((t,n)=>r(t,n),{})},patternProperties(s,e,r){return s.reduce((t,n)=>r(t,n),{})},$defs(s,e,r){return s.reduce((t,n)=>r(t,n),{})},definitions(s,e,r){return s.reduce((t,n)=>r(t,n),{})},...Object.fromEntries(Ud.map(s=>[s,e=>Math.min(...e)])),...Object.fromEntries(Bd.map(s=>[s,e=>Math.max(...e)]))}}function Fd(s){let e={...Md(),...s.resolvers};function r(t,n){if(Array.isArray(t)&&Array.isArray(n))return [...new Set([...t,...n])];if(qa(t)&&qa(n)){let i={...t};for(let[a,o]of Object.entries(n))if(a in i){let l=e[a];i[a]=l?l([i[a],o],a,r):Ba(o);}else i[a]=Ba(o);return i}return Ba(n)}return r}var qd=s=>s===true||s===false?s:null;function Jd(s,e={}){let r=e.deep!==false,t=Fd(e);function n(i){if(Array.isArray(i))return i.map(n);if(!qa(i))return i;if(Array.isArray(i.allOf)){let o=i.allOf.map(n);if(o.some(m=>m===false))return false;let l=o.filter(m=>m!==true);if(!l.length)return true;let u=l.reduce((m,d)=>t(m,d),{}),p=qd(u);if(p!==null)return p;let c={...i};delete c.allOf;let f=t(u,r?n(c):c);return r?n(f):f}let a={};for(let[o,l]of Object.entries(i))a[o]=n(l);return a}return n(s)}var Wd=(s,e)=>{let r=JSON.parse(JSON.stringify({...e,allOf:s}));return Ft(Jd(r))},xu=class extends St{$ref;constructor(s,e){if(!e&&!Ae(s))throw new Error("Ref not set");if(Ae(s)&&!s.$id)throw new Error("Ref must have an $id");let r=e??s?.$id;super({$ref:r},{coerce:(t,n)=>{let i=n?.resolver?.resolve(this.$ref);if(!Ae(i))throw new Error(`Ref not found: ${this.$ref}`);return i.coerce(t,n)}}),this.$ref=r;}},Hd=(s,e)=>new xu(s,e),Gd=s=>new xu(void 0,s),Vd=s=>s(new St({$ref:"#",coerce:(e,r)=>{let t=r?.resolver?.resolve("#");if(!Ae(t))throw new Error("Ref not found: #");return t.coerce(e,r)}}));var E={boolean:hs,any:Lu,literal:Id,object:Kn,strictObject:Lr,partialObject:kd,record:Pd,string:sr,number:$u,integer:Pu,array:Du,anyOf:jd,oneOf:xd,allOf:Wd,ref:Hd,refId:Gd,recursive:Vd};function Uu(s,e){var r=Object.keys(s);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(s);e&&(t=t.filter(function(n){return Object.getOwnPropertyDescriptor(s,n).enumerable})),r.push.apply(r,t);}return r}function Bu(s){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?Uu(Object(r),true).forEach(function(t){Kd(s,t,r[t]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(r)):Uu(Object(r)).forEach(function(t){Object.defineProperty(s,t,Object.getOwnPropertyDescriptor(r,t));});}return s}function Kd(s,e,r){return e=Yd(e),e in s?Object.defineProperty(s,e,{value:r,enumerable:true,configurable:true,writable:true}):s[e]=r,s}function Yd(s){var e=zd(s,"string");return typeof e=="symbol"?e:String(e)}function zd(s,e){if(typeof s!="object"||s===null)return s;var r=s[Symbol.toPrimitive];if(r!==void 0){var t=r.call(s,e);if(typeof t!="object")return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return (e==="string"?String:Number)(s)}var Xd=Mu({}),xe=Xd;function Mu(s){return e.withOptions=r=>Mu(Bu(Bu({},s),r)),e;function e(r,...t){let n=typeof r=="string"?[r]:r.raw,{alignValues:i=false,escapeSpecialCharacters:a=Array.isArray(r),trimWhitespace:o=true}=s,l="";for(let c=0;c<n.length;c++){let f=n[c];if(a&&(f=f.replace(/\\\n[ \t]*/g,"").replace(/\\`/g,"`").replace(/\\\$/g,"$").replace(/\\\{/g,"{")),l+=f,c<t.length){let m=i?Qd(t[c],l):t[c];l+=m;}}let u=l.split(`
19
- `),p=null;for(let c of u){let f=c.match(/^(\s+)\S+/);if(f){let m=f[1].length;p?p=Math.min(p,m):p=m;}}if(p!==null){let c=p;l=u.map(f=>f[0]===" "||f[0]===" "?f.slice(c):f).join(`
20
- `);}return o&&(l=l.trim()),a&&(l=l.replace(/\\n/g,`
21
- `).replace(/\\t/g," ").replace(/\\r/g,"\r").replace(/\\v/g,"\v").replace(/\\b/g,"\b").replace(/\\f/g,"\f").replace(/\\0/g,"\0").replace(/\\x([\da-fA-F]{2})/g,(c,f)=>String.fromCharCode(parseInt(f,16))).replace(/\\u\{([\da-fA-F]{1,6})\}/g,(c,f)=>String.fromCodePoint(parseInt(f,16))).replace(/\\u([\da-fA-F]{4})/g,(c,f)=>String.fromCharCode(parseInt(f,16)))),typeof Bun<"u"&&(l=l.replace(/\\u(?:\{([\da-fA-F]{1,6})\}|([\da-fA-F]{4}))/g,(c,f,m)=>{var d;let g=(d=f??m)!==null&&d!==void 0?d:"";return String.fromCodePoint(parseInt(g,16))})),l}}function Qd(s,e){if(typeof s!="string"||!s.includes(`
22
- `))return s;let t=e.slice(e.lastIndexOf(`
23
- `)+1).match(/^(\s+)/);if(t){let n=t[1];return s.replace(/\n/g,`
24
- ${n}`)}return s}var Fu=[{name:"Self-hosted Logflare Configuration",link:"https://supabase.com/docs/reference/self-hosting-analytics/list-endpoints#getting-started"}],zn=["analytics"],qu=E.strictObject({enabled:E.boolean({default:false,description:"Enable the local Logflare service.",tags:zn,links:Fu}),port:E.number({default:54327,description:"Port to the local Logflare service.",tags:zn}),vector_port:E.number({default:54328,description:"Port to the local syslog ingest service.",tags:zn}),backend:E.string({enum:["postgres","bigquery"],default:"postgres",description:xe`
16
+ `)}async hexBodyHash(){let e=this.headers.get("X-Amz-Content-Sha256")||(this.service==="s3"&&this.signQuery?"UNSIGNED-PAYLOAD":null);if(e==null){if(this.body&&typeof this.body!="string"&&!("byteLength"in this.body))throw new Error("body must be a string, ArrayBuffer or ArrayBufferView, unless you include the X-Amz-Content-Sha256 header");e=sl(await cd(this.body||""));}return e}};ud=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];});var Up=uc((xP,iS)=>{iS.exports={"dev/vite/main.tsx":{file:"assets/main-BsWx0q9l.js",name:"main",src:"dev/vite/main.tsx",isEntry:true,css:["assets/main-DexXgo9R.css"]}};});var $o=(t=[],e="")=>"/"+[e,...t.map(r=>String(r).replace(/\./g,"/"))].filter(Boolean).join("/"),hc=t=>t.split("/").slice(1);function bm(t,e,r=void 0){let n=typeof e=="string"?hc(e):$o(e);return Ds(t,n,r)}function Ds(t,e,r=void 0){let n=typeof e=="string"?e.split(/[.\[\]\"]+/).filter(s=>s):e;if(n.length===0)return t;try{let[s,...i]=n;return !s||!(s in t)?r:Ds(t[s],i,r)}catch{if(typeof r<"u")return r;throw new Error(`Invalid path: ${n.join(".")}`)}}var V=(t={},e,r,n)=>({valid:false,errors:[...t.errors??[],{keywordLocation:$o([...t.keywordPath??[],e]),instanceLocation:$o(t.instancePath),error:typeof r=="string"?r:`Invalid value for ${e}`,data:n}]}),T=()=>({valid:true,errors:[]}),Tr=(t,e,r)=>{let n=Array.isArray(e)?e:[e],s=r?Array.isArray(r)?r:[r]:[];return {...t,keywordPath:[...t.keywordPath??[],...n],instancePath:s?[...t.instancePath??[],...s]:t.instancePath}},js=(t={})=>({...t,errors:[]}),Zt=class extends Error{constructor(t){super(`Expected ${t}`);}},wm=class extends Error{constructor(t,e){super(`${t??"Invalid raw schema"}: ${JSON.stringify(e)}`),this.schema=e;}},Sm=class extends Error{constructor(t,e){super(`${t}, got: 'type "${typeof e}": ${JSON.stringify(e)}'`),this.value=e;}},Ee=Symbol.for("jsonv-ts:schema");function Em(t){return t===null}function ce(t){return !Array.isArray(t)&&typeof t=="object"&&t!==null}function _m(t){return Object.prototype.toString.call(t)==="[object Object]"}function nt(t){return typeof t=="string"}function gt(t){return typeof t=="number"}function xm(t){return typeof t=="number"&&Number.isInteger(t)}function Io(t){return typeof t=="boolean"}function Mt(t){return Array.isArray(t)}function vm(t){return typeof t!="boolean"}function Cm(t){return t!==void 0&&vm(t)&&"type"in t}function _e(t){return t!==void 0&&ce(t)&&Ee in t}function Am(t){return _e(t)&&typeof t.toJSON()=="boolean"}function Tm(t,e,r){if(!t)throw new Sm(e,r)}function gc(t){return nt(t)?t.normalize("NFC"):t}function an(t,e){let r=typeof t;if(r!==typeof e)return false;if(Array.isArray(t)){if(!Array.isArray(e))return false;let n=t.length;if(n!==e.length)return false;for(let s=0;s<n;s++)if(!an(t[s],e[s]))return false;return true}if(r==="object"){if(!t||!e)return t===e;let n=Object.keys(t),s=Object.keys(e);if(n.length!==s.length)return false;for(let i of n)if(!an(t[i],e[i]))return false;return true}return t===e}function Rm(t,e){return e.reduce((r,n)=>(n in t&&(r[n]=t[n]),r),{})}function yc(t){try{return structuredClone(t)}catch{return t}}var No=class{constructor(t){this.root=t,this.cache=new Map;}cache;hasRef(t,e){return e!==void 0&&"$ref"in t&&nt(t.$ref)}resolve(t){let e=this.cache.get(t);if(!e){if(e=bm(this.root,t),!_e(e))throw new Error(`ref not found: ${t}`);if("$ref"in e&&e.$ref===t)throw new Error(`ref loop: ${t}`);this.cache.set(t,e);}return e}};function km(t,e,r={}){let n=e;try{n=structuredClone(e);}catch{n=JSON.parse(JSON.stringify(e));}let s={resolver:r.resolver||new No(t),depth:r.depth||0,dropUnknown:r.dropUnknown??false};return s.resolver.hasRef(t,n)?s.resolver.resolve(t.$ref).coerce(n,{...s,depth:s.depth+1}):n}var $m=({type:t},e,r={})=>{if(t===void 0||e===void 0)return T();let n,s={string:nt,number:gt,integer:xm,object:ce,array:Mt,boolean:Io,null:Em};if(Array.isArray(t)){for(let i of t){if(!(i in s))throw new Zt(`Unknown type: ${i}`);if(s[i](e))return T()}n=`Expected one of: ${t.join(", ")}`;}else {if(!(t in s))throw new Zt(`Unknown type: ${t}`);s[t](e)||(n=`Expected ${t}`);}return n?V(r,"type",n,e):T()},Om=({const:t},e,r={})=>an(t,e)?T():V(r,"const",`Expected const: ${t}`,e),Pm=({enum:t=[]},e,r={})=>t.some(n=>an(n,e))?T():V(r,"enum",`Expected enum: ${JSON.stringify(t)}`,e);function Ls(t,e,r={}){return t.map(n=>n.validate(e,js(r)).valid?n:void 0).filter(Boolean)}var Im=({anyOf:t=[]},e,r={})=>Ls(t,e,r).length>0?T():V(r,"anyOf","Expected at least one to match",e),Nm=({oneOf:t=[]},e,r={})=>Ls(t,e).length===1?T():V(r,"oneOf","Expected exactly one to match",e),jm=({allOf:t=[]},e,r={})=>Ls(t,e,r).length===t.length?T():V(r,"allOf","Expected all to match",e),Dm=({not:t},e,r={})=>e===void 0?T():_e(t)&&t.validate(e,r).valid?V(r,"not","Expected not to match",e):T(),Lm=({if:t,then:e,else:r},n,s={})=>{if(t&&(e||r)){if(t.validate(n,js(s)).valid)return e?e.validate(n,js(s)):T();if(r)return r.validate(n,js(s))}return T()},Um=({pattern:t=""},e,r={})=>{if(!nt(e))return T();if(t instanceof RegExp){if(t.test(e))return T()}else if(new RegExp(t,"u").test(e))return T();return V(r,"pattern",`Expected string matching pattern ${t}`,e)},Fm=({minLength:t=0},e,r={})=>nt(e)?[...gc(e)].length>=t?T():V(r,"minLength",`Expected string with minimum length of ${t}`,e):T(),Mm=({maxLength:t=0},e,r={})=>nt(e)?[...gc(e)].length<=t?T():V(r,"maxLength",`Expected string with maximum length of ${t}`,e):T(),Bm=({multipleOf:t=0},e,r={})=>{if(!gt(e))return T();if(!(Number.isFinite(e)&&Number.isFinite(t))||t<=0)throw new Zt("number");let n=e/t,s=Number.EPSILON*Math.max(1,Math.abs(n));return Math.abs(n-Math.round(n))<=s?T():V(r,"multipleOf",`Expected number being a multiple of ${t}`,e)},qm=({maximum:t=0},e,r={})=>!gt(e)||e<=t?T():V(r,"maximum",`Expected number less than or equal to ${t}`,e),Jm=({exclusiveMaximum:t=0},e,r={})=>!gt(e)||e<t?T():V(r,"exclusiveMaximum",`Expected number less than ${t}`,e),Km=({minimum:t=0},e,r={})=>!gt(e)||e>=t?T():V(r,"minimum",`Expected number greater than or equal to ${t}`,e),Wm=({exclusiveMinimum:t=0},e,r={})=>!gt(e)||e>t?T():V(r,"exclusiveMinimum",`Expected number greater than ${t}`,e),Hm=({properties:t={}},e,r={})=>{if(!ce(e))return T();for(let[n,s]of Object.entries(e)){let i=t[n];if(!_e(i))continue;let o=i.validate(s,Tr(r,["properties",n],n));if(!o.valid)return o}return T()},zm=({properties:t={},additionalProperties:e,patternProperties:r},n,s={})=>{if(!ce(n))return T();if(!_e(e))throw new Zt("additionalProperties must be a boolean or a managed schema");let i=Object.keys(t),o=ce(r)?Object.keys(n).filter(l=>Object.keys(r).some(u=>new RegExp(u).test(l))):[],a=Object.keys(n).filter(l=>!i.includes(l)&&!o.includes(l));if(a.length>0){if(Am(e)){if(e.toJSON()===true)return T();let l=a.reduce((u,f)=>(u[f]=n[f],u),{});return V(s,"additionalProperties","Additional properties are not allowed",l)}else if(_e(e))for(let l of a){let u=e.validate(n[l],Tr(s,["additionalProperties"],l));if(!u.valid)return u}}return T()},Gm=({dependentRequired:t},e,r={})=>{if(!ce(e))return T();let n=Object.keys(e).filter(s=>typeof e[s]!="function");if(ce(t)){for(let[s,i]of Object.entries(t))if(n.includes(s)){for(let o of i)if(!n.includes(o))return V(r,"dependentRequired",`Expected dependent required property ${o}`,e)}}return T()},Vm=({required:t=[]},e,r={})=>{if(!ce(e))return T();let n=Object.keys(e).filter(s=>typeof e[s]!="function");return t.every(s=>n.includes(s))?T():V(r,"required",`Expected object with required properties ${t.join(", ")}`,e)},Qm=({dependentSchemas:t},e,r={})=>{if(!ce(e))return T();let n=Object.keys(e).filter(s=>typeof e[s]!="function");if(ce(t)){for(let[s,i]of Object.entries(t))if(n.includes(s)){let o=i.validate(e,r);if(!o.valid)return o}}return T()},Xm=({minProperties:t=0},e,r={})=>ce(e)?Object.keys(e).length>=t?T():V(r,"minProperties",`Expected object with at least ${t} properties`,e):T(),Ym=({maxProperties:t=0},e,r={})=>!ce(e)||Object.keys(e).length<=t?T():V(r,"maxProperties",`Expected object with at most ${t} properties`,e),Zm=({patternProperties:t={}},e,r={})=>{if(!ce(e))return T();if(!ce(t))throw new Zt("patternProperties must be an object");for(let[n,s]of Object.entries(e))for(let[i,o]of Object.entries(t))if(new RegExp(i,"u").test(n)){let a=o.validate(s,Tr(r,["patternProperties"],n));if(!a.valid)return a}return T()},eh=({propertyNames:t},e,r={})=>{if(!ce(e)||t===void 0)return T();if(!_e(t))throw new Zt("propertyNames must be a managed schema");for(let n of Object.keys(e)){let s=t.validate(n,Tr(r,["propertyNames"],n));if(!s.valid)return s}return T()},th=({items:t,prefixItems:e=[]},r,n={})=>{if(!Mt(r)||t===void 0)return T();if(!_e(t))throw new Zt("items must be a managed schema");for(let[s,i]of r.slice(e.length).entries()){let o=t.validate(i,Tr(n,["items"],String(s)));if(!o.valid)return o}return T()},rh=({minItems:t=0},e,r={})=>!Mt(e)||e.length>=t?T():V(r,"minItems",`Expected array with at least ${t} items`,e),nh=({maxItems:t=0},e,r={})=>!Mt(e)||e.length<=t?T():V(r,"maxItems",`Expected array with at most ${t} items`,e),sh=({uniqueItems:t=false},e,r={})=>{if(!Mt(e)||!t)return T();for(let n=0;n<e.length;n++){let s=e[n];for(let i=0;i<e.length;i++){if(n===i)continue;let o=e[i];if(an(s,o))return V(r,"uniqueItems",`Duplicated items at index ${n} and ${i}`,e)}}return T()},ih=({contains:t,minContains:e,maxContains:r},n,s={})=>{if(!_e(t))throw new Error("contains must be a managed schema");if(!Mt(n))return T();let i=n.filter(o=>t.validate(o).valid).length;return i<(e??1)?V(s,e?"minContains":"contains",`Expected array to contain at least ${e??1}, but found ${i}`,n):r!==void 0&&i>r?V(s,"maxContains",`Expected array to contain at most ${r}, but found ${i}`,n):T()},oh=({prefixItems:t=[]},e,r={})=>{if(!Mt(e))return T();for(let n=0;n<e.length;n++){let s=t[n]?.validate(e[n],Tr(r,String(n),String(n)));if(s&&s?.valid!==true)return s}return T()},dc={email:t=>{if(t.length>318)return false;if(/^[a-z0-9!#$%&'*+/=?^_`{|}~-]{1,20}(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]{1,21}){0,2}@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,60}[a-z0-9])?){0,3}$/i.test(t))return true;if(!t.includes("@")||/(^\.|^"|\.@|\.\.)/.test(t))return false;let[e,r,...n]=t.split("@");return !e||!r||n.length!==0||e.length>64||r.length>253||!/^[a-z0-9.-]+$/i.test(r)||!/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+$/i.test(e)?false:r.split(".").every(s=>/^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$/i.test(s))},hostname:t=>t.length>(t.endsWith(".")?254:253)?false:/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*\.?$/i.test(t),date:t=>{if(t.length!==10)return false;if(t[5]==="0"&&t[6]==="2"){if(/^\d\d\d\d-02-(?:[012][1-8]|[12]0|[01]9)$/.test(t))return true;let e=t.match(/^(\d\d\d\d)-02-29$/);if(!e)return false;let r=Number(e[1]);return r%16===0||r%4===0&&r%25!==0}return t.endsWith("31")?/^\d\d\d\d-(?:0[13578]|1[02])-31$/.test(t):/^\d\d\d\d-(?:0[13-9]|1[012])-(?:[012][1-9]|[123]0)$/.test(t)},time:t=>{if(t.length>27||!/^(?:2[0-3]|[0-1]\d):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:z|[+-](?:2[0-3]|[0-1]\d)(?::?[0-5]\d)?)?$/i.test(t))return false;if(!/:60/.test(t))return true;let e=t.match(/([0-9.]+|[^0-9.])/g);if(!e)return false;let r=Number(e[0])*60+Number(e[2]);return e[5]==="+"?r+=1440-Number(e[6]||0)*60-Number(e[8]||0):e[5]==="-"&&(r+=Number(e[6]||0)*60+Number(e[8]||0)),r%1440===1439},"date-time":t=>{if(t.length>38)return false;let e=/^\d\d\d\d-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])[t\s](?:2[0-3]|[0-1]\d):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:z|[+-](?:2[0-3]|[0-1]\d)(?::?[0-5]\d)?)$/i,r=t[5]==="0"&&t[6]==="2";if(r&&t[8]==="3"||!e.test(t))return false;if(t[17]==="6"){let n=t.slice(11).match(/([0-9.]+|[^0-9.])/g);if(!n)return false;let s=Number(n[0])*60+Number(n[2]);if(n[5]==="+"?s+=1440-Number(n[6]||0)*60-Number(n[8]||0):n[5]==="-"&&(s+=Number(n[6]||0)*60+Number(n[8]||0)),s%1440!==1439)return false}if(r){if(/^\d\d\d\d-02-(?:[012][1-8]|[12]0|[01]9)/.test(t))return true;let n=t.match(/^(\d\d\d\d)-02-29/);if(!n)return false;let s=Number(n[1]??0);return s%16===0||s%4===0&&s%25!==0}return t[8]==="3"&&t[9]==="1"?/^\d\d\d\d-(?:0[13578]|1[02])-31/.test(t):/^\d\d\d\d-(?:0[13-9]|1[012])-(?:[012][1-9]|[123]0)/.test(t)},ipv4:t=>t.length<=15&&/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d\d?)$/.test(t),ipv6:t=>{if(t.length>45||t.length<2)return false;let e=0,r=0,n=0,s=false,i=false,o=0,a=true;for(let u=0;u<t.length;u++){let f=t.charCodeAt(u);if(u===1&&o===58&&f!==58)return false;if(f>=48&&f<=57){if(++n>4)return false}else if(f===46){if(e>6||r>=3||n===0||i)return false;r++,n=0;}else if(f===58){if(r>0||e>=7)return false;if(o===58){if(s)return false;s=true;}else u===0&&(a=false);e++,n=0,i=false;}else if(f>=97&&f<=102||f>=65&&f<=70){if(r>0||++n>4)return false;i=true;}else return false;o=f;}if(e<2||r>0&&(r!==3||n===0))return false;if(s&&t.length===2)return true;if(r>0&&!/(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}$/.test(t))return false;let l=r>0?6:7;return s?(a||n>0)&&e<l:e===l&&a&&n>0},uri:t=>/^[a-z][a-z0-9+\-.]*:(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|v[0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/?(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i.test(t),"uri-reference":t=>/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|v[0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/?(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?)?(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i.test(t),"uri-template":t=>/^(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2}|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i.test(t),"json-pointer":t=>/^(?:|\/(?:[^~]|~0|~1)*)$/.test(t),"relative-json-pointer":t=>/^(?:0|[1-9][0-9]*)(?:|#|\/(?:[^~]|~0|~1)*)$/.test(t),uuid:t=>/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(t),duration:t=>t.length>1&&t.length<80&&(/^P\d+([.,]\d+)?W$/.test(t)||/^P[\dYMDTHS]*(\d[.,]\d+)?[YMDHS]$/.test(t)&&/^P([.,\d]+Y)?([.,\d]+M)?([.,\d]+D)?(T([.,\d]+H)?([.,\d]+M)?([.,\d]+S)?)?$/.test(t)),regex:t=>{if(/[^\\]\\Z/.test(t))return false;try{return new RegExp(t,"u"),!0}catch{return false}},binary:()=>true,password:()=>true},ah=({format:t},e,r={})=>!nt(e)||!t?T():dc[t]?dc[t](e)?T():V(r,"format",`Expected format: ${t}`,e):T();var Ro={type:$m,const:Om,enum:Pm,allOf:jm,anyOf:Im,oneOf:Nm,not:Dm,minLength:Fm,maxLength:Mm,pattern:Um,format:ah,minimum:Km,exclusiveMinimum:Wm,maximum:qm,exclusiveMaximum:Jm,multipleOf:Bm,required:Vm,dependentRequired:Gm,dependentSchemas:Qm,minProperties:Xm,maxProperties:Ym,propertyNames:eh,properties:Hm,patternProperties:Zm,additionalProperties:zm,minItems:rh,maxItems:nh,uniqueItems:sh,contains:ih,prefixItems:oh,items:th,if:Lm};function lh(t,e,r={}){let n={keywordPath:r.keywordPath||[],instancePath:r.instancePath||[],coerce:r.coerce||false,errors:r.errors||[],shortCircuit:r.shortCircuit||false,ignoreUnsupported:r.ignoreUnsupported||false,resolver:r.resolver||t.getResolver?.()||new No(t),depth:r.depth?r.depth+1:0,skipClone:r.skipClone||false},s;if(r?.coerce&&t.coerce){let i=t.coerce(e,{resolver:n.resolver,depth:n.depth});s=n.skipClone?i:structuredClone(i);}else s=n.skipClone?e:structuredClone(e);if(r.ignoreUnsupported!==true){let i=["$defs"];for(let o of i)if(t[o])throw new Error(`${o} not implemented`)}if(n.resolver.hasRef(t,s)){let i=n.resolver.resolve(t.$ref).validate(s,{...n,errors:[]});i.valid||n.errors.push(...i.errors);}else {let i={keywordPath:n.keywordPath,instancePath:n.instancePath,coerce:n.coerce,errors:[],shortCircuit:n.shortCircuit,ignoreUnsupported:n.ignoreUnsupported,resolver:n.resolver,depth:n.depth};for(let o in t)if(o==="type"&&t.type!==void 0){if(s!==void 0){let a=Ro[o];if(a){i.errors=[];let l=a(t,s,i);if(!l.valid){if(r.shortCircuit)return l;n.errors.push(...l.errors);}}}}else if(o in Ro&&t[o]!==void 0){if(s===void 0)continue;let a=Ro[o];if(a){i.errors=[];let l=a(t,s,i);if(!l.valid){if(r.shortCircuit)return l;n.errors.push(...l.errors);}}}}return {valid:n.errors.length===0,errors:n.errors}}var yt=class{"~standard";[Ee];_resolver;type;$id;$ref;$schema;title;description;readOnly;writeOnly;$comment;examples;constructor(t,e){let{type:r,validate:n,coerce:s,template:i,...o}=t||{};Object.assign(this,{type:r},o),this[Ee]={raw:t,optional:false,overrides:e},this["~standard"]={version:1,vendor:"jsonv-ts",validate:a=>{let l=this.validate(a);return l.valid?{value:a}:{issues:l.errors.map(u=>({message:u.error,path:hc(u.instanceLocation)}))}}};}template(t,e){let r=this,n=t;if(r.const!==void 0?n=r.const:n===void 0&&(r.default!==void 0&&(n=r.default),e?.withExtendedOptional&&r.enum!==void 0&&(n=r.enum[0])),e?.withOptional!==true&&n===void 0&&this.isOptional())return n;if(this[Ee].raw?.template){let i=this[Ee].raw.template(n,e);i!==void 0&&(n=i);}let s=this[Ee].overrides?.template?.(n,e);return s!==void 0&&(n=s),n}validate(t,e){let r={keywordPath:e?.keywordPath||[],instancePath:e?.instancePath||[],coerce:e?.coerce||false,errors:e?.errors||[],shortCircuit:e?.shortCircuit||false,ignoreUnsupported:e?.ignoreUnsupported||false,resolver:e?.resolver||this.getResolver(),depth:e?.depth?e.depth+1:0,skipClone:e?.skipClone??true},n=this[Ee].raw?.validate;if(n!==void 0){let s=n(t,r);if(!s.valid)return s}return lh(this,t,r)}coerce(t,e){let r={...e,resolver:e?.resolver||this.getResolver(),depth:e?.depth?e.depth+1:0,dropUnknown:e?.dropUnknown??false},n=this[Ee].raw?.coerce;if(n!==void 0)return n(t,r);let s=this[Ee].overrides?.coerce?.(t,r)??t;return km(this,s,r)}optional(){return this[Ee].optional=true,this}isOptional(){return this[Ee].optional}getResolver(){return this._resolver||(this._resolver=new No(this)),this._resolver}children(t){return []}*walk({instancePath:t=[],keywordPath:e=[],data:r,maxDepth:n=Number.POSITIVE_INFINITY,...s}={}){let i=t.length===0&&r?yc(r):r;if(s.includeSelf!==false&&(yield new ln(this,{instancePath:t,keywordPath:e,data:i,...s})),!(t.length>=n))for(let o of this.children(s)){let a=[...t,...o.instancePath];yield*o.schema.walk({...s,data:i,maxDepth:n,instancePath:a,keywordPath:[...e,...o.keywordPath]});}}*[Symbol.iterator](t){for(let e of this.walk(t))yield e;}toJSON(){let{toJSON:t,"~standard":e,_resolver:r,...n}=this;return JSON.parse(JSON.stringify(n))}},ln=class{constructor(t,e={}){this.schema=t,this.instancePath=e.instancePath||[],this.keywordPath=e.keywordPath||[],this.depth=this.instancePath.length;try{if(e.data!==void 0){let r=Ds(e.data,this.instancePath);t.validate(r).valid&&(this.data=r);}}catch{}}instancePath;keywordPath;data;depth;appendInstancePath(t){return this.instancePath=[...this.instancePath,...t],this}appendKeywordPath(t){return this.keywordPath=[...this.keywordPath,...t],this}setData(t){return this.data=t,this}};function Us(t,e,r){return new class extends yt{type=t}(e,r)}var ch=class extends yt{constructor(t){super(),this.bool=t;}toJSON(){return this.bool}validate(t,e){return this.bool?T():V(e,"","Always fails",t)}};function Oo(t){return new ch(t)}var bc=t=>Us(t?.type,t),uh=(t,e)=>Us(void 0,{...e,const:t}),fh=class extends yt{type="object";properties;required;constructor(t,e){let r=[];for(let[s,i]of Object.entries(t||{}))Tm(_e(i),"properties must be managed schemas",i),i[Ee].optional||r.push(s);let n=e?.additionalProperties===false?Oo(false):e?.additionalProperties;r=r.length>0?r:void 0,super({...e,additionalProperties:n,properties:t,required:r},{template:(s,i)=>{let o=structuredClone(ce(s)?s:{}),a={...o};if(this.properties)for(let[l,u]of Object.entries(this.properties)){let f=Ds(o,l);if(u.isOptional()&&i?.withOptional!==true&&f===void 0&&s===void 0)continue;let c=u.template(f,i);c!==void 0&&(a[l]=c);}if(!(Object.keys(a).length===0&&!i?.withExtendedOptional))return a},coerce:(s,i)=>{let o=Object.keys(this.properties),a=yc(s),l=o.length>0&&Object.values(this.properties).every(f=>!f[Ee].optional);if(_m(a)&&(i?.dropUnknown===true||l)&&(a=Rm(a,o)),typeof a=="string"&&a.match(/^\{/)&&(a=JSON.parse(a)),typeof a!="object"||a===null)return;if(this.properties)for(let[f,c]of Object.entries(this.properties)){let d=a[f];d!==void 0&&(a[f]=c.coerce(d,i));}let u=this.additionalProperties;if(i?.dropUnknown!==true&&(!u||u.validate(null).valid)){let f=ce(s)?s:{},c=Object.keys(f).filter(d=>!o.includes(d));for(let d of c)a[d]=u?u.coerce(f[d],i):f[d];}return a}}),this.properties=t,this.required=r;}strict(){return this.additionalProperties=Oo(false),this[Ee].raw.additionalProperties=false,this}partial(){for(let[,t]of Object.entries(this.properties))t[Ee].optional=true;return this.required=void 0,this}children(t){let e=[];for(let[r,n]of Object.entries(this.properties)){let s=new ln(n,t);s.appendInstancePath([r]),s.appendKeywordPath(["properties",r]),e.push(s);}return e}},Fs=(t,e)=>new fh(t,e),Rr=(t,e)=>Fs(t,e).strict(),dh=(t,e)=>Fs(t,e).partial(),ph=class extends yt{type="object";additionalProperties;constructor(t,e){super({...e,additionalProperties:t},{template:(r,n)=>n?.withExtendedOptional&&(r===void 0||!ce(r))?{}:r}),this.additionalProperties=t;}children(t){let e=[],r=new ln(this.additionalProperties,t);return r.appendKeywordPath(["additionalProperties"]),e.push(r),e}},mh=(t,e)=>new ph(t,e),jo=class extends yt{type="string";constructor(t){super(t,{template:(e,r)=>r?.withExtendedOptional&&(e===void 0||!nt(e))?"":e,coerce:e=>gt(e)?String(e):e});}toJSON(){let{pattern:t,"~standard":e,_resolver:r,...n}=this;return JSON.parse(JSON.stringify({...n,pattern:t instanceof RegExp?t.source:t}))}},er=t=>new jo(t),wc=(t,e,r)=>Us(t,r,{template:(n,s)=>s?.withExtendedOptional&&(n===void 0||!gt(n))?r?.minimum??0:n,coerce:n=>{if(nt(n)){let s=e.parseFn(n);if(!Number.isNaN(s))return s}return n}}),Sc=t=>wc("number",{parseFn:Number},t),Ec=t=>wc("integer",{parseFn:Number.parseInt},t),hh=class extends yt{constructor(t,e={}){super({...e,items:t},{template:r=>r===void 0||!Array.isArray(r)?[]:r,coerce:(r,n)=>{try{let s=typeof r=="string"?JSON.parse(r):r;if(!Array.isArray(s))return;if(_e(this.items))for(let[i,o]of s.entries())s[i]=this.items.coerce(o,n);return s}catch{}return r}}),this.items=t,this.items=t;}type="array";children(t){let e=[];if(this.items){let r=new ln(this.items,t);r.appendKeywordPath(["items"]),e.push(r);}return e}},_c=(t,e)=>new hh(t,e),cn=t=>Us("boolean",t,{template:(e,r)=>r?.withExtendedOptional&&(e===void 0||!Io(e))?false:e,coerce:e=>{if(nt(e)&&["true","false","1","0"].includes(e))return e==="true"||e==="1";if(gt(e)){if(e===1)return true;if(e===0)return false}return e}}),Ns=Symbol.for("unionType"),xc=class extends yt{[Ns];constructor(t,e,r){super({...r,[e]:t},{coerce:(n,s)=>{let i=r?.coerce;if(i!==void 0)return i.bind(this)(n,s);let o=Ls(t,n,{ignoreUnsupported:true,resolver:s?.resolver,coerce:true});return o.length>0?o[0].coerce(n,s):n}}),this[Ns]=e;}get schemas(){return this[this[Ns]]}children(t){let e=[];for(let[r,n]of this.schemas.entries()){let s=new ln(n,t);s.appendKeywordPath([this[Ns],r]),e.push(s);}return e}},gh=(t,e)=>new xc(t,"anyOf",e),yh=(t,e)=>new xc(t,"oneOf",e);function pc(t,e){return Array.isArray(t)?t.map(e):t!==void 0?[e(t)]:[]}function mc(t,e,r=n=>n){return Object.fromEntries(Object.entries(t).map(([n,s])=>[n,r(e(s,n),n)]))}function Ft(t){if(Io(t))return Oo(t);let e=structuredClone(t);if(!ce(e))throw new wm("non-object schemas cannot be converted to a schema",e);"properties"in e&&e.properties&&(e.properties=mc(e.properties,(i,o)=>{try{return Ft(i)}catch(a){throw new Error(`Couldn't schemaize property "${o}": ${String(a)}`)}},(i,o)=>"required"in e&&Array.isArray(e.required)&&e.required.includes(o)?i:i.optional()));let r=["patternProperties","dependentSchemas","$defs"];for(let i of r)i in e&&e[i]&&(e[i]=mc(e[i],Ft));let n=["additionalProperties","items","prefixItems","propertyNames","contains","not","if","then","else"];for(let i of n)i in e&&typeof e[i]<"u"&&(Mt(e[i])?e[i]=pc(e[i],Ft):e[i]=Ft(e[i]));let s=["anyOf","oneOf","allOf"];for(let i of s)if(i in e){let{[i]:o}=e;e[i]=pc(o,Ft);}if(Cm(e))switch(e.type){case "string":return er(e);case "number":return Sc(e);case "integer":return Ec(e);case "boolean":return cn(e);case "object":{let{properties:i,...o}=e;return Fs(i,o)}case "array":{let{items:i,...o}=e;return _c(i,o)}}return bc(e)}var Po=t=>typeof t=="object"&&t!==null&&!Array.isArray(t),ko=t=>typeof globalThis.structuredClone=="function"?globalThis.structuredClone(t):JSON.parse(JSON.stringify(t)),bh=["maximum","exclusiveMaximum","maxLength","maxItems","maxProperties"],wh=["minimum","exclusiveMinimum","minLength","minItems","minProperties"];function Sh(){return {type(t){let e=t.map(r=>Array.isArray(r)?new Set(r):new Set([r])).reduce((r,n)=>r?new Set([...r].filter(s=>n.has(s))):new Set(n));if(!e.size)throw new Error('Incompatible "type" in allOf');return e.size===1?[...e][0]:[...e]},enum(t){let e=t.map(r=>new Set(r)).reduce((r,n)=>new Set([...r].filter(s=>n.has(s))));if(!e.size)throw new Error('Incompatible "enum" in allOf');return [...e]},required(t){return [...new Set(t.flat())]},properties(t,e,r){return t.reduce((n,s)=>r(n,s),{})},patternProperties(t,e,r){return t.reduce((n,s)=>r(n,s),{})},$defs(t,e,r){return t.reduce((n,s)=>r(n,s),{})},definitions(t,e,r){return t.reduce((n,s)=>r(n,s),{})},...Object.fromEntries(bh.map(t=>[t,e=>Math.min(...e)])),...Object.fromEntries(wh.map(t=>[t,e=>Math.max(...e)]))}}function Eh(t){let e={...Sh(),...t.resolvers};function r(n,s){if(Array.isArray(n)&&Array.isArray(s))return [...new Set([...n,...s])];if(Po(n)&&Po(s)){let i={...n};for(let[o,a]of Object.entries(s))if(o in i){let l=e[o];i[o]=l?l([i[o],a],o,r):ko(a);}else i[o]=ko(a);return i}return ko(s)}return r}var _h=t=>t===true||t===false?t:null;function xh(t,e={}){let r=e.deep!==false,n=Eh(e);function s(i){if(Array.isArray(i))return i.map(s);if(!Po(i))return i;if(Array.isArray(i.allOf)){let a=i.allOf.map(s);if(a.some(p=>p===false))return false;let l=a.filter(p=>p!==true);if(!l.length)return true;let u=l.reduce((p,y)=>n(p,y),{}),f=_h(u);if(f!==null)return f;let c={...i};delete c.allOf;let d=n(u,r?s(c):c);return r?s(d):d}let o={};for(let[a,l]of Object.entries(i))o[a]=s(l);return o}return s(t)}var vh=(t,e)=>{let r=JSON.parse(JSON.stringify({...e,allOf:t}));return Ft(xh(r))},vc=class extends yt{$ref;constructor(t,e){if(!e&&!_e(t))throw new Error("Ref not set");if(_e(t)&&!t.$id)throw new Error("Ref must have an $id");let r=e??t?.$id;super({$ref:r},{coerce:(n,s)=>{let i=s?.resolver?.resolve(this.$ref);if(!_e(i))throw new Error(`Ref not found: ${this.$ref}`);return i.coerce(n,s)}}),this.$ref=r;}},Ch=(t,e)=>new vc(t,e),Ah=t=>new vc(void 0,t),Th=t=>t(new yt({$ref:"#",coerce:(e,r)=>{let n=r?.resolver?.resolve("#");if(!_e(n))throw new Error("Ref not found: #");return n.coerce(e,r)}}));var g={boolean:cn,any:bc,literal:uh,object:Fs,strictObject:Rr,partialObject:dh,record:mh,string:er,number:Sc,integer:Ec,array:_c,anyOf:gh,oneOf:yh,allOf:vh,ref:Ch,refId:Ah,recursive:Th};function Cc(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),r.push.apply(r,n);}return r}function Ac(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?Cc(Object(r),true).forEach(function(n){Rh(t,n,r[n]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Cc(Object(r)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(r,n));});}return t}function Rh(t,e,r){return e=kh(e),e in t?Object.defineProperty(t,e,{value:r,enumerable:true,configurable:true,writable:true}):t[e]=r,t}function kh(t){var e=$h(t,"string");return typeof e=="symbol"?e:String(e)}function $h(t,e){if(typeof t!="object"||t===null)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return (e==="string"?String:Number)(t)}var Oh=Tc({}),je=Oh;function Tc(t){return e.withOptions=r=>Tc(Ac(Ac({},t),r)),e;function e(r,...n){let s=typeof r=="string"?[r]:r.raw,{alignValues:i=false,escapeSpecialCharacters:o=Array.isArray(r),trimWhitespace:a=true}=t,l="";for(let c=0;c<s.length;c++){let d=s[c];if(o&&(d=d.replace(/\\\n[ \t]*/g,"").replace(/\\`/g,"`").replace(/\\\$/g,"$").replace(/\\\{/g,"{")),l+=d,c<n.length){let p=i?Ph(n[c],l):n[c];l+=p;}}let u=l.split(`
17
+ `),f=null;for(let c of u){let d=c.match(/^(\s+)\S+/);if(d){let p=d[1].length;f?f=Math.min(f,p):f=p;}}if(f!==null){let c=f;l=u.map(d=>d[0]===" "||d[0]===" "?d.slice(c):d).join(`
18
+ `);}return a&&(l=l.trim()),o&&(l=l.replace(/\\n/g,`
19
+ `).replace(/\\t/g," ").replace(/\\r/g,"\r").replace(/\\v/g,"\v").replace(/\\b/g,"\b").replace(/\\f/g,"\f").replace(/\\0/g,"\0").replace(/\\x([\da-fA-F]{2})/g,(c,d)=>String.fromCharCode(parseInt(d,16))).replace(/\\u\{([\da-fA-F]{1,6})\}/g,(c,d)=>String.fromCodePoint(parseInt(d,16))).replace(/\\u([\da-fA-F]{4})/g,(c,d)=>String.fromCharCode(parseInt(d,16)))),typeof Bun<"u"&&(l=l.replace(/\\u(?:\{([\da-fA-F]{1,6})\}|([\da-fA-F]{4}))/g,(c,d,p)=>{var y;let h=(y=d??p)!==null&&y!==void 0?y:"";return String.fromCodePoint(parseInt(h,16))})),l}}function Ph(t,e){if(typeof t!="string"||!t.includes(`
20
+ `))return t;let n=e.slice(e.lastIndexOf(`
21
+ `)+1).match(/^(\s+)/);if(n){let s=n[1];return t.replace(/\n/g,`
22
+ ${s}`)}return t}var Rc=[{name:"Self-hosted Logflare Configuration",link:"https://supabase.com/docs/reference/self-hosting-analytics/list-endpoints#getting-started"}],Bs=["analytics"],kc=g.strictObject({enabled:g.boolean({default:false,description:"Enable the local Logflare service.",tags:Bs,links:Rc}),port:g.number({default:54327,description:"Port to the local Logflare service.",tags:Bs}),vector_port:g.number({default:54328,description:"Port to the local syslog ingest service.",tags:Bs}),backend:g.string({enum:["postgres","bigquery"],default:"postgres",description:je`
25
23
  Configure one of the supported backends:
26
24
 
27
25
  - \`postgres\`
28
- - \`bigquery\``,tags:zn,links:Fu})}).partial();var Zd=Symbol.for("lite-only"),Jt=s=>(Object.defineProperty(s,Zd,{value:true,enumerable:false,writable:false,configurable:false}),s);var at=[{name:"PostgREST configuration",link:"https://postgrest.org/en/stable/configuration.html"}],He=["api"],Ju=E.strictObject({enabled:E.boolean({default:true,description:"Enable the local PostgREST service.",tags:He,links:at}),port:E.number({default:54321,description:"Port to use for the API URL.",tags:He,links:at}),schemas:E.array(E.string({description:"Schemas to expose in your API. Tables, views and functions in this schema will get API endpoints. `public` and `storage` are always included.",tags:He,links:at}),{default:["public","storage","graphql_public"]}),extra_search_path:E.array(E.string({description:"Extra schemas to add to the search_path of every request. public is always included.",tags:He,links:at}),{default:["public","extensions"]}),max_rows:E.number({default:1e3,description:"The maximum number of rows returned from a view, table, or stored procedure. Limits payload size for accidental or malicious requests.",tags:He,links:at}),pg_safe_update:E.boolean({default:false,description:"Require a WHERE clause on UPDATE and DELETE requests. Equivalent to pg_safe_update extension.",tags:He,links:at}),plan_enabled:Jt(E.boolean({default:false,description:"Enable the EXPLAIN plan feature via `Accept: application/vnd.pgrst.plan`. Disabled by default to match PostgREST's `db-plan-enabled` setting.",tags:He,links:at})),aggregates_enabled:Jt(E.boolean({default:false,description:"Enable aggregate functions (count(), sum(), avg(), min(), max()) in select. Disabled by default to match PostgREST's `db-aggregates-enabled` setting.",tags:He,links:at})),limited_mutations_enabled:Jt(E.boolean({default:false,description:"Honor `?limit`, `?offset`, and `?order` on UPDATE/DELETE via subquery. Disabled by default to match PostgREST's silent-ignore behavior.",tags:He,links:at})),anonymous_enabled:Jt(E.boolean({default:true,description:"Allow requests without an Authorization header. When false, unauthenticated requests receive 401 PGRST302 'Anonymous access is disabled'. Mirrors PostgREST's `db-anon-role`.",tags:He,links:at})),tls:E.strictObject({enabled:E.boolean({default:false,description:"Enable TLS for the local PostgREST service.",tags:He})}).partial(),external_url:E.string({default:"http://127.0.0.1:54321",description:"External URL for accessing the API server.",tags:He})}).partial();var nr=["auth"],ir={auth:{name:"Auth Server configuration",link:"https://supabase.com/docs/reference/auth"}},ds=(s,e)=>E.strictObject({subject:E.string({default:e,description:`The subject of the ${s} email.`}),content_path:E.string({description:`The path to the content of the ${s} email.`})}).partial(),Wu=E.strictObject({enable_signup:E.boolean({default:true,description:"Allow/disallow new user signups via email to your project.",tags:nr,links:[ir.auth]}),double_confirm_changes:E.boolean({default:true,description:"If enabled, a user will be required to confirm any email change on both the old, and new email addresses. If disabled, only the new email is required to confirm.",tags:nr,links:[ir.auth]}),enable_confirmations:E.boolean({default:false,description:"If enabled, users need to confirm their email address before signing in.",tags:nr,links:[ir.auth]}),secure_password_change:E.boolean({default:false,description:"If enabled, users will need to reauthenticate or have logged in recently to change their password.",tags:nr,links:[ir.auth]}),max_frequency:E.string({default:"1s",description:"Controls the minimum amount of time that must pass before sending another signup confirmation or password reset email.",tags:nr,links:[ir.auth]}),smtp:E.strictObject({host:E.string({default:"inbucket",description:"Hostname or IP address of the SMTP server."}),port:E.number({default:2500,description:"Port number of the SMTP server."}),user:E.string({description:"Username for authenticating with the SMTP server."}),pass:E.string({description:"Password for authenticating with the SMTP server."}),admin_email:E.string({default:"admin@email.com",description:"Email used as the sender for emails sent from the application."}),sender_name:E.string({description:"Display name used as the sender for emails sent from the application."})}).partial(),template:E.strictObject({invite:ds("invite","You have been invited"),confirmation:ds("confirmation","Confirm Your Signup"),recovery:ds("recovery","Reset Your Password"),magic_link:ds("magic link","Your Magic Link"),email_change:ds("email change","Confirm Email Change")}).partial(),otp_length:E.number({default:6,description:"Number of characters used in the email OTP.",tags:nr,links:[ir.auth]}),otp_expiry:E.number({default:3600,description:"Number of seconds before the email OTP expires (defaults to 1 hour).",tags:nr,links:[ir.auth]})}).partial();var Xn=["auth"],Ga=(s,e)=>({name:s,link:`https://supabase.com/docs/guides/auth/auth-hooks/${e}`}),gs=(s,e)=>E.strictObject({enabled:E.boolean({default:false,description:`Enable/disable the ${s.toLowerCase()}.`,tags:Xn,links:[Ga(s,e)]}),uri:E.string({description:"The URI of the postgres function or HTTP endpoint to call.",tags:Xn,links:[Ga(s,e)]}),secrets:E.array(E.string({description:"A secret to pass to the function or endpoint.",tags:Xn}),{description:"The secrets to pass to the postgres function or HTTP endpoint.",tags:Xn,links:[Ga(s,e)]})}).partial(),Hu=E.strictObject({mfa_verification_attempt:gs("MFA Verification Hook","mfa-verification-hook"),password_verification_attempt:gs("Password Verification Hook","password-verification-hook"),custom_access_token:gs("Custom Access Token Hook","custom-access-token-hook"),send_sms:gs("Send SMS Hook","send-sms-hook"),send_email:gs("Send Email Hook","send-email-hook")}).partial();var Wt=["auth"],Ht={mfa:{name:"Multi-Factor Authentication",link:"https://supabase.com/docs/guides/auth/auth-mfa"},totp:{name:"Multi-Factor Authentication (TOTP)",link:"https://supabase.com/docs/guides/auth/auth-mfa/totp"},phone:{name:"Multi-Factor Authentication (Phone)",link:"https://supabase.com/docs/guides/auth/auth-mfa/phone"}},Gu=E.strictObject({totp:E.strictObject({enroll_enabled:E.boolean({default:true,description:"Allow/disallow TOTP enrollment for users.",tags:Wt,links:[Ht.totp]}),verify_enabled:E.boolean({default:true,description:"Allow/disallow TOTP verification for users.",tags:Wt,links:[Ht.totp]})}).partial(),phone:E.strictObject({enroll_enabled:E.boolean({default:false,description:"Allow/disallow phone enrollment for users.",tags:Wt,links:[Ht.phone]}),verify_enabled:E.boolean({default:false,description:"Allow/disallow phone verification for users.",tags:Wt,links:[Ht.phone]}),otp_length:E.number({default:6,description:"The length of the OTP code.",tags:Wt,links:[Ht.phone]}),template:E.string({default:"Your code is {{ .Code }}",description:"The template to use for the phone message.",tags:Wt,links:[Ht.phone]}),max_frequency:E.string({default:"60s",description:"The maximum frequency of the phone messages.",tags:Wt,links:[Ht.phone]})}).partial(),max_enrolled_factors:E.number({default:10,description:"The maximum number of MFA factors a user can enroll in.",tags:Wt,links:[Ht.mfa]})}).partial();var Va=class extends Ha{},bt=s=>new Va(s);var kr=["auth"],fe=s=>{let e=[{name:`Login with ${s.name}`,link:`https://supabase.com/docs/guides/auth/social-login/auth-${s.id}`}];return E.strictObject({enabled:E.boolean({default:false,description:`Use the ${s.name} OAuth provider.`,tags:kr,links:e}),client_id:E.string({description:`Client ID for the ${s.name} OAuth provider.`,tags:kr,links:e}),secret:bt({default:`env(SUPABASE_AUTH_EXTERNAL_${s.id.toUpperCase()}_SECRET)`,description:xe`
29
- Client secret for the ${s.name} OAuth provider.
26
+ - \`bigquery\``,tags:Bs,links:Rc})}).partial();var Ih=Symbol.for("lite-only"),Bt=t=>(Object.defineProperty(t,Ih,{value:true,enumerable:false,writable:false,configurable:false}),t);var st=[{name:"PostgREST configuration",link:"https://postgrest.org/en/stable/configuration.html"}],Je=["api"],$c=g.strictObject({enabled:g.boolean({default:true,description:"Enable the local PostgREST service.",tags:Je,links:st}),port:g.number({default:54321,description:"Port to use for the API URL.",tags:Je,links:st}),schemas:g.array(g.string({description:"Schemas to expose in your API. Tables, views and functions in this schema will get API endpoints. `public` and `storage` are always included.",tags:Je,links:st}),{default:["public","storage","graphql_public"]}),extra_search_path:g.array(g.string({description:"Extra schemas to add to the search_path of every request. public is always included.",tags:Je,links:st}),{default:["public","extensions"]}),max_rows:g.number({default:1e3,description:"The maximum number of rows returned from a view, table, or stored procedure. Limits payload size for accidental or malicious requests.",tags:Je,links:st}),pg_safe_update:g.boolean({default:false,description:"Require a WHERE clause on UPDATE and DELETE requests. Equivalent to pg_safe_update extension.",tags:Je,links:st}),plan_enabled:Bt(g.boolean({default:false,description:"Enable the EXPLAIN plan feature via `Accept: application/vnd.pgrst.plan`. Disabled by default to match PostgREST's `db-plan-enabled` setting.",tags:Je,links:st})),aggregates_enabled:Bt(g.boolean({default:false,description:"Enable aggregate functions (count(), sum(), avg(), min(), max()) in select. Disabled by default to match PostgREST's `db-aggregates-enabled` setting.",tags:Je,links:st})),limited_mutations_enabled:Bt(g.boolean({default:false,description:"Honor `?limit`, `?offset`, and `?order` on UPDATE/DELETE via subquery. Disabled by default to match PostgREST's silent-ignore behavior.",tags:Je,links:st})),anonymous_enabled:Bt(g.boolean({default:true,description:"Allow requests without an Authorization header. When false, unauthenticated requests receive 401 PGRST302 'Anonymous access is disabled'. Mirrors PostgREST's `db-anon-role`.",tags:Je,links:st})),tls:g.strictObject({enabled:g.boolean({default:false,description:"Enable TLS for the local PostgREST service.",tags:Je})}).partial(),external_url:g.string({default:"http://127.0.0.1:54321",description:"External URL for accessing the API server.",tags:Je})}).partial();var tr=["auth"],rr={auth:{name:"Auth Server configuration",link:"https://supabase.com/docs/reference/auth"}},un=(t,e)=>g.strictObject({subject:g.string({default:e,description:`The subject of the ${t} email.`}),content_path:g.string({description:`The path to the content of the ${t} email.`})}).partial(),Oc=g.strictObject({enable_signup:g.boolean({default:true,description:"Allow/disallow new user signups via email to your project.",tags:tr,links:[rr.auth]}),double_confirm_changes:g.boolean({default:true,description:"If enabled, a user will be required to confirm any email change on both the old, and new email addresses. If disabled, only the new email is required to confirm.",tags:tr,links:[rr.auth]}),enable_confirmations:g.boolean({default:false,description:"If enabled, users need to confirm their email address before signing in.",tags:tr,links:[rr.auth]}),secure_password_change:g.boolean({default:false,description:"If enabled, users will need to reauthenticate or have logged in recently to change their password.",tags:tr,links:[rr.auth]}),max_frequency:g.string({default:"1s",description:"Controls the minimum amount of time that must pass before sending another signup confirmation or password reset email.",tags:tr,links:[rr.auth]}),smtp:g.strictObject({host:g.string({default:"inbucket",description:"Hostname or IP address of the SMTP server."}),port:g.number({default:2500,description:"Port number of the SMTP server."}),user:g.string({description:"Username for authenticating with the SMTP server."}),pass:g.string({description:"Password for authenticating with the SMTP server."}),admin_email:g.string({default:"admin@email.com",description:"Email used as the sender for emails sent from the application."}),sender_name:g.string({description:"Display name used as the sender for emails sent from the application."})}).partial(),template:g.strictObject({invite:un("invite","You have been invited"),confirmation:un("confirmation","Confirm Your Signup"),recovery:un("recovery","Reset Your Password"),magic_link:un("magic link","Your Magic Link"),email_change:un("email change","Confirm Email Change")}).partial(),otp_length:g.number({default:6,description:"Number of characters used in the email OTP.",tags:tr,links:[rr.auth]}),otp_expiry:g.number({default:3600,description:"Number of seconds before the email OTP expires (defaults to 1 hour).",tags:tr,links:[rr.auth]})}).partial();var qs=["auth"],Do=(t,e)=>({name:t,link:`https://supabase.com/docs/guides/auth/auth-hooks/${e}`}),fn=(t,e)=>g.strictObject({enabled:g.boolean({default:false,description:`Enable/disable the ${t.toLowerCase()}.`,tags:qs,links:[Do(t,e)]}),uri:g.string({description:"The URI of the postgres function or HTTP endpoint to call.",tags:qs,links:[Do(t,e)]}),secrets:g.array(g.string({description:"A secret to pass to the function or endpoint.",tags:qs}),{description:"The secrets to pass to the postgres function or HTTP endpoint.",tags:qs,links:[Do(t,e)]})}).partial(),Pc=g.strictObject({mfa_verification_attempt:fn("MFA Verification Hook","mfa-verification-hook"),password_verification_attempt:fn("Password Verification Hook","password-verification-hook"),custom_access_token:fn("Custom Access Token Hook","custom-access-token-hook"),send_sms:fn("Send SMS Hook","send-sms-hook"),send_email:fn("Send Email Hook","send-email-hook")}).partial();var qt=["auth"],Jt={mfa:{name:"Multi-Factor Authentication",link:"https://supabase.com/docs/guides/auth/auth-mfa"},totp:{name:"Multi-Factor Authentication (TOTP)",link:"https://supabase.com/docs/guides/auth/auth-mfa/totp"},phone:{name:"Multi-Factor Authentication (Phone)",link:"https://supabase.com/docs/guides/auth/auth-mfa/phone"}},Ic=g.strictObject({totp:g.strictObject({enroll_enabled:g.boolean({default:true,description:"Allow/disallow TOTP enrollment for users.",tags:qt,links:[Jt.totp]}),verify_enabled:g.boolean({default:true,description:"Allow/disallow TOTP verification for users.",tags:qt,links:[Jt.totp]})}).partial(),phone:g.strictObject({enroll_enabled:g.boolean({default:false,description:"Allow/disallow phone enrollment for users.",tags:qt,links:[Jt.phone]}),verify_enabled:g.boolean({default:false,description:"Allow/disallow phone verification for users.",tags:qt,links:[Jt.phone]}),otp_length:g.number({default:6,description:"The length of the OTP code.",tags:qt,links:[Jt.phone]}),template:g.string({default:"Your code is {{ .Code }}",description:"The template to use for the phone message.",tags:qt,links:[Jt.phone]}),max_frequency:g.string({default:"60s",description:"The maximum frequency of the phone messages.",tags:qt,links:[Jt.phone]})}).partial(),max_enrolled_factors:g.number({default:10,description:"The maximum number of MFA factors a user can enroll in.",tags:qt,links:[Jt.mfa]})}).partial();var Lo=class extends jo{},bt=t=>new Lo(t);var kr=["auth"],ue=t=>{let e=[{name:`Login with ${t.name}`,link:`https://supabase.com/docs/guides/auth/social-login/auth-${t.id}`}];return g.strictObject({enabled:g.boolean({default:false,description:`Use the ${t.name} OAuth provider.`,tags:kr,links:e}),client_id:g.string({description:`Client ID for the ${t.name} OAuth provider.`,tags:kr,links:e}),secret:bt({default:`env(SUPABASE_AUTH_EXTERNAL_${t.id.toUpperCase()}_SECRET)`,description:je`
27
+ Client secret for the ${t.name} OAuth provider.
30
28
 
31
29
  DO NOT commit your OAuth provider secret to git. Use environment variable substitution instead.
32
- `,tags:kr,links:e}),url:E.string({description:"The base URL used for constructing the URLs to request authorization and access tokens.",...s.url,tags:kr,links:e}),redirect_uri:E.string({description:`The URI the ${s.name} OAuth2 provider will redirect to with the code and state values.`,tags:kr,links:e}),skip_nonce_check:E.boolean({default:false,description:"If true, the nonce check will be skipped.",tags:kr,links:e})}).partial()},Vu=E.strictObject({apple:fe({id:"apple",name:"Apple"}),azure:fe({id:"azure",name:"Azure"}),bitbucket:fe({id:"bitbucket",name:"Bitbucket"}),discord:fe({id:"discord",name:"Discord"}),facebook:fe({id:"facebook",name:"Facebook"}),github:fe({id:"github",name:"GitHub"}),gitlab:fe({id:"gitlab",name:"Gitlab",url:{default:"https://gitlab.com"}}),google:fe({id:"google",name:"Google"}),kakao:fe({id:"kakao",name:"Kakao"}),keycloak:fe({id:"keycloak",name:"Keycloak",url:{examples:["https://keycloak.example.com/realms/myrealm"]}}),linkedin:fe({id:"linkedin",name:"LinkedIn"}),notion:fe({id:"notion",name:"Notion"}),twitch:fe({id:"twitch",name:"Twitch"}),twitter:fe({id:"twitter",name:"Twitter"}),slack:fe({id:"slack",name:"Slack"}),spotify:fe({id:"spotify",name:"Spotify"}),workos:fe({id:"workos",name:"WorkOS"}),zoom:fe({id:"zoom",name:"Zoom"})}).partial();var Ka=["auth"],Ya=[{name:"User sessions",link:"https://supabase.com/docs/guides/auth/sessions"}],Ku=E.strictObject({timebox:E.string({description:"The timebox for the user session.",tags:Ka,links:Ya}),inactivity_timeout:E.string({description:"The inactivity timeout for the user session.",tags:Ka,links:Ya}),single_per_user:E.boolean({default:false,description:"Limit each user to one active refreshable session.",tags:Ka,links:Ya})}).partial();var te=["auth"],ne={auth:{name:"Auth Server configuration",link:"https://supabase.com/docs/reference/auth"},phoneLogin:s=>({name:`Enabling Phone Login (${s})`,link:`https://supabase.com/docs/guides/auth/phone-login?showSmsProvider=${s}#enabling-phone-login`})},Yu=E.strictObject({enable_signup:E.boolean({default:true,description:"Allow/disallow new user signups via SMS to your project.",tags:te,links:[ne.auth]}),enable_confirmations:E.boolean({default:false,description:"If enabled, users need to confirm their phone number before signing in.",tags:te,links:[ne.auth]}),template:E.string({default:"Your code is {{ .Code }}",description:"The template to use for the SMS message.",tags:te,links:[ne.auth]}),max_frequency:E.string({default:"60s",description:"Controls the minimum amount of time that must pass before sending another sms otp.",tags:te}),twilio:E.strictObject({enabled:E.boolean({default:false,description:"Enable/disable Twilio provider for phone login.",tags:te,links:[ne.phoneLogin("Twilio")]}),account_sid:E.string({description:"The account SID for the Twilio API.",tags:te,links:[ne.phoneLogin("Twilio")]}),message_service_sid:E.string({description:"The message service SID for the Twilio API.",tags:te,links:[ne.phoneLogin("Twilio")]}),auth_token:E.string({description:"The auth token for the Twilio API.",tags:te,links:[ne.phoneLogin("Twilio")]})}).partial(),twilio_verify:E.strictObject({enabled:E.boolean({default:false,description:"Enable/disable Twilio Verify provider for phone verification.",tags:te,links:[ne.phoneLogin("Twilio")]}),account_sid:E.string({description:"The account SID for the Twilio API.",tags:te,links:[ne.phoneLogin("Twilio")]}),message_service_sid:E.string({description:"The message service SID for the Twilio API.",tags:te,links:[ne.phoneLogin("Twilio")]}),auth_token:E.string({description:"The auth token for the Twilio API.",tags:te,links:[ne.phoneLogin("Twilio")]})}).partial(),messagebird:E.strictObject({enabled:E.boolean({default:false,description:"Enable/disable MessageBird provider for phone login.",tags:te,links:[ne.phoneLogin("MessageBird")]}),originator:E.string({description:"The originator of the SMS message.",tags:te,links:[ne.phoneLogin("MessageBird")]}),api_key:E.string({description:"The API key for the MessageBird API.",tags:te,links:[ne.phoneLogin("MessageBird")]})}).partial(),textlocal:E.strictObject({enabled:E.boolean({default:false,description:"Enable/disable Textlocal provider for phone login.",tags:te,links:[ne.phoneLogin("Textlocal%2520(Community%2520Supported)")]}),sender:E.string({description:"The sender of the SMS message.",tags:te,links:[ne.phoneLogin("Textlocal%2520(Community%2520Supported)")]}),api_key:E.string({description:"The API key for the Textlocal API.",tags:te,links:[ne.phoneLogin("Textlocal%2520(Community%2520Supported)")]})}).partial(),vonage:E.strictObject({enabled:E.boolean({default:false,description:"Enable/disable Vonage provider for phone login.",tags:te,links:[ne.phoneLogin("Vonage")]}),from:E.string({description:"The sender of the SMS message.",tags:te,links:[ne.phoneLogin("Vonage")]}),api_key:E.string({description:"The API key for the Vonage API.",tags:te,links:[ne.phoneLogin("Vonage")]}),api_secret:E.string({description:"The API secret for the Vonage API.",tags:te,links:[ne.phoneLogin("Vonage")]})}).partial(),test_otp:E.record(E.string(),{description:"Use pre-defined map of phone number to OTP for testing.",tags:te,links:[ne.auth]})}).partial();var Ue=["auth"],Ge={auth:{name:"Auth Server configuration",link:"https://supabase.com/docs/reference/auth"}},zu=["letters_digits","lower_upper_letters_digits","lower_upper_letters_digits_symbols"],Xu=E.strictObject({enabled:E.boolean({default:true,description:"Enable the local GoTrue service.",tags:Ue,links:[Ge.auth]}),jwt_secret:E.string({default:"unsafe-secret-change-me",description:"The secret used to sign JWT tokens.",tags:Ue,links:[Ge.auth]}),site_url:E.string({default:"http://localhost:3000",description:"The base URL of your website. Used as an allow-list for redirects and for constructing URLs used in emails.",tags:Ue,links:[Ge.auth]}),additional_redirect_urls:E.array(E.string({description:"A URL that auth providers are permitted to redirect to.",tags:Ue}),{default:["https://localhost:3000"],description:"A list of _exact_ URLs that auth providers are permitted to redirect to post authentication.",tags:Ue,links:[Ge.auth]}),jwt_expiry:E.number({default:3600,description:"How long tokens are valid for, in seconds. Defaults to 3600 (1 hour), maximum 604,800 seconds (one week).",tags:Ue,links:[Ge.auth]}),enable_refresh_token_rotation:E.boolean({default:true,description:"If disabled, the refresh token will never expire.",tags:Ue,links:[Ge.auth]}),refresh_token_reuse_interval:E.number({default:10,description:"Allows refresh tokens to be reused after expiry, up to the specified interval in seconds. Requires enable_refresh_token_rotation = true.",tags:Ue,links:[Ge.auth]}),enable_manual_linking:E.boolean({default:false,description:"Allow/disallow testing manual linking of accounts.",tags:Ue,links:[Ge.auth]}),enable_signup:E.boolean({default:true,description:"Allow/disallow new user signups to your project.",tags:Ue,links:[Ge.auth]}),enable_anonymous_sign_ins:E.boolean({default:false,description:"Allow/disallow anonymous sign-ins to your project.",tags:Ue,links:[Ge.auth]}),minimum_password_length:E.number({default:6,description:"Passwords shorter than this value will be rejected as weak. Minimum 6, recommended 8 or more.",tags:Ue,links:[Ge.auth]}),password_requirements:E.string({description:`Passwords that do not meet the following requirements will be rejected as weak. Supported values are: ${zu.join(", ")}`,enum:["",...zu],tags:Ue,links:[Ge.auth]}),hook:Hu,mfa:Gu,sessions:Ku,email:Wu,sms:Yu,external:Vu}).partial();var ar={postgres:{name:"PostgreSQL configuration",link:"https://postgrest.org/en/stable/configuration.html"},pgbouncer:s=>({name:"PgBouncer Configuration",link:`https://www.pgbouncer.org/config.html${s?`#${s}`:""}`})},Re=["database"],Qu=E.object({driver:Jt(E.string({enum:["sqlite","sqlite-postgres","pglite","postgres"],default:"sqlite",description:"The database driver to use.",tags:Re})),url:Jt(E.string({description:"Path to the database file/directory (Supalite only).",tags:Re})),port:E.number({default:54322,description:"Port to use for the local database URL.",tags:Re,links:[ar.postgres]}),shadow_port:E.number({default:54320,description:"Port to use for the local shadow database.",tags:Re}),major_version:E.number({default:15,description:"The database major version to use. This has to be the same as your remote database's. Run `SHOW server_version;` on the remote database to check.",tags:Re,links:[ar.postgres]}),pooler:E.object({enabled:E.boolean({default:false,description:"Enable the local PgBouncer service.",tags:Re,links:[ar.pgbouncer()]}),port:E.number({default:54329,description:"Port to use for the local connection pooler.",tags:Re,links:[ar.pgbouncer("listen_port")]}),pool_mode:E.string({enum:["transaction","session"],default:"transaction",description:"Specifies when a server connection can be reused by other clients. Configure one of the supported pooler modes: `transaction`, `session`.",tags:Re,links:[ar.pgbouncer("pool_mode")]}),default_pool_size:E.number({default:20,description:"How many server connections to allow per user/database pair.",tags:Re,links:[ar.pgbouncer("default_pool_size")]}),max_client_conn:E.number({default:100,description:"Maximum number of client connections allowed.",tags:Re,links:[ar.pgbouncer("max_client_conn")]})}).partial(),seed:E.strictObject({enabled:E.boolean({default:true,description:"Enable seeding the database with SQL files.",tags:Re}),sql_paths:E.array(E.string({description:"Path to a SQL file to seed the database with.",tags:Re}),{default:["./seed.sql"],description:"Paths to SQL files to seed the database with. Supports glob patterns relative to supabase directory.",examples:[["./seeds/*.sql","../project-src/seeds/*-load-testing.sql"]],tags:Re})}).partial(),migrations:E.strictObject({enabled:E.boolean({default:true,description:"Enable migrations.",tags:Re}),schema_paths:E.array(E.string({description:"Path to a SQL file to seed the database with.",tags:Re}),{default:["./schemas/schema.sql"]})}).partial()}).partial();var za=["edge-functions"],Zu=E.strictObject({enabled:E.boolean({default:true,description:"Enable the local Edge Runtime service.",tags:za}),policy:E.string({enum:["oneshot","per_worker"],default:"oneshot",description:"Configure the supported request policy. Use `oneshot` for hot reload, or `per_worker` for load testing.",tags:za}),inspector_port:E.number({default:8083,description:"Port to run the Edge Functions inspector on.",tags:za})}).partial();var ys=["experimental"],ec=E.strictObject({orioledb_version:E.string({description:"Postgres storage engine to use OrioleDB (S3)",tags:ys}),s3_host:bt({description:"S3 bucket URL.",examples:["<bucket_name>.s3-<region>.amazonaws.com"],default:"env(S3_HOST)",tags:ys}),s3_region:bt({description:"S3 bucket region.",examples:["us-east-1"],default:"env(S3_REGION)",tags:ys}),s3_access_key:bt({description:"S3 access key.",default:"env(S3_ACCESS_KEY)",tags:ys}),s3_secret_key:bt({description:"S3 secret key.",default:"env(S3_SECRET_KEY)",tags:ys})}).partial();var Qn=["functions"],Zn=[{name:"`supabase functions` CLI subcommands",link:"https://supabase.com/docs/reference/cli/supabase-functions"}],eg=Lr({enabled:hs({default:true,description:xe`
30
+ `,tags:kr,links:e}),url:g.string({description:"The base URL used for constructing the URLs to request authorization and access tokens.",...t.url,tags:kr,links:e}),redirect_uri:g.string({description:`The URI the ${t.name} OAuth2 provider will redirect to with the code and state values.`,tags:kr,links:e}),skip_nonce_check:g.boolean({default:false,description:"If true, the nonce check will be skipped.",tags:kr,links:e})}).partial()},Nc=g.strictObject({apple:ue({id:"apple",name:"Apple"}),azure:ue({id:"azure",name:"Azure"}),bitbucket:ue({id:"bitbucket",name:"Bitbucket"}),discord:ue({id:"discord",name:"Discord"}),facebook:ue({id:"facebook",name:"Facebook"}),github:ue({id:"github",name:"GitHub"}),gitlab:ue({id:"gitlab",name:"Gitlab",url:{default:"https://gitlab.com"}}),google:ue({id:"google",name:"Google"}),kakao:ue({id:"kakao",name:"Kakao"}),keycloak:ue({id:"keycloak",name:"Keycloak",url:{examples:["https://keycloak.example.com/realms/myrealm"]}}),linkedin:ue({id:"linkedin",name:"LinkedIn"}),notion:ue({id:"notion",name:"Notion"}),twitch:ue({id:"twitch",name:"Twitch"}),twitter:ue({id:"twitter",name:"Twitter"}),slack:ue({id:"slack",name:"Slack"}),spotify:ue({id:"spotify",name:"Spotify"}),workos:ue({id:"workos",name:"WorkOS"}),zoom:ue({id:"zoom",name:"Zoom"})}).partial();var Uo=["auth"],Fo=[{name:"User sessions",link:"https://supabase.com/docs/guides/auth/sessions"}],jc=g.strictObject({timebox:g.string({description:"The timebox for the user session.",tags:Uo,links:Fo}),inactivity_timeout:g.string({description:"The inactivity timeout for the user session.",tags:Uo,links:Fo}),single_per_user:g.boolean({default:false,description:"Limit each user to one active refreshable session.",tags:Uo,links:Fo})}).partial();var Z=["auth"],re={auth:{name:"Auth Server configuration",link:"https://supabase.com/docs/reference/auth"},phoneLogin:t=>({name:`Enabling Phone Login (${t})`,link:`https://supabase.com/docs/guides/auth/phone-login?showSmsProvider=${t}#enabling-phone-login`})},Dc=g.strictObject({enable_signup:g.boolean({default:true,description:"Allow/disallow new user signups via SMS to your project.",tags:Z,links:[re.auth]}),enable_confirmations:g.boolean({default:false,description:"If enabled, users need to confirm their phone number before signing in.",tags:Z,links:[re.auth]}),template:g.string({default:"Your code is {{ .Code }}",description:"The template to use for the SMS message.",tags:Z,links:[re.auth]}),max_frequency:g.string({default:"60s",description:"Controls the minimum amount of time that must pass before sending another sms otp.",tags:Z}),twilio:g.strictObject({enabled:g.boolean({default:false,description:"Enable/disable Twilio provider for phone login.",tags:Z,links:[re.phoneLogin("Twilio")]}),account_sid:g.string({description:"The account SID for the Twilio API.",tags:Z,links:[re.phoneLogin("Twilio")]}),message_service_sid:g.string({description:"The message service SID for the Twilio API.",tags:Z,links:[re.phoneLogin("Twilio")]}),auth_token:g.string({description:"The auth token for the Twilio API.",tags:Z,links:[re.phoneLogin("Twilio")]})}).partial(),twilio_verify:g.strictObject({enabled:g.boolean({default:false,description:"Enable/disable Twilio Verify provider for phone verification.",tags:Z,links:[re.phoneLogin("Twilio")]}),account_sid:g.string({description:"The account SID for the Twilio API.",tags:Z,links:[re.phoneLogin("Twilio")]}),message_service_sid:g.string({description:"The message service SID for the Twilio API.",tags:Z,links:[re.phoneLogin("Twilio")]}),auth_token:g.string({description:"The auth token for the Twilio API.",tags:Z,links:[re.phoneLogin("Twilio")]})}).partial(),messagebird:g.strictObject({enabled:g.boolean({default:false,description:"Enable/disable MessageBird provider for phone login.",tags:Z,links:[re.phoneLogin("MessageBird")]}),originator:g.string({description:"The originator of the SMS message.",tags:Z,links:[re.phoneLogin("MessageBird")]}),api_key:g.string({description:"The API key for the MessageBird API.",tags:Z,links:[re.phoneLogin("MessageBird")]})}).partial(),textlocal:g.strictObject({enabled:g.boolean({default:false,description:"Enable/disable Textlocal provider for phone login.",tags:Z,links:[re.phoneLogin("Textlocal%2520(Community%2520Supported)")]}),sender:g.string({description:"The sender of the SMS message.",tags:Z,links:[re.phoneLogin("Textlocal%2520(Community%2520Supported)")]}),api_key:g.string({description:"The API key for the Textlocal API.",tags:Z,links:[re.phoneLogin("Textlocal%2520(Community%2520Supported)")]})}).partial(),vonage:g.strictObject({enabled:g.boolean({default:false,description:"Enable/disable Vonage provider for phone login.",tags:Z,links:[re.phoneLogin("Vonage")]}),from:g.string({description:"The sender of the SMS message.",tags:Z,links:[re.phoneLogin("Vonage")]}),api_key:g.string({description:"The API key for the Vonage API.",tags:Z,links:[re.phoneLogin("Vonage")]}),api_secret:g.string({description:"The API secret for the Vonage API.",tags:Z,links:[re.phoneLogin("Vonage")]})}).partial(),test_otp:g.record(g.string(),{description:"Use pre-defined map of phone number to OTP for testing.",tags:Z,links:[re.auth]})}).partial();var De=["auth"],Ke={auth:{name:"Auth Server configuration",link:"https://supabase.com/docs/reference/auth"}},Lc=["letters_digits","lower_upper_letters_digits","lower_upper_letters_digits_symbols"],Uc=g.strictObject({enabled:g.boolean({default:true,description:"Enable the local GoTrue service.",tags:De,links:[Ke.auth]}),jwt_secret:g.string({default:"unsafe-secret-change-me",description:"The secret used to sign JWT tokens.",tags:De,links:[Ke.auth]}),site_url:g.string({default:"http://localhost:3000",description:"The base URL of your website. Used as an allow-list for redirects and for constructing URLs used in emails.",tags:De,links:[Ke.auth]}),additional_redirect_urls:g.array(g.string({description:"A URL that auth providers are permitted to redirect to.",tags:De}),{default:["https://localhost:3000"],description:"A list of _exact_ URLs that auth providers are permitted to redirect to post authentication.",tags:De,links:[Ke.auth]}),jwt_expiry:g.number({default:3600,description:"How long tokens are valid for, in seconds. Defaults to 3600 (1 hour), maximum 604,800 seconds (one week).",tags:De,links:[Ke.auth]}),enable_refresh_token_rotation:g.boolean({default:true,description:"If disabled, the refresh token will never expire.",tags:De,links:[Ke.auth]}),refresh_token_reuse_interval:g.number({default:10,description:"Allows refresh tokens to be reused after expiry, up to the specified interval in seconds. Requires enable_refresh_token_rotation = true.",tags:De,links:[Ke.auth]}),enable_manual_linking:g.boolean({default:false,description:"Allow/disallow testing manual linking of accounts.",tags:De,links:[Ke.auth]}),enable_signup:g.boolean({default:true,description:"Allow/disallow new user signups to your project.",tags:De,links:[Ke.auth]}),enable_anonymous_sign_ins:g.boolean({default:false,description:"Allow/disallow anonymous sign-ins to your project.",tags:De,links:[Ke.auth]}),minimum_password_length:g.number({default:6,description:"Passwords shorter than this value will be rejected as weak. Minimum 6, recommended 8 or more.",tags:De,links:[Ke.auth]}),password_requirements:g.string({description:`Passwords that do not meet the following requirements will be rejected as weak. Supported values are: ${Lc.join(", ")}`,enum:["",...Lc],tags:De,links:[Ke.auth]}),hook:Pc,mfa:Ic,sessions:jc,email:Oc,sms:Dc,external:Nc}).partial();var nr={postgres:{name:"PostgreSQL configuration",link:"https://postgrest.org/en/stable/configuration.html"},pgbouncer:t=>({name:"PgBouncer Configuration",link:`https://www.pgbouncer.org/config.html${t?`#${t}`:""}`})},xe=["database"],Fc=g.object({driver:Bt(g.string({enum:["sqlite","sqlite-postgres","pglite","postgres"],default:"sqlite",description:"The database driver to use.",tags:xe})),url:Bt(g.string({description:"Path to the database file/directory (Supalite only).",tags:xe})),port:g.number({default:54322,description:"Port to use for the local database URL.",tags:xe,links:[nr.postgres]}),shadow_port:g.number({default:54320,description:"Port to use for the local shadow database.",tags:xe}),major_version:g.number({default:15,description:"The database major version to use. This has to be the same as your remote database's. Run `SHOW server_version;` on the remote database to check.",tags:xe,links:[nr.postgres]}),pooler:g.object({enabled:g.boolean({default:false,description:"Enable the local PgBouncer service.",tags:xe,links:[nr.pgbouncer()]}),port:g.number({default:54329,description:"Port to use for the local connection pooler.",tags:xe,links:[nr.pgbouncer("listen_port")]}),pool_mode:g.string({enum:["transaction","session"],default:"transaction",description:"Specifies when a server connection can be reused by other clients. Configure one of the supported pooler modes: `transaction`, `session`.",tags:xe,links:[nr.pgbouncer("pool_mode")]}),default_pool_size:g.number({default:20,description:"How many server connections to allow per user/database pair.",tags:xe,links:[nr.pgbouncer("default_pool_size")]}),max_client_conn:g.number({default:100,description:"Maximum number of client connections allowed.",tags:xe,links:[nr.pgbouncer("max_client_conn")]})}).partial(),seed:g.strictObject({enabled:g.boolean({default:true,description:"Enable seeding the database with SQL files.",tags:xe}),sql_paths:g.array(g.string({description:"Path to a SQL file to seed the database with.",tags:xe}),{default:["./seed.sql"],description:"Paths to SQL files to seed the database with. Supports glob patterns relative to supabase directory.",examples:[["./seeds/*.sql","../project-src/seeds/*-load-testing.sql"]],tags:xe})}).partial(),migrations:g.strictObject({enabled:g.boolean({default:true,description:"Enable migrations.",tags:xe}),schema_paths:g.array(g.string({description:"Path to a SQL file to seed the database with.",tags:xe}),{default:["./schemas/schema.sql"]})}).partial()}).partial();var Mo=["edge-functions"],Mc=g.strictObject({enabled:g.boolean({default:true,description:"Enable the local Edge Runtime service.",tags:Mo}),policy:g.string({enum:["oneshot","per_worker"],default:"oneshot",description:"Configure the supported request policy. Use `oneshot` for hot reload, or `per_worker` for load testing.",tags:Mo}),inspector_port:g.number({default:8083,description:"Port to run the Edge Functions inspector on.",tags:Mo})}).partial();var dn=["experimental"],Bc=g.strictObject({orioledb_version:g.string({description:"Postgres storage engine to use OrioleDB (S3)",tags:dn}),s3_host:bt({description:"S3 bucket URL.",examples:["<bucket_name>.s3-<region>.amazonaws.com"],default:"env(S3_HOST)",tags:dn}),s3_region:bt({description:"S3 bucket region.",examples:["us-east-1"],default:"env(S3_REGION)",tags:dn}),s3_access_key:bt({description:"S3 access key.",default:"env(S3_ACCESS_KEY)",tags:dn}),s3_secret_key:bt({description:"S3 secret key.",default:"env(S3_SECRET_KEY)",tags:dn})}).partial();var Js=["functions"],Ks=[{name:"`supabase functions` CLI subcommands",link:"https://supabase.com/docs/reference/cli/supabase-functions"}],Nh=Rr({enabled:cn({default:true,description:je`
33
31
  Controls whether a function is deployed or served. When set to false,
34
32
  the function will be skipped during deployment and won't be served locally.
35
33
  This is useful for disabling demo functions or temporarily disabling a function
36
34
  without removing its code.
37
- `,tags:Qn,links:Zn}),verify_jwt:hs({default:true,description:xe`
35
+ `,tags:Js,links:Ks}),verify_jwt:cn({default:true,description:je`
38
36
  By default, when you deploy your Edge Functions or serve them locally, it
39
37
  will reject requests without a valid JWT in the Authorization header.
40
38
  Setting this configuration changes the default behavior.
41
- `,tags:Qn,links:Zn}),import_map:sr({description:xe`
39
+ `,tags:Js,links:Ks}),import_map:er({description:je`
42
40
  Specify the Deno import map file to use for the Function.
43
41
 
44
42
  Note that the \`--import-map\` flag overrides this configuration.
45
- `,tags:Qn,links:Zn}),entrypoint:sr({description:xe`
43
+ `,tags:Js,links:Ks}),entrypoint:er({description:je`
46
44
  Specify the entrypoint path to the Function (defaults to "functions/slug/index.ts").
47
45
 
48
46
  Both \`.js\` and \`.ts\` file extensions are supported.
49
- `,tags:Qn,links:Zn})}).partial(),tc=Lr({},{patternProperties:{"^[a-zA-Z0-9_-]+$":eg}});var ei=[{name:"Inbucket documentation",link:"https://www.inbucket.org"}],ti=["local"],rc=E.strictObject({enabled:E.boolean({default:true,description:"Enable the local InBucket service.",tags:ti,links:ei}),port:E.number({default:54324,description:xe`
47
+ `,tags:Js,links:Ks})}).partial(),qc=Rr({},{patternProperties:{"^[a-zA-Z0-9_-]+$":Nh}});var Ws=[{name:"Inbucket documentation",link:"https://www.inbucket.org"}],Hs=["local"],Jc=g.strictObject({enabled:g.boolean({default:true,description:"Enable the local InBucket service.",tags:Hs,links:Ws}),port:g.number({default:54324,description:je`
50
48
  Port to use for the email testing server web interface.
51
49
 
52
50
  Emails sent with the local dev setup are not actually sent - rather, they are monitored, and you can view the emails that would have been sent from the web interface.
53
- `,tags:ti,links:ei}),smtp_port:E.number({default:54325,description:xe`
51
+ `,tags:Hs,links:Ws}),smtp_port:g.number({default:54325,description:je`
54
52
  Port to use for the email testing server SMTP port.
55
53
 
56
54
  Emails sent with the local dev setup are not actually sent - rather, they are monitored, and you can view the emails that would have been sent from the web interface.
57
55
 
58
56
  If set, you can access the SMTP server from this port.
59
- `,tags:ti,links:ei}),pop3_port:E.number({default:54326,description:xe`
57
+ `,tags:Hs,links:Ws}),pop3_port:g.number({default:54326,description:je`
60
58
  Port to use for the email testing server POP3 port.
61
59
 
62
60
  Emails sent with the local dev setup are not actually sent - rather, they are monitored, and you can view the emails that would have been sent from the web interface.
63
61
 
64
62
  If set, you can access the POP3 server from this port.
65
- `,tags:ti,links:ei})}).partial();var tg=[{name:"Supabase Realtime",link:"https://supabase.com/docs/guides/realtime"}],Xa=["realtime"],sc=E.strictObject({enabled:E.boolean({default:true,description:"Enable the local Realtime service.",tags:Xa,links:tg}),ip_version:E.string({enum:["IPv4","IPv6"],default:"IPv4",description:"Bind realtime via either IPv4 or IPv6.",tags:Xa,links:[{name:"Supabase Realtime Configuration",link:"https://supabase.com/docs/guides/realtime/self-hosting"}]}),max_header_length:E.number({default:4096,description:"Maximum length of the HTTP header.",tags:Xa})}).partial();var ri=[{name:"Storage server configuration",link:"https://supabase.com/docs/guides/self-hosting/storage/config"}],Gt=["storage"],rg=E.strictObject({public:E.boolean({default:false,description:"Enable public access to the bucket."}),file_size_limit:E.string({default:"50MiB",description:"The maximum file size allowed for the bucket.",examples:["5MB","500KB"],tags:Gt,links:ri}),allowed_mime_types:E.array(E.string({description:"A MIME type allowed for the bucket.",tags:Gt}),{examples:[["image/png","image/jpeg"]],description:"The list of allowed MIME types for the bucket.",tags:Gt}),objects_path:E.string({description:"The path to the objects in the bucket.",tags:Gt})}).partial(),nc=E.strictObject({enabled:E.boolean({default:true,description:"Enable the local Storage service.",tags:Gt,links:ri}),file_size_limit:E.string({default:"50MiB",description:"The maximum file size allowed.",examples:["5MB","500KB"],tags:Gt,links:ri}),image_transformation:E.strictObject({enabled:E.boolean({default:true,description:"Enable image transformation.",tags:Gt,links:ri})}).partial(),buckets:E.record(rg,{description:"Storage buckets configuration.",tags:Gt})}).partial();var Qa={studio:{name:"Supabase Studio",link:"https://supabase.com/docs/guides/studio"},config:{name:"Supabase Studio Configuration",link:"https://supabase.com/docs/guides/self-hosting/studio"}},si=["studio"],ic=E.strictObject({enabled:E.boolean({default:true,description:"Enable the local Supabase Studio dashboard.",tags:si,links:[Qa.studio]}),port:E.number({default:54323,description:"Port to use for Supabase Studio.",tags:si}),api_url:E.string({default:"http://localhost",description:"External URL of the API server that frontend connects to.",tags:si,links:[Qa.config]}),openai_api_key:bt({default:"env(OPENAI_API_KEY)",description:"OpenAI API key to use for Supabase AI in the Supabase Studio.",tags:si,links:[Qa.config]})}).partial();var ni=Lr({project_id:sr({description:"A string used to distinguish different Supabase projects on the same host. Defaults to the working directory name when running `supabase init`.",tags:["general"]}),analytics:qu,api:Ju,auth:Xu,db:Qu,edge_runtime:Zu,functions:tc,inbucket:rc,realtime:sc,storage:nc,studio:ic,experimental:ec}).partial();var Za=(s,e,r)=>(t,n)=>{let i=-1;return a(0);async function a(o){if(o<=i)throw new Error("next() called multiple times");i=o;let l,u=false,p;if(s[o]?(p=s[o][0][0],t.req.routeIndex=o):p=o===s.length&&n||void 0,p)try{l=await p(t,()=>a(o+1));}catch(c){if(c instanceof Error&&e)t.error=c,l=await e(c,t),u=true;else throw c}else t.finalized===false&&r&&(l=await r(t));return l&&(t.finalized===false||u)&&(t.res=l),t}};var ii=class extends Error{res;status;constructor(s=500,e){super(e?.message,{cause:e?.cause}),this.res=e?.res,this.status=s;}getResponse(){return this.res?new Response(this.res.body,{status:this.status,headers:this.res.headers}):new Response(this.message,{status:this.status})}};var ac=Symbol();var oc=async(s,e=Object.create(null))=>{let{all:r=false,dot:t=false}=e,i=(s instanceof ai?s.raw.headers:s.headers).get("Content-Type");return i?.startsWith("multipart/form-data")||i?.startsWith("application/x-www-form-urlencoded")?sg(s,{all:r,dot:t}):{}};async function sg(s,e){let r=await s.formData();return r?ng(r,e):{}}function ng(s,e){let r=Object.create(null);return s.forEach((t,n)=>{e.all||n.endsWith("[]")?ig(r,n,t):r[n]=t;}),e.dot&&Object.entries(r).forEach(([t,n])=>{t.includes(".")&&(ag(r,t,n),delete r[t]);}),r}var ig=(s,e,r)=>{s[e]!==void 0?Array.isArray(s[e])?s[e].push(r):s[e]=[s[e],r]:e.endsWith("[]")?s[e]=[r]:s[e]=r;},ag=(s,e,r)=>{let t=s,n=e.split(".");n.forEach((i,a)=>{a===n.length-1?t[i]=r:((!t[i]||typeof t[i]!="object"||Array.isArray(t[i])||t[i]instanceof File)&&(t[i]=Object.create(null)),t=t[i]);});};var to=s=>{let e=s.split("/");return e[0]===""&&e.shift(),e},lc=s=>{let{groups:e,path:r}=og(s),t=to(r);return lg(t,e)},og=s=>{let e=[];return s=s.replace(/\{[^}]+\}/g,(r,t)=>{let n=`@${t}`;return e.push([n,r]),n}),{groups:e,path:s}},lg=(s,e)=>{for(let r=e.length-1;r>=0;r--){let[t]=e[r];for(let n=s.length-1;n>=0;n--)if(s[n].includes(t)){s[n]=s[n].replace(t,e[r][1]);break}}return s},oi={},uc=(s,e)=>{if(s==="*")return "*";let r=s.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(r){let t=`${s}#${e}`;return oi[t]||(r[2]?oi[t]=e&&e[0]!==":"&&e[0]!=="*"?[t,r[1],new RegExp(`^${r[2]}(?=/${e})`)]:[s,r[1],new RegExp(`^${r[2]}$`)]:oi[t]=[s,r[1],true]),oi[t]}return null},$r=(s,e)=>{try{return e(s)}catch{return s.replace(/(?:%[0-9A-Fa-f]{2})+/g,r=>{try{return e(r)}catch{return r}})}},ug=s=>$r(s,decodeURI),ro=s=>{let e=s.url,r=e.indexOf("/",e.indexOf(":")+4),t=r;for(;t<e.length;t++){let n=e.charCodeAt(t);if(n===37){let i=e.indexOf("?",t),a=e.indexOf("#",t),o=i===-1?a===-1?void 0:a:a===-1?i:Math.min(i,a),l=e.slice(r,o);return ug(l.includes("%25")?l.replace(/%25/g,"%2525"):l)}else if(n===63||n===35)break}return e.slice(r,t)};var cc=s=>{let e=ro(s);return e.length>1&&e.at(-1)==="/"?e.slice(0,-1):e},or=(s,e,...r)=>(r.length&&(e=or(e,...r)),`${s?.[0]==="/"?"":"/"}${s}${e==="/"?"":`${s?.at(-1)==="/"?"":"/"}${e?.[0]==="/"?e.slice(1):e}`}`),li=s=>{if(s.charCodeAt(s.length-1)!==63||!s.includes(":"))return null;let e=s.split("/"),r=[],t="";return e.forEach(n=>{if(n!==""&&!/\:/.test(n))t+="/"+n;else if(/\:/.test(n))if(/\?/.test(n)){r.length===0&&t===""?r.push("/"):r.push(t);let i=n.replace("?","");t+="/"+i,r.push(t);}else t+="/"+n;}),r.filter((n,i,a)=>a.indexOf(n)===i)},eo=s=>/[%+]/.test(s)?(s.indexOf("+")!==-1&&(s=s.replace(/\+/g," ")),s.indexOf("%")!==-1?$r(s,Es):s):s,pc=(s,e,r)=>{let t;if(!r&&e&&!/[%+]/.test(e)){let a=s.indexOf("?",8);if(a===-1)return;for(s.startsWith(e,a+1)||(a=s.indexOf(`&${e}`,a+1));a!==-1;){let o=s.charCodeAt(a+e.length+1);if(o===61){let l=a+e.length+2,u=s.indexOf("&",l);return eo(s.slice(l,u===-1?void 0:u))}else if(o==38||isNaN(o))return "";a=s.indexOf(`&${e}`,a+1);}if(t=/[%+]/.test(s),!t)return}let n={};t??=/[%+]/.test(s);let i=s.indexOf("?",8);for(;i!==-1;){let a=s.indexOf("&",i+1),o=s.indexOf("=",i);o>a&&a!==-1&&(o=-1);let l=s.slice(i+1,o===-1?a===-1?void 0:a:o);if(t&&(l=eo(l)),i=a,l==="")continue;let u;o===-1?u="":(u=s.slice(o+1,a===-1?void 0:a),t&&(u=eo(u))),r?(n[l]&&Array.isArray(n[l])||(n[l]=[]),n[l].push(u)):n[l]??=u;}return e?n[e]:n},fc=pc,mc=(s,e)=>pc(s,e,true),Es=decodeURIComponent;var hc=s=>$r(s,Es),ai=class{raw;#e;#t;routeIndex=0;path;bodyCache={};constructor(s,e="/",r=[[]]){this.raw=s,this.path=e,this.#t=r,this.#e={};}param(s){return s?this.#r(s):this.#i()}#r(s){let e=this.#t[0][this.routeIndex][1][s],r=this.#n(e);return r&&/\%/.test(r)?hc(r):r}#i(){let s={},e=Object.keys(this.#t[0][this.routeIndex][1]);for(let r of e){let t=this.#n(this.#t[0][this.routeIndex][1][r]);t!==void 0&&(s[r]=/\%/.test(t)?hc(t):t);}return s}#n(s){return this.#t[1]?this.#t[1][s]:s}query(s){return fc(this.url,s)}queries(s){return mc(this.url,s)}header(s){if(s)return this.raw.headers.get(s)??void 0;let e={};return this.raw.headers.forEach((r,t)=>{e[t]=r;}),e}async parseBody(s){return this.bodyCache.parsedBody??=await oc(this,s)}#s=s=>{let{bodyCache:e,raw:r}=this,t=e[s];if(t)return t;let n=Object.keys(e)[0];return n?e[n].then(i=>(n==="json"&&(i=JSON.stringify(i)),new Response(i)[s]())):e[s]=r[s]()};json(){return this.#s("text").then(s=>JSON.parse(s))}text(){return this.#s("text")}arrayBuffer(){return this.#s("arrayBuffer")}blob(){return this.#s("blob")}formData(){return this.#s("formData")}addValidatedData(s,e){this.#e[s]=e;}valid(s){return this.#e[s]}get url(){return this.raw.url}get method(){return this.raw.method}get[ac](){return this.#t}get matchedRoutes(){return this.#t[0].map(([[,s]])=>s)}get routePath(){return this.#t[0].map(([[,s]])=>s)[this.routeIndex].path}};var Qe={Stringify:1},G=(s,e)=>{let r=new String(s);return r.isEscaped=true,r.callbacks=e,r},cg=/[&<>'"]/,ui=async(s,e)=>{let r="";e||=[];let t=await Promise.all(s);for(let n=t.length-1;r+=t[n],n--,!(n<0);n--){let i=t[n];typeof i=="object"&&e.push(...i.callbacks||[]);let a=i.isEscaped;if(i=await(typeof i=="object"?i.toString():i),typeof i=="object"&&e.push(...i.callbacks||[]),i.isEscaped??a)r+=i;else {let o=[r];Tt(i,o),r=o[0];}}return G(r,e)},Tt=(s,e)=>{let r=s.search(cg);if(r===-1){e[0]+=s;return}let t,n,i=0;for(n=r;n<s.length;n++){switch(s.charCodeAt(n)){case 34:t="&quot;";break;case 39:t="&#39;";break;case 38:t="&amp;";break;case 60:t="&lt;";break;case 62:t="&gt;";break;default:continue}e[0]+=s.substring(i,n)+t,i=n+1;}e[0]+=s.substring(i,n);},so=s=>{let e=s.callbacks;if(!e?.length)return s;let r=[s],t={};return e.forEach(n=>n({phase:Qe.Stringify,buffer:r,context:t})),r[0]},lr=async(s,e,r,t,n)=>{typeof s=="object"&&!(s instanceof String)&&(s instanceof Promise||(s=s.toString()),s instanceof Promise&&(s=await s));let i=s.callbacks;if(!i?.length)return Promise.resolve(s);n?n[0]+=s:n=[s];let a=Promise.all(i.map(o=>o({phase:e,buffer:n,context:t}))).then(o=>Promise.all(o.filter(Boolean).map(l=>lr(l,e,false,t,n))).then(()=>n[0]));return r?G(await a,i):a};var pg="text/plain; charset=UTF-8",no=(s,e)=>({"Content-Type":s,...e}),Ss=(s,e)=>new Response(s,e),dc=class{#e;#t;env={};#r;finalized=false;error;#i;#n;#s;#c;#l;#u;#o;#p;#f;constructor(s,e){this.#e=s,e&&(this.#n=e.executionCtx,this.env=e.env,this.#u=e.notFoundHandler,this.#f=e.path,this.#p=e.matchResult);}get req(){return this.#t??=new ai(this.#e,this.#f,this.#p),this.#t}get event(){if(this.#n&&"respondWith"in this.#n)return this.#n;throw Error("This context has no FetchEvent")}get executionCtx(){if(this.#n)return this.#n;throw Error("This context has no ExecutionContext")}get res(){return this.#s||=Ss(null,{headers:this.#o??=new Headers})}set res(s){if(this.#s&&s){s=Ss(s.body,s);for(let[e,r]of this.#s.headers.entries())if(e!=="content-type")if(e==="set-cookie"){let t=this.#s.headers.getSetCookie();s.headers.delete("set-cookie");for(let n of t)s.headers.append("set-cookie",n);}else s.headers.set(e,r);}this.#s=s,this.finalized=true;}render=(...s)=>(this.#l??=e=>this.html(e),this.#l(...s));setLayout=s=>this.#c=s;getLayout=()=>this.#c;setRenderer=s=>{this.#l=s;};header=(s,e,r)=>{this.finalized&&(this.#s=Ss(this.#s.body,this.#s));let t=this.#s?this.#s.headers:this.#o??=new Headers;e===void 0?t.delete(s):r?.append?t.append(s,e):t.set(s,e);};status=s=>{this.#i=s;};set=(s,e)=>{this.#r??=new Map,this.#r.set(s,e);};get=s=>this.#r?this.#r.get(s):void 0;get var(){return this.#r?Object.fromEntries(this.#r):{}}#a(s,e,r){let t=this.#s?new Headers(this.#s.headers):this.#o??new Headers;if(typeof e=="object"&&"headers"in e){let i=e.headers instanceof Headers?e.headers:new Headers(e.headers);for(let[a,o]of i)a.toLowerCase()==="set-cookie"?t.append(a,o):t.set(a,o);}if(r)for(let[i,a]of Object.entries(r))if(typeof a=="string")t.set(i,a);else {t.delete(i);for(let o of a)t.append(i,o);}let n=typeof e=="number"?e:e?.status??this.#i;return Ss(s,{status:n,headers:t})}newResponse=(...s)=>this.#a(...s);body=(s,e,r)=>this.#a(s,e,r);text=(s,e,r)=>!this.#o&&!this.#i&&!e&&!r&&!this.finalized?new Response(s):this.#a(s,e,no(pg,r));json=(s,e,r)=>this.#a(JSON.stringify(s),e,no("application/json",r));html=(s,e,r)=>{let t=n=>this.#a(n,e,no("text/html; charset=UTF-8",r));return typeof s=="object"?lr(s,Qe.Stringify,false,{}).then(t):t(s)};redirect=(s,e)=>{let r=String(s);return this.header("Location",/[^\x00-\xFF]/.test(r)?encodeURI(r):r),this.newResponse(null,e??302)};notFound=()=>(this.#u??=()=>Ss(),this.#u(this))};var Z="ALL",gc="all",yc=["get","post","put","delete","options","patch"],ci="Can not add a route since the matcher is already built.",pi=class extends Error{};var Ec="__COMPOSED_HANDLER";var fg=s=>s.text("404 Not Found",404),Sc=(s,e)=>{if("getResponse"in s){let r=s.getResponse();return e.newResponse(r.body,r)}return console.error(s),e.text("Internal Server Error",500)},bc=class Tc{get;post;put;delete;options;patch;all;on;use;router;getPath;_basePath="/";#e="/";routes=[];constructor(e={}){[...yc,gc].forEach(i=>{this[i]=(a,...o)=>(typeof a=="string"?this.#e=a:this.#i(i,this.#e,a),o.forEach(l=>{this.#i(i,this.#e,l);}),this);}),this.on=(i,a,...o)=>{for(let l of [a].flat()){this.#e=l;for(let u of [i].flat())o.map(p=>{this.#i(u.toUpperCase(),this.#e,p);});}return this},this.use=(i,...a)=>(typeof i=="string"?this.#e=i:(this.#e="*",a.unshift(i)),a.forEach(o=>{this.#i(Z,this.#e,o);}),this);let{strict:t,...n}=e;Object.assign(this,n),this.getPath=t??true?e.getPath??ro:cc;}#t(){let e=new Tc({router:this.router,getPath:this.getPath});return e.errorHandler=this.errorHandler,e.#r=this.#r,e.routes=this.routes,e}#r=fg;errorHandler=Sc;route(e,r){let t=this.basePath(e);return r.routes.map(n=>{let i;r.errorHandler===Sc?i=n.handler:(i=async(a,o)=>(await Za([],r.errorHandler)(a,()=>n.handler(a,o))).res,i[Ec]=n.handler),t.#i(n.method,n.path,i);}),this}basePath(e){let r=this.#t();return r._basePath=or(this._basePath,e),r}onError=e=>(this.errorHandler=e,this);notFound=e=>(this.#r=e,this);mount(e,r,t){let n,i;t&&(typeof t=="function"?i=t:(i=t.optionHandler,t.replaceRequest===false?n=l=>l:n=t.replaceRequest));let a=i?l=>{let u=i(l);return Array.isArray(u)?u:[u]}:l=>{let u;try{u=l.executionCtx;}catch{}return [l.env,u]};n||=(()=>{let l=or(this._basePath,e),u=l==="/"?0:l.length;return p=>{let c=new URL(p.url);return c.pathname=c.pathname.slice(u)||"/",new Request(c,p)}})();let o=async(l,u)=>{let p=await r(n(l.req.raw),...a(l));if(p)return p;await u();};return this.#i(Z,or(e,"*"),o),this}#i(e,r,t){e=e.toUpperCase(),r=or(this._basePath,r);let n={basePath:this._basePath,path:r,method:e,handler:t};this.router.add(e,r,[t,n]),this.routes.push(n);}#n(e,r){if(e instanceof Error)return this.errorHandler(e,r);throw e}#s(e,r,t,n){if(n==="HEAD")return (async()=>new Response(null,await this.#s(e,r,t,"GET")))();let i=this.getPath(e,{env:t}),a=this.router.match(n,i),o=new dc(e,{path:i,matchResult:a,env:t,executionCtx:r,notFoundHandler:this.#r});if(a[0].length===1){let u;try{u=a[0][0][0][0](o,async()=>{o.res=await this.#r(o);});}catch(p){return this.#n(p,o)}return u instanceof Promise?u.then(p=>p||(o.finalized?o.res:this.#r(o))).catch(p=>this.#n(p,o)):u??this.#r(o)}let l=Za(a[0],this.errorHandler,this.#r);return (async()=>{try{let u=await l(o);if(!u.finalized)throw new Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return u.res}catch(u){return this.#n(u,o)}})()}fetch=(e,...r)=>this.#s(e,r[1],r[0],e.method);request=(e,r,t,n)=>e instanceof Request?this.fetch(r?new Request(e,r):e,t,n):(e=e.toString(),this.fetch(new Request(/^https?:\/\//.test(e)?e:`http://localhost${or("/",e)}`,r),t,n));fire=()=>{addEventListener("fetch",e=>{e.respondWith(this.#s(e.request,e,void 0,e.request.method));});}};var fi=[];function io(s,e){let r=this.buildAllMatchers(),t=((n,i)=>{let a=r[n]||r[Z],o=a[2][i];if(o)return o;let l=i.match(a[0]);if(!l)return [[],fi];let u=l.indexOf("",1);return [a[1][u],l]});return this.match=t,t(s,e)}var mi="[^/]+",bs=".*",Ts="(?:|/.*)",ur=Symbol(),mg=new Set(".\\+*[^]$()");function hg(s,e){return s.length===1?e.length===1?s<e?-1:1:-1:e.length===1||s===bs||s===Ts?1:e===bs||e===Ts?-1:s===mi?1:e===mi?-1:s.length===e.length?s<e?-1:1:e.length-s.length}var wc=class ao{#e;#t;#r=Object.create(null);insert(e,r,t,n,i){if(e.length===0){if(this.#e!==void 0)throw ur;if(i)return;this.#e=r;return}let[a,...o]=e,l=a==="*"?o.length===0?["","",bs]:["","",mi]:a==="/*"?["","",Ts]:a.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),u;if(l){let p=l[1],c=l[2]||mi;if(p&&l[2]&&(c===".*"||(c=c.replace(/^\((?!\?:)(?=[^)]+\)$)/,"(?:"),/\((?!\?:)/.test(c))))throw ur;if(u=this.#r[c],!u){if(Object.keys(this.#r).some(f=>f!==bs&&f!==Ts))throw ur;if(i)return;u=this.#r[c]=new ao,p!==""&&(u.#t=n.varIndex++);}!i&&p!==""&&t.push([p,u.#t]);}else if(u=this.#r[a],!u){if(Object.keys(this.#r).some(p=>p.length>1&&p!==bs&&p!==Ts))throw ur;if(i)return;u=this.#r[a]=new ao;}u.insert(o,r,t,n,i);}buildRegExpStr(){let r=Object.keys(this.#r).sort(hg).map(t=>{let n=this.#r[t];return (typeof n.#t=="number"?`(${t})@${n.#t}`:mg.has(t)?`\\${t}`:t)+n.buildRegExpStr()});return typeof this.#e=="number"&&r.unshift(`#${this.#e}`),r.length===0?"":r.length===1?r[0]:"(?:"+r.join("|")+")"}};var Cc=class{#e={varIndex:0};#t=new wc;insert(s,e,r){let t=[],n=[];for(let a=0;;){let o=false;if(s=s.replace(/\{[^}]+\}/g,l=>{let u=`@\\${a}`;return n[a]=[u,l],a++,o=true,u}),!o)break}let i=s.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let a=n.length-1;a>=0;a--){let[o]=n[a];for(let l=i.length-1;l>=0;l--)if(i[l].indexOf(o)!==-1){i[l]=i[l].replace(o,n[a][1]);break}}return this.#t.insert(i,e,t,this.#e,r),t}buildRegExp(){let s=this.#t.buildRegExpStr();if(s==="")return [/^$/,[],[]];let e=0,r=[],t=[];return s=s.replace(/#(\d+)|@(\d+)|\.\*\$/g,(n,i,a)=>i!==void 0?(r[++e]=Number(i),"$()"):(a!==void 0&&(t[Number(a)]=++e),"")),[new RegExp(`^${s}`),r,t]}};var dg=[/^$/,[],Object.create(null)],Ac=Object.create(null);function Rc(s){return Ac[s]??=new RegExp(s==="*"?"":`^${s.replace(/\/\*$|([.\\+*[^\]$()])/g,(e,r)=>r?`\\${r}`:"(?:|/.*)")}$`)}function gg(){Ac=Object.create(null);}function yg(s){let e=new Cc,r=[];if(s.length===0)return dg;let t=s.map(u=>[!/\*|\/:/.test(u[0]),...u]).sort(([u,p],[c,f])=>u?1:c?-1:p.length-f.length),n=Object.create(null);for(let u=0,p=-1,c=t.length;u<c;u++){let[f,m,d]=t[u];f?n[m]=[d.map(([b])=>[b,Object.create(null)]),fi]:p++;let g;try{g=e.insert(m,p,f);}catch(b){throw b===ur?new pi(m):b}f||(r[p]=d.map(([b,y])=>{let T=Object.create(null);for(y-=1;y>=0;y--){let[C,w]=g[y];T[C]=w;}return [b,T]}));}let[i,a,o]=e.buildRegExp();for(let u=0,p=r.length;u<p;u++)for(let c=0,f=r[u].length;c<f;c++){let m=r[u][c]?.[1];if(!m)continue;let d=Object.keys(m);for(let g=0,b=d.length;g<b;g++)m[d[g]]=o[m[d[g]]];}let l=[];for(let u in a)l[u]=r[a[u]];return [i,l,n]}function Pr(s,e){if(s){for(let r of Object.keys(s).sort((t,n)=>n.length-t.length))if(Rc(r).test(e))return [...s[r]]}}var hi=class{name="RegExpRouter";#e;#t;constructor(){this.#e={[Z]:Object.create(null)},this.#t={[Z]:Object.create(null)};}add(s,e,r){let t=this.#e,n=this.#t;if(!t||!n)throw new Error(ci);t[s]||[t,n].forEach(o=>{o[s]=Object.create(null),Object.keys(o[Z]).forEach(l=>{o[s][l]=[...o[Z][l]];});}),e==="/*"&&(e="*");let i=(e.match(/\/:/g)||[]).length;if(/\*$/.test(e)){let o=Rc(e);s===Z?Object.keys(t).forEach(l=>{t[l][e]||=Pr(t[l],e)||Pr(t[Z],e)||[];}):t[s][e]||=Pr(t[s],e)||Pr(t[Z],e)||[],Object.keys(t).forEach(l=>{(s===Z||s===l)&&Object.keys(t[l]).forEach(u=>{o.test(u)&&t[l][u].push([r,i]);});}),Object.keys(n).forEach(l=>{(s===Z||s===l)&&Object.keys(n[l]).forEach(u=>o.test(u)&&n[l][u].push([r,i]));});return}let a=li(e)||[e];for(let o=0,l=a.length;o<l;o++){let u=a[o];Object.keys(n).forEach(p=>{(s===Z||s===p)&&(n[p][u]||=[...Pr(t[p],u)||Pr(t[Z],u)||[]],n[p][u].push([r,i-l+o+1]));});}}match=io;buildAllMatchers(){let s=Object.create(null);return Object.keys(this.#t).concat(Object.keys(this.#e)).forEach(e=>{s[e]||=this.#r(e);}),this.#e=this.#t=void 0,gg(),s}#r(s){let e=[],r=s===Z;return [this.#e,this.#t].forEach(t=>{let n=t[s]?Object.keys(t[s]).map(i=>[i,t[s][i]]):[];n.length!==0?(r||=true,e.push(...n)):s!==Z&&e.push(...Object.keys(t[Z]).map(i=>[i,t[Z][i]]));}),r?yg(e):null}};var oo=class{name="SmartRouter";#e=[];#t=[];constructor(s){this.#e=s.routers;}add(s,e,r){if(!this.#t)throw new Error(ci);this.#t.push([s,e,r]);}match(s,e){if(!this.#t)throw new Error("Fatal error");let r=this.#e,t=this.#t,n=r.length,i=0,a;for(;i<n;i++){let o=r[i];try{for(let l=0,u=t.length;l<u;l++)o.add(...t[l]);a=o.match(s,e);}catch(l){if(l instanceof pi)continue;throw l}this.match=o.match.bind(o),this.#e=[o],this.#t=void 0;break}if(i===n)throw new Error("Fatal error");return this.name=`SmartRouter + ${this.activeRouter.name}`,a}get activeRouter(){if(this.#t||this.#e.length!==1)throw new Error("No active router has been determined yet.");return this.#e[0]}};var ws=Object.create(null),Eg=s=>{for(let e in s)return true;return false},_c=class vc{#e;#t;#r;#i=0;#n=ws;constructor(e,r,t){if(this.#t=t||Object.create(null),this.#e=[],e&&r){let n=Object.create(null);n[e]={handler:r,possibleKeys:[],score:0},this.#e=[n];}this.#r=[];}insert(e,r,t){this.#i=++this.#i;let n=this,i=lc(r),a=[];for(let o=0,l=i.length;o<l;o++){let u=i[o],p=i[o+1],c=uc(u,p),f=Array.isArray(c)?c[0]:u;if(f in n.#t){n=n.#t[f],c&&a.push(c[1]);continue}n.#t[f]=new vc,c&&(n.#r.push(c),a.push(c[1])),n=n.#t[f];}return n.#e.push({[e]:{handler:t,possibleKeys:a.filter((o,l,u)=>u.indexOf(o)===l),score:this.#i}}),n}#s(e,r,t,n,i){for(let a=0,o=r.#e.length;a<o;a++){let l=r.#e[a],u=l[t]||l[Z],p={};if(u!==void 0&&(u.params=Object.create(null),e.push(u),n!==ws||i&&i!==ws))for(let c=0,f=u.possibleKeys.length;c<f;c++){let m=u.possibleKeys[c],d=p[u.score];u.params[m]=i?.[m]&&!d?i[m]:n[m]??i?.[m],p[u.score]=true;}}}search(e,r){let t=[];this.#n=ws;let i=[this],a=to(r),o=[],l=a.length,u=null;for(let p=0;p<l;p++){let c=a[p],f=p===l-1,m=[];for(let g=0,b=i.length;g<b;g++){let y=i[g],T=y.#t[c];T&&(T.#n=y.#n,f?(T.#t["*"]&&this.#s(t,T.#t["*"],e,y.#n),this.#s(t,T,e,y.#n)):m.push(T));for(let C=0,w=y.#r.length;C<w;C++){let A=y.#r[C],v=y.#n===ws?{}:{...y.#n};if(A==="*"){let K=y.#t["*"];K&&(this.#s(t,K,e,y.#n),K.#n=v,m.push(K));continue}let[R,O,_]=A;if(!c&&!(_ instanceof RegExp))continue;let I=y.#t[R];if(_ instanceof RegExp){if(u===null){u=new Array(l);let ce=r[0]==="/"?1:0;for(let Xe=0;Xe<l;Xe++)u[Xe]=ce,ce+=a[Xe].length+1;}let K=r.substring(u[p]),D=_.exec(K);if(D){if(v[O]=D[0],this.#s(t,I,e,y.#n,v),Eg(I.#t)){I.#n=v;let ce=D[0].match(/\//)?.length??0;(o[ce]||=[]).push(I);}continue}}(_===true||_.test(c))&&(v[O]=c,f?(this.#s(t,I,e,v,y.#n),I.#t["*"]&&this.#s(t,I.#t["*"],e,v,y.#n)):(I.#n=v,m.push(I)));}}let d=o.shift();i=d?m.concat(d):m;}return t.length>1&&t.sort((p,c)=>p.score-c.score),[t.map(({handler:p,params:c})=>[p,c])]}};var lo=class{name="TrieRouter";#e;constructor(){this.#e=new _c;}add(s,e,r){let t=li(e);if(t){for(let n=0,i=t.length;n<i;n++)this.#e.insert(s,t[n],r);return}this.#e.insert(s,e,r);}match(s,e){return this.#e.search(s,e)}};var be=class extends bc{constructor(s={}){super(s),this.router=s.router??new oo({routers:[new hi,new lo]});}};var bg=s=>JSON.parse(jsonStringify(s)),Oc=new be().get("/ping",s=>s.json({message:"pong"})).get("/config",s=>s.json(s.var.app.config)).get("/info",s=>s.json(bg({connection:s.var.app.connection.config,config:s.var.app.config}))).get("/introspect",async s=>{let e=await s.var.app.connection.introspect();return s.json(e)});var Ne=class extends Error{code;details;hint;httpStatus;constructor(e){super(e.message),this.name="EmbedError",this.code=e.code,this.details=e.details,this.hint=e.hint,this.httpStatus=e.httpStatus;}},Be=class extends Error{constructor(r,t=r){super(r);this.details=t;this.name="SelectParseError";}},Vt=class extends Error{constructor(r,t=r){super(r);this.details=t;this.name="QueryParamParseError";}},Dr=class extends Error{constructor(r="Invalid path specified in request URL",t=null){super(r);this.details=t;this.name="RouteValidationError";}},me=class extends Error{constructor(r,t,n){super(r);this.details=t;this.position=n;this.name="OrderParseError";}};var Tg="/rest/v1";function uo(s,e=Tg){let r=new URL(s.url),t=decodeURIComponent(r.pathname);t.startsWith(e)&&(t=t.slice(e.length)),t=t.replace(/^\/+|\/+$/g,"");let n=t.split("/");if(n[0]==="rpc"&&n[1])return {function:n[1],isRpc:true};if(n.length>1)throw new Dr;return {from:n[0]||void 0,isRpc:false}}function co(s){let e=s.method.toUpperCase(),r;e==="GET"||e==="HEAD"?r=s.headers.get("Accept-Profile")??void 0:r=s.headers.get("Content-Profile")??void 0;let t=[],n=[],i=s.headers.get("Prefer");i&&n.push(i);for(let o of n){let l=o.split(",").map(u=>u.trim()).filter(Boolean);for(let u of l){let p=u.indexOf("=");if(p===-1)continue;let c=u.slice(0,p).trim(),f=u.slice(p+1).trim();c==="max-affected"?t.push({key:"max-affected",value:Number(f)}):t.push({key:c,value:f});}}let a=s.headers.get("Accept")??"application/json";return {schema:r,preferTokens:t,accept:a}}var Nc=new Set(["count","sum","avg","min","max"]);function F(s){return s.input[s.pos]??""}function U(s,e=1){s.pos+=e;}function _e(s){return s.pos>=s.input.length}function Ie(s,e){return s.input.startsWith(e,s.pos)}function fo(s){return /^[a-zA-Z0-9_]$/.test(s)}function q(s){for(;!_e(s)&&/\s/.test(F(s));)U(s);}function ho(s){let r=new URL(s.url).searchParams.get("select");if(r==null)return {select:[],join:{},embeddedAliases:new Set};if(r==="")return {select:[],join:{},embeddedAliases:new Set};if(r.trim()==="")throw new Be("failed to parse select parameter");let t={},n=new Set,i={input:r,pos:0},a=kc(i,t,n);if(q(i),!_e(i))throw new Error(`Unexpected input at position ${i.pos}: "${i.input.slice(i.pos)}"`);return {select:a,join:t,embeddedAliases:n}}function kc(s,e,r){let t=[];if(q(s),_e(s)||F(s)===")"||F(s)===","&&(U(s),q(s),_e(s)||F(s)===")"))return t;for(t.push(Ic(s,e,r));!_e(s)&&(q(s),F(s)===",");)U(s),q(s),t.push(Ic(s,e,r));return t}function Ic(s,e,r){if(q(s),F(s)==="*")return U(s),"*";if(Ie(s,"..."))return U(s,3),q(s),wg(s,e,r);let t=ot(s,{allowSpaces:true,allowDollar:true});return q(s),Ie(s,"::")?mo(t,void 0,s,e,r):F(s)===":"?(U(s),q(s),Cg(t,s,e,r)):mo(t,void 0,s,e,r)}function wg(s,e,r){let t=ot(s);q(s);let{hint:n,innerJoin:i}=$c(s);if(q(s),F(s)!=="(")throw new Error(`Expected "(" for spread embed at position ${s.pos}`);let{subSelect:a,subJoin:o}=Pc(s),l=t,u={};i&&(u.type="inner"),n&&(u.hint=n),e[l]=u,r.add(l);let p={spread:true,select:a};return Object.keys(o).length>0&&(p.join=o),{[l]:p}}function Cg(s,e,r,t){let n=ot(e,{allowSpaces:true,allowDollar:true});return q(e),mo(n,s,e,r,t)}function mo(s,e,r,t,n){return q(r),s==="count"&&(_e(r)||F(r)===","||F(r)===")"||F(r)==="("||Ie(r,"::"))?Rg(e,r):F(r)==="!"||F(r)==="("?Ag(s,e,r,t,n):_g(s,e,r)}function Ag(s,e,r,t,n){let{hint:i,innerJoin:a}=$c(r);if(q(r),F(r)!=="(")throw new Be("failed to parse select parameter");let{subSelect:o,subJoin:l}=Pc(r),u=e??s,p={};e&&(p.from=s),a&&(p.type="inner"),i&&(p.hint=i),t[u]=p,n.add(u),e&&s!==u&&n.add(s);let c={select:o};return Object.keys(l).length>0&&(c.join=l),{[u]:c}}function $c(s){if(q(s),F(s)!=="!")return {};U(s);let e=ot(s);if(e==="inner")return {innerJoin:true};if(e==="left")return {};let r=e;if(q(s),F(s)==="!"){U(s);let t=ot(s);if(t==="inner")return {hint:r,innerJoin:true};if(t==="left")return {hint:r};throw new Error(`Expected "inner" or "left" after hint, got "${t}" at position ${s.pos}`)}return {hint:r}}function Pc(s,e,r){if(F(s)!=="(")throw new Error(`Expected "(" at position ${s.pos}`);U(s),q(s);let t={},n=new Set;if(F(s)===")")return U(s),{subSelect:[],subJoin:t};let i=kc(s,t,n);if(q(s),F(s)!==")")throw new Error(`Expected ")" at position ${s.pos}`);return U(s),{subSelect:i,subJoin:t}}function Rg(s,e){q(e);let r=true;if(F(e)==="("){r=false,U(e);let a=e.pos;for(;!_e(e)&&F(e)!==")";)U(e);if(_e(e))throw new Be("expected closing paren for count()");let o=e.input.slice(a,e.pos).trim();if(U(e),o!=="")throw new Be("expected null arg for count()")}q(e);let t;Ie(e,"::")&&(U(e,2),t=Cs(e));let n=s??"count",i={aggregate:"count"};return r&&(i.bareCount=true),t&&(i.cast=t),{[n]:i}}function _g(s,e,r){q(r);let t,n,i=false,a;if(Ie(r,"->")){let{path:p,lastProp:c,lastIsText:f,invalidTextTraversalKey:m}=vg(r);t=p,n=c||void 0,i=f,a=m;}q(r);let o,l;if(Ie(r,"::")){U(r,2);let p=Cs(r);if(q(r),F(r)==="."&&!_e(r)){let c=r.input[r.pos+1]??"";if(fo(c)){let f=r.pos;U(r);let m=ot(r);if(Nc.has(m)&&Ie(r,"()"))return o=p,U(r,2),q(r),Ie(r,"::")&&(U(r,2),l=Cs(r),po(r)),Lc(s,e,t,n,i,a,o,m,l);r.pos=f;}}l=p,po(r);}let u;if(F(r)==="."&&!_e(r)){let p=r.input[r.pos+1]??"";if(fo(p)){let c=r.pos;U(r);let f=ot(r);Nc.has(f)&&Ie(r,"()")?(u=f,U(r,2),q(r),Ie(r,"::")&&(U(r,2),l=Cs(r),po(r))):r.pos=c;}}return Lc(s,e,t,n,i,a,o,u,l)}function po(s){for(q(s);Ie(s,"::");)U(s,2),Cs(s),q(s);}function Cs(s){q(s);let e=[ot(s)];for(;!_e(s);){let r=s.pos;if(q(s),s.pos===r)break;let t=F(s);if(!(t==='"'||/^[a-zA-Z0-9_]$/.test(t))){s.pos=r;break}e.push(ot(s));}return e.join(" ")}function Lc(s,e,r,t,n,i,a,o,l){let u=e??(o||void 0)??t;if(!u&&!a&&!l&&!o&&!r)return s;let p=u??s,c={};return s!==p&&(c.column=s),o&&!c.column&&s===p&&(c.column=s),r&&(c.column||(c.column=s),c.path=r,n&&(c.pathText=true),i&&(c.invalidJsonTextTraversalKey=i)),a&&(c.preCast=a),o&&(c.aggregate=o),l&&(c.cast=l),{[p]:c}}function vg(s){let e=[],r="",t=false,n;for(;Ie(s,"->");){let a=t;U(s,2);let o=false;F(s)===">"&&(U(s),o=true);let l=Og(s);e.push(l),a&&n===void 0&&(n=l),/^-?\d+$/.test(l)||(r=l),t=o;}return {path:"$."+e.join("."),lastProp:r,lastIsText:t,invalidTextTraversalKey:n}}function Og(s){return Ng(s)}function Ng(s){q(s);let e=s.pos;if(F(s)==='"')return ot(s);let r="";for(;!_e(s)&&!(Ie(s,"->")||Ie(s,"::"));){let t=F(s);if(t===","||t==="."||t===":"||/\s/.test(t))break;r+=t,U(s);}if(r==="")throw new Be(`"failed to parse select parameter (${s.input})" (line 1, column ${e+1})`);if(r.includes("--")||r.endsWith("-"))throw new Be("failed to parse select parameter");if(/^-\d+\D/.test(r))throw new Be("failed to parse select parameter");return r}function ot(s,e={}){if(q(s),F(s)==='"'){U(s);let t="";for(;!_e(s)&&F(s)!=='"';)t+=F(s),U(s);if(_e(s))throw new Error(`Missing closing quote at position ${s.pos}`);return U(s),t}let r="";for(;!_e(s);){let t=F(s);if(fo(t))r+=t,U(s);else if(e.allowDollar&&t==="$")r+=t,U(s);else if(e.allowSpaces&&t===" ")r+=t,U(s);else if(t==="-"&&r.length>0){if((s.input[s.pos+1]??"")===">")break;r+=t,U(s);}else break}if(e.allowSpaces&&(r=r.trimEnd()),r==="")throw new Error(`Expected identifier at position ${s.pos}`);if(r.includes("--")||r.endsWith("-"))throw new Be("failed to parse select parameter");return r}async function go(s){let e=s.method.toUpperCase();if(e==="GET"||e==="HEAD")return {};let r=await s.text(),t=s.headers.get("Content-Type")??"";if(!r&&t.includes("text/csv"))throw new jr('parse error (not enough input) at ""');if(!r)return {};if(t.includes("application/json"))try{let n=JSON.parse(r);return Array.isArray(n)?{values:n}:{values:n}}catch{throw new Error(`Invalid JSON body: ${r.slice(0,100)}`)}if(t.includes("text/csv"))return {values:Ig(r)};if(t.includes("application/x-www-form-urlencoded")){let n=new URLSearchParams(r),i={};for(let[a,o]of n)i[a]=o;return {values:i}}return {raw:r}}function Ig(s){let e=s.replace(/\r\n/g,`
63
+ `,tags:Hs,links:Ws})}).partial();var jh=[{name:"Supabase Realtime",link:"https://supabase.com/docs/guides/realtime"}],Bo=["realtime"],Kc=g.strictObject({enabled:g.boolean({default:true,description:"Enable the local Realtime service.",tags:Bo,links:jh}),ip_version:g.string({enum:["IPv4","IPv6"],default:"IPv4",description:"Bind realtime via either IPv4 or IPv6.",tags:Bo,links:[{name:"Supabase Realtime Configuration",link:"https://supabase.com/docs/guides/realtime/self-hosting"}]}),max_header_length:g.number({default:4096,description:"Maximum length of the HTTP header.",tags:Bo})}).partial();var zs=[{name:"Storage server configuration",link:"https://supabase.com/docs/guides/self-hosting/storage/config"}],Kt=["storage"],Dh=g.strictObject({public:g.boolean({default:false,description:"Enable public access to the bucket."}),file_size_limit:g.string({default:"50MiB",description:"The maximum file size allowed for the bucket.",examples:["5MB","500KB"],tags:Kt,links:zs}),allowed_mime_types:g.array(g.string({description:"A MIME type allowed for the bucket.",tags:Kt}),{examples:[["image/png","image/jpeg"]],description:"The list of allowed MIME types for the bucket.",tags:Kt}),objects_path:g.string({description:"The path to the objects in the bucket.",tags:Kt})}).partial(),Wc=g.strictObject({enabled:g.boolean({default:true,description:"Enable the local Storage service.",tags:Kt,links:zs}),file_size_limit:g.string({default:"50MiB",description:"The maximum file size allowed.",examples:["5MB","500KB"],tags:Kt,links:zs}),image_transformation:g.strictObject({enabled:g.boolean({default:true,description:"Enable image transformation.",tags:Kt,links:zs})}).partial(),buckets:g.record(Dh,{description:"Storage buckets configuration.",tags:Kt})}).partial();var qo={studio:{name:"Supabase Studio",link:"https://supabase.com/docs/guides/studio"},config:{name:"Supabase Studio Configuration",link:"https://supabase.com/docs/guides/self-hosting/studio"}},Gs=["studio"],Hc=g.strictObject({enabled:g.boolean({default:true,description:"Enable the local Supabase Studio dashboard.",tags:Gs,links:[qo.studio]}),port:g.number({default:54323,description:"Port to use for Supabase Studio.",tags:Gs}),api_url:g.string({default:"http://localhost",description:"External URL of the API server that frontend connects to.",tags:Gs,links:[qo.config]}),openai_api_key:bt({default:"env(OPENAI_API_KEY)",description:"OpenAI API key to use for Supabase AI in the Supabase Studio.",tags:Gs,links:[qo.config]})}).partial();var Vs=Rr({project_id:er({description:"A string used to distinguish different Supabase projects on the same host. Defaults to the working directory name when running `supabase init`.",tags:["general"]}),analytics:kc,api:$c,auth:Uc,db:Fc,edge_runtime:Mc,functions:qc,inbucket:Jc,realtime:Kc,storage:Wc,studio:Hc,experimental:Bc}).partial();var Jo=(t,e,r)=>(n,s)=>{let i=-1;return o(0);async function o(a){if(a<=i)throw new Error("next() called multiple times");i=a;let l,u=false,f;if(t[a]?(f=t[a][0][0],n.req.routeIndex=a):f=a===t.length&&s||void 0,f)try{l=await f(n,()=>o(a+1));}catch(c){if(c instanceof Error&&e)n.error=c,l=await e(c,n),u=true;else throw c}else n.finalized===false&&r&&(l=await r(n));return l&&(n.finalized===false||u)&&(n.res=l),n}};var Qs=class extends Error{res;status;constructor(t=500,e){super(e?.message,{cause:e?.cause}),this.res=e?.res,this.status=t;}getResponse(){return this.res?new Response(this.res.body,{status:this.status,headers:this.res.headers}):new Response(this.message,{status:this.status})}};var zc=Symbol();var Gc=async(t,e=Object.create(null))=>{let{all:r=false,dot:n=false}=e,i=(t instanceof Xs?t.raw.headers:t.headers).get("Content-Type");return i?.startsWith("multipart/form-data")||i?.startsWith("application/x-www-form-urlencoded")?Lh(t,{all:r,dot:n}):{}};async function Lh(t,e){let r=await t.formData();return r?Uh(r,e):{}}function Uh(t,e){let r=Object.create(null);return t.forEach((n,s)=>{e.all||s.endsWith("[]")?Fh(r,s,n):r[s]=n;}),e.dot&&Object.entries(r).forEach(([n,s])=>{n.includes(".")&&(Mh(r,n,s),delete r[n]);}),r}var Fh=(t,e,r)=>{t[e]!==void 0?Array.isArray(t[e])?t[e].push(r):t[e]=[t[e],r]:e.endsWith("[]")?t[e]=[r]:t[e]=r;},Mh=(t,e,r)=>{let n=t,s=e.split(".");s.forEach((i,o)=>{o===s.length-1?n[i]=r:((!n[i]||typeof n[i]!="object"||Array.isArray(n[i])||n[i]instanceof File)&&(n[i]=Object.create(null)),n=n[i]);});};var Wo=t=>{let e=t.split("/");return e[0]===""&&e.shift(),e},Vc=t=>{let{groups:e,path:r}=Bh(t),n=Wo(r);return qh(n,e)},Bh=t=>{let e=[];return t=t.replace(/\{[^}]+\}/g,(r,n)=>{let s=`@${n}`;return e.push([s,r]),s}),{groups:e,path:t}},qh=(t,e)=>{for(let r=e.length-1;r>=0;r--){let[n]=e[r];for(let s=t.length-1;s>=0;s--)if(t[s].includes(n)){t[s]=t[s].replace(n,e[r][1]);break}}return t},Ys={},Qc=(t,e)=>{if(t==="*")return "*";let r=t.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(r){let n=`${t}#${e}`;return Ys[n]||(r[2]?Ys[n]=e&&e[0]!==":"&&e[0]!=="*"?[n,r[1],new RegExp(`^${r[2]}(?=/${e})`)]:[t,r[1],new RegExp(`^${r[2]}$`)]:Ys[n]=[t,r[1],true]),Ys[n]}return null},$r=(t,e)=>{try{return e(t)}catch{return t.replace(/(?:%[0-9A-Fa-f]{2})+/g,r=>{try{return e(r)}catch{return r}})}},Jh=t=>$r(t,decodeURI),Ho=t=>{let e=t.url,r=e.indexOf("/",e.indexOf(":")+4),n=r;for(;n<e.length;n++){let s=e.charCodeAt(n);if(s===37){let i=e.indexOf("?",n),o=e.indexOf("#",n),a=i===-1?o===-1?void 0:o:o===-1?i:Math.min(i,o),l=e.slice(r,a);return Jh(l.includes("%25")?l.replace(/%25/g,"%2525"):l)}else if(s===63||s===35)break}return e.slice(r,n)};var Xc=t=>{let e=Ho(t);return e.length>1&&e.at(-1)==="/"?e.slice(0,-1):e},sr=(t,e,...r)=>(r.length&&(e=sr(e,...r)),`${t?.[0]==="/"?"":"/"}${t}${e==="/"?"":`${t?.at(-1)==="/"?"":"/"}${e?.[0]==="/"?e.slice(1):e}`}`),Zs=t=>{if(t.charCodeAt(t.length-1)!==63||!t.includes(":"))return null;let e=t.split("/"),r=[],n="";return e.forEach(s=>{if(s!==""&&!/\:/.test(s))n+="/"+s;else if(/\:/.test(s))if(/\?/.test(s)){r.length===0&&n===""?r.push("/"):r.push(n);let i=s.replace("?","");n+="/"+i,r.push(n);}else n+="/"+s;}),r.filter((s,i,o)=>o.indexOf(s)===i)},Ko=t=>/[%+]/.test(t)?(t.indexOf("+")!==-1&&(t=t.replace(/\+/g," ")),t.indexOf("%")!==-1?$r(t,pn):t):t,Yc=(t,e,r)=>{let n;if(!r&&e&&!/[%+]/.test(e)){let o=t.indexOf("?",8);if(o===-1)return;for(t.startsWith(e,o+1)||(o=t.indexOf(`&${e}`,o+1));o!==-1;){let a=t.charCodeAt(o+e.length+1);if(a===61){let l=o+e.length+2,u=t.indexOf("&",l);return Ko(t.slice(l,u===-1?void 0:u))}else if(a==38||isNaN(a))return "";o=t.indexOf(`&${e}`,o+1);}if(n=/[%+]/.test(t),!n)return}let s={};n??=/[%+]/.test(t);let i=t.indexOf("?",8);for(;i!==-1;){let o=t.indexOf("&",i+1),a=t.indexOf("=",i);a>o&&o!==-1&&(a=-1);let l=t.slice(i+1,a===-1?o===-1?void 0:o:a);if(n&&(l=Ko(l)),i=o,l==="")continue;let u;a===-1?u="":(u=t.slice(a+1,o===-1?void 0:o),n&&(u=Ko(u))),r?(s[l]&&Array.isArray(s[l])||(s[l]=[]),s[l].push(u)):s[l]??=u;}return e?s[e]:s},Zc=Yc,eu=(t,e)=>Yc(t,e,true),pn=decodeURIComponent;var tu=t=>$r(t,pn),Xs=class{raw;#e;#t;routeIndex=0;path;bodyCache={};constructor(t,e="/",r=[[]]){this.raw=t,this.path=e,this.#t=r,this.#e={};}param(t){return t?this.#r(t):this.#i()}#r(t){let e=this.#t[0][this.routeIndex][1][t],r=this.#s(e);return r&&/\%/.test(r)?tu(r):r}#i(){let t={},e=Object.keys(this.#t[0][this.routeIndex][1]);for(let r of e){let n=this.#s(this.#t[0][this.routeIndex][1][r]);n!==void 0&&(t[r]=/\%/.test(n)?tu(n):n);}return t}#s(t){return this.#t[1]?this.#t[1][t]:t}query(t){return Zc(this.url,t)}queries(t){return eu(this.url,t)}header(t){if(t)return this.raw.headers.get(t)??void 0;let e={};return this.raw.headers.forEach((r,n)=>{e[n]=r;}),e}async parseBody(t){return this.bodyCache.parsedBody??=await Gc(this,t)}#n=t=>{let{bodyCache:e,raw:r}=this,n=e[t];if(n)return n;let s=Object.keys(e)[0];return s?e[s].then(i=>(s==="json"&&(i=JSON.stringify(i)),new Response(i)[t]())):e[t]=r[t]()};json(){return this.#n("text").then(t=>JSON.parse(t))}text(){return this.#n("text")}arrayBuffer(){return this.#n("arrayBuffer")}blob(){return this.#n("blob")}formData(){return this.#n("formData")}addValidatedData(t,e){this.#e[t]=e;}valid(t){return this.#e[t]}get url(){return this.raw.url}get method(){return this.raw.method}get[zc](){return this.#t}get matchedRoutes(){return this.#t[0].map(([[,t]])=>t)}get routePath(){return this.#t[0].map(([[,t]])=>t)[this.routeIndex].path}};var Qe={Stringify:1},K=(t,e)=>{let r=new String(t);return r.isEscaped=true,r.callbacks=e,r},Kh=/[&<>'"]/,ei=async(t,e)=>{let r="";e||=[];let n=await Promise.all(t);for(let s=n.length-1;r+=n[s],s--,!(s<0);s--){let i=n[s];typeof i=="object"&&e.push(...i.callbacks||[]);let o=i.isEscaped;if(i=await(typeof i=="object"?i.toString():i),typeof i=="object"&&e.push(...i.callbacks||[]),i.isEscaped??o)r+=i;else {let a=[r];wt(i,a),r=a[0];}}return K(r,e)},wt=(t,e)=>{let r=t.search(Kh);if(r===-1){e[0]+=t;return}let n,s,i=0;for(s=r;s<t.length;s++){switch(t.charCodeAt(s)){case 34:n="&quot;";break;case 39:n="&#39;";break;case 38:n="&amp;";break;case 60:n="&lt;";break;case 62:n="&gt;";break;default:continue}e[0]+=t.substring(i,s)+n,i=s+1;}e[0]+=t.substring(i,s);},zo=t=>{let e=t.callbacks;if(!e?.length)return t;let r=[t],n={};return e.forEach(s=>s({phase:Qe.Stringify,buffer:r,context:n})),r[0]},ir=async(t,e,r,n,s)=>{typeof t=="object"&&!(t instanceof String)&&(t instanceof Promise||(t=t.toString()),t instanceof Promise&&(t=await t));let i=t.callbacks;if(!i?.length)return Promise.resolve(t);s?s[0]+=t:s=[t];let o=Promise.all(i.map(a=>a({phase:e,buffer:s,context:n}))).then(a=>Promise.all(a.filter(Boolean).map(l=>ir(l,e,false,n,s))).then(()=>s[0]));return r?K(await o,i):o};var Wh="text/plain; charset=UTF-8",Go=(t,e)=>({"Content-Type":t,...e}),mn=(t,e)=>new Response(t,e),ru=class{#e;#t;env={};#r;finalized=false;error;#i;#s;#n;#u;#l;#c;#a;#f;#d;constructor(t,e){this.#e=t,e&&(this.#s=e.executionCtx,this.env=e.env,this.#c=e.notFoundHandler,this.#d=e.path,this.#f=e.matchResult);}get req(){return this.#t??=new Xs(this.#e,this.#d,this.#f),this.#t}get event(){if(this.#s&&"respondWith"in this.#s)return this.#s;throw Error("This context has no FetchEvent")}get executionCtx(){if(this.#s)return this.#s;throw Error("This context has no ExecutionContext")}get res(){return this.#n||=mn(null,{headers:this.#a??=new Headers})}set res(t){if(this.#n&&t){t=mn(t.body,t);for(let[e,r]of this.#n.headers.entries())if(e!=="content-type")if(e==="set-cookie"){let n=this.#n.headers.getSetCookie();t.headers.delete("set-cookie");for(let s of n)t.headers.append("set-cookie",s);}else t.headers.set(e,r);}this.#n=t,this.finalized=true;}render=(...t)=>(this.#l??=e=>this.html(e),this.#l(...t));setLayout=t=>this.#u=t;getLayout=()=>this.#u;setRenderer=t=>{this.#l=t;};header=(t,e,r)=>{this.finalized&&(this.#n=mn(this.#n.body,this.#n));let n=this.#n?this.#n.headers:this.#a??=new Headers;e===void 0?n.delete(t):r?.append?n.append(t,e):n.set(t,e);};status=t=>{this.#i=t;};set=(t,e)=>{this.#r??=new Map,this.#r.set(t,e);};get=t=>this.#r?this.#r.get(t):void 0;get var(){return this.#r?Object.fromEntries(this.#r):{}}#o(t,e,r){let n=this.#n?new Headers(this.#n.headers):this.#a??new Headers;if(typeof e=="object"&&"headers"in e){let i=e.headers instanceof Headers?e.headers:new Headers(e.headers);for(let[o,a]of i)o.toLowerCase()==="set-cookie"?n.append(o,a):n.set(o,a);}if(r)for(let[i,o]of Object.entries(r))if(typeof o=="string")n.set(i,o);else {n.delete(i);for(let a of o)n.append(i,a);}let s=typeof e=="number"?e:e?.status??this.#i;return mn(t,{status:s,headers:n})}newResponse=(...t)=>this.#o(...t);body=(t,e,r)=>this.#o(t,e,r);text=(t,e,r)=>!this.#a&&!this.#i&&!e&&!r&&!this.finalized?new Response(t):this.#o(t,e,Go(Wh,r));json=(t,e,r)=>this.#o(JSON.stringify(t),e,Go("application/json",r));html=(t,e,r)=>{let n=s=>this.#o(s,e,Go("text/html; charset=UTF-8",r));return typeof t=="object"?ir(t,Qe.Stringify,false,{}).then(n):n(t)};redirect=(t,e)=>{let r=String(t);return this.header("Location",/[^\x00-\xFF]/.test(r)?encodeURI(r):r),this.newResponse(null,e??302)};notFound=()=>(this.#c??=()=>mn(),this.#c(this))};var X="ALL",nu="all",su=["get","post","put","delete","options","patch"],ti="Can not add a route since the matcher is already built.",ri=class extends Error{};var iu="__COMPOSED_HANDLER";var Hh=t=>t.text("404 Not Found",404),ou=(t,e)=>{if("getResponse"in t){let r=t.getResponse();return e.newResponse(r.body,r)}return console.error(t),e.text("Internal Server Error",500)},au=class lu{get;post;put;delete;options;patch;all;on;use;router;getPath;_basePath="/";#e="/";routes=[];constructor(e={}){[...su,nu].forEach(i=>{this[i]=(o,...a)=>(typeof o=="string"?this.#e=o:this.#i(i,this.#e,o),a.forEach(l=>{this.#i(i,this.#e,l);}),this);}),this.on=(i,o,...a)=>{for(let l of [o].flat()){this.#e=l;for(let u of [i].flat())a.map(f=>{this.#i(u.toUpperCase(),this.#e,f);});}return this},this.use=(i,...o)=>(typeof i=="string"?this.#e=i:(this.#e="*",o.unshift(i)),o.forEach(a=>{this.#i(X,this.#e,a);}),this);let{strict:n,...s}=e;Object.assign(this,s),this.getPath=n??true?e.getPath??Ho:Xc;}#t(){let e=new lu({router:this.router,getPath:this.getPath});return e.errorHandler=this.errorHandler,e.#r=this.#r,e.routes=this.routes,e}#r=Hh;errorHandler=ou;route(e,r){let n=this.basePath(e);return r.routes.map(s=>{let i;r.errorHandler===ou?i=s.handler:(i=async(o,a)=>(await Jo([],r.errorHandler)(o,()=>s.handler(o,a))).res,i[iu]=s.handler),n.#i(s.method,s.path,i);}),this}basePath(e){let r=this.#t();return r._basePath=sr(this._basePath,e),r}onError=e=>(this.errorHandler=e,this);notFound=e=>(this.#r=e,this);mount(e,r,n){let s,i;n&&(typeof n=="function"?i=n:(i=n.optionHandler,n.replaceRequest===false?s=l=>l:s=n.replaceRequest));let o=i?l=>{let u=i(l);return Array.isArray(u)?u:[u]}:l=>{let u;try{u=l.executionCtx;}catch{}return [l.env,u]};s||=(()=>{let l=sr(this._basePath,e),u=l==="/"?0:l.length;return f=>{let c=new URL(f.url);return c.pathname=c.pathname.slice(u)||"/",new Request(c,f)}})();let a=async(l,u)=>{let f=await r(s(l.req.raw),...o(l));if(f)return f;await u();};return this.#i(X,sr(e,"*"),a),this}#i(e,r,n){e=e.toUpperCase(),r=sr(this._basePath,r);let s={basePath:this._basePath,path:r,method:e,handler:n};this.router.add(e,r,[n,s]),this.routes.push(s);}#s(e,r){if(e instanceof Error)return this.errorHandler(e,r);throw e}#n(e,r,n,s){if(s==="HEAD")return (async()=>new Response(null,await this.#n(e,r,n,"GET")))();let i=this.getPath(e,{env:n}),o=this.router.match(s,i),a=new ru(e,{path:i,matchResult:o,env:n,executionCtx:r,notFoundHandler:this.#r});if(o[0].length===1){let u;try{u=o[0][0][0][0](a,async()=>{a.res=await this.#r(a);});}catch(f){return this.#s(f,a)}return u instanceof Promise?u.then(f=>f||(a.finalized?a.res:this.#r(a))).catch(f=>this.#s(f,a)):u??this.#r(a)}let l=Jo(o[0],this.errorHandler,this.#r);return (async()=>{try{let u=await l(a);if(!u.finalized)throw new Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return u.res}catch(u){return this.#s(u,a)}})()}fetch=(e,...r)=>this.#n(e,r[1],r[0],e.method);request=(e,r,n,s)=>e instanceof Request?this.fetch(r?new Request(e,r):e,n,s):(e=e.toString(),this.fetch(new Request(/^https?:\/\//.test(e)?e:`http://localhost${sr("/",e)}`,r),n,s));fire=()=>{addEventListener("fetch",e=>{e.respondWith(this.#n(e.request,e,void 0,e.request.method));});}};var ni=[];function Vo(t,e){let r=this.buildAllMatchers(),n=((s,i)=>{let o=r[s]||r[X],a=o[2][i];if(a)return a;let l=i.match(o[0]);if(!l)return [[],ni];let u=l.indexOf("",1);return [o[1][u],l]});return this.match=n,n(t,e)}var si="[^/]+",hn=".*",gn="(?:|/.*)",or=Symbol(),zh=new Set(".\\+*[^]$()");function Gh(t,e){return t.length===1?e.length===1?t<e?-1:1:-1:e.length===1||t===hn||t===gn?1:e===hn||e===gn?-1:t===si?1:e===si?-1:t.length===e.length?t<e?-1:1:e.length-t.length}var cu=class Qo{#e;#t;#r=Object.create(null);insert(e,r,n,s,i){if(e.length===0){if(this.#e!==void 0)throw or;if(i)return;this.#e=r;return}let[o,...a]=e,l=o==="*"?a.length===0?["","",hn]:["","",si]:o==="/*"?["","",gn]:o.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),u;if(l){let f=l[1],c=l[2]||si;if(f&&l[2]&&(c===".*"||(c=c.replace(/^\((?!\?:)(?=[^)]+\)$)/,"(?:"),/\((?!\?:)/.test(c))))throw or;if(u=this.#r[c],!u){if(Object.keys(this.#r).some(d=>d!==hn&&d!==gn))throw or;if(i)return;u=this.#r[c]=new Qo,f!==""&&(u.#t=s.varIndex++);}!i&&f!==""&&n.push([f,u.#t]);}else if(u=this.#r[o],!u){if(Object.keys(this.#r).some(f=>f.length>1&&f!==hn&&f!==gn))throw or;if(i)return;u=this.#r[o]=new Qo;}u.insert(a,r,n,s,i);}buildRegExpStr(){let r=Object.keys(this.#r).sort(Gh).map(n=>{let s=this.#r[n];return (typeof s.#t=="number"?`(${n})@${s.#t}`:zh.has(n)?`\\${n}`:n)+s.buildRegExpStr()});return typeof this.#e=="number"&&r.unshift(`#${this.#e}`),r.length===0?"":r.length===1?r[0]:"(?:"+r.join("|")+")"}};var uu=class{#e={varIndex:0};#t=new cu;insert(t,e,r){let n=[],s=[];for(let o=0;;){let a=false;if(t=t.replace(/\{[^}]+\}/g,l=>{let u=`@\\${o}`;return s[o]=[u,l],o++,a=true,u}),!a)break}let i=t.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let o=s.length-1;o>=0;o--){let[a]=s[o];for(let l=i.length-1;l>=0;l--)if(i[l].indexOf(a)!==-1){i[l]=i[l].replace(a,s[o][1]);break}}return this.#t.insert(i,e,n,this.#e,r),n}buildRegExp(){let t=this.#t.buildRegExpStr();if(t==="")return [/^$/,[],[]];let e=0,r=[],n=[];return t=t.replace(/#(\d+)|@(\d+)|\.\*\$/g,(s,i,o)=>i!==void 0?(r[++e]=Number(i),"$()"):(o!==void 0&&(n[Number(o)]=++e),"")),[new RegExp(`^${t}`),r,n]}};var Vh=[/^$/,[],Object.create(null)],fu=Object.create(null);function du(t){return fu[t]??=new RegExp(t==="*"?"":`^${t.replace(/\/\*$|([.\\+*[^\]$()])/g,(e,r)=>r?`\\${r}`:"(?:|/.*)")}$`)}function Qh(){fu=Object.create(null);}function Xh(t){let e=new uu,r=[];if(t.length===0)return Vh;let n=t.map(u=>[!/\*|\/:/.test(u[0]),...u]).sort(([u,f],[c,d])=>u?1:c?-1:f.length-d.length),s=Object.create(null);for(let u=0,f=-1,c=n.length;u<c;u++){let[d,p,y]=n[u];d?s[p]=[y.map(([b])=>[b,Object.create(null)]),ni]:f++;let h;try{h=e.insert(p,f,d);}catch(b){throw b===or?new ri(p):b}d||(r[f]=y.map(([b,m])=>{let w=Object.create(null);for(m-=1;m>=0;m--){let[_,S]=h[m];w[_]=S;}return [b,w]}));}let[i,o,a]=e.buildRegExp();for(let u=0,f=r.length;u<f;u++)for(let c=0,d=r[u].length;c<d;c++){let p=r[u][c]?.[1];if(!p)continue;let y=Object.keys(p);for(let h=0,b=y.length;h<b;h++)p[y[h]]=a[p[y[h]]];}let l=[];for(let u in o)l[u]=r[o[u]];return [i,l,s]}function Or(t,e){if(t){for(let r of Object.keys(t).sort((n,s)=>s.length-n.length))if(du(r).test(e))return [...t[r]]}}var ii=class{name="RegExpRouter";#e;#t;constructor(){this.#e={[X]:Object.create(null)},this.#t={[X]:Object.create(null)};}add(t,e,r){let n=this.#e,s=this.#t;if(!n||!s)throw new Error(ti);n[t]||[n,s].forEach(a=>{a[t]=Object.create(null),Object.keys(a[X]).forEach(l=>{a[t][l]=[...a[X][l]];});}),e==="/*"&&(e="*");let i=(e.match(/\/:/g)||[]).length;if(/\*$/.test(e)){let a=du(e);t===X?Object.keys(n).forEach(l=>{n[l][e]||=Or(n[l],e)||Or(n[X],e)||[];}):n[t][e]||=Or(n[t],e)||Or(n[X],e)||[],Object.keys(n).forEach(l=>{(t===X||t===l)&&Object.keys(n[l]).forEach(u=>{a.test(u)&&n[l][u].push([r,i]);});}),Object.keys(s).forEach(l=>{(t===X||t===l)&&Object.keys(s[l]).forEach(u=>a.test(u)&&s[l][u].push([r,i]));});return}let o=Zs(e)||[e];for(let a=0,l=o.length;a<l;a++){let u=o[a];Object.keys(s).forEach(f=>{(t===X||t===f)&&(s[f][u]||=[...Or(n[f],u)||Or(n[X],u)||[]],s[f][u].push([r,i-l+a+1]));});}}match=Vo;buildAllMatchers(){let t=Object.create(null);return Object.keys(this.#t).concat(Object.keys(this.#e)).forEach(e=>{t[e]||=this.#r(e);}),this.#e=this.#t=void 0,Qh(),t}#r(t){let e=[],r=t===X;return [this.#e,this.#t].forEach(n=>{let s=n[t]?Object.keys(n[t]).map(i=>[i,n[t][i]]):[];s.length!==0?(r||=true,e.push(...s)):t!==X&&e.push(...Object.keys(n[X]).map(i=>[i,n[X][i]]));}),r?Xh(e):null}};var Xo=class{name="SmartRouter";#e=[];#t=[];constructor(t){this.#e=t.routers;}add(t,e,r){if(!this.#t)throw new Error(ti);this.#t.push([t,e,r]);}match(t,e){if(!this.#t)throw new Error("Fatal error");let r=this.#e,n=this.#t,s=r.length,i=0,o;for(;i<s;i++){let a=r[i];try{for(let l=0,u=n.length;l<u;l++)a.add(...n[l]);o=a.match(t,e);}catch(l){if(l instanceof ri)continue;throw l}this.match=a.match.bind(a),this.#e=[a],this.#t=void 0;break}if(i===s)throw new Error("Fatal error");return this.name=`SmartRouter + ${this.activeRouter.name}`,o}get activeRouter(){if(this.#t||this.#e.length!==1)throw new Error("No active router has been determined yet.");return this.#e[0]}};var yn=Object.create(null),Yh=t=>{for(let e in t)return true;return false},pu=class mu{#e;#t;#r;#i=0;#s=yn;constructor(e,r,n){if(this.#t=n||Object.create(null),this.#e=[],e&&r){let s=Object.create(null);s[e]={handler:r,possibleKeys:[],score:0},this.#e=[s];}this.#r=[];}insert(e,r,n){this.#i=++this.#i;let s=this,i=Vc(r),o=[];for(let a=0,l=i.length;a<l;a++){let u=i[a],f=i[a+1],c=Qc(u,f),d=Array.isArray(c)?c[0]:u;if(d in s.#t){s=s.#t[d],c&&o.push(c[1]);continue}s.#t[d]=new mu,c&&(s.#r.push(c),o.push(c[1])),s=s.#t[d];}return s.#e.push({[e]:{handler:n,possibleKeys:o.filter((a,l,u)=>u.indexOf(a)===l),score:this.#i}}),s}#n(e,r,n,s,i){for(let o=0,a=r.#e.length;o<a;o++){let l=r.#e[o],u=l[n]||l[X],f={};if(u!==void 0&&(u.params=Object.create(null),e.push(u),s!==yn||i&&i!==yn))for(let c=0,d=u.possibleKeys.length;c<d;c++){let p=u.possibleKeys[c],y=f[u.score];u.params[p]=i?.[p]&&!y?i[p]:s[p]??i?.[p],f[u.score]=true;}}}search(e,r){let n=[];this.#s=yn;let i=[this],o=Wo(r),a=[],l=o.length,u=null;for(let f=0;f<l;f++){let c=o[f],d=f===l-1,p=[];for(let h=0,b=i.length;h<b;h++){let m=i[h],w=m.#t[c];w&&(w.#s=m.#s,d?(w.#t["*"]&&this.#n(n,w.#t["*"],e,m.#s),this.#n(n,w,e,m.#s)):p.push(w));for(let _=0,S=m.#r.length;_<S;_++){let E=m.#r[_],C=m.#s===yn?{}:{...m.#s};if(E==="*"){let H=m.#t["*"];H&&(this.#n(n,H,e,m.#s),H.#s=C,p.push(H));continue}let[x,A,v]=E;if(!c&&!(v instanceof RegExp))continue;let R=m.#t[x];if(v instanceof RegExp){if(u===null){u=new Array(l);let le=r[0]==="/"?1:0;for(let Ve=0;Ve<l;Ve++)u[Ve]=le,le+=o[Ve].length+1;}let H=r.substring(u[f]),I=v.exec(H);if(I){if(C[A]=I[0],this.#n(n,R,e,m.#s,C),Yh(R.#t)){R.#s=C;let le=I[0].match(/\//)?.length??0;(a[le]||=[]).push(R);}continue}}(v===true||v.test(c))&&(C[A]=c,d?(this.#n(n,R,e,C,m.#s),R.#t["*"]&&this.#n(n,R.#t["*"],e,C,m.#s)):(R.#s=C,p.push(R)));}}let y=a.shift();i=y?p.concat(y):p;}return n.length>1&&n.sort((f,c)=>f.score-c.score),[n.map(({handler:f,params:c})=>[f,c])]}};var Yo=class{name="TrieRouter";#e;constructor(){this.#e=new pu;}add(t,e,r){let n=Zs(e);if(n){for(let s=0,i=n.length;s<i;s++)this.#e.insert(t,n[s],r);return}this.#e.insert(t,e,r);}match(t,e){return this.#e.search(t,e)}};var be=class extends au{constructor(t={}){super(t),this.router=t.router??new Xo({routers:[new ii,new Yo]});}};var eg=t=>JSON.parse(jsonStringify(t)),hu=new be().get("/ping",t=>t.json({message:"pong"})).get("/config",t=>t.json(t.var.app.config)).get("/info",t=>t.json(eg({connection:t.var.app.connection.config,config:t.var.app.config}))).get("/introspect",async t=>{let e=await t.var.app.connection.introspect();return t.json(e)});var Te=class extends Error{code;details;hint;httpStatus;constructor(e){super(e.message),this.name="EmbedError",this.code=e.code,this.details=e.details,this.hint=e.hint,this.httpStatus=e.httpStatus;}},Le=class extends Error{constructor(r,n=r){super(r);this.details=n;this.name="SelectParseError";}},Wt=class extends Error{constructor(r,n=r){super(r);this.details=n;this.name="QueryParamParseError";}},Pr=class extends Error{constructor(r="Invalid path specified in request URL",n=null){super(r);this.details=n;this.name="RouteValidationError";}},fe=class extends Error{constructor(r,n,s){super(r);this.details=n;this.position=s;this.name="OrderParseError";}};var tg="/rest/v1";function Zo(t,e=tg){let r=new URL(t.url),n=decodeURIComponent(r.pathname);n.startsWith(e)&&(n=n.slice(e.length)),n=n.replace(/^\/+|\/+$/g,"");let s=n.split("/");if(s[0]==="rpc"&&s[1])return {function:s[1],isRpc:true};if(s.length>1)throw new Pr;return {from:s[0]||void 0,isRpc:false}}function ea(t){let e=t.method.toUpperCase(),r;e==="GET"||e==="HEAD"?r=t.headers.get("Accept-Profile")??void 0:r=t.headers.get("Content-Profile")??void 0;let n=[],s=[],i=t.headers.get("Prefer");i&&s.push(i);for(let a of s){let l=a.split(",").map(u=>u.trim()).filter(Boolean);for(let u of l){let f=u.indexOf("=");if(f===-1)continue;let c=u.slice(0,f).trim(),d=u.slice(f+1).trim();c==="max-affected"?n.push({key:"max-affected",value:Number(d)}):n.push({key:c,value:d});}}let o=t.headers.get("Accept")??"application/json";return {schema:r,preferTokens:n,accept:o}}var gu=new Set(["count","sum","avg","min","max"]);function F(t){return t.input[t.pos]??""}function D(t,e=1){t.pos+=e;}function ve(t){return t.pos>=t.input.length}function Re(t,e){return t.input.startsWith(e,t.pos)}function ra(t){return /^[a-zA-Z0-9_]$/.test(t)}function M(t){for(;!ve(t)&&/\s/.test(F(t));)D(t);}function sa(t){let r=new URL(t.url).searchParams.get("select");if(r==null)return {select:[],join:{},embeddedAliases:new Set};if(r==="")return {select:[],join:{},embeddedAliases:new Set};if(r.trim()==="")throw new Le("failed to parse select parameter");let n={},s=new Set,i={input:r,pos:0},o=wu(i,n,s);if(M(i),!ve(i))throw new Error(`Unexpected input at position ${i.pos}: "${i.input.slice(i.pos)}"`);return {select:o,join:n,embeddedAliases:s}}function wu(t,e,r){let n=[];if(M(t),ve(t)||F(t)===")"||F(t)===","&&(D(t),M(t),ve(t)||F(t)===")"))return n;for(n.push(yu(t,e,r));!ve(t)&&(M(t),F(t)===",");)D(t),M(t),n.push(yu(t,e,r));return n}function yu(t,e,r){if(M(t),F(t)==="*")return D(t),"*";if(Re(t,"..."))return D(t,3),M(t),rg(t,e,r);let n=it(t,{allowSpaces:true,allowDollar:true});return M(t),Re(t,"::")?na(n,void 0,t,e,r):F(t)===":"?(D(t),M(t),ng(n,t,e,r)):na(n,void 0,t,e,r)}function rg(t,e,r){let n=it(t);M(t);let{hint:s,innerJoin:i}=Su(t);if(M(t),F(t)!=="(")throw new Error(`Expected "(" for spread embed at position ${t.pos}`);let{subSelect:o,subJoin:a}=Eu(t),l=n,u={};i&&(u.type="inner"),s&&(u.hint=s),e[l]=u,r.add(l);let f={spread:true,select:o};return Object.keys(a).length>0&&(f.join=a),{[l]:f}}function ng(t,e,r,n){let s=it(e,{allowSpaces:true,allowDollar:true});return M(e),na(s,t,e,r,n)}function na(t,e,r,n,s){return M(r),t==="count"&&(ve(r)||F(r)===","||F(r)===")"||F(r)==="("||Re(r,"::"))?ig(e,r):F(r)==="!"||F(r)==="("?sg(t,e,r,n,s):og(t,e,r)}function sg(t,e,r,n,s){let{hint:i,innerJoin:o}=Su(r);if(M(r),F(r)!=="(")throw new Le("failed to parse select parameter");let{subSelect:a,subJoin:l}=Eu(r),u=e??t,f={};e&&(f.from=t),o&&(f.type="inner"),i&&(f.hint=i),n[u]=f,s.add(u),e&&t!==u&&s.add(t);let c={select:a};return Object.keys(l).length>0&&(c.join=l),{[u]:c}}function Su(t){if(M(t),F(t)!=="!")return {};D(t);let e=it(t);if(e==="inner")return {innerJoin:true};if(e==="left")return {};let r=e;if(M(t),F(t)==="!"){D(t);let n=it(t);if(n==="inner")return {hint:r,innerJoin:true};if(n==="left")return {hint:r};throw new Error(`Expected "inner" or "left" after hint, got "${n}" at position ${t.pos}`)}return {hint:r}}function Eu(t,e,r){if(F(t)!=="(")throw new Error(`Expected "(" at position ${t.pos}`);D(t),M(t);let n={},s=new Set;if(F(t)===")")return D(t),{subSelect:[],subJoin:n};let i=wu(t,n,s);if(M(t),F(t)!==")")throw new Error(`Expected ")" at position ${t.pos}`);return D(t),{subSelect:i,subJoin:n}}function ig(t,e){M(e);let r=true;if(F(e)==="("){r=false,D(e);let o=e.pos;for(;!ve(e)&&F(e)!==")";)D(e);if(ve(e))throw new Le("expected closing paren for count()");let a=e.input.slice(o,e.pos).trim();if(D(e),a!=="")throw new Le("expected null arg for count()")}M(e);let n;Re(e,"::")&&(D(e,2),n=bn(e));let s=t??"count",i={aggregate:"count"};return r&&(i.bareCount=true),n&&(i.cast=n),{[s]:i}}function og(t,e,r){M(r);let n,s,i=false,o;if(Re(r,"->")){let{path:f,lastProp:c,lastIsText:d,invalidTextTraversalKey:p}=ag(r);n=f,s=c||void 0,i=d,o=p;}M(r);let a,l;if(Re(r,"::")){D(r,2);let f=bn(r);if(M(r),F(r)==="."&&!ve(r)){let c=r.input[r.pos+1]??"";if(ra(c)){let d=r.pos;D(r);let p=it(r);if(gu.has(p)&&Re(r,"()"))return a=f,D(r,2),M(r),Re(r,"::")&&(D(r,2),l=bn(r),ta(r)),bu(t,e,n,s,i,o,a,p,l);r.pos=d;}}l=f,ta(r);}let u;if(F(r)==="."&&!ve(r)){let f=r.input[r.pos+1]??"";if(ra(f)){let c=r.pos;D(r);let d=it(r);gu.has(d)&&Re(r,"()")?(u=d,D(r,2),M(r),Re(r,"::")&&(D(r,2),l=bn(r),ta(r))):r.pos=c;}}return bu(t,e,n,s,i,o,a,u,l)}function ta(t){for(M(t);Re(t,"::");)D(t,2),bn(t),M(t);}function bn(t){M(t);let e=[it(t)];for(;!ve(t);){let r=t.pos;if(M(t),t.pos===r)break;let n=F(t);if(!(n==='"'||/^[a-zA-Z0-9_]$/.test(n))){t.pos=r;break}e.push(it(t));}return e.join(" ")}function bu(t,e,r,n,s,i,o,a,l){let u=e??(a||void 0)??n;if(!u&&!o&&!l&&!a&&!r)return t;let f=u??t,c={};return t!==f&&(c.column=t),a&&!c.column&&t===f&&(c.column=t),r&&(c.column||(c.column=t),c.path=r,s&&(c.pathText=true),i&&(c.invalidJsonTextTraversalKey=i)),o&&(c.preCast=o),a&&(c.aggregate=a),l&&(c.cast=l),{[f]:c}}function ag(t){let e=[],r="",n=false,s;for(;Re(t,"->");){let o=n;D(t,2);let a=false;F(t)===">"&&(D(t),a=true);let l=lg(t);e.push(l),o&&s===void 0&&(s=l),/^-?\d+$/.test(l)||(r=l),n=a;}return {path:"$."+e.join("."),lastProp:r,lastIsText:n,invalidTextTraversalKey:s}}function lg(t){return cg(t)}function cg(t){M(t);let e=t.pos;if(F(t)==='"')return it(t);let r="";for(;!ve(t)&&!(Re(t,"->")||Re(t,"::"));){let n=F(t);if(n===","||n==="."||n===":"||/\s/.test(n))break;r+=n,D(t);}if(r==="")throw new Le(`"failed to parse select parameter (${t.input})" (line 1, column ${e+1})`);if(r.includes("--")||r.endsWith("-"))throw new Le("failed to parse select parameter");if(/^-\d+\D/.test(r))throw new Le("failed to parse select parameter");return r}function it(t,e={}){if(M(t),F(t)==='"'){D(t);let n="";for(;!ve(t)&&F(t)!=='"';)n+=F(t),D(t);if(ve(t))throw new Error(`Missing closing quote at position ${t.pos}`);return D(t),n}let r="";for(;!ve(t);){let n=F(t);if(ra(n))r+=n,D(t);else if(e.allowDollar&&n==="$")r+=n,D(t);else if(e.allowSpaces&&n===" ")r+=n,D(t);else if(n==="-"&&r.length>0){if((t.input[t.pos+1]??"")===">")break;r+=n,D(t);}else break}if(e.allowSpaces&&(r=r.trimEnd()),r==="")throw new Error(`Expected identifier at position ${t.pos}`);if(r.includes("--")||r.endsWith("-"))throw new Le("failed to parse select parameter");return r}async function ia(t){let e=t.method.toUpperCase();if(e==="GET"||e==="HEAD")return {};let r=await t.text(),n=t.headers.get("Content-Type")??"";if(!r&&n.includes("text/csv"))throw new Ir('parse error (not enough input) at ""');if(!r)return {};if(n.includes("application/json"))try{let s=JSON.parse(r);return Array.isArray(s)?{values:s}:{values:s}}catch{throw new Error(`Invalid JSON body: ${r.slice(0,100)}`)}if(n.includes("text/csv"))return {values:ug(r)};if(n.includes("application/x-www-form-urlencoded")){let s=new URLSearchParams(r),i={};for(let[o,a]of s)i[o]=a;return {values:i}}return {raw:r}}function ug(t){let e=t.replace(/\r\n/g,`
66
64
  `).replace(/\r/g,`
67
- `),r=Lg(e);if(r.length===0)throw new jr("parse error (not enough input)");let t=r[0];if(r.length===1)return [];let n=[];for(let i=1;i<r.length;i++){let a=r[i],o={};for(let l=0;l<t.length;l++){let u=l<a.length?a[l]:"";o[t[l]]=u===""?null:u;}n.push(o);}return n}function Lg(s){let e=[],r=0,t=s.length;for(;r<t&&!(r===t-1&&s[r]===`
68
- `);){let{row:n,nextPos:i}=kg(s,r);e.push(n),r=i;}return e}function kg(s,e){let r=[],t=e,n=s.length;for(;t<=n;){if(t===n||s[t]===`
69
- `)return r.length,{row:r,nextPos:t+1};if(s[t]==='"'){let i="";for(t++;t<n;)if(s[t]==='"')if(t+1<n&&s[t+1]==='"')i+='"',t+=2;else {t++;break}else i+=s[t],t++;r.push(i),t<n&&s[t]===","&&t++;}else {let i="";for(;t<n&&s[t]!==","&&s[t]!==`
70
- `;)i+=s[t],t++;r.push(i),t<n&&s[t]===","&&t++;}}return {row:r,nextPos:t}}var jr=class extends Error{constructor(e){super(e),this.name="CsvParseError";}};function yo(s){let e=new URL(s.url),r=new Map;for(let[t,n]of e.searchParams.entries()){let i=r.get(t)??[];i.push(n),r.set(t,i);}return r}function Eo(s,e,r){let t=e.toUpperCase();if(s.isRpc)return "rpc";switch(t){case "GET":case "HEAD":return "query";case "POST":return r.preferTokens.find(i=>i.key==="resolution"&&(i.value==="merge-duplicates"||i.value==="ignore-duplicates"))?"upsert":"insert";case "PATCH":return "update";case "PUT":return "put";case "DELETE":return "delete";default:return "query"}}var jc=new Set(["eq","neq","gt","gte","lt","lte","like","ilike","match","imatch","is","isdistinct","in","cs","cd","ov","sl","sr","nxl","nxr","adj","fts","plfts","phfts","wfts","not"]),Dc={eq:"$eq",neq:"$neq",gt:"$gt",gte:"$gte",lt:"$lt",lte:"$lte",like:"$like",ilike:"$ilike",match:"$regex",imatch:"$iregex",is:"$is",isdistinct:"$isDistinct",in:"$in",cs:"$contains",cd:"$containedBy",ov:"$overlaps",sl:"$rangeLt",sr:"$rangeGt",nxl:"$rangeGte",nxr:"$rangeLte",adj:"$rangeAdjacent"},$g={any:"Any",all:"All"},Pg=new Set(["eq","gt","gte","lt","lte","like","ilike","match","imatch"]),Dg={fts:void 0,plfts:"plain",phfts:"phrase",wfts:"websearch"};function So(s){let e=s.match(/^(\w+)\((any|all)\)$/);if(e){let[,n,i]=e;if(!Pg.has(n))return null;let a=Dc[n];return a?{astOp:a+$g[i]}:null}let r=s.match(/^(p[lh]fts|wfts|fts)(?:\(([^)]+)\))?$/);if(r){let[,n,i]=r;return i!==void 0&&!/^[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)?$/.test(i)?null:{astOp:"$textSearch",ftsType:Dg[n],ftsConfig:i}}let t=Dc[s];return t?{astOp:t}:null}function As(s){let e=s.indexOf(".");if(e===-1)return false;let t=s.substring(0,e).replace(/\((any|all)\)$/,"");return jc.has(t)}var cr=new Set(["select","order","limit","offset","on_conflict","columns"]);function Rs(s){if(s.startsWith("(")&&s.endsWith(")")&&(s=s.slice(1,-1)),s.trim()==="")return [];let e=[],r=0;for(;r<s.length;){if(s[r]==='"'){r++;let t="";for(;r<s.length&&s[r]!=='"';)s[r]==="\\"&&r+1<s.length&&r++,t+=s[r],r++;r<s.length&&r++,e.push(t);}else {let t="";for(;r<s.length&&s[r]!==",";)t+=s[r],r++;e.push(wt(t,{preserveWhitespace:true}));}r<s.length&&s[r]===","&&(r++,r===s.length&&e.push(""));}return e}function _s(s){if(s.startsWith("{")&&s.endsWith("}")&&(s=s.slice(1,-1)),s==="")return [];let e=[],r=0;for(;r<s.length;){if(s[r]==='"'){r++;let t="";for(;r<s.length&&s[r]!=='"';)s[r]==="\\"&&r+1<s.length&&r++,t+=s[r],r++;r<s.length&&r++,e.push(t);}else {let t="";for(;r<s.length&&s[r]!==",";)t+=s[r],r++;e.push(wt(t));}r<s.length&&s[r]===","&&r++;}return e}var di=Symbol.for("postgrest:not_null"),pr=Symbol.for("postgrest:unknown");function wt(s,e){let r=e?.preserveWhitespace===true,t=s.trim();if(t.startsWith('"')&&t.endsWith('"')&&t.length>=2)return t.slice(1,-1);let n=t.toLowerCase();if(n==="null")return null;if(n==="not_null")return di;if(n==="true")return true;if(n==="false")return false;if(n==="unknown")return null;if(t!==""&&!Number.isNaN(Number(t))&&Number.isFinite(Number(t)))return Number(t);if(t.startsWith("{")&&t.endsWith("}"))try{let i=JSON.parse(t);if(typeof i=="object"&&!Array.isArray(i))return i}catch{}return r?t===""?"":s:t}function wo(s,e){let r={},t={};for(let[n,i]of s){if(cr.has(n))continue;let o=n.startsWith('"')?-1:n.indexOf(".");if(o>0&&!n.slice(0,o).includes("->")){let l=n.slice(0,o),u=n.slice(o+1);if(e.has(l)){if(u==="order"||u==="limit"||u==="offset")continue;if(u.includes(".")){let p=u.lastIndexOf("."),c=u.slice(p+1);if(c==="order"||c==="limit"||c==="offset")continue}t[l]||(t[l]={}),xg(u,i,t[l]);continue}if(n!=="not.or"&&n!=="not.and")throw jg(l)}To(n,i,r);}return {where:r,embeddedWheres:t}}function jg(s){return new Ne({httpStatus:400,code:"PGRST108",message:`'${s}' is not an embedded resource in this request`,details:null,hint:`Verify that '${s}' is included in the 'select' query parameter.`})}function To(s,e,r){if(s==="or"||s==="and"){let n=e.map(a=>xc(a)),i=n.length===1?n[0]:n.flat();r[`$${s}`]=i;return}if(s==="not.or"||s==="not.and"){let n=s.slice(4),i=e.map(o=>xc(o)),a=i.length===1?i[0]:i.flat();r.$not={[`$${n}`]:a};return}let t=Bc(Fg(s),{stopAtSpace:false});Mc(t);for(let n of e){let i=Uc(n);r[t]?Object.assign(r[t],i):r[t]=i;}}function xg(s,e,r){let t=Ug(s);if(!t){To(s,e,r);return}let n={};To(t.filterKey,e,n);for(let[i,a]of Object.entries(n))r[`${t.path}.${i}`]=a;}function Ug(s){for(let e of ["not.or","not.and","or","and"]){let r=`.${e}`;if(s.endsWith(r)){let t=s.slice(0,-r.length);if((e==="or"||e==="and")&&t==="not")continue;if(t)return {path:t,filterKey:e}}}}function Uc(s){let e=s,r=false;e.startsWith("not.")&&(r=true,e=e.slice(4));let t=e.indexOf("."),n,i;t===-1?(n=e,i=""):(n=e.slice(0,t),i=e.slice(t+1));let a=So(n);if(!a)throw new Error(`"failed to parse filter (${s})" (line 1, column 1)`);let{astOp:o,ftsType:l,ftsConfig:u}=a;if(r&&o==="$in")return {$notIn:bo(o,i)};if(r&&o==="$is")return {$isNot:bo(o,i)};let p=o==="$textSearch"?Mg(i,l,u):bo(o,i);return r?{$not:{[o]:p}}:{[o]:p}}function bo(s,e){if(s==="$in"||s==="$notIn"){if(!e.startsWith("(")||!e.endsWith(")")){let r=s==="$in"?"in":"not.in";throw new Error(`"failed to parse filter (${r}.${e})" (line 1, column ${r.length+e.length+2})`)}return Rs(e)}if(s.endsWith("Any")||s.endsWith("All")){if(e.startsWith("{"))return _s(e);if(!Bg(s))throw Object.assign(new Error(`malformed array literal: "${e}"`),{code:"22P02",detail:'Array value must start with "{" or dimension information.'});return Rs(e)}if(s==="$contains"||s==="$containedBy"||s==="$overlaps"){if(e.startsWith("{")){try{let r=JSON.parse(e);if(typeof r=="object"&&!Array.isArray(r))return r}catch{}return _s(e)}return e.startsWith("[")||e.startsWith("(")?e:wt(e)}if(s.startsWith("$range"))return e;if(s==="$is"){let r=e.toLowerCase().trim();if(!["null","true","false","unknown","not_null"].includes(r))throw new Error(`"failed to parse filter (is.${e})" (line 1, column ${2+e.length})`);return r==="unknown"?pr:wt(e)}if(s==="$like"||s==="$ilike"||s==="$likeAny"||s==="$ilikeAny"||s==="$likeAll"||s==="$ilikeAll"){let r=e.replace(/\*/g,"%");return s.endsWith("Any")||s.endsWith("All")?r.startsWith("{")?_s(r):Rs(r):r}return s==="$isDistinct"?e:wt(e)}function Bg(s){return s==="$likeAny"||s==="$ilikeAny"||s==="$likeAll"||s==="$ilikeAll"}function Mg(s,e,r){let t={query:s};return e&&(t.type=e),r&&(t.config=r),t}function xc(s){if(!s.startsWith("(")||!s.endsWith(")"))throw new Error(`"failed to parse logic tree (${s})" (line 1, column ${s.length+3})`);let e=s.slice(1,-1);for(;e.endsWith(")");){let r=0;for(let t of e)t==="("?r++:t===")"&&r--;if(r<0)e=e.slice(0,e.length+r);else break}if(e.trim()==="")throw new Error(`"failed to parse logic tree (${s})" (line 1, column ${s.length+2})`);try{return vs(e).map(t=>Os(t))}catch{throw new Error(`"failed to parse logic tree (${s})" (line 1, column ${s.length+2})`)}}function vs(s){let e=[],r=0,t=0,n=false,i="";for(let a of s)if(a==='"'&&!n?n=true:a==='"'&&n&&(n=false),n||(a==="("?r++:a===")"?r--:a==="{"?t++:a==="}"&&t--),a===","&&r===0&&t===0&&!n){if(i.trim()==="")throw new Error("empty logical expression");e.push(i.trim()),i="";}else i+=a;if(i.trim())e.push(i.trim());else if(s.trim().endsWith(","))throw new Error("empty logical expression");return e}function Os(s){let e=s.trim(),r=e.match(/^and\s*\((.*)\)$/s);if(r)return {$and:vs(r[1]).map(f=>Os(f))};let t=e.match(/^or\s*\((.*)\)$/s);if(t)return {$or:vs(t[1]).map(f=>Os(f))};let n=e.match(/^not\.and\s*\((.*)\)$/s);if(n)return {$not:{$and:vs(n[1]).map(f=>Os(f))}};let i=e.match(/^not\.or\s*\((.*)\)$/s);if(i)return {$not:{$or:vs(i[1]).map(f=>Os(f))}};if(/^(?:and|or|not)=/.test(e))throw new Error(`Invalid filter expression: "${s}"`);if(e.startsWith("not.")||e.startsWith("not("))throw new Error(`Invalid filter expression: "${s}"`);let a=s,o=false;a.startsWith("not.")&&(o=true,a=a.slice(4));let l=a.indexOf(".");if(l===-1)throw new Error(`Invalid filter expression: "${s}"`);let u=Bc(a.slice(0,l),{stopAtSpace:true});Mc(u);let p=a.slice(l+1),c=Uc(o?`not.${p}`:p);return {[u]:c}}function Bc(s,e){let t=(e.stopAtSpace?/[!@/\\~[\]()\t ]/:/[!@/\\~[\]()\t]/).exec(s);return t?s.slice(0,t.index):s}function Fg(s){return s.length>=2&&s.startsWith('"')&&s.endsWith('"')?s.slice(1,-1).replace(/""/g,'"'):s}function Mc(s){if(s===""||s==="*"||s.includes("--")||s.endsWith("-"))throw new Error(`Invalid filter expression: "${s}"`);if(/->>?-\d+\D/.test(s))throw new Error(`Invalid filter expression: "${s}"`)}function qg(s){let e=s.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\(([^)]+)\)$/);return e?{embed:e[1],column:e[2]}:null}function Fc(s){if(s===void 0)return;let e=s.trim();if(!/^[+-]?\d+$/.test(e))return;let r=Number(e);return Number.isFinite(r)?r:void 0}function Co(s,e){let r=Fc(s),t=Fc(e);return t!==void 0&&t<0&&(r!==void 0&&r>=0&&(r=Math.max(0,r+t)),t=void 0),{limit:r,offset:t}}function Ro(s,e){let r={embeddedTransforms:{}},t,n,i={},a={},o={},l={};for(let[f,m]of s){let d=m[0],g=f.indexOf(".");if(g>0){let b=f.slice(0,g),y=f.slice(g+1);if(e.has(b)){if(y==="order"||y==="limit"||y==="offset"){r.embeddedTransforms[b]||(r.embeddedTransforms[b]={}),y==="order"?r.embeddedTransforms[b].order=Ao(d):y==="limit"?i[b]=d:y==="offset"&&(a[b]=d);continue}if(y.includes(".")){let T=y.lastIndexOf("."),C=y.slice(T+1);if(C==="order"||C==="limit"||C==="offset"){r.embeddedTransforms[b]||(r.embeddedTransforms[b]={});let w=r.embeddedTransforms[b],A=y.slice(0,T);w._nested||(w._nested={});let v=w._nested;v[A]||(v[A]={});let R=v[A];C==="order"?R.order=Ao(d):C==="limit"?(o[b]||(o[b]={}),o[b][A]=d):C==="offset"&&(l[b]||(l[b]={}),l[b][A]=d);continue}}}}f==="order"?r.order=Ao(d):f==="limit"?t=d:f==="offset"&&(n=d);}if(r.order){for(let f of r.order)if(f.embed&&!e.has(f.embed))throw new Ne({httpStatus:400,code:"PGRST108",message:`'${f.embed}' is not an embedded resource in this request`,details:null,hint:`Verify that '${f.embed}' is included in the 'select' query parameter.`})}let u=Co(t,n);u.limit!==void 0&&(r.limit=u.limit),u.offset!==void 0&&(r.offset=u.offset);let p=new Set([...Object.keys(i),...Object.keys(a)]);for(let f of p){let m=Co(i[f],a[f]);r.embeddedTransforms[f]||(r.embeddedTransforms[f]={}),m.limit!==void 0&&(r.embeddedTransforms[f].limit=m.limit),m.offset!==void 0&&(r.embeddedTransforms[f].offset=m.offset);}let c=new Set([...Object.keys(o),...Object.keys(l)]);for(let f of c){let m=new Set([...Object.keys(o[f]??{}),...Object.keys(l[f]??{})]);for(let d of m){let g=Co(o[f]?.[d],l[f]?.[d]),b=r.embeddedTransforms[f]?._nested?.[d];b&&(g.limit!==void 0&&(b.limit=g.limit),g.offset!==void 0&&(b.offset=g.offset));}}return r}function Ao(s){return Jg(s).map(({entry:e,start:r})=>Wg(e.trim(),s,r+e.length-e.trimStart().length))}function Jg(s){let e=[],r=0,t=0;for(let n=0;n<s.length;n++){let i=s[n];i==="("?r++:i===")"?r=Math.max(0,r-1):i===","&&r===0&&(e.push({entry:s.slice(t,n),start:t}),t=n+1);}return e.push({entry:s.slice(t),start:t}),e}function Wg(s,e,r){let t=s.split("."),n={column:t[0]},i=t[0];if(!i)throw new me(`failed to parse order (${e})`,'unexpected end of input expecting letter, digit, "-", "->>", "->", delimiter (.), "," or end of input',1);let a=i.indexOf("::");if(a!==-1)throw new me(`failed to parse order (${e})`,`unexpected ':' expecting letter, digit, "-", "->>", "->", delimiter (.), "," or end of input`,r+a+1);let o=i.indexOf("--");if(o!==-1)throw new me(`failed to parse order (${e})`,`unexpected '-' expecting letter, digit, "-", "->>", "->", delimiter (.), "," or end of input`,r+o+2);let l=i.search(/[@#%]/);if(l!==-1)throw new me(`failed to parse order (${e})`,`unexpected '${i[l]}' expecting letter, digit, "-", "->>", "->", delimiter (.), "," or end of input`,r+l+1);if(i.endsWith("-"))throw new me(`failed to parse order (${e})`,`unexpected '-' expecting letter, digit, "-", "->>", "->", delimiter (.), "," or end of input`,r+i.length);let u=i.indexOf(":");if(u!==-1)throw new me(`failed to parse order (${e})`,`unexpected ':' expecting letter, digit, "-", "->>", "->", delimiter (.), "," or end of input`,r+u+1);let p=qg(i);if(p){if(p.column.includes(","))throw new me(`failed to parse order (${e})`,`unexpected ',' expecting letter, digit, "-", "->>", "->", delimiter (.), "," or end of input`,r+i.indexOf(",",p.embed.length)+1);n.column=p.column,n.embed=p.embed;}let c=r+i.length+1,f=false,m=false;for(let d=1;d<t.length;d++){let g=t[d];if(g==="asc"||g==="desc"){if(f)throw new me(`failed to parse order (${e})`,`unexpected '${g[0]}' expecting "," or end of input`,c+1);if(m)throw new me(`failed to parse order (${e})`,`unexpected '${g[0]}' expecting "," or end of input`,c+1);n.direction=g,f=true,c+=g.length+1;}else if(g==="nullsfirst"||g==="nullslast"){if(m)throw new me(`failed to parse order (${e})`,`unexpected '${g[0]}' expecting "," or end of input`,c+1);n.nullsFirst=g==="nullsfirst",m=true,c+=g.length+1;}else {let b=["asc","desc","nullsfirst","nullslast"],y=null;for(let T of b)if(g.startsWith(T)&&g.length>T.length){y=T;break}if(y){let T=g[y.length],C=c+y.length;throw new me(`failed to parse order (${e})`,`unexpected '${T}' expecting "," or end of input`,C+1)}throw new me(`failed to parse order (${e})`,`unexpected '${g[0]}' expecting "," or end of input`,c+1)}}return n}function _o(s,e,r){let t={};for(let i of s.preferTokens)switch(i.key){case "count":t.count=i.value;break;case "missing":t.missing=i.value;break;case "handling":t.handling=i.value;break;case "tx":t.tx=i.value,i.value==="rollback"&&(t.rollback=true);break;case "max-affected":t.maxAffected=i.value;break;case "timezone":t.timezone=i.value;break;case "return":t.return=i.value;break}r.toUpperCase()==="HEAD"&&(t.head=true),s.accept.includes("application/vnd.pgrst.object")&&(t.cardinality="one"),s.accept.includes("application/vnd.pgrst.plan")&&(t.explain=Vg(s.accept));let n=e.get("columns");if(n){let i=n[0];t.columns=Hg("columns",i);}return t}function Hg(s,e){let r=e.split(",").map(t=>Gg(t));if(r.length===0||r.some(t=>t===""||t==="*"||t.includes("--")||t.endsWith("-")))throw new Vt(`"failed to parse ${s} parameter (${e})" (line 1, column 1)`,"unexpected input");return r}function Gg(s){let e=s.trim();return e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e.replace(/@.*$/,"")}function Vg(s){let e={},r=s.match(/options=([^;]+)/);if(r){let t=r[1].split("|").map(n=>n.trim());e.analyze=t.includes("analyze"),e.verbose=t.includes("verbose"),e.settings=t.includes("settings"),e.buffers=t.includes("buffers"),e.wal=t.includes("wal");}return e}function vo(s,e,r,t){if(!s.isRpc)return {};if(e.toUpperCase()==="POST"){let o={httpMethod:"POST"};return t.values?(Array.isArray(t.values)?(o.args=t.values,o.paramsType="positional"):(o.args=t.values,o.paramsType="named"),o.inputType="json"):t.raw!==void 0&&(o.args={_raw:t.raw},o.inputType="text"),o}let i={};for(let[o,l]of r){if(cr.has(o))continue;let u=l[0];As(u)||(i[o]=wt(u));}let a={httpMethod:"GET",paramsType:"named",inputType:"json"};return Object.keys(i).length>0&&(a.args=i),a}function Oo(s,e){let r=s.get("on_conflict"),t=r===void 0?void 0:Kg(r[0]),i=e.preferTokens.find(a=>a.key==="resolution")?.value==="ignore-duplicates";return {onConflict:t?.length?t:void 0,ignoreDuplicates:i}}function Kg(s){let e=s.split(",").map(r=>r.trim());if(e.length===0||e.some(r=>r===""||r.includes("--")||r.endsWith("-")))throw new Vt(`"failed to parse on_conflict parameter (${s})" (line 1, column 1)`,"unexpected input");return e}async function gi(s,e){let r=e?.basePath,t=e?.parseRoute??(K=>uo(K,r)),n=e?.parseHeaders??co,i=e?.parseSelect??ho,a=e?.parseBody??go,o=e?.parseQueryParams??yo,l=e?.resolveType??Eo,u=e?.resolveFilters??wo,p=e?.resolveTransforms??Ro,c=e?.resolveMeta??_o,f=e?.resolveRpcParams??vo,m=e?.resolveUpsertParams??Oo,[d,g,b,y,T]=await Promise.all([t(s),n(s),i(s),a(s),o(s)]),C=s.method,w=l(d,C,g),A=T;if(d.isRpc&&C.toUpperCase()==="GET"){A=new Map;for(let[K,D]of T){if(cr.has(K)){A.set(K,D);continue}let ce=D.filter(Xe=>As(Xe));ce.length>0&&A.set(K,ce);}}let v=u(A,b.embeddedAliases),R=p(T,b.embeddedAliases),O=c(g,T,C),_=f(d,C,T,y),I=w==="upsert"||w==="put"?m(T,g):void 0;return Yg(w,d,g,b,y,v,R,O,_,I)}function Yg(s,e,r,t,n,i,a,o,l,u){let p={type:s};return e.isRpc?p.function=e.function:p.from=e.from,r.schema&&(p.schema=r.schema),Object.keys(t.join).length>0&&(p.join=t.join),t.select.length>0&&(p.select=qc(t.select,i.embeddedWheres,a.embeddedTransforms,t.join)),Object.keys(i.where).length>0&&(p.where=i.where),(s==="insert"||s==="update"||s==="upsert"||s==="put")&&n.values!==void 0&&(p.values=n.values),s==="rpc"&&(l.args!==void 0&&(p.args=l.args),l.httpMethod&&(p.httpMethod=l.httpMethod),l.paramsType&&(p.paramsType=l.paramsType),l.inputType&&(p.inputType=l.inputType)),(s==="upsert"||s==="put")&&u&&(u.onConflict&&(p.onConflict=u.onConflict),p.ignoreDuplicates=u.ignoreDuplicates),o.return==="representation"&&(s==="insert"||s==="update"||s==="delete"||s==="upsert"||s==="put")&&(!p.select||p.select.length===0)&&(p.select=["*"]),a.order&&(p.order=a.order),a.limit!==void 0&&(p.limit=a.limit),a.offset!==void 0&&(p.offset=a.offset),Object.keys(o).length>0&&(p.$meta=o),p}function qc(s,e,r,t){return s.map(n=>{if(typeof n=="string")return n;let i=Object.keys(n)[0],a=n[i];if(!a.select)return n;let o={...a},l=t?.[i]?.from,u=e[i]||l&&e[l],p=r[i]||l&&r[l];if(u){let c={},f={};for(let[m,d]of Object.entries(u)){let g=m.indexOf(".");if(g>0){let b=m.slice(0,g),y=m.slice(g+1);if(o.join?.[b]||o.select?.some(w=>typeof w=="object"&&b in w&&"select"in(w[b]??{}))){f[b]||(f[b]={}),f[b][y]=d;continue}}c[m]=d;}Object.keys(c).length>0&&(o.where=c);for(let[m,d]of Object.entries(f))e[m]={...e[m],...d};}if(p){let c=p;if(c.order&&(o.order=c.order),c.limit!==void 0&&(o.limit=c.limit),c.offset!==void 0&&(o.offset=c.offset),c._nested)for(let[f,m]of Object.entries(c._nested))r[f]=m;}return o.select&&(o.select=qc(o.select,e,r,o.join)),{[i]:o}})}function yi(s){return s!=null&&typeof s=="object"&&"$ref"in s}var zg=/^[a-zA-Z_][a-zA-Z0-9_.]*$/,Xg=/[;'"\\/*\-#]/,Qg=/['\\;(]/,Ct=class extends Error{constructor(r,t){super(`Unsafe ${t}: "${r}"`);this.value=r;this.context=t;this.name="SanitizeError";}};function At(s,e){if(!zg.test(s))throw new Ct(s,e)}function No(s,e){if(Xg.test(s))throw new Ct(s,e);let r=0;for(let t of s)if(t==="("?r++:t===")"&&r--,r<0)throw new Ct(s,e);if(r!==0)throw new Ct(s,e)}function xr(s,e){if(Qg.test(s))throw new Ct(s,e)}function fr(s){let e=s.indexOf("->");if(e===-1)return {col:s,parts:[]};let r=s.slice(0,e),t=s.slice(e),n=[];for(;t.length>0;){let i;if(t.startsWith("->>"))i="->>",t=t.slice(3);else if(t.startsWith("->"))i="->",t=t.slice(2);else break;let a=t.indexOf("->"),o=a===-1?t:t.slice(0,a);n.push({op:i,key:o}),t=a===-1?"":t.slice(a);}return {col:r,parts:n}}function Ns(s,e){return s.map(r=>{let t=/^-?\d+$/.test(r.key);return t||xr(r.key,e),t?`${r.op}${r.key}`:`${r.op}'${r.key}'`}).join("")}function L(s){return typeof s=="string"?sql.ref(s):s}function Zg(s){return `"${s.replace(/"/g,'""')}"`}function Jc(s){return sql.raw(Zg(s))}function Wc(s,e,r=e.currentTable,t=e.currentSchema){if(!r||!e.introspection?.columns)return;let n=e.introspection.columns.filter(i=>i.table===r&&i.name===s);if(n.length!==0)return n.find(i=>!t||i.schema===t)??n.find(i=>["","public"].includes(i.schema??""))??n[0]}function Ei(s,e,r=e.currentTable,t=e.currentSchema){return Wc(s,e,r,t)!==void 0}function ae(s,e,r=e.currentTable){return Ei(s,e,r)?Jc(s):sql.ref(s)}function Kt(s,e,r,t=r.currentTable){let n=Ei(e,r,t)?Jc(e):sql.ref(e);return sql`${sql.ref(s)}.${n}`}function ey(s){return (s?.pg_type??s?.type??"").toLowerCase()}function Hc(s,e,r=e.currentTable){if(e.dialect!=="postgres")return false;let t=ey(Wc(s,e,r));return t.endsWith("[]")||t.startsWith("_")||t==="array"}function Gc(s){let e=[];for(let r of s){if(!/^\d+$/.test(r))return;e.push(`[${Number(r)+1}]`);}return e.join("")}function Vc(s,e,r,t=r.currentTable,n=false){let i=e.replace(/^\$\./,"").split(".").filter(Boolean);if(i.length===0)return ae(s,r,t);if(Hc(s,r,t)){let l=Gc(i);if(l)return sql`${ae(s,r,t)}${sql.raw(l)}`}let a=i.map((l,u)=>({op:u===i.length-1&&n?"->>":"->",key:l})),o=Ns(a,"JSON path key");return sql`${ae(s,r,t)}${sql.raw(o)}`}function Is(s,e,r=e.currentTable,t){let{col:n,parts:i}=fr(s),a=t?Kt(t,n,e,r):ae(n,e,r);if(i.length===0)return a;if(Hc(n,e,r)){let u=Gc(i.map(p=>p.key));if(u)return sql`${a}${sql.raw(u)}`}let o=e.dialect==="sqlite"?i.map((u,p)=>p===i.length-1?{...u,op:"->>"}:u):i,l=Ns(o,"JSON path key");return sql`${a}${sql.raw(l)}`}var Si={$eq:(s,e,r)=>sql`${L(e)} = ${r}`,$neq:(s,e,r)=>sql`${L(e)} != ${r}`,$gt:(s,e,r)=>sql`${L(e)} > ${r}`,$gte:(s,e,r)=>sql`${L(e)} >= ${r}`,$lt:(s,e,r)=>sql`${L(e)} < ${r}`,$lte:(s,e,r)=>sql`${L(e)} <= ${r}`,$like:(s,e,r)=>sql`${L(e)} like ${r}`,$is:(s,e,r)=>{let t=L(e);return r===di?sql`${t} IS NOT NULL`:r===pr?sql`${t} IS UNKNOWN`:r===null?sql`${t} IS NULL`:r===true?sql`${t} IS TRUE`:r===false?sql`${t} IS FALSE`:sql`${t} IS NULL`},$isNot:(s,e,r)=>{let t=L(e);return r===di?sql`${t} IS NULL`:r===pr?sql`${t} IS NOT UNKNOWN`:r===null?sql`${t} IS NOT NULL`:r===true?sql`${t} IS NOT TRUE`:r===false?sql`${t} IS NOT FALSE`:sql`${t} IS NOT NULL`},$in:(s,e,r)=>{if(Array.isArray(r)&&r.length===0)return sql`false`;let t=L(e);return Array.isArray(r)?sql`${t} in (${sql.join(r.map(n=>sql`${n}`))})`:sql`${t} in ${r}`},$notIn:(s,e,r)=>{if(Array.isArray(r)&&r.length===0)return sql`true`;let t=L(e);return Array.isArray(r)?sql`${t} not in (${sql.join(r.map(n=>sql`${n}`))})`:sql`${t} not in ${r}`},$isDistinct:(s,e,r)=>sql`${L(e)} is distinct from ${r}`},bi={$eq:"=",$neq:"!=",$gt:">",$gte:">=",$lt:"<",$lte:"<="};function Io(s){return s!=null&&typeof s=="object"&&s.type==="query"}function Ti(s,e){let r=e.db;return s.schema&&(r=r.withSchema(s.schema)),Lo(s,e,r)}function ty(s){return s.includes("->")}function zc(s,e){let{col:r,parts:t}=fr(s);return t.length===0?ae(s,e):Is(s,e)}function ke(s,e,r){let t=[];for(let[n,i]of Object.entries(e)){if(n==="$always"){i===false&&t.push(sql`0 = 1`);continue}if(n==="$or"){let a=i;t.push(s.or(a.map(o=>ke(s,o,r))));}else if(n==="$and"){let a=i;t.push(s.and(a.map(o=>ke(s,o,r))));}else if(n==="$not")t.push(s.not(ke(s,i,r)));else if(n==="$exists"){let a=i;t.push(s.exists(Ti(a,r)));}else {let a=i,o=ty(n);for(let[l,u]of Object.entries(a)){if(yi(u)){let p=bi[l];if(!p)throw new Error(`Unsupported ref operator: ${l}`);t.push(sql`${o?zc(n,r):ae(n,r)} ${sql.raw(p)} ${ae(u.$ref,r)}`);continue}if(l==="$not"){let p=u;for(let[c,f]of Object.entries(p))if(o)t.push(s.not(Yc(n,c,f,r)));else {let m=Kc(n,c,f,r);if(m){t.push(s.not(m));continue}let d=r.operators[c];if(!d)throw new Error(`Unsupported operator: ${c}`);t.push(s.not(d(s,ae(n,r),f)));}}else if(Io(u)){let p=Ti(u,r),c=r.operators[l];if(!c)throw new Error(`Unsupported operator: ${l}`);t.push(c(s,ae(n,r),p));}else if(o)t.push(Yc(n,l,u,r));else {let p=Kc(n,l,u,r);if(p){t.push(p);continue}let c=ry(n,l,u,r);if(c){t.push(c);continue}let f=r.operators[l];if(!f)throw new Error(`Unsupported operator: ${l}`);t.push(f(s,ae(n,r),u));}}}}return t.length===1?t[0]:s.and(t)}function Kc(s,e,r,t){if(e!=="$is"&&e!=="$isNot"||r!==pr)return null;let n=Xc(s,t);if(!n)return null;let i=Qc(n.pg_type??n.type);if(i==="boolean")return t.dialect!=="sqlite"?null:e==="$is"?sql`${ae(s,t)} IS NULL`:sql`${ae(s,t)} IS NOT NULL`;throw Object.assign(new Error(`argument of IS UNKNOWN must be type boolean, not type ${i}`),{code:"42804",detail:null})}function Xc(s,e){if(!e.introspection?.columns||!e.currentTable)return null;let r=s.includes("->")?fr(s).col:s,t=e.introspection.columns.filter(i=>i.table===e.currentTable&&i.name===r);if(t.length===0)return null;let n=e.currentSchema;return t.find(i=>!n||i.schema===n)??t.find(i=>["","public"].includes(i.schema??""))??t[0]}function Qc(s){switch(s.toLowerCase()){case "bool":return "boolean";case "int8":case "bigserial":case "serial8":return "bigint";case "int4":case "serial":case "serial4":return "integer";case "int2":return "smallint";default:return s.toLowerCase()}}function ry(s,e,r,t){if(t.dialect!=="postgres"||e!=="$eq"&&e!=="$neq"||typeof r!="string"||!/^\s*[[{]/.test(r))return null;let n=Xc(s,t),i=Qc(n?.pg_type??n?.type??"");if(i!=="json"&&i!=="jsonb")return null;let a=ae(s,t),o=sql`cast(${sql.raw(sy(r))} as ${sql.raw(i)})`;return e==="$eq"?sql`${a} = ${o}`:sql`${a} != ${o}`}function sy(s){return `'${s.replace(/'/g,"''")}'`}function Yc(s,e,r,t){let n=t?zc(s,t):L(s),a={$eq:"=",$neq:"!=",$gt:">",$gte:">=",$lt:"<",$lte:"<=",$like:"like",$ilike:"ilike"}[e];if(a)return sql`${n} ${sql.raw(a)} ${r}`;if(e==="$is")return r===null?sql`${n} IS NULL`:r===true?sql`${n} IS TRUE`:r===false?sql`${n} IS FALSE`:sql`${n} IS NULL`;if(e==="$isNot")return r===null?sql`${n} IS NOT NULL`:r===true?sql`${n} IS NOT TRUE`:r===false?sql`${n} IS NOT FALSE`:sql`${n} IS NOT NULL`;if(e==="$in"){if(t&&Io(r))return sql`${n} in ${Ti(r,t)}`;let o=r;return o.length===0?sql`false`:sql`${n} in (${sql.join(o.map(l=>sql`${l}`))})`}if(e==="$notIn"){if(t&&Io(r))return sql`${n} not in ${Ti(r,t)}`;let o=r;return o.length===0?sql`true`:sql`${n} not in (${sql.join(o.map(l=>sql`${l}`))})`}return sql`${n} = ${r}`}function ue(s){return "select"in s||"spread"in s||"join"in s}function Ri(s,e,r,t,n,i=false){if(!e||e.length===0)return s.selectAll();for(let a of e)if(typeof a=="string")if(a==="*")s=i&&n?s.selectAll(n):s.selectAll();else if(/^-?\d+(?:\.\d+)?$/.test(a))s=s.select(sql.lit(Number(a)).as("_lit"));else if(my(a,r,n)){let o=i&&n?Kt(n,a,r,n):ae(a,r,n);s=s.select(sql`json(${o})`.as(a));}else s=i&&n&&!a.includes(".")?s.select(Kt(n,a,r,n).as(a)):!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(a)&&Ei(a,r,n)?s.select(ae(a,r,n).as(a)):s.select(a);else for(let[o,l]of Object.entries(a))ue(l)?s=_y(s,o,l,r,t,n):s=oy(s,o,l,r,n,i);return s}function ks(s,e){if(!e||e.length===0)return s;for(let r of e)if(typeof r=="string")s=r==="*"?s.returningAll():s.returning(r);else for(let[t,n]of Object.entries(r)){if(ue(n))continue;let i=n.column||t;s=s.returning(i);}return s}function mr(s,e,r,t,n,i=false){let a;if(r.aggregate==="count"&&!r.column&&!r.path)a=s.fn.countAll();else {let o=r.column||e;if(r.invalidJsonTextTraversalKey&&t.dialect==="postgres")throw Object.assign(new Error(`operator does not exist: text -> ${ny(r.invalidJsonTextTraversalKey)}`),{code:"42883",detail:null,hint:"No operator matches the given name and argument types. You might need to add explicit type casts."});a=r.path?Vc(o,r.path,t,n,r.pathText===true):n&&i?Kt(n,o,t,n):ae(o,t,n),r.preCast&&(No(r.preCast,"pre-cast type"),a=sql`cast(${a} as ${sql.raw(r.preCast)})`),r.aggregate&&(a=sql`${sql.raw(r.aggregate)}(${a})`);}return r.cast&&(No(r.cast,"cast type"),a=t.dialect==="sqlite"&&(iy(r.cast)||ay(r.cast))?sql`json(${a})`:sql`cast(${a} as ${sql.raw(r.cast)})`),a}function ny(s){return /^-?\d+$/.test(s)?"integer":"unknown"}function iy(s){let e=s.trim().toLowerCase();return e==="json"||e==="jsonb"}function ay(s){let e=s.trim().toLowerCase();return e.startsWith("_")||e.endsWith("[]")}function oy(s,e,r,t,n,i=false){return s.select(a=>mr(a,e,r,t,n,i).as(e))}function ly(s){if(!s)return false;for(let e of s)if(typeof e!="string"){for(let r of Object.values(e))if(!ue(r)&&r.aggregate)return true}return false}function uy(s){if(!s)return false;for(let e of s)if(typeof e!="string"){for(let r of Object.values(e))if(ue(r)&&r.spread&&$o(r.select))return true}return false}function cy(s){if(!s)return false;for(let e of s)if(typeof e!="string"){for(let r of Object.values(e))if(ue(r)&&r.spread)return true}return false}function py(s){return ly(s)||uy(s)}function $o(s){if(!s)return false;for(let e of s)if(typeof e!="string")for(let r of Object.values(e)){if(ue(r)){if($o(r.select))return true;continue}if(r.aggregate)return true}return false}function Po(s){if(!s)return false;for(let e of s)if(typeof e!="string")for(let r of Object.values(e)){if(ue(r)){if(r.spread)continue;if(Po(r.select))return true;continue}let t=r;if(t.aggregate&&!t.bareCount)return true}return false}function Do(s,e,r,t,n){if(!py(e))return s;let i=[];for(let a of e){if(typeof a=="string"){if(a==="*")continue;i.push(ae(a,r,t));continue}for(let[o,l]of Object.entries(a)){if(ue(l))continue;let u=l;u.aggregate||i.push(p=>mr(p,o,u,r,t));}}return fy(i,e,r,t,n),i.length===0?s:s.groupBy(i)}function fy(s,e,r,t,n){if(!(!e||!t||!r.introspection?.foreign_keys)){for(let i of e)if(typeof i!="string")for(let[a,o]of Object.entries(i)){if(!ue(o)||!o.spread)continue;let l=o,u=n?.[a],p=u?.from||a;p=_t(p,t,r.introspection);let c=ve(r.introspection,t,p,u?.hint),f=c?.type==="m2o"||c?.type==="o2m"&&lt(c,p,r.introspection);if(!c||!f)continue;let m=_i(l.select,p,r.introspection)??l.select??[],d=`_spread_${a}`;for(let g of m){if(typeof g=="string"){g!=="*"&&s.push(`${d}.${g}`);continue}let[b,y]=Object.entries(g)[0];ue(y)||y.aggregate||s.push(T=>mr(T,b,y,r,d,true));}}}}function ep(s,e,r,t,n){if(!s||!e||!t||!n.introspection?.foreign_keys)return s;let i=new Set;for(let a of e)if(typeof a!="string")for(let[o,l]of Object.entries(a)){if(!ue(l)||!l.spread)continue;let u=r?.[o],p=u?.from||o;p=_t(p,t,n.introspection);let c=ve(n.introspection,t,p,u?.hint),f=c?.type==="m2o"||c?.type==="o2m"&&lt(c,p,n.introspection);c&&f&&i.add(o);}return i.size===0?s:s.map(a=>a.embed&&i.has(a.embed)?{...a,embed:`_spread_${a.embed}`}:a)}function tp(s,e,r,t){if(!s||!r||!t.introspection?.foreign_keys)return false;for(let n of s)if(typeof n!="string")for(let[i,a]of Object.entries(n)){if(!ue(a)||!a.spread)continue;let o=e?.[i],l=o?.from||i;l=_t(l,r,t.introspection);let u=ve(t.introspection,r,l,o?.hint),p=u?.type==="m2o"||u?.type==="o2m"&&lt(u,l,t.introspection);if(u&&p)return true}return false}function wi(s){let e=new Map;for(let r of s){let t=r.foreign_key_name,n=e.get(t);n?n.push(r):e.set(t,[r]);}return [...e.values()]}function jo(s,e,r,t){s=s.innerJoin(e.junctionTable,n=>{let i=n;for(let a=0;a<e.junctionToTargetCols.length;a++)i=i.onRef(`${e.junctionTable}.${e.junctionToTargetCols[a]}`,"=",`${r}.${e.targetCols[a]}`);return i});for(let n=0;n<e.junctionToParentCols.length;n++)s=s.whereRef(`${e.junctionTable}.${e.junctionToParentCols[n]}`,"=",`${t}.${e.parentCols[n]}`);return s}function xo(s,e,r,t,n=r){let i=n===r?r:`${r} as ${n}`;if(e.type==="m2o"){let[,l]=e.leftCol.split("."),[,u]=e.rightCol.split(".");return s.leftJoin(i,p=>p.onRef(`${n}.${u}`,"=",`${t}.${l}`))}let[,a]=e.leftCol.split("."),[,o]=e.rightCol.split(".");return s.leftJoin(i,l=>l.onRef(`${n}.${a}`,"=",`${t}.${o}`))}function $s(s,e,r,t,n){let i=new Set;if(!e||!t.introspection?.foreign_keys)return {sub:s,joined:i};for(let a of e){if(!a.embed||i.has(a.embed))continue;At(a.embed,"order embed alias");let o=n?.[a.embed],l=Bo(a.embed,o,r,t.introspection);l!==a.embed&&At(l,"order embed target");let u=ve(t.introspection,r,l,o?.hint),p=u?.type==="m2o"||u?.type==="o2m"&&lt(u,l,t.introspection);!u||!p||(s=xo(s,u,l,r,a.embed),i.add(a.embed),i.add(l));}return {sub:s,joined:i}}function rp(s){return s&&s.map(e=>e.embed&&e.nullsFirst===void 0?{...e,nullsFirst:e.direction==="desc"}:e)}function ko(s,e){let r={};for(let[t,n]of Object.entries(s))t==="$or"||t==="$and"?r[t]=n.map(i=>ko(i,e)):t==="$not"?r[t]=ko(n,e):t.startsWith("$")||t.includes(".")?r[t]=n:r[`${e}.${t}`]=n;return r}function Ci(s,e,r){let t=r.includes(".")?r.split(".").pop():r,n=s.introspection?.columns?.find(a=>a.table===e&&a.name===t),i=(n?.pg_type||n?.type||"").toLowerCase();return i==="json"||i==="jsonb"}function my(s,e,r){return e.dialect==="sqlite"&&r!==void 0&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(s)&&Ci(e,r,s)}function hy(s,e){if(!s)return false;let r=e.includes(".")?e.split(".").pop():e;return s.some(t=>t.column.includes("->")?t.column.slice(0,t.column.indexOf("->"))===r:false)}function Ls(s,e,r,t){return Ci(s,e,r)||hy(t,r)}function dy(s,e,r){if(!s)return null;let t=[];for(let n of s){if(typeof n=="string"){if(n==="*")return null;let l=n.includes(".")?n.split(".").pop():n;t.push({alias:l,asJson:Ci(r,e,l)});continue}let[i,a]=Object.entries(n)[0];if(!i||!a)continue;if(ue(a))return null;let o=Ci(r,e,a.column||i);t.push({alias:i,asJson:o});}return t}function gy(s,e,r,t){let n=dy(e,r,t);if(!n||n.length===0)return t.jsonObjectFrom(s);let i=n.flatMap(a=>[sql.lit(a.alias),a.asJson?sql`json(${sql.ref(`obj.${a.alias}`)})`:sql.ref(`obj.${a.alias}`)]);return sql`(select json_object(${sql.join(i)}) from ${s} as obj)`}function yy(s){return s==="m2o"?"many-to-one":s==="o2m"?"one-to-many":"many-to-many"}function Ey(s,e,r){return s.fk?s.type==="m2m"?`${s.fk.foreign_key_name} using ${s.junctionTable}(${s.fk.column}) and ${e}(${s.fk.ref_column})`:`${s.fk.foreign_key_name} using ${s.fk.table}(${s.fk.column}) and ${s.fk.ref_table}(${s.fk.ref_column})`:""}function Sy(s,e){if(!s||!e)return null;let r=[];for(let n of s.tables??[])r.push(n.name);for(let n of s.views??[])r.push(n.name);let t=r.find(n=>n.length===e.length+1&&n.startsWith(e));return t?`Perhaps you meant '${t}' instead of '${e}'.`:null}function Uo(s,e,r,t){let n=s?.foreign_keys?.find(a=>a.table===e||a.ref_table===e)?.schema||"test",i=t?` using the hint '${t}'`:"";throw new Ne({httpStatus:400,code:"PGRST200",message:`Could not find a relationship between '${e}' and '${r}' in the schema cache`,details:`Searched for a foreign key relationship between '${e}' and '${r}'${i} in the schema '${n}', but no matches were found.`,hint:Sy(s,r)})}function ve(s,e,r,t){if(!s||!s.foreign_keys)return null;let n=s.foreign_keys.filter(m=>m.is_visible!==false);if(t){let m=n.find(A=>A.foreign_key_name===t);if(m){if(m.table===e&&m.ref_table===r)return {leftCol:`${e}.${m.column}`,rightCol:`${r}.${m.ref_column}`,type:"m2o"};if(m.table===r&&m.ref_table===e)return {leftCol:`${r}.${m.column}`,rightCol:`${e}.${m.ref_column}`,type:"o2m"}}let d=n.find(A=>A.table===e&&A.column===t&&A.ref_table===r);if(d)return {leftCol:`${e}.${d.column}`,rightCol:`${r}.${d.ref_column}`,type:"m2o"};let g=n.find(A=>A.table===r&&A.column===t&&A.ref_table===e);if(g)return {leftCol:`${r}.${g.column}`,rightCol:`${e}.${g.ref_column}`,type:"o2m"};let b=n.filter(A=>A.table===t),y=wi(b.filter(A=>A.ref_table===e)),T=wi(b.filter(A=>A.ref_table===r));if(y.length>0&&T.length>0){let A=y[0],v=T[0];return {type:"m2m",junctionTable:t,junctionToParentCols:A.map(R=>R.column),parentCols:A.map(R=>R.ref_column),junctionToTargetCols:v.map(R=>R.column),targetCols:v.map(R=>R.ref_column)}}let C=n.find(A=>A.table===r&&A.ref_column===t&&A.ref_table===e);if(C)return {leftCol:`${r}.${C.column}`,rightCol:`${e}.${C.ref_column}`,type:"o2m"};let w=n.find(A=>A.table===e&&A.ref_column===t&&A.ref_table===r);if(w)return {leftCol:`${e}.${w.column}`,rightCol:`${r}.${w.ref_column}`,type:"m2o"};Uo(s,e,r,t);}if(e===r){let m=n.find(d=>d.table===r&&d.ref_table===e);if(m)return {leftCol:`${r}.${m.column}`,rightCol:`${e}.${m.ref_column}`,type:"o2m"}}let i=n.filter(m=>m.table===e&&m.ref_table===r),a=[...new Map(i.map(m=>[m.foreign_key_name,m])).values()],o=n.filter(m=>m.table===r&&m.ref_table===e),l=[...new Map(o.map(m=>[m.foreign_key_name,m])).values()],u=[],p=wi(n.filter(m=>m.ref_table===e));for(let m of p){let d=m[0].table;if(d===e||d===r)continue;let g=n.filter(b=>b.table===d&&b.ref_table===r);if(g.length!==0)for(let b of wi(g))u.push({type:"m2m",junctionTable:d,junctionToParentCols:m.map(y=>y.column),parentCols:m.map(y=>y.ref_column),junctionToTargetCols:b.map(y=>y.column),targetCols:b.map(y=>y.ref_column),fk:m[0]});}if(a.length+l.length+u.length===0)return null;if(a.length>1||l.length>1){let m=[...a.map(y=>({leftCol:`${e}.${y.column}`,rightCol:`${r}.${y.ref_column}`,type:"m2o",fk:y})),...l.map(y=>({leftCol:`${r}.${y.column}`,rightCol:`${e}.${y.ref_column}`,type:"o2m",fk:y})),...u],d=m.map(y=>({cardinality:yy(y.type),embedding:`${e} with ${r}`,relationship:Ey(y,e)})),b=m.map(y=>y.fk?.foreign_key_name).filter(Boolean).map(y=>`'${r}!${y}'`).join(", ");throw new Ne({httpStatus:300,code:"PGRST201",message:`Could not embed because more than one relationship was found for '${e}' and '${r}'`,details:d,hint:b?`Try changing '${r}' to one of the following: ${b}. Find the desired relationship in the 'details' key.`:null})}if(a.length===1){let m=a[0];return {leftCol:`${e}.${m.column}`,rightCol:`${r}.${m.ref_column}`,type:"m2o"}}if(l.length===1){let m=l[0];return {leftCol:`${r}.${m.column}`,rightCol:`${e}.${m.ref_column}`,type:"o2m"}}return u.length===1?u[0]:null}function sp(s,e,r,t){if(!(!s||!r||!t.introspection?.foreign_keys))for(let n of s){if(!n.embed)continue;let i=e?.[n.embed],a=Bo(n.embed,i,r,t.introspection),o=ve(t.introspection,r,a,i?.hint);if(!o)continue;if(!(o.type==="m2o"||o.type==="o2m"&&lt(o,a,t.introspection)))throw new Ne({httpStatus:400,code:"PGRST118",message:`A related order on '${n.embed}' is not possible`,details:`'${r}' and '${n.embed}' do not form a many-to-one or one-to-one relationship`,hint:null})}}function _t(s,e,r){if(!r?.foreign_keys||r.tables?.some(l=>l.name===s)||r.views?.some(l=>l.name===s))return s;let n=r.foreign_keys,i=n.find(l=>l.table===e&&l.column===s);if(i)return i.ref_table;let a=n.find(l=>l.foreign_key_name===s&&(l.table===e||l.ref_table===e));if(a)return a.table===e?a.ref_table:a.table;let o=n.find(l=>l.ref_table===e&&l.ref_column===s);return o?o.table:s}function Zc(s,e,r,t,n,i){let a=n?.[e],o=a?.from||e;i&&(o=_t(o,i,t.introspection));let l=i?ve(t.introspection,i,o,a?.hint):null;return s.where(u=>{let p=u.selectFrom(o).select(sql`1`.as("_"));return a?.on?p=p.where(c=>ke(c,a.on,t)):l&&l.type==="m2m"?p=jo(p,l,o,i):l?p=p.whereRef(l.leftCol,"=",l.rightCol):i&&(p=p.whereRef(`${o}.${i}_id`,"=",`${i}.id`)),r.where&&Object.keys(r.where).length>0&&(p=p.where(c=>ke(c,r.where,t))),u.exists(p)})}function lt(s,e,r){if(!r||s.type!=="o2m")return false;let t=s.leftCol.split(".")[1];return r.indexes?.some(a=>a.table===e&&a.unique&&a.columns.length===1&&a.columns[0]===t)||r.unique_constraints?.some(a=>a.table===e&&a.columns.length===1&&a.columns[0]===t)?true:r.primary_keys?.some(a=>a.table===e&&a.columns.length===1&&a.columns[0]===t)??false}function by(s,e){return s&&s.map(r=>typeof r!="string"||r==="*"||r.includes(".")||/^-?\d+(?:\.\d+)?$/.test(r)?r:`${e}.${r}`)}function Ps(s){if(typeof s=="string")return {colAlias:s,colName:s};let e=Object.keys(s)[0],r=s[e];return {colAlias:e,colName:r?.column||e}}function Ty(s,e,r,t,n,i){if(!r.select||!i)return s;let a=n?.[e],o=a?.from||e;o=_t(o,i,t.introspection);let l=ve(t.introspection,i,o,a?.hint),u=_i(r.select,o,t.introspection)??r.select;if(!t.introspection?.foreign_keys)return Ry(s,u,o,i,l);if(!l)throw new Ne({httpStatus:400,code:"PGRST120",message:"Could not embed because the relationship is not a one-to-one or many-to-one",details:null,hint:null});if(!(l.type==="m2o"||l.type==="o2m"&&lt(l,o,t.introspection))){if($o(r.select))throw new Ne({httpStatus:400,code:"PGRST127",message:"Feature not implemented",details:"Aggregates are not implemented for one-to-many or many-to-many spreads.",hint:null});return Cy(s,u,r,l,o,i,t)}let c=`_spread_${e}`,[f,m]=l.leftCol.split("."),[,d]=l.rightCol.split("."),g=f===o?m:d,b=f===i?m:d,y="__spread_join_key",T=[],C=new Set;for(let w of u){if(typeof w=="string"&&w==="*")continue;let A;if(typeof w!="string"){let O=Object.values(w)[0];if(ue(O))continue;A=O;}let{colAlias:v,colName:R}=Ps(w);T.push({src:R,out:v,def:A}),C.add(R);}s=s.leftJoin(w=>{let A=w.selectFrom(o);A=A.select(`${o}.${g} as ${y}`);for(let v of C)A=A.select(`${o}.${v} as ${v}`);return A.as(c)},w=>w.onRef(`${c}.${y}`,"=",`${i}.${b}`));for(let{out:w,def:A}of T)A?s=s.select(v=>mr(v,w,A,t,c,true).as(w)):s=s.select(`${c}.${w}`);return s}function wy(s,e,r,t){for(let n of s){if(typeof n=="string")continue;let i=Object.values(n)[0];if(!ue(i))continue;let{colAlias:a}=Ps(n),o=e.join?.[a],l=_t(o?.from||a,r,t.introspection),u=ve(t.introspection,r,l,o?.hint);if(!u||u.type!=="o2m"||!lt(u,l,t.introspection))continue;let p=t.introspection?.primary_keys?.find(c=>c.table===l);if(p?.columns?.length)return {nestedTargetTable:l,fkRel:u,pkColumns:p.columns}}return null}function Cy(s,e,r,t,n,i,a){let o=r.order?null:wy(e,r,n,a);for(let l of e){if(typeof l=="string"&&l==="*")continue;let u=typeof l=="string"?null:Object.values(l)[0],p=u!==null&&ue(u),c=p&&u.spread,{colAlias:f,colName:m}=Ps(l);if(c){s=Ay(s,f,u,r,t,n,i,a);continue}s=s.select(d=>{let g=d.selectFrom(n);if(g=Ai(g,t,n,i),r.where&&Object.keys(r.where).length>0&&(g=g.where(b=>ke(b,r.where,a))),r.order&&(g=$s(g,r.order,n,a,r.join).sub,g=Rt(g,rp(r.order),void 0,a,n)),r.limit!==void 0&&(g=g.limit(r.limit)),r.offset!==void 0&&(g=g.offset(r.offset)),o&&(g=xo(g,o.fkRel,o.nestedTargetTable,n),g=Rt(g,o.pkColumns.map(b=>({column:b,embed:o.nestedTargetTable})),void 0,a)),p){let b=r.join?.[f];return g=g.select(y=>np(y,f,u,a,b,n).as("value")),a.jsonScalarArrayFrom(g,"value",true).as(f)}else return u!==null?(g=g.select(b=>mr(b,m,u,a,n).as("value")),a.jsonScalarArrayFrom(g,"value",Ls(a,n,m,r.order)).as(f)):(g=g.select(`${n}.${m} as value`),a.jsonScalarArrayFrom(g,"value",Ls(a,n,m,r.order)).as(f))});}return s}function Ay(s,e,r,t,n,i,a,o){let l=t.join?.[e],u=_t(l?.from||e,i,o.introspection),p=ve(o.introspection,i,u,l?.hint),c=_i(r.select,u,o.introspection)??r.select??[],f=p?.type==="m2o"||p?.type==="o2m"&&lt(p,u,o.introspection);for(let m of c){if(typeof m=="string"&&m==="*")continue;let d=typeof m=="string"?null:Object.values(m)[0],{colAlias:g,colName:b}=Ps(m);s=s.select(y=>{let T=y.selectFrom(i);T=Ai(T,n,i,a),t.where&&Object.keys(t.where).length>0&&(T=T.where(w=>ke(w,t.where,o)));let C=$s(T,t.order,i,o,t.join);if(T=C.sub,t.order&&(T=Rt(T,rp(t.order),void 0,o,i)),t.limit!==void 0&&(T=T.limit(t.limit)),t.offset!==void 0&&(T=T.offset(t.offset)),!p)return T=T.where(sql`1 = 0`).select(sql`null`.as("value")),o.jsonScalarArrayFrom(T).as(g);if(f){if(C.joined.has(u)||(T=xo(T,p,u,i)),!t.order&&p.type==="o2m"){let w=o.introspection?.primary_keys?.find(A=>A.table===u);w?.columns?.length&&(T=Rt(T,w.columns.map(A=>({column:A,embed:u})),void 0,o));}if(d!==null&&!ue(d)){let w={...d,column:`${u}.${b}`};T=T.select(A=>mr(A,g,w,o).as("value"));}else T=T.select(`${u}.${b} as value`);return o.jsonScalarArrayFrom(T,"value",Ls(o,u,b,t.order)).as(g)}else return T=T.select(w=>{let A=w.selectFrom(u);return A=Ai(A,p,u,i),d!==null&&!ue(d)?(A=A.select(v=>mr(v,b,d,o,u).as("value")),o.jsonScalarArrayFrom(A,"value",Ls(o,u,b,t.order)).as("value")):(A=A.select(`${u}.${b} as value`),o.jsonScalarArrayFrom(A,"value",Ls(o,u,b,t.order)).as("value"))}),o.jsonScalarArrayFrom(T,"value",true).as(g)});}return s}function Ai(s,e,r,t){return e.type==="m2m"?jo(s,e,r,t):s.whereRef(e.leftCol,"=",e.rightCol)}function Ry(s,e,r,t,n){for(let i of e){if(typeof i=="string"&&i==="*")continue;let{colAlias:a,colName:o}=Ps(i);s=s.select(l=>{let u=l.selectFrom(r).select(`${r}.${o}`);return n&&n.type!=="m2m"?u=u.whereRef(n.leftCol,"=",n.rightCol):u=u.whereRef(`${r}.${t}_id`,"=",`${t}.id`),u=u.limit(1),u.as(a)});}return s}function _i(s,e,r){if(!s||!r?.columns||!s.some(i=>i==="*"))return s;let t=r.columns.filter(i=>i.table===e).sort((i,a)=>i.ordinal_position-a.ordinal_position).map(i=>i.name);if(t.length===0)return s;let n=[];for(let i of s)if(i==="*")for(let a of t)n.push(a);else n.push(i);return n}function Bo(s,e,r,t){let n=e?.from||s;if(!t?.foreign_keys||t.tables?.some(p=>p.name===n)||t.views?.some(p=>p.name===n))return n;let a=t.foreign_keys,o=a.find(p=>p.table===r&&p.column===n);if(o)return o.ref_table;let l=a.find(p=>p.foreign_key_name===n&&(p.table===r||p.ref_table===r));if(l)return l.table===r?l.ref_table:l.table;let u=a.find(p=>p.ref_table===r&&p.ref_column===n);return u?u.table:n}function _y(s,e,r,t,n,i){let a=n?.[e];if(!r.select||r.select.length===0){if(a?.type==="inner"&&i)return Zc(s,e,r,t,n,i);if(i&&!a?.on&&t.introspection?.foreign_keys){let o=Bo(e,a,i,t.introspection);ve(t.introspection,i,o,a?.hint)||Uo(t.introspection,i,o,a?.hint);}return s}return a?.type==="inner"&&i&&(s=Zc(s,e,r,t,n,i)),r.spread&&i?Ty(s,e,r,t,n,i):s.select(o=>np(o,e,r,t,a,i).as(e))}function np(s,e,r,t,n,i){let a=n?.from||e;if(i&&t.introspection?.foreign_keys){let C=t.introspection.foreign_keys.find(w=>w.table===i&&w.column===a);if(C)a=C.ref_table;else {let w=t.introspection.foreign_keys.find(A=>A.foreign_key_name===a&&(A.table===i||A.ref_table===i));if(w)a=w.table===i?w.ref_table:w.table;else {let A=t.introspection.foreign_keys.find(v=>v.ref_table===i&&v.ref_column===a);A&&(a=A.table);}}}let o=i===a,l=o?`${a}_self`:a,u=o?`${a} as ${l}`:a,p=s.selectFrom(u),c=i&&!n?.on?ve(t.introspection,i,a,n?.hint):null,f=c?.type==="m2m",m=_i(r.select,a,t.introspection),d=f?by(m,l):m;if(p=Ri(p,d,t,r.join,l,cy(d)),r.where&&Object.keys(r.where).length>0){let C=vi(p,r.where,r.select,r.join,a,t);p=C.qb,Object.keys(C.remainingWhere).length>0&&(p=p.where(w=>ke(w,C.remainingWhere,t)));}let g="o2m";if(n?.on)p=p.where(C=>ke(C,n.on,t));else if(i){let C=ve(t.introspection,i,a,n?.hint);if(C&&C.type==="m2m")g="m2m",p=jo(p,C,l,i);else if(C){let w=o?C.leftCol.replace(`${a}.`,`${l}.`):C.leftCol;p=p.whereRef(w,"=",C.rightCol),g=C.type;}else t.introspection?.foreign_keys?Uo(t.introspection,i,a,n?.hint):p=p.whereRef(`${l}.${i}_id`,"=",`${i}.id`);}p=Do(p,d,t,a),r.order?.some(C=>C.embed)&&(p=$s(p,r.order,a,t,r.join).sub),p=Rt(p,r.order,void 0,t,a),g==="m2m"&&!r.order&&c?.type==="m2m"&&t.dialect==="sqlite"&&(p=p.orderBy(`${c.junctionTable}.${t.rowIdColumn}`,"asc")),r.limit!==void 0&&(p=p.limit(r.limit)),r.offset!==void 0&&(p=p.offset(r.offset));let b=false;if(g==="o2m"&&i&&t.introspection){let C=ve(t.introspection,i,a,n?.hint);C&&C.type==="o2m"&&(b=lt(C,a,t.introspection));}let y=r.spread||g==="m2o"||b;return y&&t.dialect==="sqlite"?gy(p,d,a,t):(y?t.jsonObjectFrom:t.jsonArrayFrom)(p)}function ip(s,e,r,t){if(!s||!t.introspection?.foreign_keys)return false;for(let n of s){if(typeof n=="string")continue;let[i,a]=Object.entries(n)[0];if(!ue(a)||!a.spread)continue;let l=e?.[i],u=_t(l?.from||i,r,t.introspection),p=ve(t.introspection,r,u,l?.hint);if(!p)continue;if(!(p.type==="m2o"||p.type==="o2m"&&lt(p,u,t.introspection)))return true}return false}function vi(s,e,r,t,n,i){if(!r||!e||!i.introspection?.foreign_keys)return {qb:s,remainingWhere:e};if(Object.keys(e).length===0||!lp(e,r))return {qb:s,remainingWhere:e};let a=e;return s=s.where(o=>{let l=ap(o,e,r,t,n,i);return a=l.remainingWhere,l.expression??sql`1 = 1`}),Object.keys(a).length===Object.keys(e).length?{qb:s,remainingWhere:e}:{qb:s,remainingWhere:a}}function ap(s,e,r,t,n,i){let a=[],o={};for(let[u,p]of Object.entries(e)){if((u==="$or"||u==="$and")&&Array.isArray(p)){let f=p.map(m=>ap(s,m,r,t,n,i));if(f.length>0&&f.every(m=>m.fullyHandled&&m.expression)){a.push(u==="$or"?s.or(f.map(m=>m.expression)):s.and(f.map(m=>m.expression)));continue}o[u]=p;continue}let c=vy(s,u,p,r,t,n,i);c?a.push(c):o[u]=p;}let l=a.length===0?null:a.length===1?a[0]:s.and(a);return {expression:l,remainingWhere:o,fullyHandled:l!==null&&Object.keys(o).length===0}}function vy(s,e,r,t,n,i,a){let o=r;if(!o||typeof o!="object")return null;let l="$is"in o&&o.$is===null,u="$isNot"in o&&o.$isNot===null;if(!l&&!u)return null;let p=op(t,e);if(!p)return null;let c=n?.[e],f=_t(c?.from||e,i,a.introspection),m=ve(a.introspection,i,f,c?.hint);if(!m)return null;let d=s.selectFrom(f).select(sql`1`.as("_"));if(c?.on?d=d.where(b=>ke(b,c.on,a)):d=Ai(d,m,f,i),p.where&&Object.keys(p.where).length>0){let b=vi(d,p.where,p.select,p.join,f,a);if(d=b.qb,Object.keys(b.remainingWhere).length>0){let y=ko(b.remainingWhere,f);d=d.where(T=>ke(T,y,a));}}let g=s.exists(d);return u?g:s.not(g)}function op(s,e){for(let r of s){if(typeof r=="string")continue;let t=r[e];if(t&&ue(t))return t}return null}function lp(s,e){for(let[r,t]of Object.entries(s)){if((r==="$or"||r==="$and")&&Array.isArray(t)){if(t.some(o=>lp(o,e)))return true;continue}let n=t;if(!n||typeof n!="object")continue;let i="$is"in n&&n.$is===null,a="$isNot"in n&&n.$isNot===null;if((i||a)&&op(e,r))return true}return false}function Oy(s,e,r){return s.schema?.get(`${e??"public"}.${r}`)}function Mo(s,e,r,t,n={}){if(!s)return s;let i=Oy(e,r,t),a=o=>{let l=Ny(o,i,e,r,t),u=n.applyDefaults&&i?i.applyDefaults(l):l;return i?i.serializeRow(u):Iy(u,e,r,t)};return Array.isArray(s)?s.map(o=>a(o)):a(s)}function Ny(s,e,r,t,n){let i={};for(let[a,o]of Object.entries(s)){let l=e?.get(a)?.context.pgTypeName??pp(r,t,n,a)??void 0;i[a]=Ly(o,l);}return i}function Iy(s,e,r,t){if(e.dialect!=="sqlite")return s;let n={};for(let[i,a]of Object.entries(s)){let o=pp(e,r,t,i);n[i]=Py(o)?Dy(a):a;}return n}function pp(s,e,r,t){let i=(s.introspection?.columns??[]).filter(o=>o.table===r&&o.name===t);if(i.length===0)return;let a=i.find(o=>o.schema===(e??"public"))??i.find(o=>o.schema==="public")??i[0];return a.pg_type??a.type}function Ly(s,e){if(s==null||typeof s!="string")return s;let r=fp(e);return r==="boolean"?ky(s):r==="integer"?up(s,true):r==="number"?up(s,false):r==="json"?mp(s):r==="array"?$y(s):s}function fp(s){if(!s)return;let e=s.toLowerCase().trim();if(e.startsWith("_")||e.endsWith("[]"))return "array";if(e==="bool"||e==="boolean")return "boolean";if(["int2","smallint","int4","integer","int","int8","bigint"].includes(e))return "integer";if(["float4","real","float8","double precision","numeric","decimal"].includes(e))return "number";if(e==="json"||e==="jsonb")return "json"}function ky(s){let e=s.trim().toLowerCase();return ["true","t","1","yes","y","on"].includes(e)?true:["false","f","0","no","n","off"].includes(e)?false:s}function up(s,e){let r=s.trim();if(r==="")return s;let t=Number(r);return !Number.isFinite(t)||e&&!Number.isInteger(t)?s:t}function mp(s){let e=s.trim();if(e==="")return s;try{return JSON.parse(e)}catch{return s}}function $y(s){let e=mp(s);return Array.isArray(e)?e:s}function Py(s){let e=fp(s);return e==="json"||e==="array"}function Dy(s){return s==null||typeof s=="string"?s:JSON.stringify(s)}function hp(s,e){let r=e.db;switch(s.schema&&(r=r.withSchema(s.schema)),s.type){case "query":return Lo(s,e,r);case "insert":return xy(s,e,r);case "update":return Uy(s,e,r);case "delete":return By(s,e,r);case "upsert":case "put":return My(s,e,r);case "rpc":return Fy(s,e,r);default:throw s&&"type"in s?(console.error(s),new Error(`Unsupported AST type: ${s.type}`)):new Error("Invalid AST")}}function Rt(s,e,r,t,n){if(!e)return s;for(let i of e){let a=i.embed?(At(i.embed,"order embed alias"),i.column.includes("->")?t?Is(i.column,t,n,i.embed):cp(i.column,i.embed):(At(i.column,"order embed column"),t?Kt(i.embed,i.column,t,n):sql`${sql.ref(i.embed)}.${sql.ref(i.column)}`)):i.column.includes("->")?t?Is(i.column,t,n,r):cp(i.column,void 0,r):r?t?Kt(r,i.column,t,n):sql`${sql.ref(r)}.${sql.ref(i.column)}`:t?ae(i.column,t,n):i.column,o=i.nullsFirst!==void 0?i.nullsFirst:t?.dialect==="sqlite"?i.direction==="desc":void 0;o!==void 0?s=s.orderBy(a,l=>{let u=i.direction==="desc"?l.desc():l.asc();return o?u.nullsFirst():u.nullsLast()}):s=s.orderBy(a,i.direction||"asc");}return s}function cp(s,e,r){let{col:t,parts:n}=fr(s);if(n.length===0)return sql.ref(s);e&&At(t,"order embed column");let i=Ns(n,"ORDER BY JSON path key");return e?sql`${sql.ref(e)}.${sql.ref(t)}${sql.raw(i)}`:r?sql`${sql.ref(r)}.${sql.ref(t)}${sql.raw(i)}`:sql`${sql.ref(t)}${sql.raw(i)}`}function Ds(s,e,r,t,n){return !e||Object.keys(e).length===0?s:s.where(i=>ke(i,e,{...r,currentTable:t,currentSchema:n}))}function Lo(s,e,r){let t=r.selectFrom(s.from);t=jy(t,s.join,s.select);let n=s.order?.some(p=>p.embed)===true;t=Ri(t,s.select,e,s.join,s.from,n||tp(s.select,s.join,s.from,e));let i=s.where??{},{qb:a,remainingWhere:o}=s.from?vi(t,i,s.select,s.join,s.from,e):{qb:t,remainingWhere:i};t=a,t=Ds(t,o,e,s.from,s.schema),t=Do(t,s.select,e,s.from,s.join),sp(s.order,s.join,s.from,e),s.from&&n&&(t=$s(t,s.order,s.from,e,s.join).sub);let l=s.from&&ip(s.select,s.join,s.from,e)?s.from:void 0,u=ep(s.order,s.select,s.join,s.from,e);return t=Rt(t,u,l,e,s.from),s.limit!==void 0&&(t=t.limit(s.limit)),s.offset!==void 0&&(t=t.offset(s.offset)),t}function jy(s,e,r){if(!e)return s;let t=new Set;if(r){for(let n of r)if(typeof n!="string")for(let i of Object.keys(n))t.add(i);}for(let[n,i]of Object.entries(e)){if(!i.on||t.has(n))continue;let a=i.from||n,o=i.type==="left"?"leftJoin":"innerJoin";s=s[o](`${a} as ${n}`,l=>dp(l,i.on));}return s}function dp(s,e){for(let[r,t]of Object.entries(e))if(r==="$and")for(let n of t)s=dp(s,n);else {let n=t;for(let[i,a]of Object.entries(n)){let o=bi[i];if(!o)throw new Error(`Unsupported join operator: ${i}`);yi(a)?s=s.onRef(r,o,a.$ref):s=s.on(r,o,a);}}return s}function xy(s,e,r){let t=r.insertInto(s.from);if(s.values){let n=Mo(s.values,e,s.schema,s.from,{applyDefaults:true});t=t.values(n);}return t=ks(t,s.select),t}function Uy(s,e,r){let t=r.updateTable(s.from);if(s.values){let n=Mo(s.values,e,s.schema,s.from);t=t.set(n);}return s.limit!==void 0||s.offset!==void 0?t=gp(t,s,e,r):t=Ds(t,s.where??{},e,s.from,s.schema),t=ks(t,s.select),t}function By(s,e,r){let t=r.deleteFrom(s.from);return s.limit!==void 0||s.offset!==void 0?t=gp(t,s,e,r):t=Ds(t,s.where??{},e,s.from,s.schema),t=ks(t,s.select),t}function gp(s,e,r,t){let i=r.introspection?.primary_keys.find(l=>l.table===e.from)?.columns??[],a=t.selectFrom(e.from),o=r.rowIdColumn;if(i.length>0)for(let l of i)a=a.select(l);else a=a.select(sql.ref(o).as("__rowid"));if(a=Ds(a,e.where??{},r,e.from,e.schema),a=Rt(a,e.order,void 0,r,e.from),e.limit!==void 0&&(a=a.limit(e.limit)),e.offset!==void 0&&(a=a.offset(e.offset)),i.length===1)return s.where(i[0],"in",a);if(i.length>1){let l="__ltd_target",u=t.selectFrom(a.as(l)).select(sql`1`.as("_"));for(let p of i)u=u.whereRef(`${l}.${p}`,"=",`${e.from}.${p}`);return s.where(p=>p.exists(u))}else return s.where(sql.ref(o),"in",a)}function My(s,e,r){let t=s.values,n=Mo(t,e,s.schema,s.from,{applyDefaults:true}),i=r.insertInto(s.from).values(n);return s.onConflict&&(i=i.onConflict(a=>{let o=s.onConflict.length===1?a.column(s.onConflict[0]):a.columns(s.onConflict);if(s.ignoreDuplicates)return o.doNothing();let l=Array.isArray(n)?n[0]:n,u=Object.keys(l).filter(p=>!s.onConflict.includes(p));return u.length===0?o.doUpdateSet({[s.onConflict[0]]:sql.ref(`excluded.${s.onConflict[0]}`)}):o.doUpdateSet(p=>{let c={};for(let f of u)c[f]=p.ref(`excluded.${f}`);return c})})),i=ks(i,s.select),i}function Fy(s,e,r){let t=s.function;At(t,"RPC function name");let n;if(s.args&&!Array.isArray(s.args)&&Object.keys(s.args).length>0){let o=Object.entries(s.args).map(([l,u])=>(At(l,"RPC param key"),sql`${sql.raw(l)} := ${u}`));n=sql`${sql.raw(t)}(${sql.join(o)})`;}else if(Array.isArray(s.args)&&s.args.length>0){let a=s.args.map(o=>sql`${o}`);n=sql`${sql.raw(t)}(${sql.join(a)})`;}else n=sql`${sql.raw(t)}()`;let i=r.selectFrom(n.as(t));return i=Ri(i,s.select,e),i=Ds(i,s.where??{},e,s.from,s.schema),i=Rt(i,s.order,void 0,e,s.from),s.limit!==void 0&&(i=i.limit(s.limit)),s.offset!==void 0&&(i=i.offset(s.offset)),i}var Yy=new Kysely({dialect:{createAdapter:()=>new PostgresAdapter,createDriver:()=>new DummyDriver,createIntrospector:s=>new PostgresIntrospector(s),createQueryCompiler:()=>new PostgresQueryCompiler}}),zy={$ilike:(s,e,r)=>sql`${L(e)} ilike ${r}`,$regex:(s,e,r)=>sql`${L(e)} ~ ${r}`,$iregex:(s,e,r)=>sql`${L(e)} ~* ${r}`,$contains:(s,e,r)=>sql`${L(e)} @> ${r}`,$containedBy:(s,e,r)=>sql`${L(e)} <@ ${r}`,$overlaps:(s,e,r)=>sql`${L(e)} && ${r}`,$rangeLt:(s,e,r)=>sql`${L(e)} << ${r}`,$rangeGt:(s,e,r)=>sql`${L(e)} >> ${r}`,$rangeGte:(s,e,r)=>sql`${L(e)} &> ${r}`,$rangeLte:(s,e,r)=>sql`${L(e)} &< ${r}`,$rangeAdjacent:(s,e,r)=>sql`${L(e)} -|- ${r}`,$textSearch:(s,e,r)=>{let t=r,n=t.config||"english",i="to_tsquery";return t.type==="plain"?i="plainto_tsquery":t.type==="phrase"?i="phraseto_tsquery":t.type==="websearch"&&(i="websearch_to_tsquery"),sql`${L(e)} @@ ${sql.raw(i)}(${sql.literal(n)}, ${t.query})`},$eqAny:(s,e,r)=>sql`${L(e)} = any(${r})`,$neqAny:(s,e,r)=>sql`${L(e)} != any(${r})`,$gtAny:(s,e,r)=>sql`${L(e)} > any(${r})`,$gteAny:(s,e,r)=>sql`${L(e)} >= any(${r})`,$ltAny:(s,e,r)=>sql`${L(e)} < any(${r})`,$lteAny:(s,e,r)=>sql`${L(e)} <= any(${r})`,$likeAny:(s,e,r)=>sql`${L(e)} like any(${r})`,$ilikeAny:(s,e,r)=>sql`${L(e)} ilike any(${r})`,$eqAll:(s,e,r)=>sql`${L(e)} = all(${r})`,$neqAll:(s,e,r)=>sql`${L(e)} != all(${r})`,$gtAll:(s,e,r)=>sql`${L(e)} > all(${r})`,$gteAll:(s,e,r)=>sql`${L(e)} >= all(${r})`,$ltAll:(s,e,r)=>sql`${L(e)} < all(${r})`,$lteAll:(s,e,r)=>sql`${L(e)} <= all(${r})`,$likeAll:(s,e,r)=>sql`${L(e)} like all(${r})`,$ilikeAll:(s,e,r)=>sql`${L(e)} ilike all(${r})`,$regexAny:(s,e,r)=>sql`${L(e)} ~ any(${r})`,$iregexAny:(s,e,r)=>sql`${L(e)} ~* any(${r})`,$regexAll:(s,e,r)=>sql`${L(e)} ~ all(${r})`,$iregexAll:(s,e,r)=>sql`${L(e)} ~* all(${r})`};function Xy(s,e){let r=e.replace(/^\$\./,"").split(".");if(r.length===0)return sql.ref(s);let t=r.map((n,i)=>{let a=i===r.length-1?"->>":"->",o=/^-?\d+$/.test(n);return o||xr(n,"JSON path key"),o?`${a}${n}`:`${a}'${n}'`}).join("");return sql`${sql.ref(s)}${sql.raw(t)}`}function Qy(s,e="value",r=false){let t=sql.ref(e);return sql`(select coalesce(json_agg(${t}), '[]'::json) from ${s} as _agg)`}var yp={db:Yy,operators:{...Si,...zy},jsonArrayFrom:jsonArrayFrom$1,jsonObjectFrom:jsonObjectFrom$1,jsonScalarArrayFrom:Qy,jsonPath:Xy,rowIdColumn:"ctid"};var aE=new Kysely({dialect:{createAdapter:()=>new SqliteAdapter,createDriver:()=>new DummyDriver,createIntrospector:s=>new SqliteIntrospector(s),createQueryCompiler:()=>new SqliteQueryCompiler}});function oE(s,e){let r=e.replace(/^\$\./,"").split(".");if(r.length===0)return sql.ref(s);let t=r.map((n,i)=>{let a=i===r.length-1?"->>":"->",o=/^-?\d+$/.test(n);return o||xr(n,"JSON path key"),o?`${a}${n}`:`${a}'${n}'`}).join("");return sql`${sql.ref(s)}${sql.raw(t)}`}function lE(s,e){let r=L(s);if(e.length===0)return sql`${r} is not null`;let t=sql.join(e.map(n=>sql`${n}`));return sql`${r} is not null and (select count(distinct value) from json_each(${r}) where value in (${t})) = ${sql.lit(e.length)}`}function uE(s,e){let r=L(s),t=Object.keys(e);if(t.length===0)return sql`${r} is not null`;let n=t.map(i=>(xr(i,"JSON object key"),sql`json_extract(${r}, ${sql.raw(`'$.${i}'`)}) = ${e[i]}`));return sql`${r} is not null and ${sql.join(n,sql` and `)}`}function Oi(s,e,r,t){if(!Array.isArray(e))throw new Error(`$${r}${t} on sqlite requires an array value`);if(e.length===0)return t==="any"?sql`false`:sql`true`;let n=L(s),i=r==="ilike"?sql`lower(${n})`:n,a=e.map(o=>r==="ilike"?sql`${i} like lower(${o})`:sql`${i} like ${o}`);return sql`(${sql.join(a,t==="any"?sql` or `:sql` and `)})`}var cE={$ilike:(s,e,r)=>sql`lower(${L(e)}) like lower(${r})`,$likeAny:(s,e,r)=>Oi(e,r,"like","any"),$ilikeAny:(s,e,r)=>Oi(e,r,"ilike","any"),$likeAll:(s,e,r)=>Oi(e,r,"like","all"),$ilikeAll:(s,e,r)=>Oi(e,r,"ilike","all"),$contains:(s,e,r)=>{if(Array.isArray(r))return lE(e,r);if(r!==null&&typeof r=="object")return uE(e,r);throw new Error("$contains on sqlite requires an array or object value")},$containedBy:(s,e,r)=>{if(!Array.isArray(r))throw new Error("$containedBy on sqlite requires an array value");let t=L(e);if(r.length===0)return sql`${t} is not null and not exists (select 1 from json_each(${t}))`;let n=sql.join(r.map(i=>sql`${i}`));return sql`${t} is not null and not exists (select 1 from json_each(${t}) where value not in (${n}))`},$overlaps:(s,e,r)=>{if(!Array.isArray(r))throw new Error("$overlaps on sqlite requires an array value");let t=L(e);if(r.length===0)return sql`1 = 0`;let n=sql.join(r.map(i=>sql`${i}`));return sql`${t} is not null and exists (select 1 from json_each(${t}) where value in (${n}))`}};function pE(s,e="value",r=false){let t=sql.ref(e),n=r?sql`json_group_array(json(${t}))`:sql`json_group_array(${t})`;return sql`(select coalesce(${n}, json('[]')) from ${s} as _agg)`}var Ep={db:aE,operators:{...Si,...cE},jsonArrayFrom:jsonArrayFrom,jsonObjectFrom:jsonObjectFrom,jsonScalarArrayFrom:pE,jsonPath:oE,rowIdColumn:"rowid"};function fE(s){switch(s){case "postgres":return yp;case "sqlite":return Ep;default:throw new Error(`Unsupported dialect: ${s}`)}}function he(s,e="postgres",r){let t=fE(e),n=r&&"introspection"in r?r:{db:r,introspection:void 0};return hp(s,{...t,dialect:e,db:n.db??t.db,introspection:n.introspection,schema:n.schema})}var Ve=qn(Tp());function a_(s){return ["string","number","boolean"].includes(typeof s)}function o_(s){return [true,false,0,1].includes(s)}function l_(s){return typeof s=="string"}function c_(...s){return e=>s.reduce((r,t)=>t(r),e)}function p_(...s){return e=>e.map(r=>s.reduce((t,n)=>n(t),r))}function wp(s){return Object.prototype.toString.call(s)==="[object Object]"}function Cp(s){return s!==null&&typeof s=="object"}function m_(s,e){let r={};for(let t in s)s[t]!==e[t]&&(r[t]=e[t]);return r}function Li(s,e,r=void 0){let t=typeof e=="string"?e.split(/[.[\]"]+/).filter(n=>n):e;if(t.length===0)return s;try{let[n,...i]=t;return !n||!(n in s)?r:Li(s[n],i,r)}catch{if(typeof r<"u")return r;throw new Error(`Invalid path: ${t.join(".")}`)}}function gE(s,e,r){let t=e;if(typeof t=="string"){let a=o=>o[0]==='"'&&o.at(-1)==='"';t=t.split(/[.[\]]+/).filter(o=>o).map(o=>Number.isNaN(Number(o))?o:Number(o)).map(o=>typeof o=="string"&&a(o)?o.slice(1,-1):o);}if(t.length===0)throw new Error("The path must have at least one entry in it");let[n,...i]=t;return i.length===0?(s[n]=r,s):(n in s||(s[n]=typeof i[0]=="number"?[]:{}),gE(s[n],i,r),s)}function h_(s,e){return e.reduce((r,t)=>(t in s&&(r[t]=s[t]),r),{})}function d_(s,e){let r=new Set(e),t={};for(let[n,i]of Object.entries(s))r.has(n)||(t[n]=i);return t}function yE(s,...e){for(let r of e)for(let[t,n]of Object.entries(r))n!==void 0&&(!wp(n)&&!Array.isArray(n)||Array.isArray(n)&&!Array.isArray(s[t])?s[t]=n:Cp(s[t])?yE(s[t],n):s[t]=n);return s}function EE(s,e,r){for(let[t,n]of Object.entries(e)){let i=r(s[t],n,t,s,e);if(i!==void 0){s[t]=i;continue}n!==void 0&&(!wp(n)&&!Array.isArray(n)||Array.isArray(n)&&!Array.isArray(s[t])?s[t]=n:Cp(s[t])?EE(s[t],n,r):s[t]=n);}return s}function qo(s,e){let r=n=>{if(n!==Object(n))return "primitive";if(Array.isArray(n))return "array";if(n instanceof Map)return "map";if(n!=null&&[null,Object.prototype].includes(Object.getPrototypeOf(n)))return "plainObject";if(n instanceof Function)return "function";throw new Error(`deeply comparing an instance of type ${s.constructor?.name} is not supported.`)},t=r(s);if(t!==r(e))return false;if(t==="primitive")return s===e||Number.isNaN(s)&&Number.isNaN(e);if(t==="array")return s.length===e.length&&s.every((n,i)=>qo(n,e[i]));if(t==="map")return s.size===e.size&&[...s].every(([n,i])=>e.has(n)&&qo(i,e.get(n)));if(t==="plainObject"){let n=new Map(Object.entries(s)),i=new Map(Object.entries(e));return n.size===i.size&&[...n].every(([a,o])=>i.has(a)&&qo(o,i.get(a)))}else {if(t==="function")return s.toString()===e.toString();throw new Error("Unreachable")}}function g_(...s){let[e,r,t]=s;return JSON.stringify(e,(n,i)=>typeof i=="bigint"?Number.parseInt(i.toString(),10):i instanceof Map?Object.fromEntries(i.entries()):i instanceof Set?Array.from(i):r&&typeof r=="function"?r(n,i):i,t)}function E_(s){let e=s instanceof Request?new URL(s.url).searchParams:s;return Object.fromEntries(e.entries())}function S_(s,e){let r=s instanceof Request?new URL(s.url).searchParams:s,t={};for(let[n,i]of r.entries())e(n,i)&&(t[n]=i);return t}function T_(){try{return !SE()&&global?.process?.release?.name==="node"}catch{return false}}function SE(){try{return typeof Bun<"u"}catch{return false}}function w_(s,e){if(!s)throw new Error(e)}function C_(s,e){try{return s(),!1}catch(r){if(e){if(r instanceof e)return true;throw r}return true}}async function A_(s,e){try{return await s,!1}catch(r){if(e){if(r instanceof e)return true;throw r}return true}}function R_(s,e){try{return s()}catch{return e}}async function __(s,e){let r=performance.now();await s();let t=performance.now();e(t-r);}var v_={Map:s=>s instanceof Map?s:new Map(typeof s=="object"&&s!==null?Object.entries(s):[]),Set:s=>s instanceof Set?s:new Set(Array.isArray(s)?s:[]),Array:s=>Array.isArray(s)?s:["string","number","boolean"].includes(typeof s)?[s]:[]};function js(s,e={}){return s.split(`
65
+ `),r=fg(e);if(r.length===0)throw new Ir("parse error (not enough input)");let n=r[0];if(r.length===1)return [];let s=[];for(let i=1;i<r.length;i++){let o=r[i],a={};for(let l=0;l<n.length;l++){let u=l<o.length?o[l]:"";a[n[l]]=u===""?null:u;}s.push(a);}return s}function fg(t){let e=[],r=0,n=t.length;for(;r<n&&!(r===n-1&&t[r]===`
66
+ `);){let{row:s,nextPos:i}=dg(t,r);e.push(s),r=i;}return e}function dg(t,e){let r=[],n=e,s=t.length;for(;n<=s;){if(n===s||t[n]===`
67
+ `)return r.length,{row:r,nextPos:n+1};if(t[n]==='"'){let i="";for(n++;n<s;)if(t[n]==='"')if(n+1<s&&t[n+1]==='"')i+='"',n+=2;else {n++;break}else i+=t[n],n++;r.push(i),n<s&&t[n]===","&&n++;}else {let i="";for(;n<s&&t[n]!==","&&t[n]!==`
68
+ `;)i+=t[n],n++;r.push(i),n<s&&t[n]===","&&n++;}}return {row:r,nextPos:n}}var Ir=class extends Error{constructor(e){super(e),this.name="CsvParseError";}};function oa(t){let e=new URL(t.url),r=new Map;for(let[n,s]of e.searchParams.entries()){let i=r.get(n)??[];i.push(s),r.set(n,i);}return r}function aa(t,e,r){let n=e.toUpperCase();if(t.isRpc)return "rpc";switch(n){case "GET":case "HEAD":return "query";case "POST":return r.preferTokens.find(i=>i.key==="resolution"&&(i.value==="merge-duplicates"||i.value==="ignore-duplicates"))?"upsert":"insert";case "PATCH":return "update";case "PUT":return "put";case "DELETE":return "delete";default:return "query"}}var xu=new Set(["eq","neq","gt","gte","lt","lte","like","ilike","match","imatch","is","isdistinct","in","cs","cd","ov","sl","sr","nxl","nxr","adj","fts","plfts","phfts","wfts","not"]),_u={eq:"$eq",neq:"$neq",gt:"$gt",gte:"$gte",lt:"$lt",lte:"$lte",like:"$like",ilike:"$ilike",match:"$regex",imatch:"$iregex",is:"$is",isdistinct:"$isDistinct",in:"$in",cs:"$contains",cd:"$containedBy",ov:"$overlaps",sl:"$rangeLt",sr:"$rangeGt",nxl:"$rangeGte",nxr:"$rangeLte",adj:"$rangeAdjacent"},pg={any:"Any",all:"All"},mg=new Set(["eq","gt","gte","lt","lte","like","ilike","match","imatch"]),hg={fts:void 0,plfts:"plain",phfts:"phrase",wfts:"websearch"};function la(t){let e=t.match(/^(\w+)\((any|all)\)$/);if(e){let[,s,i]=e;if(!mg.has(s))return null;let o=_u[s];return o?{astOp:o+pg[i]}:null}let r=t.match(/^(p[lh]fts|wfts|fts)(?:\(([^)]+)\))?$/);if(r){let[,s,i]=r;return i!==void 0&&!/^[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)?$/.test(i)?null:{astOp:"$textSearch",ftsType:hg[s],ftsConfig:i}}let n=_u[t];return n?{astOp:n}:null}function wn(t){let e=t.indexOf(".");if(e===-1)return false;let n=t.substring(0,e).replace(/\((any|all)\)$/,"");return xu.has(n)}var ar=new Set(["select","order","limit","offset","on_conflict","columns"]);function Sn(t){if(t.startsWith("(")&&t.endsWith(")")&&(t=t.slice(1,-1)),t.trim()==="")return [];let e=[],r=0;for(;r<t.length;){if(t[r]==='"'){r++;let n="";for(;r<t.length&&t[r]!=='"';)t[r]==="\\"&&r+1<t.length&&r++,n+=t[r],r++;r<t.length&&r++,e.push(n);}else {let n="";for(;r<t.length&&t[r]!==",";)n+=t[r],r++;e.push(St(n,{preserveWhitespace:true}));}r<t.length&&t[r]===","&&(r++,r===t.length&&e.push(""));}return e}function En(t){if(t.startsWith("{")&&t.endsWith("}")&&(t=t.slice(1,-1)),t==="")return [];let e=[],r=0;for(;r<t.length;){if(t[r]==='"'){r++;let n="";for(;r<t.length&&t[r]!=='"';)t[r]==="\\"&&r+1<t.length&&r++,n+=t[r],r++;r<t.length&&r++,e.push(n);}else {let n="";for(;r<t.length&&t[r]!==",";)n+=t[r],r++;e.push(St(n));}r<t.length&&t[r]===","&&r++;}return e}var oi=Symbol.for("postgrest:not_null"),lr=Symbol.for("postgrest:unknown");function St(t,e){let r=e?.preserveWhitespace===true,n=t.trim();if(n.startsWith('"')&&n.endsWith('"')&&n.length>=2)return n.slice(1,-1);let s=n.toLowerCase();if(s==="null")return null;if(s==="not_null")return oi;if(s==="true")return true;if(s==="false")return false;if(s==="unknown")return null;if(n!==""&&!Number.isNaN(Number(n))&&Number.isFinite(Number(n)))return Number(n);if(n.startsWith("{")&&n.endsWith("}"))try{let i=JSON.parse(n);if(typeof i=="object"&&!Array.isArray(i))return i}catch{}return r?n===""?"":t:n}function fa(t,e){let r={},n={};for(let[s,i]of t){if(ar.has(s))continue;let a=s.startsWith('"')?-1:s.indexOf(".");if(a>0&&!s.slice(0,a).includes("->")){let l=s.slice(0,a),u=s.slice(a+1);if(e.has(l)){if(u==="order"||u==="limit"||u==="offset")continue;if(u.includes(".")){let f=u.lastIndexOf("."),c=u.slice(f+1);if(c==="order"||c==="limit"||c==="offset")continue}n[l]||(n[l]={}),yg(u,i,n[l]);continue}if(s!=="not.or"&&s!=="not.and")throw gg(l)}ua(s,i,r);}return {where:r,embeddedWheres:n}}function gg(t){return new Te({httpStatus:400,code:"PGRST108",message:`'${t}' is not an embedded resource in this request`,details:null,hint:`Verify that '${t}' is included in the 'select' query parameter.`})}function ua(t,e,r){if(t==="or"||t==="and"){let s=e.map(o=>vu(o)),i=s.length===1?s[0]:s.flat();r[`$${t}`]=i;return}if(t==="not.or"||t==="not.and"){let s=t.slice(4),i=e.map(a=>vu(a)),o=i.length===1?i[0]:i.flat();r.$not={[`$${s}`]:o};return}let n=Au(Eg(t),{stopAtSpace:false});Tu(n);for(let s of e){let i=Cu(s);r[n]?Object.assign(r[n],i):r[n]=i;}}function yg(t,e,r){let n=bg(t);if(!n){ua(t,e,r);return}let s={};ua(n.filterKey,e,s);for(let[i,o]of Object.entries(s))r[`${n.path}.${i}`]=o;}function bg(t){for(let e of ["not.or","not.and","or","and"]){let r=`.${e}`;if(t.endsWith(r)){let n=t.slice(0,-r.length);if((e==="or"||e==="and")&&n==="not")continue;if(n)return {path:n,filterKey:e}}}}function Cu(t){let e=t,r=false;e.startsWith("not.")&&(r=true,e=e.slice(4));let n=e.indexOf("."),s,i;n===-1?(s=e,i=""):(s=e.slice(0,n),i=e.slice(n+1));let o=la(s);if(!o)throw new Error(`"failed to parse filter (${t})" (line 1, column 1)`);let{astOp:a,ftsType:l,ftsConfig:u}=o;if(r&&a==="$in")return {$notIn:ca(a,i)};if(r&&a==="$is")return {$isNot:ca(a,i)};let f=a==="$textSearch"?Sg(i,l,u):ca(a,i);return r?{$not:{[a]:f}}:{[a]:f}}function ca(t,e){if(t==="$in"||t==="$notIn"){if(!e.startsWith("(")||!e.endsWith(")")){let r=t==="$in"?"in":"not.in";throw new Error(`"failed to parse filter (${r}.${e})" (line 1, column ${r.length+e.length+2})`)}return Sn(e)}if(t.endsWith("Any")||t.endsWith("All")){if(e.startsWith("{"))return En(e);if(!wg(t))throw Object.assign(new Error(`malformed array literal: "${e}"`),{code:"22P02",detail:'Array value must start with "{" or dimension information.'});return Sn(e)}if(t==="$contains"||t==="$containedBy"||t==="$overlaps"){if(e.startsWith("{")){try{let r=JSON.parse(e);if(typeof r=="object"&&!Array.isArray(r))return r}catch{}return En(e)}return e.startsWith("[")||e.startsWith("(")?e:St(e)}if(t.startsWith("$range"))return e;if(t==="$is"){let r=e.toLowerCase().trim();if(!["null","true","false","unknown","not_null"].includes(r))throw new Error(`"failed to parse filter (is.${e})" (line 1, column ${2+e.length})`);return r==="unknown"?lr:St(e)}if(t==="$like"||t==="$ilike"||t==="$likeAny"||t==="$ilikeAny"||t==="$likeAll"||t==="$ilikeAll"){let r=e.replace(/\*/g,"%");return t.endsWith("Any")||t.endsWith("All")?r.startsWith("{")?En(r):Sn(r):r}return t==="$isDistinct"?e:St(e)}function wg(t){return t==="$likeAny"||t==="$ilikeAny"||t==="$likeAll"||t==="$ilikeAll"}function Sg(t,e,r){let n={query:t};return e&&(n.type=e),r&&(n.config=r),n}function vu(t){if(!t.startsWith("(")||!t.endsWith(")"))throw new Error(`"failed to parse logic tree (${t})" (line 1, column ${t.length+3})`);let e=t.slice(1,-1);for(;e.endsWith(")");){let r=0;for(let n of e)n==="("?r++:n===")"&&r--;if(r<0)e=e.slice(0,e.length+r);else break}if(e.trim()==="")throw new Error(`"failed to parse logic tree (${t})" (line 1, column ${t.length+2})`);try{return _n(e).map(n=>xn(n))}catch{throw new Error(`"failed to parse logic tree (${t})" (line 1, column ${t.length+2})`)}}function _n(t){let e=[],r=0,n=0,s=false,i="";for(let o of t)if(o==='"'&&!s?s=true:o==='"'&&s&&(s=false),s||(o==="("?r++:o===")"?r--:o==="{"?n++:o==="}"&&n--),o===","&&r===0&&n===0&&!s){if(i.trim()==="")throw new Error("empty logical expression");e.push(i.trim()),i="";}else i+=o;if(i.trim())e.push(i.trim());else if(t.trim().endsWith(","))throw new Error("empty logical expression");return e}function xn(t){let e=t.trim(),r=e.match(/^and\s*\((.*)\)$/s);if(r)return {$and:_n(r[1]).map(d=>xn(d))};let n=e.match(/^or\s*\((.*)\)$/s);if(n)return {$or:_n(n[1]).map(d=>xn(d))};let s=e.match(/^not\.and\s*\((.*)\)$/s);if(s)return {$not:{$and:_n(s[1]).map(d=>xn(d))}};let i=e.match(/^not\.or\s*\((.*)\)$/s);if(i)return {$not:{$or:_n(i[1]).map(d=>xn(d))}};if(/^(?:and|or|not)=/.test(e))throw new Error(`Invalid filter expression: "${t}"`);if(e.startsWith("not.")||e.startsWith("not("))throw new Error(`Invalid filter expression: "${t}"`);let o=t,a=false;o.startsWith("not.")&&(a=true,o=o.slice(4));let l=o.indexOf(".");if(l===-1)throw new Error(`Invalid filter expression: "${t}"`);let u=Au(o.slice(0,l),{stopAtSpace:true});Tu(u);let f=o.slice(l+1),c=Cu(a?`not.${f}`:f);return {[u]:c}}function Au(t,e){let n=(e.stopAtSpace?/[!@/\\~[\]()\t ]/:/[!@/\\~[\]()\t]/).exec(t);return n?t.slice(0,n.index):t}function Eg(t){return t.length>=2&&t.startsWith('"')&&t.endsWith('"')?t.slice(1,-1).replace(/""/g,'"'):t}function Tu(t){if(t===""||t==="*"||t.includes("--")||t.endsWith("-"))throw new Error(`Invalid filter expression: "${t}"`);if(/->>?-\d+\D/.test(t))throw new Error(`Invalid filter expression: "${t}"`)}function _g(t){let e=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\(([^)]+)\)$/);return e?{embed:e[1],column:e[2]}:null}function Ru(t){if(t===void 0)return;let e=t.trim();if(!/^[+-]?\d+$/.test(e))return;let r=Number(e);return Number.isFinite(r)?r:void 0}function da(t,e){let r=Ru(t),n=Ru(e);return n!==void 0&&n<0&&(r!==void 0&&r>=0&&(r=Math.max(0,r+n)),n=void 0),{limit:r,offset:n}}function ma(t,e){let r={embeddedTransforms:{}},n,s,i={},o={},a={},l={};for(let[d,p]of t){let y=p[0],h=d.indexOf(".");if(h>0){let b=d.slice(0,h),m=d.slice(h+1);if(e.has(b)){if(m==="order"||m==="limit"||m==="offset"){r.embeddedTransforms[b]||(r.embeddedTransforms[b]={}),m==="order"?r.embeddedTransforms[b].order=pa(y):m==="limit"?i[b]=y:m==="offset"&&(o[b]=y);continue}if(m.includes(".")){let w=m.lastIndexOf("."),_=m.slice(w+1);if(_==="order"||_==="limit"||_==="offset"){r.embeddedTransforms[b]||(r.embeddedTransforms[b]={});let S=r.embeddedTransforms[b],E=m.slice(0,w);S._nested||(S._nested={});let C=S._nested;C[E]||(C[E]={});let x=C[E];_==="order"?x.order=pa(y):_==="limit"?(a[b]||(a[b]={}),a[b][E]=y):_==="offset"&&(l[b]||(l[b]={}),l[b][E]=y);continue}}}}d==="order"?r.order=pa(y):d==="limit"?n=y:d==="offset"&&(s=y);}if(r.order){for(let d of r.order)if(d.embed&&!e.has(d.embed))throw new Te({httpStatus:400,code:"PGRST108",message:`'${d.embed}' is not an embedded resource in this request`,details:null,hint:`Verify that '${d.embed}' is included in the 'select' query parameter.`})}let u=da(n,s);u.limit!==void 0&&(r.limit=u.limit),u.offset!==void 0&&(r.offset=u.offset);let f=new Set([...Object.keys(i),...Object.keys(o)]);for(let d of f){let p=da(i[d],o[d]);r.embeddedTransforms[d]||(r.embeddedTransforms[d]={}),p.limit!==void 0&&(r.embeddedTransforms[d].limit=p.limit),p.offset!==void 0&&(r.embeddedTransforms[d].offset=p.offset);}let c=new Set([...Object.keys(a),...Object.keys(l)]);for(let d of c){let p=new Set([...Object.keys(a[d]??{}),...Object.keys(l[d]??{})]);for(let y of p){let h=da(a[d]?.[y],l[d]?.[y]),b=r.embeddedTransforms[d]?._nested?.[y];b&&(h.limit!==void 0&&(b.limit=h.limit),h.offset!==void 0&&(b.offset=h.offset));}}return r}function pa(t){return xg(t).map(({entry:e,start:r})=>vg(e.trim(),t,r+e.length-e.trimStart().length))}function xg(t){let e=[],r=0,n=0;for(let s=0;s<t.length;s++){let i=t[s];i==="("?r++:i===")"?r=Math.max(0,r-1):i===","&&r===0&&(e.push({entry:t.slice(n,s),start:n}),n=s+1);}return e.push({entry:t.slice(n),start:n}),e}function vg(t,e,r){let n=t.split("."),s={column:n[0]},i=n[0];if(!i)throw new fe(`failed to parse order (${e})`,'unexpected end of input expecting letter, digit, "-", "->>", "->", delimiter (.), "," or end of input',1);let o=i.indexOf("::");if(o!==-1)throw new fe(`failed to parse order (${e})`,`unexpected ':' expecting letter, digit, "-", "->>", "->", delimiter (.), "," or end of input`,r+o+1);let a=i.indexOf("--");if(a!==-1)throw new fe(`failed to parse order (${e})`,`unexpected '-' expecting letter, digit, "-", "->>", "->", delimiter (.), "," or end of input`,r+a+2);let l=i.search(/[@#%]/);if(l!==-1)throw new fe(`failed to parse order (${e})`,`unexpected '${i[l]}' expecting letter, digit, "-", "->>", "->", delimiter (.), "," or end of input`,r+l+1);if(i.endsWith("-"))throw new fe(`failed to parse order (${e})`,`unexpected '-' expecting letter, digit, "-", "->>", "->", delimiter (.), "," or end of input`,r+i.length);let u=i.indexOf(":");if(u!==-1)throw new fe(`failed to parse order (${e})`,`unexpected ':' expecting letter, digit, "-", "->>", "->", delimiter (.), "," or end of input`,r+u+1);let f=_g(i);if(f){if(f.column.includes(","))throw new fe(`failed to parse order (${e})`,`unexpected ',' expecting letter, digit, "-", "->>", "->", delimiter (.), "," or end of input`,r+i.indexOf(",",f.embed.length)+1);s.column=f.column,s.embed=f.embed;}let c=r+i.length+1,d=false,p=false;for(let y=1;y<n.length;y++){let h=n[y];if(h==="asc"||h==="desc"){if(d)throw new fe(`failed to parse order (${e})`,`unexpected '${h[0]}' expecting "," or end of input`,c+1);if(p)throw new fe(`failed to parse order (${e})`,`unexpected '${h[0]}' expecting "," or end of input`,c+1);s.direction=h,d=true,c+=h.length+1;}else if(h==="nullsfirst"||h==="nullslast"){if(p)throw new fe(`failed to parse order (${e})`,`unexpected '${h[0]}' expecting "," or end of input`,c+1);s.nullsFirst=h==="nullsfirst",p=true,c+=h.length+1;}else {let b=["asc","desc","nullsfirst","nullslast"],m=null;for(let w of b)if(h.startsWith(w)&&h.length>w.length){m=w;break}if(m){let w=h[m.length],_=c+m.length;throw new fe(`failed to parse order (${e})`,`unexpected '${w}' expecting "," or end of input`,_+1)}throw new fe(`failed to parse order (${e})`,`unexpected '${h[0]}' expecting "," or end of input`,c+1)}}return s}function ha(t,e,r){let n={};for(let i of t.preferTokens)switch(i.key){case "count":n.count=i.value;break;case "missing":n.missing=i.value;break;case "handling":n.handling=i.value;break;case "tx":n.tx=i.value,i.value==="rollback"&&(n.rollback=true);break;case "max-affected":n.maxAffected=i.value;break;case "timezone":n.timezone=i.value;break;case "return":n.return=i.value;break}r.toUpperCase()==="HEAD"&&(n.head=true),t.accept.includes("application/vnd.pgrst.object")&&(n.cardinality="one"),t.accept.includes("application/vnd.pgrst.plan")&&(n.explain=Tg(t.accept));let s=e.get("columns");if(s){let i=s[0];n.columns=Cg("columns",i);}return n}function Cg(t,e){let r=e.split(",").map(n=>Ag(n));if(r.length===0||r.some(n=>n===""||n==="*"||n.includes("--")||n.endsWith("-")))throw new Wt(`"failed to parse ${t} parameter (${e})" (line 1, column 1)`,"unexpected input");return r}function Ag(t){let e=t.trim();return e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e.replace(/@.*$/,"")}function Tg(t){let e={},r=t.match(/options=([^;]+)/);if(r){let n=r[1].split("|").map(s=>s.trim());e.analyze=n.includes("analyze"),e.verbose=n.includes("verbose"),e.settings=n.includes("settings"),e.buffers=n.includes("buffers"),e.wal=n.includes("wal");}return e}function ga(t,e,r,n){if(!t.isRpc)return {};if(e.toUpperCase()==="POST"){let a={httpMethod:"POST"};return n.values?(Array.isArray(n.values)?(a.args=n.values,a.paramsType="positional"):(a.args=n.values,a.paramsType="named"),a.inputType="json"):n.raw!==void 0&&(a.args={_raw:n.raw},a.inputType="text"),a}let i={};for(let[a,l]of r){if(ar.has(a))continue;let u=l[0];wn(u)||(i[a]=St(u));}let o={httpMethod:"GET",paramsType:"named",inputType:"json"};return Object.keys(i).length>0&&(o.args=i),o}function ya(t,e){let r=t.get("on_conflict"),n=r===void 0?void 0:Rg(r[0]),i=e.preferTokens.find(o=>o.key==="resolution")?.value==="ignore-duplicates";return {onConflict:n?.length?n:void 0,ignoreDuplicates:i}}function Rg(t){let e=t.split(",").map(r=>r.trim());if(e.length===0||e.some(r=>r===""||r.includes("--")||r.endsWith("-")))throw new Wt(`"failed to parse on_conflict parameter (${t})" (line 1, column 1)`,"unexpected input");return e}async function ai(t,e){let r=e?.basePath,n=e?.parseRoute??(H=>Zo(H,r)),s=e?.parseHeaders??ea,i=e?.parseSelect??sa,o=e?.parseBody??ia,a=e?.parseQueryParams??oa,l=e?.resolveType??aa,u=e?.resolveFilters??fa,f=e?.resolveTransforms??ma,c=e?.resolveMeta??ha,d=e?.resolveRpcParams??ga,p=e?.resolveUpsertParams??ya,[y,h,b,m,w]=await Promise.all([n(t),s(t),i(t),o(t),a(t)]),_=t.method,S=l(y,_,h),E=w;if(y.isRpc&&_.toUpperCase()==="GET"){E=new Map;for(let[H,I]of w){if(ar.has(H)){E.set(H,I);continue}let le=I.filter(Ve=>wn(Ve));le.length>0&&E.set(H,le);}}let C=u(E,b.embeddedAliases),x=f(w,b.embeddedAliases),A=c(h,w,_),v=d(y,_,w,m),R=S==="upsert"||S==="put"?p(w,h):void 0;return kg(S,y,h,b,m,C,x,A,v,R)}function kg(t,e,r,n,s,i,o,a,l,u){let f={type:t};return e.isRpc?f.function=e.function:f.from=e.from,r.schema&&(f.schema=r.schema),Object.keys(n.join).length>0&&(f.join=n.join),n.select.length>0&&(f.select=ku(n.select,i.embeddedWheres,o.embeddedTransforms,n.join)),Object.keys(i.where).length>0&&(f.where=i.where),(t==="insert"||t==="update"||t==="upsert"||t==="put")&&s.values!==void 0&&(f.values=s.values),t==="rpc"&&(l.args!==void 0&&(f.args=l.args),l.httpMethod&&(f.httpMethod=l.httpMethod),l.paramsType&&(f.paramsType=l.paramsType),l.inputType&&(f.inputType=l.inputType)),(t==="upsert"||t==="put")&&u&&(u.onConflict&&(f.onConflict=u.onConflict),f.ignoreDuplicates=u.ignoreDuplicates),a.return==="representation"&&(t==="insert"||t==="update"||t==="delete"||t==="upsert"||t==="put")&&(!f.select||f.select.length===0)&&(f.select=["*"]),o.order&&(f.order=o.order),o.limit!==void 0&&(f.limit=o.limit),o.offset!==void 0&&(f.offset=o.offset),Object.keys(a).length>0&&(f.$meta=a),f}function ku(t,e,r,n){return t.map(s=>{if(typeof s=="string")return s;let i=Object.keys(s)[0],o=s[i];if(!o.select)return s;let a={...o},l=n?.[i]?.from,u=e[i]||l&&e[l],f=r[i]||l&&r[l];if(u){let c={},d={};for(let[p,y]of Object.entries(u)){let h=p.indexOf(".");if(h>0){let b=p.slice(0,h),m=p.slice(h+1);if(a.join?.[b]||a.select?.some(S=>typeof S=="object"&&b in S&&"select"in(S[b]??{}))){d[b]||(d[b]={}),d[b][m]=y;continue}}c[p]=y;}Object.keys(c).length>0&&(a.where=c);for(let[p,y]of Object.entries(d))e[p]={...e[p],...y};}if(f){let c=f;if(c.order&&(a.order=c.order),c.limit!==void 0&&(a.limit=c.limit),c.offset!==void 0&&(a.offset=c.offset),c._nested)for(let[d,p]of Object.entries(c._nested))r[d]=p;}return a.select&&(a.select=ku(a.select,e,r,a.join)),{[i]:a}})}function li(t){return t!=null&&typeof t=="object"&&"$ref"in t}var $g=/^[a-zA-Z_][a-zA-Z0-9_.]*$/,Og=/[;'"\\/*\-#]/,Pg=/['\\;(]/,Et=class extends Error{constructor(r,n){super(`Unsafe ${n}: "${r}"`);this.value=r;this.context=n;this.name="SanitizeError";}};function _t(t,e){if(!$g.test(t))throw new Et(t,e)}function ba(t,e){if(Og.test(t))throw new Et(t,e);let r=0;for(let n of t)if(n==="("?r++:n===")"&&r--,r<0)throw new Et(t,e);if(r!==0)throw new Et(t,e)}function Nr(t,e){if(Pg.test(t))throw new Et(t,e)}function cr(t){let e=t.indexOf("->");if(e===-1)return {col:t,parts:[]};let r=t.slice(0,e),n=t.slice(e),s=[];for(;n.length>0;){let i;if(n.startsWith("->>"))i="->>",n=n.slice(3);else if(n.startsWith("->"))i="->",n=n.slice(2);else break;let o=n.indexOf("->"),a=o===-1?n:n.slice(0,o);s.push({op:i,key:a}),n=o===-1?"":n.slice(o);}return {col:r,parts:s}}function vn(t,e){return t.map(r=>{let n=/^-?\d+$/.test(r.key);return n||Nr(r.key,e),n?`${r.op}${r.key}`:`${r.op}'${r.key}'`}).join("")}function k(t){return typeof t=="string"?sql.ref(t):t}function Ig(t){return `"${t.replace(/"/g,'""')}"`}function $u(t){return sql.raw(Ig(t))}function Ou(t,e,r=e.currentTable,n=e.currentSchema){if(!r||!e.introspection?.columns)return;let s=e.introspection.columns.filter(i=>i.table===r&&i.name===t);if(s.length!==0)return s.find(i=>!n||i.schema===n)??s.find(i=>["","public"].includes(i.schema??""))??s[0]}function ci(t,e,r=e.currentTable,n=e.currentSchema){return Ou(t,e,r,n)!==void 0}function se(t,e,r=e.currentTable){return ci(t,e,r)?$u(t):sql.ref(t)}function Ht(t,e,r,n=r.currentTable){let s=ci(e,r,n)?$u(e):sql.ref(e);return sql`${sql.ref(t)}.${s}`}function Ng(t){return (t?.pg_type??t?.type??"").toLowerCase()}function Pu(t,e,r=e.currentTable){if(e.dialect!=="postgres")return false;let n=Ng(Ou(t,e,r));return n.endsWith("[]")||n.startsWith("_")||n==="array"}function Iu(t){let e=[];for(let r of t){if(!/^\d+$/.test(r))return;e.push(`[${Number(r)+1}]`);}return e.join("")}function Nu(t,e,r,n=r.currentTable,s=false){let i=e.replace(/^\$\./,"").split(".").filter(Boolean);if(i.length===0)return se(t,r,n);if(Pu(t,r,n)){let l=Iu(i);if(l)return sql`${se(t,r,n)}${sql.raw(l)}`}let o=i.map((l,u)=>({op:u===i.length-1&&s?"->>":"->",key:l})),a=vn(o,"JSON path key");return sql`${se(t,r,n)}${sql.raw(a)}`}function Cn(t,e,r=e.currentTable,n){let{col:s,parts:i}=cr(t),o=n?Ht(n,s,e,r):se(s,e,r);if(i.length===0)return o;if(Pu(s,e,r)){let u=Iu(i.map(f=>f.key));if(u)return sql`${o}${sql.raw(u)}`}let a=e.dialect==="sqlite"?i.map((u,f)=>f===i.length-1?{...u,op:"->>"}:u):i,l=vn(a,"JSON path key");return sql`${o}${sql.raw(l)}`}var ui={$eq:(t,e,r)=>sql`${k(e)} = ${r}`,$neq:(t,e,r)=>sql`${k(e)} != ${r}`,$gt:(t,e,r)=>sql`${k(e)} > ${r}`,$gte:(t,e,r)=>sql`${k(e)} >= ${r}`,$lt:(t,e,r)=>sql`${k(e)} < ${r}`,$lte:(t,e,r)=>sql`${k(e)} <= ${r}`,$like:(t,e,r)=>sql`${k(e)} like ${r}`,$is:(t,e,r)=>{let n=k(e);return r===oi?sql`${n} IS NOT NULL`:r===lr?sql`${n} IS UNKNOWN`:r===null?sql`${n} IS NULL`:r===true?sql`${n} IS TRUE`:r===false?sql`${n} IS FALSE`:sql`${n} IS NULL`},$isNot:(t,e,r)=>{let n=k(e);return r===oi?sql`${n} IS NULL`:r===lr?sql`${n} IS NOT UNKNOWN`:r===null?sql`${n} IS NOT NULL`:r===true?sql`${n} IS NOT TRUE`:r===false?sql`${n} IS NOT FALSE`:sql`${n} IS NOT NULL`},$in:(t,e,r)=>{if(Array.isArray(r)&&r.length===0)return sql`false`;let n=k(e);return Array.isArray(r)?sql`${n} in (${sql.join(r.map(s=>sql`${s}`))})`:sql`${n} in ${r}`},$notIn:(t,e,r)=>{if(Array.isArray(r)&&r.length===0)return sql`true`;let n=k(e);return Array.isArray(r)?sql`${n} not in (${sql.join(r.map(s=>sql`${s}`))})`:sql`${n} not in ${r}`},$isDistinct:(t,e,r)=>sql`${k(e)} is distinct from ${r}`},fi={$eq:"=",$neq:"!=",$gt:">",$gte:">=",$lt:"<",$lte:"<="};function wa(t){return t!=null&&typeof t=="object"&&t.type==="query"}function di(t,e){let r=e.db;return t.schema&&(r=r.withSchema(t.schema)),Sa(t,e,r)}function jg(t){return t.includes("->")}function Lu(t,e){let{col:r,parts:n}=cr(t);return n.length===0?se(t,e):Cn(t,e)}function $e(t,e,r){let n=[];for(let[s,i]of Object.entries(e)){if(s==="$always"){i===false&&n.push(sql`0 = 1`);continue}if(s==="$or"){let o=i;n.push(t.or(o.map(a=>$e(t,a,r))));}else if(s==="$and"){let o=i;n.push(t.and(o.map(a=>$e(t,a,r))));}else if(s==="$not")n.push(t.not($e(t,i,r)));else if(s==="$exists"){let o=i;n.push(t.exists(di(o,r)));}else {let o=i,a=jg(s);for(let[l,u]of Object.entries(o)){if(li(u)){let f=fi[l];if(!f)throw new Error(`Unsupported ref operator: ${l}`);n.push(sql`${a?Lu(s,r):se(s,r)} ${sql.raw(f)} ${se(u.$ref,r)}`);continue}if(l==="$not"){let f=u;for(let[c,d]of Object.entries(f))if(a)n.push(t.not(Du(s,c,d,r)));else {let p=ju(s,c,d,r);if(p){n.push(t.not(p));continue}let y=r.operators[c];if(!y)throw new Error(`Unsupported operator: ${c}`);n.push(t.not(y(t,se(s,r),d)));}}else if(wa(u)){let f=di(u,r),c=r.operators[l];if(!c)throw new Error(`Unsupported operator: ${l}`);n.push(c(t,se(s,r),f));}else if(a)n.push(Du(s,l,u,r));else {let f=ju(s,l,u,r);if(f){n.push(f);continue}let c=Dg(s,l,u,r);if(c){n.push(c);continue}let d=r.operators[l];if(!d)throw new Error(`Unsupported operator: ${l}`);n.push(d(t,se(s,r),u));}}}}return n.length===1?n[0]:t.and(n)}function ju(t,e,r,n){if(e!=="$is"&&e!=="$isNot"||r!==lr)return null;let s=Uu(t,n);if(!s)return null;let i=Fu(s.pg_type??s.type);if(i==="boolean")return n.dialect!=="sqlite"?null:e==="$is"?sql`${se(t,n)} IS NULL`:sql`${se(t,n)} IS NOT NULL`;throw Object.assign(new Error(`argument of IS UNKNOWN must be type boolean, not type ${i}`),{code:"42804",detail:null})}function Uu(t,e){if(!e.introspection?.columns||!e.currentTable)return null;let r=t.includes("->")?cr(t).col:t,n=e.introspection.columns.filter(i=>i.table===e.currentTable&&i.name===r);if(n.length===0)return null;let s=e.currentSchema;return n.find(i=>!s||i.schema===s)??n.find(i=>["","public"].includes(i.schema??""))??n[0]}function Fu(t){switch(t.toLowerCase()){case "bool":return "boolean";case "int8":case "bigserial":case "serial8":return "bigint";case "int4":case "serial":case "serial4":return "integer";case "int2":return "smallint";default:return t.toLowerCase()}}function Dg(t,e,r,n){if(n.dialect!=="postgres"||e!=="$eq"&&e!=="$neq"||typeof r!="string"||!/^\s*[[{]/.test(r))return null;let s=Uu(t,n),i=Fu(s?.pg_type??s?.type??"");if(i!=="json"&&i!=="jsonb")return null;let o=se(t,n),a=sql`cast(${sql.raw(Lg(r))} as ${sql.raw(i)})`;return e==="$eq"?sql`${o} = ${a}`:sql`${o} != ${a}`}function Lg(t){return `'${t.replace(/'/g,"''")}'`}function Du(t,e,r,n){let s=n?Lu(t,n):k(t),o={$eq:"=",$neq:"!=",$gt:">",$gte:">=",$lt:"<",$lte:"<=",$like:"like",$ilike:"ilike"}[e];if(o)return sql`${s} ${sql.raw(o)} ${r}`;if(e==="$is")return r===null?sql`${s} IS NULL`:r===true?sql`${s} IS TRUE`:r===false?sql`${s} IS FALSE`:sql`${s} IS NULL`;if(e==="$isNot")return r===null?sql`${s} IS NOT NULL`:r===true?sql`${s} IS NOT TRUE`:r===false?sql`${s} IS NOT FALSE`:sql`${s} IS NOT NULL`;if(e==="$in"){if(n&&wa(r))return sql`${s} in ${di(r,n)}`;let a=r;return a.length===0?sql`false`:sql`${s} in (${sql.join(a.map(l=>sql`${l}`))})`}if(e==="$notIn"){if(n&&wa(r))return sql`${s} not in ${di(r,n)}`;let a=r;return a.length===0?sql`true`:sql`${s} not in (${sql.join(a.map(l=>sql`${l}`))})`}return sql`${s} = ${r}`}function ae(t){return "select"in t||"spread"in t||"join"in t}function gi(t,e,r,n,s,i=false){if(!e||e.length===0)return t.selectAll();for(let o of e)if(typeof o=="string")if(o==="*")t=i&&s?t.selectAll(s):t.selectAll();else if(/^-?\d+(?:\.\d+)?$/.test(o))t=t.select(sql.lit(Number(o)).as("_lit"));else if(zg(o,r,s)){let a=i&&s?Ht(s,o,r,s):se(o,r,s);t=t.select(sql`json(${a})`.as(o));}else t=i&&s&&!o.includes(".")?t.select(Ht(s,o,r,s).as(o)):!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(o)&&ci(o,r,s)?t.select(se(o,r,s).as(o)):t.select(o);else for(let[a,l]of Object.entries(o))ae(l)?t=oy(t,a,l,r,n,s):t=Bg(t,a,l,r,s,i);return t}function Tn(t,e){if(!e||e.length===0)return t;for(let r of e)if(typeof r=="string")t=r==="*"?t.returningAll():t.returning(r);else for(let[n,s]of Object.entries(r)){if(ae(s))continue;let i=s.column||n;t=t.returning(i);}return t}function ur(t,e,r,n,s,i=false){let o;if(r.aggregate==="count"&&!r.column&&!r.path)o=t.fn.countAll();else {let a=r.column||e;if(r.invalidJsonTextTraversalKey&&n.dialect==="postgres")throw Object.assign(new Error(`operator does not exist: text -> ${Ug(r.invalidJsonTextTraversalKey)}`),{code:"42883",detail:null,hint:"No operator matches the given name and argument types. You might need to add explicit type casts."});o=r.path?Nu(a,r.path,n,s,r.pathText===true):s&&i?Ht(s,a,n,s):se(a,n,s),r.preCast&&(ba(r.preCast,"pre-cast type"),o=sql`cast(${o} as ${sql.raw(r.preCast)})`),r.aggregate&&(o=sql`${sql.raw(r.aggregate)}(${o})`);}return r.cast&&(ba(r.cast,"cast type"),o=n.dialect==="sqlite"&&(Fg(r.cast)||Mg(r.cast))?sql`json(${o})`:sql`cast(${o} as ${sql.raw(r.cast)})`),o}function Ug(t){return /^-?\d+$/.test(t)?"integer":"unknown"}function Fg(t){let e=t.trim().toLowerCase();return e==="json"||e==="jsonb"}function Mg(t){let e=t.trim().toLowerCase();return e.startsWith("_")||e.endsWith("[]")}function Bg(t,e,r,n,s,i=false){return t.select(o=>ur(o,e,r,n,s,i).as(e))}function qg(t){if(!t)return false;for(let e of t)if(typeof e!="string"){for(let r of Object.values(e))if(!ae(r)&&r.aggregate)return true}return false}function Jg(t){if(!t)return false;for(let e of t)if(typeof e!="string"){for(let r of Object.values(e))if(ae(r)&&r.spread&&_a(r.select))return true}return false}function Kg(t){if(!t)return false;for(let e of t)if(typeof e!="string"){for(let r of Object.values(e))if(ae(r)&&r.spread)return true}return false}function Wg(t){return qg(t)||Jg(t)}function _a(t){if(!t)return false;for(let e of t)if(typeof e!="string")for(let r of Object.values(e)){if(ae(r)){if(_a(r.select))return true;continue}if(r.aggregate)return true}return false}function xa(t){if(!t)return false;for(let e of t)if(typeof e!="string")for(let r of Object.values(e)){if(ae(r)){if(r.spread)continue;if(xa(r.select))return true;continue}let n=r;if(n.aggregate&&!n.bareCount)return true}return false}function va(t,e,r,n,s){if(!Wg(e))return t;let i=[];for(let o of e){if(typeof o=="string"){if(o==="*")continue;i.push(se(o,r,n));continue}for(let[a,l]of Object.entries(o)){if(ae(l))continue;let u=l;u.aggregate||i.push(f=>ur(f,a,u,r,n));}}return Hg(i,e,r,n,s),i.length===0?t:t.groupBy(i)}function Hg(t,e,r,n,s){if(!(!e||!n||!r.introspection?.foreign_keys)){for(let i of e)if(typeof i!="string")for(let[o,a]of Object.entries(i)){if(!ae(a)||!a.spread)continue;let l=a,u=s?.[o],f=u?.from||o;f=vt(f,n,r.introspection);let c=Ce(r.introspection,n,f,u?.hint),d=c?.type==="m2o"||c?.type==="o2m"&&ot(c,f,r.introspection);if(!c||!d)continue;let p=yi(l.select,f,r.introspection)??l.select??[],y=`_spread_${o}`;for(let h of p){if(typeof h=="string"){h!=="*"&&t.push(`${y}.${h}`);continue}let[b,m]=Object.entries(h)[0];ae(m)||m.aggregate||t.push(w=>ur(w,b,m,r,y,true));}}}}function Bu(t,e,r,n,s){if(!t||!e||!n||!s.introspection?.foreign_keys)return t;let i=new Set;for(let o of e)if(typeof o!="string")for(let[a,l]of Object.entries(o)){if(!ae(l)||!l.spread)continue;let u=r?.[a],f=u?.from||a;f=vt(f,n,s.introspection);let c=Ce(s.introspection,n,f,u?.hint),d=c?.type==="m2o"||c?.type==="o2m"&&ot(c,f,s.introspection);c&&d&&i.add(a);}return i.size===0?t:t.map(o=>o.embed&&i.has(o.embed)?{...o,embed:`_spread_${o.embed}`}:o)}function qu(t,e,r,n){if(!t||!r||!n.introspection?.foreign_keys)return false;for(let s of t)if(typeof s!="string")for(let[i,o]of Object.entries(s)){if(!ae(o)||!o.spread)continue;let a=e?.[i],l=a?.from||i;l=vt(l,r,n.introspection);let u=Ce(n.introspection,r,l,a?.hint),f=u?.type==="m2o"||u?.type==="o2m"&&ot(u,l,n.introspection);if(u&&f)return true}return false}function pi(t){let e=new Map;for(let r of t){let n=r.foreign_key_name,s=e.get(n);s?s.push(r):e.set(n,[r]);}return [...e.values()]}function Ca(t,e,r,n){t=t.innerJoin(e.junctionTable,s=>{let i=s;for(let o=0;o<e.junctionToTargetCols.length;o++)i=i.onRef(`${e.junctionTable}.${e.junctionToTargetCols[o]}`,"=",`${r}.${e.targetCols[o]}`);return i});for(let s=0;s<e.junctionToParentCols.length;s++)t=t.whereRef(`${e.junctionTable}.${e.junctionToParentCols[s]}`,"=",`${n}.${e.parentCols[s]}`);return t}function Aa(t,e,r,n,s=r){let i=s===r?r:`${r} as ${s}`;if(e.type==="m2o"){let[,l]=e.leftCol.split("."),[,u]=e.rightCol.split(".");return t.leftJoin(i,f=>f.onRef(`${s}.${u}`,"=",`${n}.${l}`))}let[,o]=e.leftCol.split("."),[,a]=e.rightCol.split(".");return t.leftJoin(i,l=>l.onRef(`${s}.${o}`,"=",`${n}.${a}`))}function Rn(t,e,r,n,s){let i=new Set;if(!e||!n.introspection?.foreign_keys)return {sub:t,joined:i};for(let o of e){if(!o.embed||i.has(o.embed))continue;_t(o.embed,"order embed alias");let a=s?.[o.embed],l=Ra(o.embed,a,r,n.introspection);l!==o.embed&&_t(l,"order embed target");let u=Ce(n.introspection,r,l,a?.hint),f=u?.type==="m2o"||u?.type==="o2m"&&ot(u,l,n.introspection);!u||!f||(t=Aa(t,u,l,r,o.embed),i.add(o.embed),i.add(l));}return {sub:t,joined:i}}function Ju(t){return t&&t.map(e=>e.embed&&e.nullsFirst===void 0?{...e,nullsFirst:e.direction==="desc"}:e)}function Ea(t,e){let r={};for(let[n,s]of Object.entries(t))n==="$or"||n==="$and"?r[n]=s.map(i=>Ea(i,e)):n==="$not"?r[n]=Ea(s,e):n.startsWith("$")||n.includes(".")?r[n]=s:r[`${e}.${n}`]=s;return r}function mi(t,e,r){let n=r.includes(".")?r.split(".").pop():r,s=t.introspection?.columns?.find(o=>o.table===e&&o.name===n),i=(s?.pg_type||s?.type||"").toLowerCase();return i==="json"||i==="jsonb"}function zg(t,e,r){return e.dialect==="sqlite"&&r!==void 0&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t)&&mi(e,r,t)}function Gg(t,e){if(!t)return false;let r=e.includes(".")?e.split(".").pop():e;return t.some(n=>n.column.includes("->")?n.column.slice(0,n.column.indexOf("->"))===r:false)}function An(t,e,r,n){return mi(t,e,r)||Gg(n,r)}function Vg(t,e,r){if(!t)return null;let n=[];for(let s of t){if(typeof s=="string"){if(s==="*")return null;let l=s.includes(".")?s.split(".").pop():s;n.push({alias:l,asJson:mi(r,e,l)});continue}let[i,o]=Object.entries(s)[0];if(!i||!o)continue;if(ae(o))return null;let a=mi(r,e,o.column||i);n.push({alias:i,asJson:a});}return n}function Qg(t,e,r,n){let s=Vg(e,r,n);if(!s||s.length===0)return n.jsonObjectFrom(t);let i=s.flatMap(o=>[sql.lit(o.alias),o.asJson?sql`json(${sql.ref(`obj.${o.alias}`)})`:sql.ref(`obj.${o.alias}`)]);return sql`(select json_object(${sql.join(i)}) from ${t} as obj)`}function Xg(t){return t==="m2o"?"many-to-one":t==="o2m"?"one-to-many":"many-to-many"}function Yg(t,e,r){return t.fk?t.type==="m2m"?`${t.fk.foreign_key_name} using ${t.junctionTable}(${t.fk.column}) and ${e}(${t.fk.ref_column})`:`${t.fk.foreign_key_name} using ${t.fk.table}(${t.fk.column}) and ${t.fk.ref_table}(${t.fk.ref_column})`:""}function Zg(t,e){if(!t||!e)return null;let r=[];for(let s of t.tables??[])r.push(s.name);for(let s of t.views??[])r.push(s.name);let n=r.find(s=>s.length===e.length+1&&s.startsWith(e));return n?`Perhaps you meant '${n}' instead of '${e}'.`:null}function Ta(t,e,r,n){let s=t?.foreign_keys?.find(o=>o.table===e||o.ref_table===e)?.schema||"test",i=n?` using the hint '${n}'`:"";throw new Te({httpStatus:400,code:"PGRST200",message:`Could not find a relationship between '${e}' and '${r}' in the schema cache`,details:`Searched for a foreign key relationship between '${e}' and '${r}'${i} in the schema '${s}', but no matches were found.`,hint:Zg(t,r)})}function Ce(t,e,r,n){if(!t||!t.foreign_keys)return null;let s=t.foreign_keys.filter(p=>p.is_visible!==false);if(n){let p=s.find(E=>E.foreign_key_name===n);if(p){if(p.table===e&&p.ref_table===r)return {leftCol:`${e}.${p.column}`,rightCol:`${r}.${p.ref_column}`,type:"m2o"};if(p.table===r&&p.ref_table===e)return {leftCol:`${r}.${p.column}`,rightCol:`${e}.${p.ref_column}`,type:"o2m"}}let y=s.find(E=>E.table===e&&E.column===n&&E.ref_table===r);if(y)return {leftCol:`${e}.${y.column}`,rightCol:`${r}.${y.ref_column}`,type:"m2o"};let h=s.find(E=>E.table===r&&E.column===n&&E.ref_table===e);if(h)return {leftCol:`${r}.${h.column}`,rightCol:`${e}.${h.ref_column}`,type:"o2m"};let b=s.filter(E=>E.table===n),m=pi(b.filter(E=>E.ref_table===e)),w=pi(b.filter(E=>E.ref_table===r));if(m.length>0&&w.length>0){let E=m[0],C=w[0];return {type:"m2m",junctionTable:n,junctionToParentCols:E.map(x=>x.column),parentCols:E.map(x=>x.ref_column),junctionToTargetCols:C.map(x=>x.column),targetCols:C.map(x=>x.ref_column)}}let _=s.find(E=>E.table===r&&E.ref_column===n&&E.ref_table===e);if(_)return {leftCol:`${r}.${_.column}`,rightCol:`${e}.${_.ref_column}`,type:"o2m"};let S=s.find(E=>E.table===e&&E.ref_column===n&&E.ref_table===r);if(S)return {leftCol:`${e}.${S.column}`,rightCol:`${r}.${S.ref_column}`,type:"m2o"};Ta(t,e,r,n);}if(e===r){let p=s.find(y=>y.table===r&&y.ref_table===e);if(p)return {leftCol:`${r}.${p.column}`,rightCol:`${e}.${p.ref_column}`,type:"o2m"}}let i=s.filter(p=>p.table===e&&p.ref_table===r),o=[...new Map(i.map(p=>[p.foreign_key_name,p])).values()],a=s.filter(p=>p.table===r&&p.ref_table===e),l=[...new Map(a.map(p=>[p.foreign_key_name,p])).values()],u=[],f=pi(s.filter(p=>p.ref_table===e));for(let p of f){let y=p[0].table;if(y===e||y===r)continue;let h=s.filter(b=>b.table===y&&b.ref_table===r);if(h.length!==0)for(let b of pi(h))u.push({type:"m2m",junctionTable:y,junctionToParentCols:p.map(m=>m.column),parentCols:p.map(m=>m.ref_column),junctionToTargetCols:b.map(m=>m.column),targetCols:b.map(m=>m.ref_column),fk:p[0]});}if(o.length+l.length+u.length===0)return null;if(o.length>1||l.length>1){let p=[...o.map(m=>({leftCol:`${e}.${m.column}`,rightCol:`${r}.${m.ref_column}`,type:"m2o",fk:m})),...l.map(m=>({leftCol:`${r}.${m.column}`,rightCol:`${e}.${m.ref_column}`,type:"o2m",fk:m})),...u],y=p.map(m=>({cardinality:Xg(m.type),embedding:`${e} with ${r}`,relationship:Yg(m,e)})),b=p.map(m=>m.fk?.foreign_key_name).filter(Boolean).map(m=>`'${r}!${m}'`).join(", ");throw new Te({httpStatus:300,code:"PGRST201",message:`Could not embed because more than one relationship was found for '${e}' and '${r}'`,details:y,hint:b?`Try changing '${r}' to one of the following: ${b}. Find the desired relationship in the 'details' key.`:null})}if(o.length===1){let p=o[0];return {leftCol:`${e}.${p.column}`,rightCol:`${r}.${p.ref_column}`,type:"m2o"}}if(l.length===1){let p=l[0];return {leftCol:`${r}.${p.column}`,rightCol:`${e}.${p.ref_column}`,type:"o2m"}}return u.length===1?u[0]:null}function Ku(t,e,r,n){if(!(!t||!r||!n.introspection?.foreign_keys))for(let s of t){if(!s.embed)continue;let i=e?.[s.embed],o=Ra(s.embed,i,r,n.introspection),a=Ce(n.introspection,r,o,i?.hint);if(!a)continue;if(!(a.type==="m2o"||a.type==="o2m"&&ot(a,o,n.introspection)))throw new Te({httpStatus:400,code:"PGRST118",message:`A related order on '${s.embed}' is not possible`,details:`'${r}' and '${s.embed}' do not form a many-to-one or one-to-one relationship`,hint:null})}}function vt(t,e,r){if(!r?.foreign_keys||r.tables?.some(l=>l.name===t)||r.views?.some(l=>l.name===t))return t;let s=r.foreign_keys,i=s.find(l=>l.table===e&&l.column===t);if(i)return i.ref_table;let o=s.find(l=>l.foreign_key_name===t&&(l.table===e||l.ref_table===e));if(o)return o.table===e?o.ref_table:o.table;let a=s.find(l=>l.ref_table===e&&l.ref_column===t);return a?a.table:t}function Mu(t,e,r,n,s,i){let o=s?.[e],a=o?.from||e;i&&(a=vt(a,i,n.introspection));let l=i?Ce(n.introspection,i,a,o?.hint):null;return t.where(u=>{let f=u.selectFrom(a).select(sql`1`.as("_"));return o?.on?f=f.where(c=>$e(c,o.on,n)):l&&l.type==="m2m"?f=Ca(f,l,a,i):l?f=f.whereRef(l.leftCol,"=",l.rightCol):i&&(f=f.whereRef(`${a}.${i}_id`,"=",`${i}.id`)),r.where&&Object.keys(r.where).length>0&&(f=f.where(c=>$e(c,r.where,n))),u.exists(f)})}function ot(t,e,r){if(!r||t.type!=="o2m")return false;let n=t.leftCol.split(".")[1];return r.indexes?.some(o=>o.table===e&&o.unique&&o.columns.length===1&&o.columns[0]===n)||r.unique_constraints?.some(o=>o.table===e&&o.columns.length===1&&o.columns[0]===n)?true:r.primary_keys?.some(o=>o.table===e&&o.columns.length===1&&o.columns[0]===n)??false}function ey(t,e){return t&&t.map(r=>typeof r!="string"||r==="*"||r.includes(".")||/^-?\d+(?:\.\d+)?$/.test(r)?r:`${e}.${r}`)}function kn(t){if(typeof t=="string")return {colAlias:t,colName:t};let e=Object.keys(t)[0],r=t[e];return {colAlias:e,colName:r?.column||e}}function ty(t,e,r,n,s,i){if(!r.select||!i)return t;let o=s?.[e],a=o?.from||e;a=vt(a,i,n.introspection);let l=Ce(n.introspection,i,a,o?.hint),u=yi(r.select,a,n.introspection)??r.select;if(!n.introspection?.foreign_keys)return iy(t,u,a,i,l);if(!l)throw new Te({httpStatus:400,code:"PGRST120",message:"Could not embed because the relationship is not a one-to-one or many-to-one",details:null,hint:null});if(!(l.type==="m2o"||l.type==="o2m"&&ot(l,a,n.introspection))){if(_a(r.select))throw new Te({httpStatus:400,code:"PGRST127",message:"Feature not implemented",details:"Aggregates are not implemented for one-to-many or many-to-many spreads.",hint:null});return ny(t,u,r,l,a,i,n)}let c=`_spread_${e}`,[d,p]=l.leftCol.split("."),[,y]=l.rightCol.split("."),h=d===a?p:y,b=d===i?p:y,m="__spread_join_key",w=[],_=new Set;for(let S of u){if(typeof S=="string"&&S==="*")continue;let E;if(typeof S!="string"){let A=Object.values(S)[0];if(ae(A))continue;E=A;}let{colAlias:C,colName:x}=kn(S);w.push({src:x,out:C,def:E}),_.add(x);}t=t.leftJoin(S=>{let E=S.selectFrom(a);E=E.select(`${a}.${h} as ${m}`);for(let C of _)E=E.select(`${a}.${C} as ${C}`);return E.as(c)},S=>S.onRef(`${c}.${m}`,"=",`${i}.${b}`));for(let{out:S,def:E}of w)E?t=t.select(C=>ur(C,S,E,n,c,true).as(S)):t=t.select(`${c}.${S}`);return t}function ry(t,e,r,n){for(let s of t){if(typeof s=="string")continue;let i=Object.values(s)[0];if(!ae(i))continue;let{colAlias:o}=kn(s),a=e.join?.[o],l=vt(a?.from||o,r,n.introspection),u=Ce(n.introspection,r,l,a?.hint);if(!u||u.type!=="o2m"||!ot(u,l,n.introspection))continue;let f=n.introspection?.primary_keys?.find(c=>c.table===l);if(f?.columns?.length)return {nestedTargetTable:l,fkRel:u,pkColumns:f.columns}}return null}function ny(t,e,r,n,s,i,o){let a=r.order?null:ry(e,r,s,o);for(let l of e){if(typeof l=="string"&&l==="*")continue;let u=typeof l=="string"?null:Object.values(l)[0],f=u!==null&&ae(u),c=f&&u.spread,{colAlias:d,colName:p}=kn(l);if(c){t=sy(t,d,u,r,n,s,i,o);continue}t=t.select(y=>{let h=y.selectFrom(s);if(h=hi(h,n,s,i),r.where&&Object.keys(r.where).length>0&&(h=h.where(b=>$e(b,r.where,o))),r.order&&(h=Rn(h,r.order,s,o,r.join).sub,h=xt(h,Ju(r.order),void 0,o,s)),r.limit!==void 0&&(h=h.limit(r.limit)),r.offset!==void 0&&(h=h.offset(r.offset)),a&&(h=Aa(h,a.fkRel,a.nestedTargetTable,s),h=xt(h,a.pkColumns.map(b=>({column:b,embed:a.nestedTargetTable})),void 0,o)),f){let b=r.join?.[d];return h=h.select(m=>Wu(m,d,u,o,b,s).as("value")),o.jsonScalarArrayFrom(h,"value",true).as(d)}else return u!==null?(h=h.select(b=>ur(b,p,u,o,s).as("value")),o.jsonScalarArrayFrom(h,"value",An(o,s,p,r.order)).as(d)):(h=h.select(`${s}.${p} as value`),o.jsonScalarArrayFrom(h,"value",An(o,s,p,r.order)).as(d))});}return t}function sy(t,e,r,n,s,i,o,a){let l=n.join?.[e],u=vt(l?.from||e,i,a.introspection),f=Ce(a.introspection,i,u,l?.hint),c=yi(r.select,u,a.introspection)??r.select??[],d=f?.type==="m2o"||f?.type==="o2m"&&ot(f,u,a.introspection);for(let p of c){if(typeof p=="string"&&p==="*")continue;let y=typeof p=="string"?null:Object.values(p)[0],{colAlias:h,colName:b}=kn(p);t=t.select(m=>{let w=m.selectFrom(i);w=hi(w,s,i,o),n.where&&Object.keys(n.where).length>0&&(w=w.where(S=>$e(S,n.where,a)));let _=Rn(w,n.order,i,a,n.join);if(w=_.sub,n.order&&(w=xt(w,Ju(n.order),void 0,a,i)),n.limit!==void 0&&(w=w.limit(n.limit)),n.offset!==void 0&&(w=w.offset(n.offset)),!f)return w=w.where(sql`1 = 0`).select(sql`null`.as("value")),a.jsonScalarArrayFrom(w).as(h);if(d){if(_.joined.has(u)||(w=Aa(w,f,u,i)),!n.order&&f.type==="o2m"){let S=a.introspection?.primary_keys?.find(E=>E.table===u);S?.columns?.length&&(w=xt(w,S.columns.map(E=>({column:E,embed:u})),void 0,a));}if(y!==null&&!ae(y)){let S={...y,column:`${u}.${b}`};w=w.select(E=>ur(E,h,S,a).as("value"));}else w=w.select(`${u}.${b} as value`);return a.jsonScalarArrayFrom(w,"value",An(a,u,b,n.order)).as(h)}else return w=w.select(S=>{let E=S.selectFrom(u);return E=hi(E,f,u,i),y!==null&&!ae(y)?(E=E.select(C=>ur(C,b,y,a,u).as("value")),a.jsonScalarArrayFrom(E,"value",An(a,u,b,n.order)).as("value")):(E=E.select(`${u}.${b} as value`),a.jsonScalarArrayFrom(E,"value",An(a,u,b,n.order)).as("value"))}),a.jsonScalarArrayFrom(w,"value",true).as(h)});}return t}function hi(t,e,r,n){return e.type==="m2m"?Ca(t,e,r,n):t.whereRef(e.leftCol,"=",e.rightCol)}function iy(t,e,r,n,s){for(let i of e){if(typeof i=="string"&&i==="*")continue;let{colAlias:o,colName:a}=kn(i);t=t.select(l=>{let u=l.selectFrom(r).select(`${r}.${a}`);return s&&s.type!=="m2m"?u=u.whereRef(s.leftCol,"=",s.rightCol):u=u.whereRef(`${r}.${n}_id`,"=",`${n}.id`),u=u.limit(1),u.as(o)});}return t}function yi(t,e,r){if(!t||!r?.columns||!t.some(i=>i==="*"))return t;let n=r.columns.filter(i=>i.table===e).sort((i,o)=>i.ordinal_position-o.ordinal_position).map(i=>i.name);if(n.length===0)return t;let s=[];for(let i of t)if(i==="*")for(let o of n)s.push(o);else s.push(i);return s}function Ra(t,e,r,n){let s=e?.from||t;if(!n?.foreign_keys||n.tables?.some(f=>f.name===s)||n.views?.some(f=>f.name===s))return s;let o=n.foreign_keys,a=o.find(f=>f.table===r&&f.column===s);if(a)return a.ref_table;let l=o.find(f=>f.foreign_key_name===s&&(f.table===r||f.ref_table===r));if(l)return l.table===r?l.ref_table:l.table;let u=o.find(f=>f.ref_table===r&&f.ref_column===s);return u?u.table:s}function oy(t,e,r,n,s,i){let o=s?.[e];if(!r.select||r.select.length===0){if(o?.type==="inner"&&i)return Mu(t,e,r,n,s,i);if(i&&!o?.on&&n.introspection?.foreign_keys){let a=Ra(e,o,i,n.introspection);Ce(n.introspection,i,a,o?.hint)||Ta(n.introspection,i,a,o?.hint);}return t}return o?.type==="inner"&&i&&(t=Mu(t,e,r,n,s,i)),r.spread&&i?ty(t,e,r,n,s,i):t.select(a=>Wu(a,e,r,n,o,i).as(e))}function Wu(t,e,r,n,s,i){let o=s?.from||e;if(i&&n.introspection?.foreign_keys){let _=n.introspection.foreign_keys.find(S=>S.table===i&&S.column===o);if(_)o=_.ref_table;else {let S=n.introspection.foreign_keys.find(E=>E.foreign_key_name===o&&(E.table===i||E.ref_table===i));if(S)o=S.table===i?S.ref_table:S.table;else {let E=n.introspection.foreign_keys.find(C=>C.ref_table===i&&C.ref_column===o);E&&(o=E.table);}}}let a=i===o,l=a?`${o}_self`:o,u=a?`${o} as ${l}`:o,f=t.selectFrom(u),c=i&&!s?.on?Ce(n.introspection,i,o,s?.hint):null,d=c?.type==="m2m",p=yi(r.select,o,n.introspection),y=d?ey(p,l):p;if(f=gi(f,y,n,r.join,l,Kg(y)),r.where&&Object.keys(r.where).length>0){let _=bi(f,r.where,r.select,r.join,o,n);f=_.qb,Object.keys(_.remainingWhere).length>0&&(f=f.where(S=>$e(S,_.remainingWhere,n)));}let h="o2m";if(s?.on)f=f.where(_=>$e(_,s.on,n));else if(i){let _=Ce(n.introspection,i,o,s?.hint);if(_&&_.type==="m2m")h="m2m",f=Ca(f,_,l,i);else if(_){let S=a?_.leftCol.replace(`${o}.`,`${l}.`):_.leftCol;f=f.whereRef(S,"=",_.rightCol),h=_.type;}else n.introspection?.foreign_keys?Ta(n.introspection,i,o,s?.hint):f=f.whereRef(`${l}.${i}_id`,"=",`${i}.id`);}f=va(f,y,n,o),r.order?.some(_=>_.embed)&&(f=Rn(f,r.order,o,n,r.join).sub),f=xt(f,r.order,void 0,n,o),h==="m2m"&&!r.order&&c?.type==="m2m"&&n.dialect==="sqlite"&&(f=f.orderBy(`${c.junctionTable}.${n.rowIdColumn}`,"asc")),r.limit!==void 0&&(f=f.limit(r.limit)),r.offset!==void 0&&(f=f.offset(r.offset));let b=false;if(h==="o2m"&&i&&n.introspection){let _=Ce(n.introspection,i,o,s?.hint);_&&_.type==="o2m"&&(b=ot(_,o,n.introspection));}let m=r.spread||h==="m2o"||b;return m&&n.dialect==="sqlite"?Qg(f,y,o,n):(m?n.jsonObjectFrom:n.jsonArrayFrom)(f)}function Hu(t,e,r,n){if(!t||!n.introspection?.foreign_keys)return false;for(let s of t){if(typeof s=="string")continue;let[i,o]=Object.entries(s)[0];if(!ae(o)||!o.spread)continue;let l=e?.[i],u=vt(l?.from||i,r,n.introspection),f=Ce(n.introspection,r,u,l?.hint);if(!f)continue;if(!(f.type==="m2o"||f.type==="o2m"&&ot(f,u,n.introspection)))return true}return false}function bi(t,e,r,n,s,i){if(!r||!e||!i.introspection?.foreign_keys)return {qb:t,remainingWhere:e};if(Object.keys(e).length===0||!Vu(e,r))return {qb:t,remainingWhere:e};let o=e;return t=t.where(a=>{let l=zu(a,e,r,n,s,i);return o=l.remainingWhere,l.expression??sql`1 = 1`}),Object.keys(o).length===Object.keys(e).length?{qb:t,remainingWhere:e}:{qb:t,remainingWhere:o}}function zu(t,e,r,n,s,i){let o=[],a={};for(let[u,f]of Object.entries(e)){if((u==="$or"||u==="$and")&&Array.isArray(f)){let d=f.map(p=>zu(t,p,r,n,s,i));if(d.length>0&&d.every(p=>p.fullyHandled&&p.expression)){o.push(u==="$or"?t.or(d.map(p=>p.expression)):t.and(d.map(p=>p.expression)));continue}a[u]=f;continue}let c=ay(t,u,f,r,n,s,i);c?o.push(c):a[u]=f;}let l=o.length===0?null:o.length===1?o[0]:t.and(o);return {expression:l,remainingWhere:a,fullyHandled:l!==null&&Object.keys(a).length===0}}function ay(t,e,r,n,s,i,o){let a=r;if(!a||typeof a!="object")return null;let l="$is"in a&&a.$is===null,u="$isNot"in a&&a.$isNot===null;if(!l&&!u)return null;let f=Gu(n,e);if(!f)return null;let c=s?.[e],d=vt(c?.from||e,i,o.introspection),p=Ce(o.introspection,i,d,c?.hint);if(!p)return null;let y=t.selectFrom(d).select(sql`1`.as("_"));if(c?.on?y=y.where(b=>$e(b,c.on,o)):y=hi(y,p,d,i),f.where&&Object.keys(f.where).length>0){let b=bi(y,f.where,f.select,f.join,d,o);if(y=b.qb,Object.keys(b.remainingWhere).length>0){let m=Ea(b.remainingWhere,d);y=y.where(w=>$e(w,m,o));}}let h=t.exists(y);return u?h:t.not(h)}function Gu(t,e){for(let r of t){if(typeof r=="string")continue;let n=r[e];if(n&&ae(n))return n}return null}function Vu(t,e){for(let[r,n]of Object.entries(t)){if((r==="$or"||r==="$and")&&Array.isArray(n)){if(n.some(a=>Vu(a,e)))return true;continue}let s=n;if(!s||typeof s!="object")continue;let i="$is"in s&&s.$is===null,o="$isNot"in s&&s.$isNot===null;if((i||o)&&Gu(e,r))return true}return false}function ly(t,e,r){return t.schema?.get(`${e??"public"}.${r}`)}function ka(t,e,r,n,s={}){if(!t)return t;let i=ly(e,r,n),o=a=>{let l=cy(a,i,e,r,n),u=s.applyDefaults&&i?i.applyDefaults(l):l;return i?i.serializeRow(u):uy(u,e,r,n)};return Array.isArray(t)?t.map(a=>o(a)):o(t)}function cy(t,e,r,n,s){let i={};for(let[o,a]of Object.entries(t)){let l=e?.get(o)?.context.pgTypeName??Yu(r,n,s,o)??void 0;i[o]=fy(a,l);}return i}function uy(t,e,r,n){if(e.dialect!=="sqlite")return t;let s={};for(let[i,o]of Object.entries(t)){let a=Yu(e,r,n,i);s[i]=my(a)?hy(o):o;}return s}function Yu(t,e,r,n){let i=(t.introspection?.columns??[]).filter(a=>a.table===r&&a.name===n);if(i.length===0)return;let o=i.find(a=>a.schema===(e??"public"))??i.find(a=>a.schema==="public")??i[0];return o.pg_type??o.type}function fy(t,e){if(t==null||typeof t!="string")return t;let r=Zu(e);return r==="boolean"?dy(t):r==="integer"?Qu(t,true):r==="number"?Qu(t,false):r==="json"?ef(t):r==="array"?py(t):t}function Zu(t){if(!t)return;let e=t.toLowerCase().trim();if(e.startsWith("_")||e.endsWith("[]"))return "array";if(e==="bool"||e==="boolean")return "boolean";if(["int2","smallint","int4","integer","int","int8","bigint"].includes(e))return "integer";if(["float4","real","float8","double precision","numeric","decimal"].includes(e))return "number";if(e==="json"||e==="jsonb")return "json"}function dy(t){let e=t.trim().toLowerCase();return ["true","t","1","yes","y","on"].includes(e)?true:["false","f","0","no","n","off"].includes(e)?false:t}function Qu(t,e){let r=t.trim();if(r==="")return t;let n=Number(r);return !Number.isFinite(n)||e&&!Number.isInteger(n)?t:n}function ef(t){let e=t.trim();if(e==="")return t;try{return JSON.parse(e)}catch{return t}}function py(t){let e=ef(t);return Array.isArray(e)?e:t}function my(t){let e=Zu(t);return e==="json"||e==="array"}function hy(t){return t==null||typeof t=="string"?t:JSON.stringify(t)}function tf(t,e){let r=e.db;switch(t.schema&&(r=r.withSchema(t.schema)),t.type){case "query":return Sa(t,e,r);case "insert":return yy(t,e,r);case "update":return by(t,e,r);case "delete":return wy(t,e,r);case "upsert":case "put":return Sy(t,e,r);case "rpc":return Ey(t,e,r);default:throw t&&"type"in t?(console.error(t),new Error(`Unsupported AST type: ${t.type}`)):new Error("Invalid AST")}}function xt(t,e,r,n,s){if(!e)return t;for(let i of e){let o=i.embed?(_t(i.embed,"order embed alias"),i.column.includes("->")?n?Cn(i.column,n,s,i.embed):Xu(i.column,i.embed):(_t(i.column,"order embed column"),n?Ht(i.embed,i.column,n,s):sql`${sql.ref(i.embed)}.${sql.ref(i.column)}`)):i.column.includes("->")?n?Cn(i.column,n,s,r):Xu(i.column,void 0,r):r?n?Ht(r,i.column,n,s):sql`${sql.ref(r)}.${sql.ref(i.column)}`:n?se(i.column,n,s):i.column,a=i.nullsFirst!==void 0?i.nullsFirst:n?.dialect==="sqlite"?i.direction==="desc":void 0;a!==void 0?t=t.orderBy(o,l=>{let u=i.direction==="desc"?l.desc():l.asc();return a?u.nullsFirst():u.nullsLast()}):t=t.orderBy(o,i.direction||"asc");}return t}function Xu(t,e,r){let{col:n,parts:s}=cr(t);if(s.length===0)return sql.ref(t);e&&_t(n,"order embed column");let i=vn(s,"ORDER BY JSON path key");return e?sql`${sql.ref(e)}.${sql.ref(n)}${sql.raw(i)}`:r?sql`${sql.ref(r)}.${sql.ref(n)}${sql.raw(i)}`:sql`${sql.ref(n)}${sql.raw(i)}`}function $n(t,e,r,n,s){return !e||Object.keys(e).length===0?t:t.where(i=>$e(i,e,{...r,currentTable:n,currentSchema:s}))}function Sa(t,e,r){let n=r.selectFrom(t.from);n=gy(n,t.join,t.select);let s=t.order?.some(f=>f.embed)===true;n=gi(n,t.select,e,t.join,t.from,s||qu(t.select,t.join,t.from,e));let i=t.where??{},{qb:o,remainingWhere:a}=t.from?bi(n,i,t.select,t.join,t.from,e):{qb:n,remainingWhere:i};n=o,n=$n(n,a,e,t.from,t.schema),n=va(n,t.select,e,t.from,t.join),Ku(t.order,t.join,t.from,e),t.from&&s&&(n=Rn(n,t.order,t.from,e,t.join).sub);let l=t.from&&Hu(t.select,t.join,t.from,e)?t.from:void 0,u=Bu(t.order,t.select,t.join,t.from,e);return n=xt(n,u,l,e,t.from),t.limit!==void 0&&(n=n.limit(t.limit)),t.offset!==void 0&&(n=n.offset(t.offset)),n}function gy(t,e,r){if(!e)return t;let n=new Set;if(r){for(let s of r)if(typeof s!="string")for(let i of Object.keys(s))n.add(i);}for(let[s,i]of Object.entries(e)){if(!i.on||n.has(s))continue;let o=i.from||s,a=i.type==="left"?"leftJoin":"innerJoin";t=t[a](`${o} as ${s}`,l=>rf(l,i.on));}return t}function rf(t,e){for(let[r,n]of Object.entries(e))if(r==="$and")for(let s of n)t=rf(t,s);else {let s=n;for(let[i,o]of Object.entries(s)){let a=fi[i];if(!a)throw new Error(`Unsupported join operator: ${i}`);li(o)?t=t.onRef(r,a,o.$ref):t=t.on(r,a,o);}}return t}function yy(t,e,r){let n=r.insertInto(t.from);if(t.values){let s=ka(t.values,e,t.schema,t.from,{applyDefaults:true});n=n.values(s);}return n=Tn(n,t.select),n}function by(t,e,r){let n=r.updateTable(t.from);if(t.values){let s=ka(t.values,e,t.schema,t.from);n=n.set(s);}return t.limit!==void 0||t.offset!==void 0?n=nf(n,t,e,r):n=$n(n,t.where??{},e,t.from,t.schema),n=Tn(n,t.select),n}function wy(t,e,r){let n=r.deleteFrom(t.from);return t.limit!==void 0||t.offset!==void 0?n=nf(n,t,e,r):n=$n(n,t.where??{},e,t.from,t.schema),n=Tn(n,t.select),n}function nf(t,e,r,n){let i=r.introspection?.primary_keys.find(l=>l.table===e.from)?.columns??[],o=n.selectFrom(e.from),a=r.rowIdColumn;if(i.length>0)for(let l of i)o=o.select(l);else o=o.select(sql.ref(a).as("__rowid"));if(o=$n(o,e.where??{},r,e.from,e.schema),o=xt(o,e.order,void 0,r,e.from),e.limit!==void 0&&(o=o.limit(e.limit)),e.offset!==void 0&&(o=o.offset(e.offset)),i.length===1)return t.where(i[0],"in",o);if(i.length>1){let l="__ltd_target",u=n.selectFrom(o.as(l)).select(sql`1`.as("_"));for(let f of i)u=u.whereRef(`${l}.${f}`,"=",`${e.from}.${f}`);return t.where(f=>f.exists(u))}else return t.where(sql.ref(a),"in",o)}function Sy(t,e,r){let n=t.values,s=ka(n,e,t.schema,t.from,{applyDefaults:true}),i=r.insertInto(t.from).values(s);return t.onConflict&&(i=i.onConflict(o=>{let a=t.onConflict.length===1?o.column(t.onConflict[0]):o.columns(t.onConflict);if(t.ignoreDuplicates)return a.doNothing();let l=Array.isArray(s)?s[0]:s,u=Object.keys(l).filter(f=>!t.onConflict.includes(f));return u.length===0?a.doUpdateSet({[t.onConflict[0]]:sql.ref(`excluded.${t.onConflict[0]}`)}):a.doUpdateSet(f=>{let c={};for(let d of u)c[d]=f.ref(`excluded.${d}`);return c})})),i=Tn(i,t.select),i}function Ey(t,e,r){let n=t.function;_t(n,"RPC function name");let s;if(t.args&&!Array.isArray(t.args)&&Object.keys(t.args).length>0){let a=Object.entries(t.args).map(([l,u])=>(_t(l,"RPC param key"),sql`${sql.raw(l)} := ${u}`));s=sql`${sql.raw(n)}(${sql.join(a)})`;}else if(Array.isArray(t.args)&&t.args.length>0){let o=t.args.map(a=>sql`${a}`);s=sql`${sql.raw(n)}(${sql.join(o)})`;}else s=sql`${sql.raw(n)}()`;let i=r.selectFrom(s.as(n));return i=gi(i,t.select,e),i=$n(i,t.where??{},e,t.from,t.schema),i=xt(i,t.order,void 0,e,t.from),t.limit!==void 0&&(i=i.limit(t.limit)),t.offset!==void 0&&(i=i.offset(t.offset)),i}var ky=new Kysely({dialect:{createAdapter:()=>new PostgresAdapter,createDriver:()=>new DummyDriver,createIntrospector:t=>new PostgresIntrospector(t),createQueryCompiler:()=>new PostgresQueryCompiler}}),$y={$ilike:(t,e,r)=>sql`${k(e)} ilike ${r}`,$regex:(t,e,r)=>sql`${k(e)} ~ ${r}`,$iregex:(t,e,r)=>sql`${k(e)} ~* ${r}`,$contains:(t,e,r)=>sql`${k(e)} @> ${r}`,$containedBy:(t,e,r)=>sql`${k(e)} <@ ${r}`,$overlaps:(t,e,r)=>sql`${k(e)} && ${r}`,$rangeLt:(t,e,r)=>sql`${k(e)} << ${r}`,$rangeGt:(t,e,r)=>sql`${k(e)} >> ${r}`,$rangeGte:(t,e,r)=>sql`${k(e)} &> ${r}`,$rangeLte:(t,e,r)=>sql`${k(e)} &< ${r}`,$rangeAdjacent:(t,e,r)=>sql`${k(e)} -|- ${r}`,$textSearch:(t,e,r)=>{let n=r,s=n.config||"english",i="to_tsquery";return n.type==="plain"?i="plainto_tsquery":n.type==="phrase"?i="phraseto_tsquery":n.type==="websearch"&&(i="websearch_to_tsquery"),sql`${k(e)} @@ ${sql.raw(i)}(${sql.literal(s)}, ${n.query})`},$eqAny:(t,e,r)=>sql`${k(e)} = any(${r})`,$neqAny:(t,e,r)=>sql`${k(e)} != any(${r})`,$gtAny:(t,e,r)=>sql`${k(e)} > any(${r})`,$gteAny:(t,e,r)=>sql`${k(e)} >= any(${r})`,$ltAny:(t,e,r)=>sql`${k(e)} < any(${r})`,$lteAny:(t,e,r)=>sql`${k(e)} <= any(${r})`,$likeAny:(t,e,r)=>sql`${k(e)} like any(${r})`,$ilikeAny:(t,e,r)=>sql`${k(e)} ilike any(${r})`,$eqAll:(t,e,r)=>sql`${k(e)} = all(${r})`,$neqAll:(t,e,r)=>sql`${k(e)} != all(${r})`,$gtAll:(t,e,r)=>sql`${k(e)} > all(${r})`,$gteAll:(t,e,r)=>sql`${k(e)} >= all(${r})`,$ltAll:(t,e,r)=>sql`${k(e)} < all(${r})`,$lteAll:(t,e,r)=>sql`${k(e)} <= all(${r})`,$likeAll:(t,e,r)=>sql`${k(e)} like all(${r})`,$ilikeAll:(t,e,r)=>sql`${k(e)} ilike all(${r})`,$regexAny:(t,e,r)=>sql`${k(e)} ~ any(${r})`,$iregexAny:(t,e,r)=>sql`${k(e)} ~* any(${r})`,$regexAll:(t,e,r)=>sql`${k(e)} ~ all(${r})`,$iregexAll:(t,e,r)=>sql`${k(e)} ~* all(${r})`};function Oy(t,e){let r=e.replace(/^\$\./,"").split(".");if(r.length===0)return sql.ref(t);let n=r.map((s,i)=>{let o=i===r.length-1?"->>":"->",a=/^-?\d+$/.test(s);return a||Nr(s,"JSON path key"),a?`${o}${s}`:`${o}'${s}'`}).join("");return sql`${sql.ref(t)}${sql.raw(n)}`}function Py(t,e="value",r=false){let n=sql.ref(e);return sql`(select coalesce(json_agg(${n}), '[]'::json) from ${t} as _agg)`}var sf={db:ky,operators:{...ui,...$y},jsonArrayFrom:jsonArrayFrom$1,jsonObjectFrom:jsonObjectFrom$1,jsonScalarArrayFrom:Py,jsonPath:Oy,rowIdColumn:"ctid"};var My=new Kysely({dialect:{createAdapter:()=>new SqliteAdapter,createDriver:()=>new DummyDriver,createIntrospector:t=>new SqliteIntrospector(t),createQueryCompiler:()=>new SqliteQueryCompiler}});function By(t,e){let r=e.replace(/^\$\./,"").split(".");if(r.length===0)return sql.ref(t);let n=r.map((s,i)=>{let o=i===r.length-1?"->>":"->",a=/^-?\d+$/.test(s);return a||Nr(s,"JSON path key"),a?`${o}${s}`:`${o}'${s}'`}).join("");return sql`${sql.ref(t)}${sql.raw(n)}`}function qy(t,e){let r=k(t);if(e.length===0)return sql`${r} is not null`;let n=sql.join(e.map(s=>sql`${s}`));return sql`${r} is not null and (select count(distinct value) from json_each(${r}) where value in (${n})) = ${sql.lit(e.length)}`}function Jy(t,e){let r=k(t),n=Object.keys(e);if(n.length===0)return sql`${r} is not null`;let s=n.map(i=>(Nr(i,"JSON object key"),sql`json_extract(${r}, ${sql.raw(`'$.${i}'`)}) = ${e[i]}`));return sql`${r} is not null and ${sql.join(s,sql` and `)}`}function wi(t,e,r,n){if(!Array.isArray(e))throw new Error(`$${r}${n} on sqlite requires an array value`);if(e.length===0)return n==="any"?sql`false`:sql`true`;let s=k(t),i=r==="ilike"?sql`lower(${s})`:s,o=e.map(a=>r==="ilike"?sql`${i} like lower(${a})`:sql`${i} like ${a}`);return sql`(${sql.join(o,n==="any"?sql` or `:sql` and `)})`}var Ky={$ilike:(t,e,r)=>sql`lower(${k(e)}) like lower(${r})`,$likeAny:(t,e,r)=>wi(e,r,"like","any"),$ilikeAny:(t,e,r)=>wi(e,r,"ilike","any"),$likeAll:(t,e,r)=>wi(e,r,"like","all"),$ilikeAll:(t,e,r)=>wi(e,r,"ilike","all"),$contains:(t,e,r)=>{if(Array.isArray(r))return qy(e,r);if(r!==null&&typeof r=="object")return Jy(e,r);throw new Error("$contains on sqlite requires an array or object value")},$containedBy:(t,e,r)=>{if(!Array.isArray(r))throw new Error("$containedBy on sqlite requires an array value");let n=k(e);if(r.length===0)return sql`${n} is not null and not exists (select 1 from json_each(${n}))`;let s=sql.join(r.map(i=>sql`${i}`));return sql`${n} is not null and not exists (select 1 from json_each(${n}) where value not in (${s}))`},$overlaps:(t,e,r)=>{if(!Array.isArray(r))throw new Error("$overlaps on sqlite requires an array value");let n=k(e);if(r.length===0)return sql`1 = 0`;let s=sql.join(r.map(i=>sql`${i}`));return sql`${n} is not null and exists (select 1 from json_each(${n}) where value in (${s}))`}};function Wy(t,e="value",r=false){let n=sql.ref(e),s=r?sql`json_group_array(json(${n}))`:sql`json_group_array(${n})`;return sql`(select coalesce(${s}, json('[]')) from ${t} as _agg)`}var of={db:My,operators:{...ui,...Ky},jsonArrayFrom:jsonArrayFrom,jsonObjectFrom:jsonObjectFrom,jsonScalarArrayFrom:Wy,jsonPath:By,rowIdColumn:"rowid"};function Hy(t){switch(t){case "postgres":return sf;case "sqlite":return of;default:throw new Error(`Unsupported dialect: ${t}`)}}function de(t,e="postgres",r){let n=Hy(e),s=r&&"introspection"in r?r:{db:r,introspection:void 0};return tf(t,{...n,dialect:e,db:s.db??n.db,introspection:s.introspection,schema:s.schema})}var We=fc(cf());function MC(t){return ["string","number","boolean"].includes(typeof t)}function BC(t){return [true,false,0,1].includes(t)}function qC(t){return typeof t=="string"}function KC(...t){return e=>t.reduce((r,n)=>n(r),e)}function WC(...t){return e=>e.map(r=>t.reduce((n,s)=>s(n),r))}function uf(t){return Object.prototype.toString.call(t)==="[object Object]"}function ff(t){return t!==null&&typeof t=="object"}function zC(t,e){let r={};for(let n in t)t[n]!==e[n]&&(r[n]=e[n]);return r}function _i(t,e,r=void 0){let n=typeof e=="string"?e.split(/[.[\]"]+/).filter(s=>s):e;if(n.length===0)return t;try{let[s,...i]=n;return !s||!(s in t)?r:_i(t[s],i,r)}catch{if(typeof r<"u")return r;throw new Error(`Invalid path: ${n.join(".")}`)}}function Qy(t,e,r){let n=e;if(typeof n=="string"){let o=a=>a[0]==='"'&&a.at(-1)==='"';n=n.split(/[.[\]]+/).filter(a=>a).map(a=>Number.isNaN(Number(a))?a:Number(a)).map(a=>typeof a=="string"&&o(a)?a.slice(1,-1):a);}if(n.length===0)throw new Error("The path must have at least one entry in it");let[s,...i]=n;return i.length===0?(t[s]=r,t):(s in t||(t[s]=typeof i[0]=="number"?[]:{}),Qy(t[s],i,r),t)}function GC(t,e){return e.reduce((r,n)=>(n in t&&(r[n]=t[n]),r),{})}function VC(t,e){let r=new Set(e),n={};for(let[s,i]of Object.entries(t))r.has(s)||(n[s]=i);return n}function Xy(t,...e){for(let r of e)for(let[n,s]of Object.entries(r))s!==void 0&&(!uf(s)&&!Array.isArray(s)||Array.isArray(s)&&!Array.isArray(t[n])?t[n]=s:ff(t[n])?Xy(t[n],s):t[n]=s);return t}function Yy(t,e,r){for(let[n,s]of Object.entries(e)){let i=r(t[n],s,n,t,e);if(i!==void 0){t[n]=i;continue}s!==void 0&&(!uf(s)&&!Array.isArray(s)||Array.isArray(s)&&!Array.isArray(t[n])?t[n]=s:ff(t[n])?Yy(t[n],s,r):t[n]=s);}return t}function Oa(t,e){let r=s=>{if(s!==Object(s))return "primitive";if(Array.isArray(s))return "array";if(s instanceof Map)return "map";if(s!=null&&[null,Object.prototype].includes(Object.getPrototypeOf(s)))return "plainObject";if(s instanceof Function)return "function";throw new Error(`deeply comparing an instance of type ${t.constructor?.name} is not supported.`)},n=r(t);if(n!==r(e))return false;if(n==="primitive")return t===e||Number.isNaN(t)&&Number.isNaN(e);if(n==="array")return t.length===e.length&&t.every((s,i)=>Oa(s,e[i]));if(n==="map")return t.size===e.size&&[...t].every(([s,i])=>e.has(s)&&Oa(i,e.get(s)));if(n==="plainObject"){let s=new Map(Object.entries(t)),i=new Map(Object.entries(e));return s.size===i.size&&[...s].every(([o,a])=>i.has(o)&&Oa(a,i.get(o)))}else {if(n==="function")return t.toString()===e.toString();throw new Error("Unreachable")}}function QC(...t){let[e,r,n]=t;return JSON.stringify(e,(s,i)=>typeof i=="bigint"?Number.parseInt(i.toString(),10):i instanceof Map?Object.fromEntries(i.entries()):i instanceof Set?Array.from(i):r&&typeof r=="function"?r(s,i):i,n)}function YC(t){let e=t instanceof Request?new URL(t.url).searchParams:t;return Object.fromEntries(e.entries())}function ZC(t,e){let r=t instanceof Request?new URL(t.url).searchParams:t,n={};for(let[s,i]of r.entries())e(s,i)&&(n[s]=i);return n}function t0(){try{return !Zy()&&global?.process?.release?.name==="node"}catch{return false}}function Zy(){try{return typeof Bun<"u"}catch{return false}}function r0(t,e){if(!t)throw new Error(e)}function n0(t,e){try{return t(),!1}catch(r){if(e){if(r instanceof e)return true;throw r}return true}}async function s0(t,e){try{return await t,!1}catch(r){if(e){if(r instanceof e)return true;throw r}return true}}function i0(t,e){try{return t()}catch{return e}}async function o0(t,e){let r=performance.now();await t();let n=performance.now();e(n-r);}var a0={Map:t=>t instanceof Map?t:new Map(typeof t=="object"&&t!==null?Object.entries(t):[]),Set:t=>t instanceof Set?t:new Set(Array.isArray(t)?t:[]),Array:t=>Array.isArray(t)?t:["string","number","boolean"].includes(typeof t)?[t]:[]};function On(t,e={}){return t.split(`
71
69
  `).map(r=>r.trim()).filter(r=>r.length>0).filter(r=>!r.startsWith(e.comments??"--")).join(`
72
- `)}function N_(s,e=true){return (e?js(s):s).split(";").filter(Boolean)}function I_(s){let e=[],r="",t=0,n=s.length,i=a=>{bE(a).length>0&&e.push(a.trim());};for(;t<n;){let a=s[t],o=s[t+1];if(a==="-"&&o==="-"){for(;t<n&&s[t]!==`
73
- `;)r+=s[t],t++;continue}if(a==="/"&&o==="*"){for(r+="/*",t+=2;t<n&&!(s[t]==="*"&&s[t+1]==="/");)r+=s[t],t++;t<n&&(r+="*/",t+=2);continue}if(a==="'"){for(r+=a,t++;t<n;){if(s[t]==="'"&&s[t+1]==="'"){r+="''",t+=2;continue}if(r+=s[t],s[t]==="'"){t++;break}t++;}continue}if(a==='"'){for(r+=a,t++;t<n;){if(s[t]==='"'&&s[t+1]==='"'){r+='""',t+=2;continue}if(r+=s[t],s[t]==='"'){t++;break}t++;}continue}if(a==="$"){let l=s.indexOf("$",t+1);if(l!==-1){let u=s.slice(t,l+1);if(/^\$[A-Za-z_][A-Za-z0-9_]*\$$|^\$\$$/.test(u)){r+=u,t=l+1;let c=s.indexOf(u,t);c===-1?(r+=s.slice(t),t=n):(r+=s.slice(t,c+u.length),t=c+u.length);continue}}}if(a===";"){i(r),r="",t++;continue}r+=a,t++;}return i(r),e}function bE(s){let e="",r=0,t=s.length;for(;r<t;){let n=s[r],i=s[r+1];if(n==="-"&&i==="-"){for(;r<t&&s[r]!==`
74
- `;)r++;continue}if(n==="/"&&i==="*"){for(r+=2;r<t&&!(s[r]==="*"&&s[r+1]==="/");)r++;r+=2;continue}e+=n,r++;}return e.trim()}function Jo(s){return (s??"").trim().toLowerCase()}function Wo(s){return (s??"").replace(/\s+/g," ").replace(/"/g,"").trim().toLowerCase()}function Ho(s){if(s==null)return null;let e=s.trim();for(;e.startsWith("(")&&e.endsWith(")");)e=e.slice(1,-1).trim();return (e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"'))&&(e=e.slice(1,-1)),e}function $_(s=10,e={}){let a="abcdefghijklmnopqrstuvwxyz"+(e.uppercase?"ABCDEFGHIJKLMNOPQRSTUVWXYZ":"")+(e.numbers?"0123456789":"")+(e.special?"!@#$%^&*()_+{}:\"<>?|[];',./`~":""),o="";for(let l=0;l<s;l++)o+=a[Math.floor(Math.random()*a.length)];return o}function P_(s,e){if(typeof s!="string"){if(e?.panic)throw new Error("Email must be a string");return false}if(!E.string({format:"email"}).validate(s).valid){if(e?.panic)throw new Error("Invalid email");return false}if(e?.domains?.length&&!e.domains.includes(s.split("@")[1])){if(e?.panic)throw new Error("Email domain not allowed");return false}return true}function D_(s,{panic:e=true,length:r=8,numbers:t=0,special:n=0}={}){try{if(typeof s!="string"){if(e)throw new Error("Password must be a string");return !1}if(s.length<r){if(e)throw new Error(`Password must be at least ${r} characters long`);return !1}if((s.match(/[0-9]/g)?.length??0)<t){if(e)throw new Error(`Password must contain at least ${t} numbers`);return !1}if((s.match(/[!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?]/g)?.length??0)<n){if(e)throw new Error(`Password must contain at least ${n} special characters`);return !1}return !0}catch(i){if(e)throw i;return false}}function j_(s){return !s||s.length===0?s:s.charAt(0).toUpperCase()+s.slice(1)}function x_(s,e=" "){return !s||s.length===0?s:s.split(e).map(r=>r.charAt(0).toUpperCase()+r.slice(1)).join(e)}function U_(s){return !s||s.length===0?s:s.split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" ")}function TE(s){return String(s).normalize("NFKD").replace(/[\u0300-\u036f]/g,"")}function B_(s){return TE(s).trim().toLowerCase().replace(/[^a-z0-9 -]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-")}function M_(s,e=50,r="..."){return s.length<=e?s:s.substring(0,e)+r}function $(s,e='"'){return `${e}${s}${e}`}function ki(s,e,r){if(e instanceof RegExp)return e.test(s);if(typeof e=="string")switch(!r&&e.startsWith("/")&&(r="regex"),r){case "regex":return new RegExp(e).test(s);case "sql":return new RegExp(e.replace("%",".*").replace("_",".")).test(s);case "wildcard":return new RegExp(e.replace("*",".*")).test(s);default:return s.includes(e)}return false}function F_(s,e,r=/\{\{([\w-]+)\}\}/g){return s.replace(r,(t,n)=>n in e?e[n]:t)}function Rp(s,e,r=.33){if(e.length===0)return null;let t=Ap(s),n=[];for(let l of e){let u=wE(t,Ap(l));u>.1&&n.push([l,u]);}n.sort((l,u)=>u[1]-l[1]);let i=n.slice(0,50),a=null,o=r;for(let[l]of i){let u=Math.max(s.length,l.length),p=u===0?1:1-CE(s.toLowerCase(),l.toLowerCase())/u;p>o&&(o=p,a=l);}return a}function Ap(s,e=2){let r=new Map,t=`-${s.toLowerCase()}-`;for(let n=0;n<=t.length-e;n++){let i=t.slice(n,n+e);r.set(i,(r.get(i)||0)+1);}return r}function wE(s,e){let r=0,t=0,n=0;for(let[i,a]of s){t+=a*a;let o=e.get(i);o!==void 0&&(r+=a*o);}for(let[,i]of e)n+=i*i;return t===0||n===0?0:r/(Math.sqrt(t)*Math.sqrt(n))}function CE(s,e){let r=s.length,t=e.length,n=Array.from({length:t+1},(i,a)=>a);for(let i=1;i<=r;i++){let a=n[0];n[0]=i;for(let o=1;o<=t;o++){let l=n[o];n[o]=s[i-1]===e[o-1]?a:1+Math.min(a,n[o],n[o-1]),a=l;}}return n[t]}function J_(s){return typeof s=="number"?s:Number.parseInt(String(s),10)}function H_(){return crypto.randomUUID()}var xs=class extends Error{constructor(r,t){super(`Could not find the table '${[r,t].filter(Boolean).join(".")}' in the schema cache`);this.schema=r;this.relation=t;}},Go=class{constructor(e){this.config=e;}kysely;introspection;async translateDdl(e){return e}async clearSchemaCache(){this.introspection=void 0,await this.deleteCachedIntrospection();}async readCachedIntrospection(e){if(typeof this.introspection=="object"&&e?.useCache===true)return this.introspection;if(e?.useCache!==true||!this.config.schemaCache)return;let r=await this.config.schemaCache.get(this.schemaCacheKey());if(r)try{return this.introspection=JSON.parse(r),this.introspection}catch{await this.deleteCachedIntrospection();return}}async writeCachedIntrospection(e,r){this.introspection=e,r?.useDriver===true&&await this.config.schemaCache?.set(this.schemaCacheKey(),JSON.stringify(e));}async deleteCachedIntrospection(){await this.config.schemaCache?.delete(this.schemaCacheKey());}schemaCacheKey(){return ["@supabase/lite","schema-cache",this.dialect,this.config.introspection?.name??"",this.config.url??""].join(":")}async exec(e,...r){try{return sql(e,...r??[]).execute(this.kysely)}catch(t){throw console.error(t),new Error(`Failed to execute query: ${e}`)}}async ping(){try{let e=await this.exec("SELECT 1");return e&&Array.isArray(e.rows)&&e.rows.length===1}catch{return false}}async transaction(e,r){throw new Error("This Connection does not support transactions")}createMigrator(e){throw new Error("This Connection does not support migrations")}async onPostgrestAST(e,r){return e}deserializeRow(e){return e}normalizeDbError(e){return e}async withContext(e,r,t){return r(this.kysely)}};var $i=class extends Error{constructor(r){super(`new row violates row-level security policy for table "${r.data.table}"`);this.policy=r;this.name="PolicyViolation";}};var hr=class extends Error{constructor(r,t,n,i){super(`check constraint "${n}" violated for ${r}.${t}`);this.table=r;this.column=t;this.constraint=n;this.value=i;this.name="CheckConstraintError";}};function k(s,e,r,t,n){let i=JSON.stringify({code:e,details:t,hint:n,message:r}),a=new TextEncoder().encode(i);return new Response(a,{status:s,headers:{"Content-Type":"application/json; charset=utf-8","Content-Length":String(a.byteLength)}})}function Ze(s){return k(s.status,s.code,s.message,s.details??null,s.hint??null)}var dr=new TextEncoder,vt=new TextDecoder;function Pi(...s){let e=s.reduce((n,{length:i})=>n+i,0),r=new Uint8Array(e),t=0;for(let n of s)r.set(n,t),t+=n.length;return r}function Yt(s){let e=new Uint8Array(s.length);for(let r=0;r<s.length;r++){let t=s.charCodeAt(r);if(t>127)throw new TypeError("non-ASCII string encountered in encode()");e[r]=t;}return e}function _p(s){if(Uint8Array.prototype.toBase64)return s.toBase64();let e=32768,r=[];for(let t=0;t<s.length;t+=e)r.push(String.fromCharCode.apply(null,s.subarray(t,t+e)));return btoa(r.join(""))}function vp(s){if(Uint8Array.fromBase64)return Uint8Array.fromBase64(s);let e=atob(s),r=new Uint8Array(e.length);for(let t=0;t<e.length;t++)r[t]=e.charCodeAt(t);return r}function Ur(s){if(Uint8Array.fromBase64)return Uint8Array.fromBase64(typeof s=="string"?s:vt.decode(s),{alphabet:"base64url"});let e=s;e instanceof Uint8Array&&(e=vt.decode(e)),e=e.replace(/-/g,"+").replace(/_/g,"/");try{return vp(e)}catch{throw new TypeError("The input to be decoded is not correctly encoded.")}}function Di(s){let e=s;return typeof e=="string"&&(e=dr.encode(e)),Uint8Array.prototype.toBase64?e.toBase64({alphabet:"base64url",omitPadding:true}):_p(e).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}var Nt={};Fn(Nt,{JOSEAlgNotAllowed:()=>Us,JOSEError:()=>de,JOSENotSupported:()=>Me,JWEDecryptionFailed:()=>Vo,JWEInvalid:()=>Ko,JWKInvalid:()=>Yo,JWKSInvalid:()=>zo,JWKSMultipleMatchingKeys:()=>Qo,JWKSNoMatchingKey:()=>Xo,JWKSTimeout:()=>Zo,JWSInvalid:()=>Y,JWSSignatureVerificationFailed:()=>Bs,JWTClaimValidationFailed:()=>$e,JWTExpired:()=>Br,JWTInvalid:()=>Ot});var de=class extends Error{static code="ERR_JOSE_GENERIC";code="ERR_JOSE_GENERIC";constructor(e,r){super(e,r),this.name=this.constructor.name,Error.captureStackTrace?.(this,this.constructor);}},$e=class extends de{static code="ERR_JWT_CLAIM_VALIDATION_FAILED";code="ERR_JWT_CLAIM_VALIDATION_FAILED";claim;reason;payload;constructor(e,r,t="unspecified",n="unspecified"){super(e,{cause:{claim:t,reason:n,payload:r}}),this.claim=t,this.reason=n,this.payload=r;}},Br=class extends de{static code="ERR_JWT_EXPIRED";code="ERR_JWT_EXPIRED";claim;reason;payload;constructor(e,r,t="unspecified",n="unspecified"){super(e,{cause:{claim:t,reason:n,payload:r}}),this.claim=t,this.reason=n,this.payload=r;}},Us=class extends de{static code="ERR_JOSE_ALG_NOT_ALLOWED";code="ERR_JOSE_ALG_NOT_ALLOWED"},Me=class extends de{static code="ERR_JOSE_NOT_SUPPORTED";code="ERR_JOSE_NOT_SUPPORTED"},Vo=class extends de{static code="ERR_JWE_DECRYPTION_FAILED";code="ERR_JWE_DECRYPTION_FAILED";constructor(e="decryption operation failed",r){super(e,r);}},Ko=class extends de{static code="ERR_JWE_INVALID";code="ERR_JWE_INVALID"},Y=class extends de{static code="ERR_JWS_INVALID";code="ERR_JWS_INVALID"},Ot=class extends de{static code="ERR_JWT_INVALID";code="ERR_JWT_INVALID"},Yo=class extends de{static code="ERR_JWK_INVALID";code="ERR_JWK_INVALID"},zo=class extends de{static code="ERR_JWKS_INVALID";code="ERR_JWKS_INVALID"},Xo=class extends de{static code="ERR_JWKS_NO_MATCHING_KEY";code="ERR_JWKS_NO_MATCHING_KEY";constructor(e="no applicable key found in the JSON Web Key Set",r){super(e,r);}},Qo=class extends de{[Symbol.asyncIterator];static code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";constructor(e="multiple matching keys found in the JSON Web Key Set",r){super(e,r);}},Zo=class extends de{static code="ERR_JWKS_TIMEOUT";code="ERR_JWKS_TIMEOUT";constructor(e="request timed out",r){super(e,r);}},Bs=class extends de{static code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";constructor(e="signature verification failed",r){super(e,r);}};var ut=(s,e="algorithm.name")=>new TypeError(`CryptoKey does not support this operation, its ${e} must be ${s}`),Mr=(s,e)=>s.name===e;function el(s){return parseInt(s.name.slice(4),10)}function RE(s){switch(s){case "ES256":return "P-256";case "ES384":return "P-384";case "ES512":return "P-521";default:throw new Error("unreachable")}}function _E(s,e){if(e&&!s.usages.includes(e))throw new TypeError(`CryptoKey does not support this operation, its usages must include ${e}.`)}function Op(s,e,r){switch(e){case "HS256":case "HS384":case "HS512":{if(!Mr(s.algorithm,"HMAC"))throw ut("HMAC");let t=parseInt(e.slice(2),10);if(el(s.algorithm.hash)!==t)throw ut(`SHA-${t}`,"algorithm.hash");break}case "RS256":case "RS384":case "RS512":{if(!Mr(s.algorithm,"RSASSA-PKCS1-v1_5"))throw ut("RSASSA-PKCS1-v1_5");let t=parseInt(e.slice(2),10);if(el(s.algorithm.hash)!==t)throw ut(`SHA-${t}`,"algorithm.hash");break}case "PS256":case "PS384":case "PS512":{if(!Mr(s.algorithm,"RSA-PSS"))throw ut("RSA-PSS");let t=parseInt(e.slice(2),10);if(el(s.algorithm.hash)!==t)throw ut(`SHA-${t}`,"algorithm.hash");break}case "Ed25519":case "EdDSA":{if(!Mr(s.algorithm,"Ed25519"))throw ut("Ed25519");break}case "ML-DSA-44":case "ML-DSA-65":case "ML-DSA-87":{if(!Mr(s.algorithm,e))throw ut(e);break}case "ES256":case "ES384":case "ES512":{if(!Mr(s.algorithm,"ECDSA"))throw ut("ECDSA");let t=RE(e);if(s.algorithm.namedCurve!==t)throw ut(t,"algorithm.namedCurve");break}default:throw new TypeError("CryptoKey does not support this operation")}_E(s,r);}function Np(s,e,...r){if(r=r.filter(Boolean),r.length>2){let t=r.pop();s+=`one of type ${r.join(", ")}, or ${t}.`;}else r.length===2?s+=`one of type ${r[0]} or ${r[1]}.`:s+=`of type ${r[0]}.`;return e==null?s+=` Received ${e}`:typeof e=="function"&&e.name?s+=` Received function ${e.name}`:typeof e=="object"&&e!=null&&e.constructor?.name&&(s+=` Received an instance of ${e.constructor.name}`),s}var Ip=(s,...e)=>Np("Key must be ",s,...e),tl=(s,e,...r)=>Np(`Key for the ${s} algorithm must be `,e,...r);var rl=s=>{if(s?.[Symbol.toStringTag]==="CryptoKey")return true;try{return s instanceof CryptoKey}catch{return false}},sl=s=>s?.[Symbol.toStringTag]==="KeyObject",nl=s=>rl(s)||sl(s);function ji(...s){let e=s.filter(Boolean);if(e.length===0||e.length===1)return true;let r;for(let t of e){let n=Object.keys(t);if(!r||r.size===0){r=new Set(n);continue}for(let i of n){if(r.has(i))return false;r.add(i);}}return true}var vE=s=>typeof s=="object"&&s!==null;function zt(s){if(!vE(s)||Object.prototype.toString.call(s)!=="[object Object]")return false;if(Object.getPrototypeOf(s)===null)return true;let e=s;for(;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(s)===e}function xi(s,e){if(s.startsWith("RS")||s.startsWith("PS")){let{modulusLength:r}=e.algorithm;if(typeof r!="number"||r<2048)throw new TypeError(`${s} requires key modulusLength to be 2048 bits or larger`)}}function OE(s){let e,r;switch(s.kty){case "AKP":{switch(s.alg){case "ML-DSA-44":case "ML-DSA-65":case "ML-DSA-87":e={name:s.alg},r=s.priv?["sign"]:["verify"];break;default:throw new Me('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break}case "RSA":{switch(s.alg){case "PS256":case "PS384":case "PS512":e={name:"RSA-PSS",hash:`SHA-${s.alg.slice(-3)}`},r=s.d?["sign"]:["verify"];break;case "RS256":case "RS384":case "RS512":e={name:"RSASSA-PKCS1-v1_5",hash:`SHA-${s.alg.slice(-3)}`},r=s.d?["sign"]:["verify"];break;case "RSA-OAEP":case "RSA-OAEP-256":case "RSA-OAEP-384":case "RSA-OAEP-512":e={name:"RSA-OAEP",hash:`SHA-${parseInt(s.alg.slice(-3),10)||1}`},r=s.d?["decrypt","unwrapKey"]:["encrypt","wrapKey"];break;default:throw new Me('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break}case "EC":{switch(s.alg){case "ES256":e={name:"ECDSA",namedCurve:"P-256"},r=s.d?["sign"]:["verify"];break;case "ES384":e={name:"ECDSA",namedCurve:"P-384"},r=s.d?["sign"]:["verify"];break;case "ES512":e={name:"ECDSA",namedCurve:"P-521"},r=s.d?["sign"]:["verify"];break;case "ECDH-ES":case "ECDH-ES+A128KW":case "ECDH-ES+A192KW":case "ECDH-ES+A256KW":e={name:"ECDH",namedCurve:s.crv},r=s.d?["deriveBits"]:[];break;default:throw new Me('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break}case "OKP":{switch(s.alg){case "Ed25519":case "EdDSA":e={name:"Ed25519"},r=s.d?["sign"]:["verify"];break;case "ECDH-ES":case "ECDH-ES+A128KW":case "ECDH-ES+A192KW":case "ECDH-ES+A256KW":e={name:s.crv},r=s.d?["deriveBits"]:[];break;default:throw new Me('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break}default:throw new Me('Invalid or unsupported JWK "kty" (Key Type) Parameter value')}return {algorithm:e,keyUsages:r}}async function Lp(s){if(!s.alg)throw new TypeError('"alg" argument is required when "jwk.alg" is not present');let{algorithm:e,keyUsages:r}=OE(s),t={...s};return t.kty!=="AKP"&&delete t.alg,delete t.use,crypto.subtle.importKey("jwk",t,e,s.ext??!(s.d||s.priv),s.key_ops??r)}function Ui(s,e,r,t,n){if(n.crit!==void 0&&t?.crit===void 0)throw new s('"crit" (Critical) Header Parameter MUST be integrity protected');if(!t||t.crit===void 0)return new Set;if(!Array.isArray(t.crit)||t.crit.length===0||t.crit.some(a=>typeof a!="string"||a.length===0))throw new s('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');let i;r!==void 0?i=new Map([...Object.entries(r),...e.entries()]):i=e;for(let a of t.crit){if(!i.has(a))throw new Me(`Extension Header Parameter "${a}" is not recognized`);if(n[a]===void 0)throw new s(`Extension Header Parameter "${a}" is missing`);if(i.get(a)&&t[a]===void 0)throw new s(`Extension Header Parameter "${a}" MUST be integrity protected`)}return new Set(t.crit)}function kp(s,e){if(e!==void 0&&(!Array.isArray(e)||e.some(r=>typeof r!="string")))throw new TypeError(`"${s}" option must be an array of strings`);if(e)return new Set(e)}var Ms=s=>zt(s)&&typeof s.kty=="string",$p=s=>s.kty!=="oct"&&(s.kty==="AKP"&&typeof s.priv=="string"||typeof s.d=="string"),Pp=s=>s.kty!=="oct"&&s.d===void 0&&s.priv===void 0,Dp=s=>s.kty==="oct"&&typeof s.k=="string";var Fr,jp=async(s,e,r,t=false)=>{Fr||=new WeakMap;let n=Fr.get(s);if(n?.[r])return n[r];let i=await Lp({...e,alg:r});return t&&Object.freeze(s),n?n[r]=i:Fr.set(s,{[r]:i}),i},IE=(s,e)=>{Fr||=new WeakMap;let r=Fr.get(s);if(r?.[e])return r[e];let t=s.type==="public",n=!!t,i;if(s.asymmetricKeyType==="x25519"){switch(e){case "ECDH-ES":case "ECDH-ES+A128KW":case "ECDH-ES+A192KW":case "ECDH-ES+A256KW":break;default:throw new TypeError("given KeyObject instance cannot be used for this algorithm")}i=s.toCryptoKey(s.asymmetricKeyType,n,t?[]:["deriveBits"]);}if(s.asymmetricKeyType==="ed25519"){if(e!=="EdDSA"&&e!=="Ed25519")throw new TypeError("given KeyObject instance cannot be used for this algorithm");i=s.toCryptoKey(s.asymmetricKeyType,n,[t?"verify":"sign"]);}switch(s.asymmetricKeyType){case "ml-dsa-44":case "ml-dsa-65":case "ml-dsa-87":{if(e!==s.asymmetricKeyType.toUpperCase())throw new TypeError("given KeyObject instance cannot be used for this algorithm");i=s.toCryptoKey(s.asymmetricKeyType,n,[t?"verify":"sign"]);}}if(s.asymmetricKeyType==="rsa"){let a;switch(e){case "RSA-OAEP":a="SHA-1";break;case "RS256":case "PS256":case "RSA-OAEP-256":a="SHA-256";break;case "RS384":case "PS384":case "RSA-OAEP-384":a="SHA-384";break;case "RS512":case "PS512":case "RSA-OAEP-512":a="SHA-512";break;default:throw new TypeError("given KeyObject instance cannot be used for this algorithm")}if(e.startsWith("RSA-OAEP"))return s.toCryptoKey({name:"RSA-OAEP",hash:a},n,t?["encrypt"]:["decrypt"]);i=s.toCryptoKey({name:e.startsWith("PS")?"RSA-PSS":"RSASSA-PKCS1-v1_5",hash:a},n,[t?"verify":"sign"]);}if(s.asymmetricKeyType==="ec"){let o=new Map([["prime256v1","P-256"],["secp384r1","P-384"],["secp521r1","P-521"]]).get(s.asymmetricKeyDetails?.namedCurve);if(!o)throw new TypeError("given KeyObject instance cannot be used for this algorithm");e==="ES256"&&o==="P-256"&&(i=s.toCryptoKey({name:"ECDSA",namedCurve:o},n,[t?"verify":"sign"])),e==="ES384"&&o==="P-384"&&(i=s.toCryptoKey({name:"ECDSA",namedCurve:o},n,[t?"verify":"sign"])),e==="ES512"&&o==="P-521"&&(i=s.toCryptoKey({name:"ECDSA",namedCurve:o},n,[t?"verify":"sign"])),e.startsWith("ECDH-ES")&&(i=s.toCryptoKey({name:"ECDH",namedCurve:o},n,t?[]:["deriveBits"]));}if(!i)throw new TypeError("given KeyObject instance cannot be used for this algorithm");return r?r[e]=i:Fr.set(s,{[e]:i}),i};async function Bi(s,e){if(s instanceof Uint8Array||rl(s))return s;if(sl(s)){if(s.type==="secret")return s.export();if("toCryptoKey"in s&&typeof s.toCryptoKey=="function")try{return IE(s,e)}catch(t){if(t instanceof TypeError)throw t}let r=s.export({format:"jwk"});return jp(s,r,e)}if(Ms(s))return s.k?Ur(s.k):jp(s,s,e,true);throw new Error("unreachable")}var qr=s=>s?.[Symbol.toStringTag],il=(s,e,r)=>{if(e.use!==void 0){let t;switch(r){case "sign":case "verify":t="sig";break;case "encrypt":case "decrypt":t="enc";break}if(e.use!==t)throw new TypeError(`Invalid key for this operation, its "use" must be "${t}" when present`)}if(e.alg!==void 0&&e.alg!==s)throw new TypeError(`Invalid key for this operation, its "alg" must be "${s}" when present`);if(Array.isArray(e.key_ops)){let t;switch(true){case(r==="sign"||r==="verify"):case s==="dir":case s.includes("CBC-HS"):t=r;break;case s.startsWith("PBES2"):t="deriveBits";break;case /^A\d{3}(?:GCM)?(?:KW)?$/.test(s):!s.includes("GCM")&&s.endsWith("KW")?t=r==="encrypt"?"wrapKey":"unwrapKey":t=r;break;case(r==="encrypt"&&s.startsWith("RSA")):t="wrapKey";break;case r==="decrypt":t=s.startsWith("RSA")?"unwrapKey":"deriveBits";break}if(t&&e.key_ops?.includes?.(t)===false)throw new TypeError(`Invalid key for this operation, its "key_ops" must include "${t}" when present`)}return true},LE=(s,e,r)=>{if(!(e instanceof Uint8Array)){if(Ms(e)){if(Dp(e)&&il(s,e,r))return;throw new TypeError('JSON Web Key for symmetric algorithms must have JWK "kty" (Key Type) equal to "oct" and the JWK "k" (Key Value) present')}if(!nl(e))throw new TypeError(tl(s,e,"CryptoKey","KeyObject","JSON Web Key","Uint8Array"));if(e.type!=="secret")throw new TypeError(`${qr(e)} instances for symmetric algorithms must be of type "secret"`)}},kE=(s,e,r)=>{if(Ms(e))switch(r){case "decrypt":case "sign":if($p(e)&&il(s,e,r))return;throw new TypeError("JSON Web Key for this operation must be a private JWK");case "encrypt":case "verify":if(Pp(e)&&il(s,e,r))return;throw new TypeError("JSON Web Key for this operation must be a public JWK")}if(!nl(e))throw new TypeError(tl(s,e,"CryptoKey","KeyObject","JSON Web Key"));if(e.type==="secret")throw new TypeError(`${qr(e)} instances for asymmetric algorithms must not be of type "secret"`);if(e.type==="public")switch(r){case "sign":throw new TypeError(`${qr(e)} instances for asymmetric algorithm signing must be of type "private"`);case "decrypt":throw new TypeError(`${qr(e)} instances for asymmetric algorithm decryption must be of type "private"`)}if(e.type==="private")switch(r){case "verify":throw new TypeError(`${qr(e)} instances for asymmetric algorithm verifying must be of type "public"`);case "encrypt":throw new TypeError(`${qr(e)} instances for asymmetric algorithm encryption must be of type "public"`)}};function Mi(s,e,r){switch(s.substring(0,2)){case "A1":case "A2":case "di":case "HS":case "PB":LE(s,e,r);break;default:kE(s,e,r);}}function Fi(s,e){let r=`SHA-${s.slice(-3)}`;switch(s){case "HS256":case "HS384":case "HS512":return {hash:r,name:"HMAC"};case "PS256":case "PS384":case "PS512":return {hash:r,name:"RSA-PSS",saltLength:parseInt(s.slice(-3),10)>>3};case "RS256":case "RS384":case "RS512":return {hash:r,name:"RSASSA-PKCS1-v1_5"};case "ES256":case "ES384":case "ES512":return {hash:r,name:"ECDSA",namedCurve:e.namedCurve};case "Ed25519":case "EdDSA":return {name:"Ed25519"};case "ML-DSA-44":case "ML-DSA-65":case "ML-DSA-87":return {name:s};default:throw new Me(`alg ${s} is not supported either by JOSE or your javascript runtime`)}}async function qi(s,e,r){if(e instanceof Uint8Array){if(!s.startsWith("HS"))throw new TypeError(Ip(e,"CryptoKey","KeyObject","JSON Web Key"));return crypto.subtle.importKey("raw",e,{hash:`SHA-${s.slice(-3)}`,name:"HMAC"},false,[r])}return Op(e,s,r),e}async function xp(s,e,r,t){let n=await qi(s,e,"verify");xi(s,n);let i=Fi(s,n.algorithm);try{return await crypto.subtle.verify(i,n,r,t)}catch{return false}}async function Up(s,e,r){if(!zt(s))throw new Y("Flattened JWS must be an object");if(s.protected===void 0&&s.header===void 0)throw new Y('Flattened JWS must have either of the "protected" or "header" members');if(s.protected!==void 0&&typeof s.protected!="string")throw new Y("JWS Protected Header incorrect type");if(s.payload===void 0)throw new Y("JWS Payload missing");if(typeof s.signature!="string")throw new Y("JWS Signature missing or incorrect type");if(s.header!==void 0&&!zt(s.header))throw new Y("JWS Unprotected Header incorrect type");let t={};if(s.protected)try{let b=Ur(s.protected);t=JSON.parse(vt.decode(b));}catch{throw new Y("JWS Protected Header is invalid")}if(!ji(t,s.header))throw new Y("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let n={...t,...s.header},i=Ui(Y,new Map([["b64",true]]),r?.crit,t,n),a=true;if(i.has("b64")&&(a=t.b64,typeof a!="boolean"))throw new Y('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:o}=n;if(typeof o!="string"||!o)throw new Y('JWS "alg" (Algorithm) Header Parameter missing or invalid');let l=r&&kp("algorithms",r.algorithms);if(l&&!l.has(o))throw new Us('"alg" (Algorithm) Header Parameter value not allowed');if(a){if(typeof s.payload!="string")throw new Y("JWS Payload must be a string")}else if(typeof s.payload!="string"&&!(s.payload instanceof Uint8Array))throw new Y("JWS Payload must be a string or an Uint8Array instance");let u=false;typeof e=="function"&&(e=await e(t,s),u=true),Mi(o,e,"verify");let p=Pi(s.protected!==void 0?Yt(s.protected):new Uint8Array,Yt("."),typeof s.payload=="string"?a?Yt(s.payload):dr.encode(s.payload):s.payload),c;try{c=Ur(s.signature);}catch{throw new Y("Failed to base64url decode the signature")}let f=await Bi(e,o);if(!await xp(o,f,c,p))throw new Bs;let d;if(a)try{d=Ur(s.payload);}catch{throw new Y("Failed to base64url decode the payload")}else typeof s.payload=="string"?d=dr.encode(s.payload):d=s.payload;let g={payload:d};return s.protected!==void 0&&(g.protectedHeader=t),s.header!==void 0&&(g.unprotectedHeader=s.header),u?{...g,key:f}:g}async function Bp(s,e,r){if(s instanceof Uint8Array&&(s=vt.decode(s)),typeof s!="string")throw new Y("Compact JWS must be a string or Uint8Array");let{0:t,1:n,2:i,length:a}=s.split(".");if(a!==3)throw new Y("Invalid Compact JWS");let o=await Up({payload:n,protected:t,signature:i},e,r),l={payload:o.payload,protectedHeader:o.protectedHeader};return typeof e=="function"?{...l,key:o.key}:l}var Xt=s=>Math.floor(s.getTime()/1e3),Fp=60,qp=Fp*60,al=qp*24,$E=al*7,PE=al*365.25,DE=/^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i;function Fs(s){let e=DE.exec(s);if(!e||e[4]&&e[1])throw new TypeError("Invalid time period format");let r=parseFloat(e[2]),t=e[3].toLowerCase(),n;switch(t){case "sec":case "secs":case "second":case "seconds":case "s":n=Math.round(r);break;case "minute":case "minutes":case "min":case "mins":case "m":n=Math.round(r*Fp);break;case "hour":case "hours":case "hr":case "hrs":case "h":n=Math.round(r*qp);break;case "day":case "days":case "d":n=Math.round(r*al);break;case "week":case "weeks":case "w":n=Math.round(r*$E);break;default:n=Math.round(r*PE);break}return e[1]==="-"||e[4]==="ago"?-n:n}function gr(s,e){if(!Number.isFinite(e))throw new TypeError(`Invalid ${s} input`);return e}var Mp=s=>s.includes("/")?s.toLowerCase():`application/${s.toLowerCase()}`,jE=(s,e)=>typeof s=="string"?e.includes(s):Array.isArray(s)?e.some(Set.prototype.has.bind(new Set(s))):false;function Jp(s,e,r={}){let t;try{t=JSON.parse(vt.decode(e));}catch{}if(!zt(t))throw new Ot("JWT Claims Set must be a top-level JSON object");let{typ:n}=r;if(n&&(typeof s.typ!="string"||Mp(s.typ)!==Mp(n)))throw new $e('unexpected "typ" JWT header value',t,"typ","check_failed");let{requiredClaims:i=[],issuer:a,subject:o,audience:l,maxTokenAge:u}=r,p=[...i];u!==void 0&&p.push("iat"),l!==void 0&&p.push("aud"),o!==void 0&&p.push("sub"),a!==void 0&&p.push("iss");for(let d of new Set(p.reverse()))if(!(d in t))throw new $e(`missing required "${d}" claim`,t,d,"missing");if(a&&!(Array.isArray(a)?a:[a]).includes(t.iss))throw new $e('unexpected "iss" claim value',t,"iss","check_failed");if(o&&t.sub!==o)throw new $e('unexpected "sub" claim value',t,"sub","check_failed");if(l&&!jE(t.aud,typeof l=="string"?[l]:l))throw new $e('unexpected "aud" claim value',t,"aud","check_failed");let c;switch(typeof r.clockTolerance){case "string":c=Fs(r.clockTolerance);break;case "number":c=r.clockTolerance;break;case "undefined":c=0;break;default:throw new TypeError("Invalid clockTolerance option type")}let{currentDate:f}=r,m=Xt(f||new Date);if((t.iat!==void 0||u)&&typeof t.iat!="number")throw new $e('"iat" claim must be a number',t,"iat","invalid");if(t.nbf!==void 0){if(typeof t.nbf!="number")throw new $e('"nbf" claim must be a number',t,"nbf","invalid");if(t.nbf>m+c)throw new $e('"nbf" claim timestamp check failed',t,"nbf","check_failed")}if(t.exp!==void 0){if(typeof t.exp!="number")throw new $e('"exp" claim must be a number',t,"exp","invalid");if(t.exp<=m-c)throw new Br('"exp" claim timestamp check failed',t,"exp","check_failed")}if(u){let d=m-t.iat,g=typeof u=="number"?u:Fs(u);if(d-c>g)throw new Br('"iat" claim timestamp check failed (too far in the past)',t,"iat","check_failed");if(d<0-c)throw new $e('"iat" claim timestamp check failed (it should be in the past)',t,"iat","check_failed")}return t}var Ji=class{#e;constructor(e){if(!zt(e))throw new TypeError("JWT Claims Set MUST be an object");this.#e=structuredClone(e);}data(){return dr.encode(JSON.stringify(this.#e))}get iss(){return this.#e.iss}set iss(e){this.#e.iss=e;}get sub(){return this.#e.sub}set sub(e){this.#e.sub=e;}get aud(){return this.#e.aud}set aud(e){this.#e.aud=e;}set jti(e){this.#e.jti=e;}set nbf(e){typeof e=="number"?this.#e.nbf=gr("setNotBefore",e):e instanceof Date?this.#e.nbf=gr("setNotBefore",Xt(e)):this.#e.nbf=Xt(new Date)+Fs(e);}set exp(e){typeof e=="number"?this.#e.exp=gr("setExpirationTime",e):e instanceof Date?this.#e.exp=gr("setExpirationTime",Xt(e)):this.#e.exp=Xt(new Date)+Fs(e);}set iat(e){e===void 0?this.#e.iat=Xt(new Date):e instanceof Date?this.#e.iat=gr("setIssuedAt",Xt(e)):typeof e=="string"?this.#e.iat=gr("setIssuedAt",Xt(new Date)+Fs(e)):this.#e.iat=gr("setIssuedAt",e);}};async function yr(s,e,r){let t=await Bp(s,e,r);if(t.protectedHeader.crit?.includes("b64")&&t.protectedHeader.b64===false)throw new Ot("JWTs MUST NOT use unencoded payload");let i={payload:Jp(t.protectedHeader,t.payload,r),protectedHeader:t.protectedHeader};return typeof e=="function"?{...i,key:t.key}:i}async function Wp(s,e,r){let t=await qi(s,e,"sign");xi(s,t);let n=await crypto.subtle.sign(Fi(s,t.algorithm),t,r);return new Uint8Array(n)}var Wi=class{#e;#t;#r;constructor(e){if(!(e instanceof Uint8Array))throw new TypeError("payload must be an instance of Uint8Array");this.#e=e;}setProtectedHeader(e){if(this.#t)throw new TypeError("setProtectedHeader can only be called once");return this.#t=e,this}setUnprotectedHeader(e){if(this.#r)throw new TypeError("setUnprotectedHeader can only be called once");return this.#r=e,this}async sign(e,r){if(!this.#t&&!this.#r)throw new Y("either setProtectedHeader or setUnprotectedHeader must be called before #sign()");if(!ji(this.#t,this.#r))throw new Y("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let t={...this.#t,...this.#r},n=Ui(Y,new Map([["b64",true]]),r?.crit,this.#t,t),i=true;if(n.has("b64")&&(i=this.#t.b64,typeof i!="boolean"))throw new Y('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:a}=t;if(typeof a!="string"||!a)throw new Y('JWS "alg" (Algorithm) Header Parameter missing or invalid');Mi(a,e,"sign");let o,l;i?(o=Di(this.#e),l=Yt(o)):(l=this.#e,o="");let u,p;this.#t?(u=Di(JSON.stringify(this.#t)),p=Yt(u)):(u="",p=new Uint8Array);let c=Pi(p,Yt("."),l),f=await Bi(e,a),m=await Wp(a,f,c),d={signature:Di(m),payload:o};return this.#r&&(d.header=this.#r),this.#t&&(d.protected=u),d}};var Hi=class{#e;constructor(e){this.#e=new Wi(e);}setProtectedHeader(e){return this.#e.setProtectedHeader(e),this}async sign(e,r){let t=await this.#e.sign(e,r);if(t.payload===void 0)throw new TypeError("use the flattened module for creating JWS with b64: false");return `${t.protected}.${t.payload}.${t.signature}`}};var Er=class{#e;#t;constructor(e={}){this.#t=new Ji(e);}setIssuer(e){return this.#t.iss=e,this}setSubject(e){return this.#t.sub=e,this}setAudience(e){return this.#t.aud=e,this}setJti(e){return this.#t.jti=e,this}setNotBefore(e){return this.#t.nbf=e,this}setExpirationTime(e){return this.#t.exp=e,this}setIssuedAt(e){return this.#t.iat=e,this}setProtectedHeader(e){return this.#e=e,this}async sign(e,r){let t=new Hi(this.#t.data());if(t.setProtectedHeader(this.#e),Array.isArray(this.#e?.crit)&&this.#e.crit.includes("b64")&&this.#e.b64===false)throw new Ot("JWTs MUST NOT use unencoded payload");return t.sign(e,r)}};async function Hp(s,e){if(!s||!s.startsWith("Bearer "))return e.anonymousEnabled?{kind:"ok",payload:null}:{kind:"error",response:Ze({status:401,code:"PGRST302",message:"Anonymous access is disabled"})};let r=s.slice(7).trim(),t=r.split(".");if(t.length!==3||t.some(n=>n.length===0))return e.anonymousEnabled?{kind:"ok",payload:null}:{kind:"error",response:Ze({status:401,code:"PGRST301",message:`Expected 3 parts in JWT; got ${Math.max(1,t.filter(n=>n.length>0).length)}`})};if(!e.jwtSecret)return {kind:"error",response:Ze({status:500,code:"PGRST300",message:"Server lacks JWT secret"})};try{let n=new TextEncoder().encode(e.jwtSecret),{payload:i}=await yr(r,n,{algorithms:["HS256"]});return typeof i.iat=="number"&&i.iat>Math.floor(Date.now()/1e3)?{kind:"error",response:Ze({status:401,code:"PGRST303",message:"JWT issued at future"})}:{kind:"ok",payload:i}}catch(n){return n instanceof Nt.JWTExpired?{kind:"error",response:Ze({status:401,code:"PGRST303",message:"JWT expired"})}:{kind:"error",response:Ze({status:401,code:"PGRST301",message:"No suitable key or wrong key type",details:"None of the keys was able to decode the JWT"})}}}function Gi(s,e,r,t){return !r||!e?.from?s:s.map(n=>ol(n,e.select,e.from,e.schema,e.join,r,t))}function ol(s,e,r,t,n,i,a){let o=i.get(`${t??a}.${r}`),l=UE(e,n),u={};for(let[p,c]of Object.entries(s)){let f=l.get(p);if(f&&"embed"in f){let g=f.embed;u[p]=xE(c,g,t,i,a);continue}let m=f?.sourceColumn??p,d=o?.get(m);u[p]=d?d.deserialize(c):c;}return u}function xE(s,e,r,t,n){return Array.isArray(s)?s.map(i=>i&&typeof i=="object"?ol(i,e.select,e.table,r,e.join,t,n):i):s&&typeof s=="object"?ol(s,e.select,e.table,r,e.join,t,n):s}function UE(s,e){let r=new Map;if(!s)return r;for(let t of s){if(typeof t=="string"){if(t==="*")continue;r.set(t,{sourceColumn:t});continue}if(!(!t||typeof t!="object"))for(let[n,i]of Object.entries(t))if(BE(i)){let a=e?.[n]?.from??n;r.set(n,{embed:{table:a,select:i.select,join:i.join}});}else {let a=i;if(a.cast||a.path||a.aggregate)continue;r.set(n,{sourceColumn:a.column??n});}}return r}function BE(s){return s!=null&&typeof s=="object"&&("select"in s||"where"in s||"order"in s||"limit"in s||"offset"in s||"spread"in s||"join"in s)}var qs=Symbol.for("lite-internal-request");function It(s){return JSON.stringify(s,(e,r)=>typeof r=="bigint"?Number.parseInt(r.toString(),10):r)}var Gp=/application\/vnd\.pgrst\.plan(?:\+(json|text))?/i;function Vp(s){let e=s.match(Gp);if(!e)return null;let r=e[1]?.toLowerCase()==="json"?"json":"text",t=s.match(/;\s*options=([^;]+)/i),n=t?`; options=${t[1].trim()}`:"";return {format:r,optionsSegment:n}}function Kp(s){return Gp.test(s)}function Yp(s){return /;\s*nulls\s*=\s*stripped/i.test(s)}function Sr(s){if(Array.isArray(s))return s.map(e=>Sr(e));if(s!==null&&typeof s=="object"){let e={};for(let[r,t]of Object.entries(s))t!==null&&(e[r]=Sr(t));return e}return s}function pl(s,e){if(!e||e.length===0)return s;let r=(t,n)=>{for(let i of e){if(i.embed)continue;let a=t[i.column],o=n[i.column],l=a==null,u=o==null;if(l&&u)continue;if(l)return i.nullsFirst?-1:1;if(u)return i.nullsFirst?1:-1;let p;if(typeof a=="number"&&typeof o=="number"?p=a-o:p=String(a).localeCompare(String(o)),p!==0)return i.direction==="desc"?-p:p}return 0};return [...s].sort(r)}function zp(s,e){return !e||e.length===0?s:s.map(r=>fl(r,e))}function Xp(s,e){if(!e||e.length===0)return s;let r=ME(e);return r.size===0?s:s.map(t=>{if(!Ws(t))return t;let n={...t};for(let i of r){let a=n[i];a!==null&&typeof a=="object"&&(n[i]=JSON.stringify(a));}return n})}function Qp(s,e){return !e||e.length===0?s:s.map(r=>ll(r,e))}function Zp(s,e){return !e||e.length===0?s:s.map(r=>ul(r,e))}function ef(s,e){return !e||e.length===0?s:s.map(r=>cl(r,e))}function ME(s){let e=new Set;for(let r of s){if(typeof r=="string")continue;let[t,n]=Object.entries(r)[0]??[];if(!t||!n)continue;let i=n;i.path&&i.pathText&&!tf(i.cast)&&e.add(t);}return e}function tf(s){let e=s?.trim().toLowerCase();return e==="json"||e==="jsonb"}function fl(s,e){if(Array.isArray(s))return s.map(t=>fl(t,e));if(!Ws(s))return s;let r={...s};for(let t of e){if(typeof t=="string")continue;let[n,i]=Object.entries(t)[0]??[];!n||!i||!Vi(i)||n in r&&(r[n]=qE(r[n],i.select));}return r}function ll(s,e){if(Array.isArray(s))return s.map(t=>ll(t,e));if(!Ws(s))return s;let r={...s};for(let t of e){if(typeof t=="string")continue;let[n,i]=Object.entries(t)[0]??[];if(!n||!i)continue;if(Vi(i)){n in r&&i.select&&(r[n]=ll(r[n],i.select));continue}let a=i;a.aggregate==="avg"&&a.cast!=="text"&&n in r&&(r[n]=FE(r[n]));}return r}function ul(s,e){if(Array.isArray(s))return s.map(t=>ul(t,e));if(!Ws(s))return s;let r={...s};for(let t of e){if(typeof t=="string")continue;let[n,i]=Object.entries(t)[0]??[];if(!n||!i)continue;if(Vi(i)){n in r&&i.select&&(r[n]=ul(r[n],i.select));continue}tf(i.cast)&&n in r&&(r[n]=rf(r[n]));}return r}function cl(s,e){if(Array.isArray(s))return s.map(t=>cl(t,e));if(!Ws(s))return s;let r={...s};for(let t of e){if(typeof t=="string")continue;let[n,i]=Object.entries(t)[0]??[];if(!n||!i)continue;if(Vi(i)){n in r&&i.select&&(r[n]=cl(r[n],i.select));continue}let a=i;a.path&&!a.pathText&&n in r&&(r[n]=rf(r[n]));}return r}function FE(s){if(typeof s!="string")return s;let e=s.trim();if(!/^[+-]?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?$/i.test(e))return s;let r=Number(e);return !Number.isFinite(r)||e.replace(/^[+-]/,"").replace(/e[+-]?\d+$/i,"").replace(".","").replace(/^0+/,"").replace(/0+$/,"").length>15?s:r}function qE(s,e){let r=JE(s);return !e||e.length===0?r:fl(r,e)}function JE(s){if(typeof s!="string")return s;let e=s[0];if(e!=="["&&e!=="{")return s;try{return JSON.parse(s)}catch{return s}}function rf(s){if(typeof s!="string")return s;try{return JSON.parse(s)}catch{return s}}function Ws(s){return s!==null&&typeof s=="object"&&!Array.isArray(s)}function Vi(s){return s!==null&&typeof s=="object"&&("select"in s||"spread"in s||"join"in s)}var WE=new Set(["*/*","application/*","application/json","application/vnd.pgrst.object","application/vnd.pgrst.object+json","application/vnd.pgrst.array","application/vnd.pgrst.array+json","application/octet-stream","text/csv"]);function sf(s){let e=Vp(s);return e?`application/vnd.pgrst.plan+${e.format}; for="application/json"${e.optionsSegment}`:s}function nf(s,e){let r=s.split(",").map(t=>t.split(";")[0].trim().toLowerCase()).filter(Boolean);if(r.length===0)return true;for(let t of r)if(WE.has(t)||e&&t.startsWith("application/vnd.pgrst.plan"))return true;return false}function af(s,e){let r=Vp(s)??{format:"text",optionsSegment:""},t=`application/vnd.pgrst.plan+${r.format}; for="application/json"${r.optionsSegment}; charset=utf-8`,n=r.format==="json"?It({sql:e.sql,parameters:[...e.parameters]}):e.sql;return new Response(n,{status:200,headers:{"Content-Type":t}})}function br(s,e,r){let t=s+e-1,n=r!==void 0?`${r}`:"*";return `${s}-${t}/${n}`}async function Js(s,e,r,t){let n=e.join&&Object.values(e.join).some(p=>p.type==="inner"),i=HE(e);if(n||i){let p={...e,type:"query",order:void 0,limit:void 0,offset:void 0},c=he(p,r,{db:s,introspection:t}),{sql:f,parameters:m}=c.compile(),d=`SELECT count(*) as __count FROM (${f}) AS __inner_count`,b=(await s.executeQuery({sql:d,parameters:m,query:{kind:"RawNode"}})).rows?.[0];return Number(b?.__count??0)}let a={...e,type:"query",select:[{__count:{aggregate:"count"}}],order:void 0,limit:void 0,offset:void 0,join:void 0},l=await he(a,r,{db:s,introspection:t}).execute(),u=Array.isArray(l)?l[0]:l;return Number(u?.__count??0)}async function of(s,e,r,t){if(e.$meta?.count!=="planned"&&e.$meta?.count!=="estimated"||r!=="postgres")return Js(s,e,r,t);let n={...e,type:"query",order:void 0,limit:void 0,offset:void 0},a=he(n,r,{db:s,introspection:t}).compile(),u=(await s.executeQuery({sql:`EXPLAIN (FORMAT JSON) ${a.sql}`,parameters:a.parameters,query:{kind:"RawNode"}})).rows?.[0]?.["QUERY PLAN"],p=Array.isArray(u)&&u[0]&&typeof u[0]=="object"?u[0].Plan:void 0,c=p&&typeof p=="object"?Number(p["Plan Rows"]):Number.NaN;return Number.isFinite(c)?c:Js(s,e,r,t)}function HE(s){if(s.type!=="query"||!s.where||!s.select)return false;let e=GE(s.select);return e.size===0?false:lf(s.where,e)}function lf(s,e){for(let[r,t]of Object.entries(s)){if((r==="$or"||r==="$and")&&Array.isArray(t)){if(t.some(i=>i&&typeof i=="object"&&lf(i,e)))return true;continue}if(!e.has(r)||!t||typeof t!="object")continue;let n=t;if(n.$is===null||n.$isNot===null)return true}return false}function GE(s){let e=new Set;for(let r of s){if(typeof r=="string")continue;let[t,n]=Object.entries(r)[0]??[];t&&n&&typeof n=="object"&&"select"in n&&e.add(t);}return e}var VE=/[",\n\r ]/;function uf(s){if(s==null)return "";let e;return typeof s=="string"?e=s:typeof s=="number"||typeof s=="boolean"?e=String(s):typeof s=="bigint"?e=s.toString():e=JSON.stringify(s),VE.test(e)?`"${e.replace(/"/g,'""')}"`:e}function Ki(s,e){let r=s.length>0?Object.keys(s[0]):[];if(r.length===0)return "";let t=[r.map(n=>uf(n)).join(",")];for(let n of s)t.push(r.map(i=>uf(n[i])).join(","));return t.join(`
75
- `)}function cf(s){return s.split(",").map(r=>r.split(";")[0].trim().toLowerCase()).includes("text/csv")}function mf(s,e){if(s.type!=="upsert"&&s.type!=="put")return {ast:s};if(s.type==="put"){if(s.limit!==void 0||s.offset!==void 0)return k(400,"PGRST114","limit/offset querystring parameters are not allowed for PUT",null,null);let t=pf(s,e),n=KE(s.where,t);if(!n)return k(405,"PGRST105","Filters must include all and only primary key columns with 'eq' operators",null,null);if(Array.isArray(s.values)&&s.values.length===0)return {ast:s,emptyPayload:true};if(!hl(s.values))return k(400,"PGRST102","Empty or invalid json",null,null);for(let i of t)if(!zE(s.values[i],n[i]))return k(400,"PGRST115","Payload values do not match URL in primary key column(s)",null,null);return s.onConflict=t,s.ignoreDuplicates=false,{ast:s,preflight:{mode:"put",conflictColumns:t}}}let r=s.onConflict?.length?s.onConflict:pf(s,e);return r.length===0?(s.onConflict=void 0,{ast:s}):(s.onConflict=r,{ast:s,appliedResolution:s.ignoreDuplicates?"ignore-duplicates":"merge-duplicates",preflight:s.ignoreDuplicates?void 0:{mode:"merge-duplicates",conflictColumns:r}})}function hf(s,e){let r=s.$meta,t={"Content-Type":"application/json; charset=utf-8"},n=ml(r,e.appliedResolution),i=r?.count==="exact"||r?.count==="planned"||r?.count==="estimated"?"*/0":"*/*";return r?.return==="representation"?(t["Content-Range"]=i,t["Content-Length"]="2",n&&(t["Preference-Applied"]=n),new Response("[]",{status:Lt(s,"representation",e.appliedResolution,false),headers:t})):(t["Content-Range"]=i,n&&(t["Preference-Applied"]=n),new Response(null,{status:Lt(s,"no-return",e.appliedResolution,false),headers:t}))}function pf(s,e){if(!s.from)return [];let r=s.schema??"public",t=e.primary_keys.find(n=>n.table===s.from&&n.schema===r);return t?t.columns:e.primary_keys.find(n=>n.table===s.from)?.columns??[]}function KE(s,e){if(!s||e.length===0)return null;let r=Object.keys(s);if(r.length!==e.length)return null;let t={};for(let n of r){if(n.startsWith("$")||!e.includes(n))return null;let i=YE(s[n]);if(!i.ok)return null;t[n]=i.value;}return t}function YE(s){if(!hl(s))return {ok:false};let e=Object.keys(s);return e.length!==1||e[0]!=="$eq"?{ok:false}:{ok:true,value:s.$eq}}function zE(s,e){return Object.is(s,e)?true:s!==null&&e!==null&&s!==void 0&&e!==void 0&&typeof s!="object"&&typeof e!="object"?String(s)===String(e):It(s)===It(e)}function ml(s,e){let r=[];return e&&r.push(`resolution=${e}`),s?.missing&&r.push(`missing=${s.missing}`),s?.return&&r.push(`return=${s.return}`),s?.count&&s.count!=="none"&&r.push(`count=${s.count}`),s?.tx&&r.push(`tx=${s.tx}`),r.length>0?r.join(", "):void 0}function Lt(s,e,r,t){switch(s.type){case "insert":return 201;case "upsert":return !r||r==="ignore-duplicates"?201:t===false?200:201;case "put":return e==="representation"?t?201:200:204;case "update":case "delete":return e==="representation"?200:204;default:return 200}}async function df(s,e,r,t,n){if(e.type==="insert")return true;if(!n.preflight||!e.from)return;if(n.preflight.mode==="put")return !await ff(s,e.from,e.schema,e.where??{},r,t);let i=Array.isArray(e.values)?e.values:e.values?[e.values]:[];for(let a of i){if(!hl(a))continue;let o=XE(n.preflight.conflictColumns,a);if(!o||!await ff(s,e.from,e.schema,o,r,t))return true}return false}function XE(s,e){let r={};for(let t of s){if(!(t in e))return;r[t]={$eq:e[t]};}return r}async function ff(s,e,r,t,n,i){return await Js(s,{type:"query",from:e,schema:r,where:t},n,i)>0}function hl(s){return s!==null&&typeof s=="object"&&!Array.isArray(s)}function yf(s){return s?.count==="exact"||s?.count==="planned"||s?.count==="estimated"}function gf(s,e,r){return yf(e)?`*/${r??0}`:s.type==="update"&&r!==0?br(0,r??1,void 0):"*/*"}function QE(s,e,r,t){return e&&(s.type==="insert"||s.type==="upsert"||s.type==="delete")?t!==void 0?`*/${t}`:"*/*":br(r,1,t)}function Ef(s){return "select"in s||"spread"in s||"join"in s}function Sf(s,e){if(s){for(let r of s)if(typeof r!="string")for(let t of Object.values(r))Ef(t)&&((t.limit===void 0||t.limit>e)&&(t.limit=e),Sf(t.select,e));}}function ZE(s){if(!s)return false;for(let e of s)if(typeof e!="string")for(let[r,t]of Object.entries(e)){if(Ef(t))return true;let n=t;if(n.path||n.cast||n.preCast||n.aggregate||(n.column??r)!==r)return true}return false}var eS={swagger:"2.0",info:{description:"",title:"standard public schema",version:"14.1"},basePath:"/",schemes:["https"],consumes:["application/json","application/vnd.pgrst.object+json;nulls=stripped","application/vnd.pgrst.object+json","text/csv"],produces:["application/json","application/vnd.pgrst.object+json;nulls=stripped","application/vnd.pgrst.object+json","text/csv"]},bf=s=>new be().all("/:relation",async e=>{let{app:r}=e.var,t=r.connection;if(!r.config.api?.enabled)return e.notFound();let n=e.req.param("relation"),i=await t.introspect({useCache:true});if(t.config.introspection?.exclude_tables?.some(f=>ki(n,f,"sql")))return e.notFound();if(!(qs in e.req.raw)){let f=await Hp(e.req.header("Authorization"),{jwtSecret:r.config.auth?.jwt_secret,anonymousEnabled:r.config.api?.anonymous_enabled!==false});if(f.kind==="error")return f.response;f.payload&&(e.set("userId",f.payload.sub),e.set("sessionId",f.payload.session_id),e.set("jwt",f.payload));}let{dialect:o}=t,l=t.config.translation?.deparse?.schema,u=e.var.jwt,p={auth:{uid:e.var.userId??null,role:u?.role||"anon",jwt:u??null}},c;try{if(c=await gi(e.req.raw,{basePath:"/rest/v1"}),c.schema){let R=new Set;for(let O of i.tables)O.schema&&R.add(O.schema);for(let O of i.views)O.schema&&R.add(O.schema);if(R.size>0&&R.add("public"),R.size>0&&!R.has(c.schema)){let O=[...R].sort().join(", ");return k(406,"PGRST106",`Invalid schema: ${c.schema}`,null,`Only the following schemas are exposed: ${O}`)}}if(c=await t.onPostgrestAST(c,p),s?.debug&&console.log(Ve.default.dim("[POSTGREST:AST]"),c),r.config.api?.aggregates_enabled!==!0&&Po(c.select))return k(400,"PGRST123","Use of aggregate functions is not allowed",null,null);let f=e.req.header("Accept")??"application/json",m=r.config.api?.plan_enabled===!0;if(!nf(f,m))return k(406,"PGRST107",`None of these media types are available: ${sf(f)}`,null,null);let d=Yp(f),g=cf(f),b=e.req.header("Prefer");if(b){let R=b.split(",").map(_=>_.trim()).filter(Boolean);if(R.find(_=>_.startsWith("handling="))==="handling=strict"){let _=R.filter(I=>!I.includes("="));if(_.length>0)return k(400,"PGRST122","Invalid preferences given with handling=strict",`Invalid preferences: ${_.join(", ")}`,null)}}if(t.dialect==="sqlite"&&c.from){let R=c.schema??"",O=i.tables.some(I=>I.name===c.from&&(I.schema??"")===R),_=i.views.some(I=>I.name===c.from&&(I.schema??"")===R);if(!O&&!_)throw new xs(c.schema,c.from)}let y=c.$meta,T=c.type==="update"||c.type==="delete"||c.type==="insert"||c.type==="upsert"||c.type==="put",C={ast:c};if(T&&y?.return!=="representation"&&(c.select=void 0),(c.type==="put"||c.type==="upsert")&&(c.limit!==void 0||c.offset!==void 0))return k(400,"PGRST114","limit/offset querystring parameters are not allowed for PUT",null,null);if((c.type==="update"||c.type==="delete"||c.type==="insert")&&r.config.api?.limited_mutations_enabled!==!0&&(c.limit=void 0,c.offset=void 0),r.config.api?.pg_safe_update&&T){let R=c.where&&Object.keys(c.where).length>0;if(c.type==="update"&&!R)return k(400,"21000","UPDATE requires a WHERE clause",null,null);if(c.type==="delete"&&!R)return k(400,"21000","DELETE requires a WHERE clause",null,null)}if(T&&(c.type==="insert"||c.type==="update"||c.type==="upsert"||c.type==="put")){if((c.type==="update"||c.type==="insert"||c.type==="upsert"||c.type==="put")&&(c.values===void 0||c.values===null))return k(400,"PGRST102","Empty or invalid json",null,null);if(c.type==="update"&&c.values&&typeof c.values=="object"&&!Array.isArray(c.values)&&Object.keys(c.values).length===0){let R=y?.return==="representation"?200:204,O={"Content-Type":"application/json; charset=utf-8","Content-Range":"*/*"};if(y?.return==="representation"){let _=new TextEncoder().encode("[]");return O["Content-Length"]=String(_.byteLength),O["Preference-Applied"]="return=representation",new Response(_,{status:R,headers:O})}return new Response(null,{status:R,headers:O})}if(c.type==="put"&&Array.isArray(c.values)&&(c.values.length===0?C.emptyPayload=!0:c.values=c.values[0]),Array.isArray(c.values)){if(y?.cardinality==="one"&&(c.type==="insert"||c.type==="upsert")&&c.values.length>1)return k(406,"PGRST116","Cannot coerce the result to a single JSON object",`The result contains ${c.values.length} rows`,null);if(c.values.length>0&&c.values.some(R=>typeof R!="object"||R===null||Array.isArray(R)))return y?.columns?k(400,"22023","argument of jsonb_to_recordset must be an array of objects",null,null):k(400,"PGRST102","All object keys must match",null,null);if(!y?.columns&&c.values.length>1){let R=Object.keys(c.values[0]).sort().join(",");for(let O=1;O<c.values.length;O++)if(Object.keys(c.values[O]).sort().join(",")!==R)return k(400,"PGRST102","All object keys must match",null,null)}}if(y?.columns&&c.from){let R=i.columns.filter(_=>_.table===c.from).map(_=>_.name);for(let _ of y.columns){if(_==="")return k(400,"PGRST100",'"failed to parse columns parameter ()" (line 1, column 1)',"unexpected end of input",null);if(!R.includes(_))return k(400,"PGRST204",`Could not find the '${_}' column of '${c.from}' in the schema cache`,null,null)}let O=new Set(y.columns);if(c.values)if(Array.isArray(c.values))c.values=c.values.map(_=>{let I={};for(let K of O)K in _&&(I[K]=_[K]);return I});else {let _={};for(let I of O)I in c.values&&(_[I]=c.values[I]);c.values=_;}}if(!y?.columns&&c.values&&c.from&&(c.type==="insert"||c.type==="update"||c.type==="upsert"||c.type==="put")){let R=i.columns.filter(O=>O.table===c.from).map(O=>O.name);if(R.length>0){let O=Array.isArray(c.values)?c.values.length>0?Object.keys(c.values[0]):[]:Object.keys(c.values);for(let _ of O)if(!R.includes(_))return k(400,"PGRST204",`Could not find the '${_}' column of '${c.from}' in the schema cache`,null,null)}}if(c.values&&c.from&&(c.type==="insert"||c.type==="update"||c.type==="upsert"||c.type==="put")){let R=c.schema??"public",O=new Set(i.columns.filter(_=>_.table===c.from&&(_.schema||"public")===R&&_.is_generated===!0).map(_=>_.name));if(O.size>0){let _=Array.isArray(c.values)?c.values:[c.values];for(let I of _)if(!(!I||typeof I!="object")){for(let K of Object.keys(I))if(O.has(K))return k(400,"428C9",`cannot insert a non-DEFAULT value into column "${K}"`,`Column "${K}" is a generated column.`,null)}}}}let w=mf(c,i);if(w instanceof Response)return w;if(C=w,c=C.ast,T&&((c.type==="insert"||c.type==="upsert")&&Array.isArray(c.values)&&c.values.length===0||C.emptyPayload))return y?.cardinality==="one"?k(406,"PGRST116","Cannot coerce the result to a single JSON object","The result contains 0 rows",null):hf(c,C);let A=e.req.method.toUpperCase(),v=e.req.header("Range");if(v&&(A==="GET"||A==="HEAD")){let R=v.match(/^(\d+)-(\d*)$/);if(R){let O=parseInt(R[1],10);if(R[2]!==""){let _=parseInt(R[2],10);if(O>_)return k(416,"PGRST103","Requested range not satisfiable","The lower boundary must be lower than or equal to the upper boundary in the Range header.",null);c.offset=O,c.limit=_-O+1;}else c.offset=O;}}if(c.limit!==void 0&&c.limit<0||c.limit===0&&c.offset!==void 0&&c.offset>0)return k(416,"PGRST103","Requested range not satisfiable","Limit should be greater than or equal to zero.",null);if(c.offset!==void 0&&c.offset<0&&(c.offset=0),!T){let R=r.config.api?.max_rows;R!==void 0&&R>0&&((c.limit===void 0||c.limit>R)&&(c.limit=R),Sf(c.select,R));}return await t.withContext(p,async R=>{let O=e.req.header("Accept")??"application/json";if(m&&Kp(O)){let W=he(c,o,{db:R,introspection:i,schema:l}).compile();return s?.debug&&console.info(Ve.default.dim(`[POSTGREST:PLAN] ${W.sql}
76
- - ${JSON.stringify([...W.parameters])}`)),af(O,W)}let _=T?await df(R,c,o,i,C):void 0,I=ml(y,C.appliedResolution);if(T&&y?.return==="minimal"){let oe={...c,select:void 0},W=he(oe,o,{db:R,introspection:i,schema:l}),{sql:Q,parameters:tt}=W.compile();s?.debug&&console.info(Ve.default.dim(`[POSTGREST:SQL] ${Q}
77
- - ${JSON.stringify([...tt])}`));let ee=await W.execute(),Oe=Array.isArray(ee)&&ee.length>0&&ee[0]&&typeof ee[0]=="object"&&("numUpdatedRows"in ee[0]||"numInsertedOrUpdatedRows"in ee[0]||"numDeletedRows"in ee[0])?ee[0]:void 0,Bt=Oe===void 0?void 0:Number(Oe.numUpdatedRows??Oe.numInsertedOrUpdatedRows??Oe.numDeletedRows??0),De=Lt(c,"no-return",C.appliedResolution,_),je={"Content-Range":gf(c,y,Bt)};return I&&(je["Preference-Applied"]=I),new Response(null,{status:De,headers:je})}if(T&&y?.return==="headers-only"){let W=i.primary_keys.find(De=>De.table===c.from)?.columns??[],Q={...c,select:W.length>0?W:void 0},tt=he(Q,o,{db:R,introspection:i,schema:l});if(s?.debug){let{sql:De,parameters:je}=tt.compile();console.info(Ve.default.dim(`[POSTGREST:SQL] ${De}
78
- - ${JSON.stringify([...je])}`));}let ee=await tt.execute(),Oe=Lt(c,"no-return",C.appliedResolution,_),Bt={"Content-Range":"*/*"};if(I&&(Bt["Preference-Applied"]=I),W.length>0&&Array.isArray(ee)&&ee.length>0){let De=ee[0],je=W.map(gt=>`${gt}=eq.${De[gt]}`).join("&");Bt.Location=`/${c.from}?${je}`;}return new Response(null,{status:Oe,headers:Bt})}if(T&&(c.type==="update"||c.type==="delete")&&(c.limit!==void 0||c.offset!==void 0)){let oe={...c,select:void 0},W=he(oe,o,{db:R,introspection:i,schema:l});if(s?.debug){let{sql:gt,parameters:Mt}=W.compile();console.info(Ve.default.dim(`[POSTGREST:SQL:LTD] ${gt}
79
- - ${JSON.stringify([...Mt])}`));}if(await W.execute(),y?.return==="representation"){let gt={...c,type:"query",values:void 0,limit:void 0,offset:void 0},Mt=he(gt,o,{db:R,introspection:i,schema:l});if(s?.debug){let{sql:nt,parameters:Bn}=Mt.compile();console.info(Ve.default.dim(`[POSTGREST:SQL:LTD-SEL] ${nt}
80
- - ${JSON.stringify([...Bn])}`));}let qe=await Mt.execute(),we=Array.isArray(qe)?qe:[];we=we.map(nt=>t.deserializeRow(nt)),we=Gi(we,c,l,"public");let rt=we.length,Je=[];y.return==="representation"&&Je.push("return=representation"),y.count&&Je.push(`count=${y.count}`),y.tx&&Je.push(`tx=${y.tx}`);let We=c.type==="delete"?"*/*":rt>0?br(0,rt,void 0):"*/*",st=d?Sr(we):we,ja=g?Ki(st):It(st),ps=new TextEncoder().encode(ja),yt={"Content-Type":g?"text/csv; charset=utf-8":d?"application/vnd.pgrst.array+json;nulls=stripped; charset=utf-8":"application/json; charset=utf-8","Content-Range":We,"Content-Length":String(ps.byteLength)};return Je.length>0&&(yt["Preference-Applied"]=Je.join(", ")),new Response(ps,{status:200,headers:yt})}let Q={...c,type:"query",select:[{__count:{aggregate:"count"}}],values:void 0,order:void 0,limit:void 0,offset:void 0},ee=await he(Q,o,{db:R,introspection:i,schema:l}).execute(),Oe=Number((Array.isArray(ee)?ee[0]:ee)?.__count??0),De={"Content-Range":Oe>0?br(0,Oe,void 0):"*/*"},je=[];return y?.count&&je.push(`count=${y.count}`),y?.tx&&je.push(`tx=${y.tx}`),je.length>0&&(De["Preference-Applied"]=je.join(", ")),new Response(null,{status:204,headers:De})}if(T&&y?.return==="representation"&&ZE(c.select)){let W=i.primary_keys.find(qe=>qe.table===c.from)?.columns??[],Q=[];if(c.type==="delete"){let qe={...c,type:"query",values:void 0},we=he(qe,o,{db:R,introspection:i,schema:l});if(s?.debug){let{sql:We,parameters:st}=we.compile();console.info(Ve.default.dim(`[POSTGREST:SQL:EMB-PRE] ${We}
81
- - ${JSON.stringify([...st])}`));}Q=await we.execute();let rt={...c,select:void 0},Je=he(rt,o,{db:R,introspection:i,schema:l});if(s?.debug){let{sql:We,parameters:st}=Je.compile();console.info(Ve.default.dim(`[POSTGREST:SQL:EMB-DEL] ${We}
82
- - ${JSON.stringify([...st])}`));}await Je.execute();}else {if(W.length===0)return k(500,"PGRSTXXX","Cannot return embedded data on a table without a primary key",null,null);let qe={...c,select:W},we=he(qe,o,{db:R,introspection:i,schema:l});if(s?.debug){let{sql:We,parameters:st}=we.compile();console.info(Ve.default.dim(`[POSTGREST:SQL:EMB-MUT] ${We}
83
- - ${JSON.stringify([...st])}`));}let rt=await we.execute(),Je=Array.isArray(rt)?rt:[];if(Je.length>0){let We;if(W.length===1){let yt=W[0];We={[yt]:{$in:Je.map(nt=>nt[yt])}};}else We={$or:Je.map(yt=>{let nt={};for(let Bn of W)nt[Bn]={$eq:yt[Bn]};return nt})};let st=c.where?{$and:[c.where,We]}:We,ja={...c,type:"query",values:void 0,where:st},ps=he(ja,o,{db:R,introspection:i,schema:l});if(s?.debug){let{sql:yt,parameters:nt}=ps.compile();console.info(Ve.default.dim(`[POSTGREST:SQL:EMB-SEL] ${yt}
84
- - ${JSON.stringify([...nt])}`));}Q=await ps.execute();}}Q=Q.map(qe=>t.deserializeRow(qe)),Q=Gi(Q,c,l,"public"),c.order&&c.order.length>0&&(Q=pl(Q,c.order));let tt=Lt(c,"representation",C.appliedResolution,_),ee=Q.length,Oe=["return=representation"];y?.count&&Oe.push(`count=${y.count}`),y?.tx&&Oe.push(`tx=${y.tx}`);let Bt=c.type==="delete"||c.type==="insert"||c.type==="upsert"?"*/*":ee>0?br(0,ee,void 0):"*/*",De=d?Sr(Q):Q,je=g?Ki(De):It(De),gt=new TextEncoder().encode(je),Mt={"Content-Type":g?"text/csv; charset=utf-8":d?"application/vnd.pgrst.array+json;nulls=stripped; charset=utf-8":"application/json; charset=utf-8","Content-Range":Bt,"Content-Length":String(gt.byteLength)};if(Oe.length>0&&(Mt["Preference-Applied"]=Oe.join(", ")),(c.type==="insert"||c.type==="upsert")&&W.length>0&&Q.length>0){let qe=Q[0],we=W.map(rt=>`${rt}=eq.${qe[rt]}`).join("&");Mt.Location=`/${c.from}?${we}`;}return new Response(gt,{status:tt,headers:Mt})}let ce=he(c,o,{db:R,introspection:i,schema:l}),{sql:Xe,parameters:jn}=ce.compile();s?.debug&&console.info(Ve.default.dim(`[POSTGREST:SQL] ${Xe}
85
- - ${JSON.stringify([...jn])}`));let dt=await ce.execute(),se,Cu=!1,us=0;if(T&&Array.isArray(dt)&&dt.length>0&&dt[0]&&typeof dt[0]=="object"&&("numUpdatedRows"in dt[0]||"numInsertedOrUpdatedRows"in dt[0]||"numDeletedRows"in dt[0])){Cu=!0;let oe=dt[0];us=Number(oe.numUpdatedRows??oe.numInsertedOrUpdatedRows??oe.numDeletedRows??0),se=[];}else se=dt;let $a=Array.isArray(se);$a&&(se=se.map(oe=>t.deserializeRow(oe)),se=Gi(se,c,l,"public"),se=zp(se,c.select),se=Qp(se,c.select),se=Zp(se,c.select),se=ef(se,c.select),t.dialect==="sqlite"&&(se=Xp(se,c.select))),T&&$a&&c.order&&c.order.length>0&&(se=pl(se,c.order));let Pa=$a?se:[],Ut=Pa.length,tr=c.offset??0;if(T&&Cu){if(y?.cardinality==="one"){if(us===0)return k(406,"PGRST116","Cannot coerce the result to a single JSON object","The result contains 0 rows",null);if(us>1)return k(406,"PGRST116","Cannot coerce the result to a single JSON object",`The result contains ${us} rows`,null)}let oe=Lt(c,"no-return",C.appliedResolution,_),W={"Content-Type":"application/json; charset=utf-8","Content-Range":gf(c,y,us)};return I&&(W["Preference-Applied"]=I),new Response(null,{status:oe,headers:W})}let Se;if(yf(y)&&(T?Se=Ut:Se=await of(R,c,o,i)),y?.cardinality==="one"){if(Ut===0)return k(406,"PGRST116","Cannot coerce the result to a single JSON object","The result contains 0 rows",null);if(Ut>1)return k(406,"PGRST116","Cannot coerce the result to a single JSON object",`The result contains ${Ut} rows`,null);let oe=200;T&&(oe=Lt(c,"representation",C.appliedResolution,_));let W=d?Sr(Pa[0]):Pa[0],Q=It(W),tt=new TextEncoder().encode(Q),ee={"Content-Type":d?"application/vnd.pgrst.object+json;nulls=stripped; charset=utf-8":"application/vnd.pgrst.object+json; charset=utf-8","Content-Range":QE(c,T,tr,Se),"Content-Length":String(tt.byteLength)};return I&&(ee["Preference-Applied"]=I),y?.head?new Response(null,{status:oe,headers:ee}):new Response(tt,{status:oe,headers:ee})}if(Se!==void 0&&tr>0&&Ut===0&&tr>=Se){let oe=JSON.stringify({code:"PGRST103",details:`An offset of ${tr} was requested, but there are only ${Se} rows.`,hint:null,message:"Requested range not satisfiable"}),W=new TextEncoder().encode(oe),Q={"Content-Type":"application/json; charset=utf-8","Content-Range":`*/${Se}`,"Content-Length":String(W.byteLength)};return I&&(Q["Preference-Applied"]=I),new Response(W,{status:416,headers:Q})}let cs;T&&(c.type==="insert"||c.type==="upsert"||c.type==="delete")?cs=Se!==void 0?`*/${Se}`:"*/*":T&&y?.return!=="representation"?cs=Se!==void 0?`*/${Se}`:"*/*":Ut>0?cs=br(tr,Ut,Se):cs=Se!==void 0?`*/${Se}`:"*/*";let xn=200;T?xn=Lt(c,"representation",C.appliedResolution,_):Se!==void 0&&(tr+Ut<Se||tr>0)&&(xn=206);let Un=d?Sr(se):se,Ih=g?Ki(Array.isArray(Un)?Un:[Un]):It(Un),Au=new TextEncoder().encode(Ih),Da={"Content-Type":g?"text/csv; charset=utf-8":d?"application/vnd.pgrst.array+json;nulls=stripped; charset=utf-8":"application/json; charset=utf-8","Content-Range":cs,"Content-Length":String(Au.byteLength)};return I&&(Da["Preference-Applied"]=I),y?.head?new Response(null,{status:xn,headers:Da}):new Response(Au,{status:xn,headers:Da})},{forceRollback:s?.forceRollback===!0})}catch(f){if(f instanceof me){let d=`"${f.message}" (line 1, column ${f.position})`;return k(400,"PGRST100",d,f.details,null)}if(f instanceof Be)return k(400,"PGRST100",f.message,f.details,null);if(f instanceof Vt)return k(400,"PGRST100",f.message,f.details,null);if(f instanceof Dr)return k(404,"PGRST125",f.message,f.details,null);if(f instanceof Ne)return k(f.httpStatus,f.code,f.message,f.details,f.hint);if(f instanceof jr)return k(400,"PGRST102",f.message,null,null);if(f instanceof Error&&f.message.startsWith("Invalid JSON body"))return k(400,"PGRST102","Empty or invalid json",null,null);if(f instanceof Ct)return k(400,"PGRST100",f.message,f.message,null);if(f instanceof hr)return k(400,"23514",f.message,`check constraint "${f.constraint}" violated`,null);if(f instanceof $i){let g=Li(p,"auth.role","anon")==="anon"?401:403;return Ze({status:g,code:"PGRST301",message:f.message})}let m=t.normalizeDbError(f);if(console.error(m),m instanceof xs){let d=[...i.tables.map(y=>y.name),...i.views.map(y=>y.name)],g=Rp(m.relation,d),b=m.schema||"public";return Ze({status:404,code:"PGRST205",message:m.message,hint:g?`Perhaps you meant the table '${b}.${g}'`:null})}if(m?.code==="42501"){let g=Li(p,"auth.role","anon")==="anon"?401:403;return Ze({status:g,code:"PGRST301",message:m.message})}if(m?.code==="42P01")return k(404,"PGRST205","Could not find the relation in the schema cache",m.message,null);if(m?.code==="23505"||m?.code==="23503")return k(409,m.code,m.message,m.detail??null,null);if(typeof m?.code=="string"){let d=m.code.slice(0,2);if(m.code==="42883")return k(404,m.code,m.message,m.detail??null,m.hint??null);if(d==="42"||d==="22"||d==="21"||m.code==="23502"){let g=m.message,b=c?.from;return m.code==="42703"&&b&&(g=g.replace(/^column "([^"]+)" does not exist$/,(y,T)=>`column ${b}.${T} does not exist`)),k(400,m.code,g,m.detail??null,m.hint??null)}if(d==="55")return k(500,m.code,m.message,m.detail??null,m.hint??null)}return m?.message?.includes("Unknown operator")?k(400,"PGRST100",m.message,null,null):m instanceof Error&&(m.message.includes("Expected identifier")||m.message.includes("Invalid filter")||m.message.includes("Unexpected input")||m.message.includes("Unsupported operator")||m.message.includes("failed to parse filter")||m.message.includes("failed to parse logic tree")||/^Expected .* at position \d+$/.test(m.message)||m.message.startsWith('Expected "(" for spread embed'))?k(400,"PGRST100",m.message,m.message,null):k(500,"SUP",String(m),null,null)}}).use(async(e,r)=>{if(e.req.method==="GET"&&e.req.path.endsWith("/"))return e.json(eS);await r();}).all("*",e=>k(404,"PGRST125","Invalid path specified in request URL",null,null));var Jr=class{maxSizeBytes;now;entries=new Map;sizeBytes=0;constructor(e={}){this.maxSizeBytes=e.maxSizeBytes??1024*1024,this.now=e.now??Date.now;}async get(e){let r=this.entries.get(e);if(r){if(this.isExpired(r)){this.deleteEntry(e,r);return}return this.entries.delete(e),this.entries.set(e,r),r.value}}async set(e,r,t){let n=this.entries.get(e);n&&this.deleteEntry(e,n);let i={value:r,size:Tf(e)+Tf(r),expiresAt:t?.ttl&&t.ttl>0?this.now()+t.ttl*1e3:void 0};this.entries.set(e,i),this.sizeBytes+=i.size,this.evictToSize();}async delete(e){let r=this.entries.get(e);r&&this.deleteEntry(e,r);}isExpired(e){return typeof e.expiresAt=="number"&&e.expiresAt<=this.now()}evictToSize(){for(;this.sizeBytes>this.maxSizeBytes;){let e=this.entries.keys().next().value;if(typeof e!="string")break;let r=this.entries.get(e);if(!r)break;this.deleteEntry(e,r);}}deleteEntry(e,r){this.entries.delete(e),this.sizeBytes-=r.size;}};function Tf(s){return new TextEncoder().encode(s).byteLength}var Yi=class{constructor(e){this.options=e;}async get(e){return await this.options.namespace.get(e)??void 0}async set(e,r,t){await this.options.namespace.put(e,r,{...t?.ttl&&t.ttl>0?{expirationTtl:t.ttl}:{}});}async delete(e){await this.options.namespace.delete(e);}};var zi=class{constructor(e){this.options=e;}async get(e){return await this.options.client.get(e)??void 0}async set(e,r,t){if(t?.ttl&&t.ttl>0){await this.options.client.set(e,r,"EX",t.ttl);return}await this.options.client.set(e,r);}async delete(e){if(this.options.client.del){await this.options.client.del(e);return}if(this.options.client.delete){await this.options.client.delete(e);return}throw new Error("RedisCacheDriver client must provide del() or delete()")}};var Xi=class{constructor(e){this.options=e;this.endpoint=e.endpoint??"https://api.resend.com/emails",this.fetchFn=e.fetch??fetch;}endpoint;fetchFn;async send(e){let r=await this.fetchFn(this.endpoint,{method:"POST",headers:{"content-type":"application/json",authorization:`Bearer ${this.options.apiKey}`},body:JSON.stringify({from:this.options.from,to:e.to,subject:e.subject,...e.text?{text:e.text}:{},...e.html?{html:e.html}:{}})});if(!r.ok)throw new Error(`Resend email failed (${r.status}): ${await r.text()}`)}};var Zi=class{constructor(e){this.options=e;this.endpoint=`https://email.${e.region}.amazonaws.com/v2/email/outbound-emails`,this.client=e.client;}endpoint;client;async send(e){let r=await this.getClient(),t={FromEmailAddress:this.options.from,Destination:{ToAddresses:[e.to]},Content:{Simple:{Subject:{Data:e.subject,Charset:"UTF-8"},Body:{...e.text?{Text:{Data:e.text,Charset:"UTF-8"}}:{},...e.html?{Html:{Data:e.html,Charset:"UTF-8"}}:{}}}}},n=await r.fetch(this.endpoint,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(t)});if(!n.ok)throw new Error(`AWS SES email failed (${n.status}): ${await n.text()}`)}async getClient(){if(this.client)return this.client;let{AwsClient:e}=await Promise.resolve().then(()=>(_f(),Rf));return this.client=new e({accessKeyId:this.options.accessKeyId,secretAccessKey:this.options.secretAccessKey,service:"ses",region:this.options.region}),this.client}};var ea=class{constructor(e){this.options=e;this.sendmailPath=e.sendmailPath??"/usr/sbin/sendmail";}sendmailPath;async send(e){let{spawn:r}=await import('node:child_process').catch(()=>{throw new Error("SendmailEmailDriver requires a Node-compatible runtime")}),t=El(this.options.from,e);await new Promise((n,i)=>{let a=r(this.sendmailPath,["-t","-i"],{stdio:["pipe","ignore","pipe"]}),o=[];a.on("error",l=>{i(new Error(`SendmailEmailDriver failed to start ${this.sendmailPath}: ${l.message}`));}),a.stderr?.on("data",l=>o.push(Buffer.from(l))),a.on("close",l=>{if(l===0){n();return}i(new Error(`SendmailEmailDriver exited with code ${l}: ${Buffer.concat(o).toString("utf8")}`));}),a.stdin.end(t);});}};function El(s,e){let r=e.html?"text/html; charset=UTF-8":"text/plain; charset=UTF-8";return [`From: ${s}`,`To: ${e.to}`,`Subject: ${e.subject}`,"MIME-Version: 1.0",`Content-Type: ${r}`,"",e.html??e.text??""].join(`
86
- `)}var Gs=class{messages=new Map;maxKeepCount;order=[];constructor(e={}){this.maxKeepCount=e.maxKeepCount??100;}async send(e){if(this.maxKeepCount<=0)return;let r=e.to.toLowerCase(),t={...e,sentAt:new Date().toISOString()},n=this.messages.get(r)??[];n.push(t),this.messages.set(r,n),this.order.push({key:r,message:t}),this.trim();}clear(){this.messages.clear(),this.order.length=0;}trim(){for(;this.order.length>this.maxKeepCount;){let e=this.order.shift();if(!e)return;let r=this.messages.get(e.key);if(!r)continue;let t=r.indexOf(e.message);t>=0&&r.splice(t,1),r.length===0&&this.messages.delete(e.key);}}},Wr=class extends Gs{silent;logger;constructor(e={}){super({maxKeepCount:0}),this.silent=e.silent??false,this.logger=e.logger??console;}async send(e){await super.send(e),this.silent||this.logger.info(["[@supabase/lite] Email driver noop send",`To: ${e.to}`,`Subject: ${e.subject}`,e.text?`Text: ${e.text}`:void 0,e.html?`HTML: ${e.html}`:void 0].filter(Boolean).join(`
87
- `));}};var Vs=class{silent;logger;constructor(e={}){this.silent=e.silent??false,this.logger=e.logger??console;}async send(e){this.silent||this.logger.info(["[@supabase/lite] SMS driver noop send",`To: ${e.to}`,`Body: ${e.body}`].join(`
88
- `));}};function vf(s={}){return {email:s.email??new Wr,sms:s.sms??new Vs,cache:s.cache??new Jr}}var Sl=new Map,Ks=class{constructor(e){this.driver=e;}async sendConfirmation(e,r,t,n){await this.send(nS(e,r,t,n));}async sendRecovery(e,r,t,n){await this.send(iS(e,r,t,n));}async sendMagicLink(e,r,t,n){await this.send(aS(e,r,t,n));}async sendEmailChange(e,r,t,n){await this.send(oS(e,r,t,n));}async sendReauthentication(e,r,t){await this.send(lS(e,r,t));}async send(e){await this.driver.send({to:e.to,subject:e.subject,text:e.body.text,html:e.body.html});}};function nS(s,e,r,t){return {to:s,subject:"Confirm Your Signup",body:{text:`Your confirmation code is: ${r}`,html:`<p>Your confirmation code is: <strong>${r}</strong></p><p><a href="http://localhost:3000/verify?token_hash=${e}&type=signup">Confirm</a></p>`},otp:r,tokenHash:e,meta:{...t,emailActionType:t?.emailActionType??"signup"}}}function iS(s,e,r,t){return {to:s,subject:"Reset Your Password",body:{text:`Your recovery code is: ${r}`,html:`<p>Your recovery code is: <strong>${r}</strong></p><p><a href="http://localhost:3000/verify?token_hash=${e}&type=recovery">Reset</a></p>`},otp:r,tokenHash:e,meta:{...t,emailActionType:t?.emailActionType??"recovery"}}}function aS(s,e,r,t){return {to:s,subject:"Your Magic Link",body:{text:`Your login code is: ${r}`,html:`<p>Your login code is: <strong>${r}</strong></p><p><a href="http://localhost:3000/verify?token_hash=${e}&type=magiclink">Login</a></p>`},otp:r,tokenHash:e,meta:{...t,emailActionType:t?.emailActionType??"magiclink"}}}function oS(s,e,r,t){return {to:s,subject:"Confirm Email Change",body:{text:`Your email change code is: ${r}`,html:`<p>Your email change code is: <strong>${r}</strong></p><p><a href="http://localhost:3000/verify?token_hash=${e}&type=email_change">Confirm</a></p>`},otp:r,tokenHash:e,meta:{...t,emailActionType:t?.emailActionType??"email_change"}}}function lS(s,e,r){return {to:s,subject:"Reauthentication",body:{text:`Your reauthentication code is: ${e}`,html:`<p>Your reauthentication code is: <strong>${e}</strong></p>`},otp:e,tokenHash:r?.tokenHash,meta:{...r,emailActionType:r?.emailActionType??"reauthentication"}}}var M=class extends Error{constructor(r,t,n,i,a){super(n);this.status=r;this.code=t;this.details=i;this.headers=a;this.name="AuthError";}toJSON(){return {code:this.status,error_code:this.code,msg:this.message,...this.details}}},ct=()=>new M(400,"invalid_credentials","Invalid login credentials"),Of=()=>new M(400,"email_not_confirmed","Email not confirmed"),Nf=(s,e=[],r=["length"])=>{let t=[];return r.includes("length")&&t.push(`Password should be at least ${s} characters.`),r.includes("characters")&&t.push(`Password should contain at least one character of each: ${e.join(", ")}.`),new M(422,"weak_password",t.join(" "),{weak_password:{reasons:r}})},If=(s="Access token is required")=>new M(401,"no_authorization",s),Hr=()=>new M(401,"no_authorization","This endpoint requires a valid Bearer token"),Ys=s=>new M(403,"bad_jwt",s),bl=()=>Ys("invalid JWT: unable to parse or verify signature, token is malformed: token contains an invalid number of segments"),Tl=s=>Ys(`invalid JWT: unable to parse or verify signature, token is malformed: could not JSON decode header: ${s}`),Lf=()=>Ys("invalid JWT: unable to parse or verify signature, token signature is invalid: signature is invalid"),kf=()=>Ys("invalid JWT: unable to parse or verify signature, token has invalid claims: token is expired"),wl=()=>Ys("invalid claim: missing sub claim"),Cl=()=>new M(400,"bad_jwt","invalid claim: sub claim must be a UUID");var $f=()=>new M(403,"user_not_found","User from sub claim in JWT does not exist"),Pf=()=>new M(403,"session_not_found","Session from session_id claim in JWT does not exist"),Df=()=>new M(422,"user_already_exists","User already registered"),jf=()=>new M(422,"email_exists","A user with this email address has already been registered"),Al=()=>new M(422,"signup_disabled","Signups not allowed for this instance"),xf=()=>new M(400,"email_provider_disabled","Email signups are disabled"),Uf=()=>new M(422,"otp_disabled","Signups not allowed for otp"),Bf=()=>new M(422,"same_password","New password should be different from the old password."),Gr=()=>new M(403,"otp_expired","Email link is invalid or has expired"),re=(s,e=422)=>new M(e,"validation_failed",s);var zs=s=>new M(400,"bad_json",s),Rl=()=>new M(400,"validation_failed","Refresh token is not valid"),Vr=()=>new M(400,"refresh_token_not_found","Invalid Refresh Token: Refresh Token Not Found"),ta=(s,e)=>new M(400,"refresh_token_already_used","Invalid Refresh Token: Already Used",void 0,{...s?{"Sb-Auth-Session-Id":s}:{},...e?{"Sb-Auth-User-Id":e}:{}}),Mf=()=>new M(401,"session_not_found","Invalid Refresh Token: Already Used"),_l=(s,e,r)=>new M(400,"session_expired",s==="inactivity"?"Invalid Refresh Token: Session Expired (Inactivity)":"Invalid Refresh Token: Session Expired",void 0,{...e?{"Sb-Auth-Session-Id":e}:{},...r?{"Sb-Auth-User-Id":r}:{}}),Ff=()=>new M(422,"anonymous_provider_disabled","Anonymous sign-ins are disabled"),qf=()=>new M(400,"invalid_credentials","unsupported_grant_type"),ra=()=>new M(429,"over_email_send_rate_limit","For security purposes, you can only request this after 59 seconds.");async function Ol(s,e,r){let t=new TextEncoder().encode(e),n=Math.floor(Date.now()/1e3);return new Er({...s,iat:n}).setProtectedHeader({alg:"HS256",typ:"JWT"}).setIssuedAt(n).setExpirationTime(n+r).sign(t)}async function Jf(s,e){let r=s.split(".");if(r.length!==3||r.some(i=>i===""))throw bl();let t=uS(r[0]);if(t)throw t;let n=new TextEncoder().encode(e);try{let{payload:i}=await yr(s,n,{algorithms:["HS256"]});return i}catch(i){throw i instanceof Nt.JWTExpired?kf():i instanceof Nt.JWSSignatureVerificationFailed?Lf():i instanceof Nt.JWSInvalid||i instanceof Nt.JWTInvalid?bl():i}}function uS(s){let e=cS(s);if(!e)return Tl("unexpected end of JSON input");let r=pS(e);try{return JSON.parse(new TextDecoder("utf-8").decode(e)),null}catch{return Tl(Nl(r))}}function cS(s){try{let e=s.replace(/-/g,"+").replace(/_/g,"/").padEnd(s.length+(4-s.length%4)%4,"="),r=atob(e),t=new Uint8Array(r.length);for(let n=0;n<r.length;n++)t[n]=r.charCodeAt(n);return t}catch{return null}}function pS(s){let e="";for(let r of s)e+=String.fromCharCode(r);return e}var fS={n:"null",t:"true",f:"false"};function Nl(s){let e=0;for(;e<s.length;){let i=s.charCodeAt(e);if(i===32||i===9||i===10||i===13)e++;else break}let r=s.slice(e);if(!r)return "unexpected end of JSON input";let t=r[0],n=fS[t];if(n){for(let i=1;i<n.length;i++){if(i>=r.length)return "unexpected end of JSON input";if(r[i]!==n[i])return `invalid character ${vl(r[i])} in literal ${n} (expecting '${n[i]}')`}return `invalid character ${vl(r[n.length]??" ")} after top-level value`}return t==="{"||t==="["||t==='"'||t==="-"||t>="0"&&t<="9"?"":`invalid character ${vl(t)} looking for beginning of value`}function vl(s){let e=s.codePointAt(0)??0;return e>=32&&e<127?`'${s}'`:`'\\u${e.toString(16).padStart(4,"0")}'`}async function Xs(s){return Wf.hash(s,10)}async function Il(s,e){return Wf.compare(s,e)}function Hf(s,e=6,r=[]){let t=[];return s.length<e&&t.push("length"),r.length>0&&r.some(n=>!mS(s,n))&&t.push("characters"),t}function mS(s,e){for(let r of s)if(e.includes(r))return true;return false}function kt(s=6){let e=crypto.getRandomValues(new Uint8Array(s)),r="";for(let t=0;t<s;t++)r+=(e[t]%10).toString();return r}function et(){let s=crypto.getRandomValues(new Uint8Array(32));return Array.from(s).map(e=>e.toString(16).padStart(2,"0")).join("")}function Ll(){return v7()}function Ke(){return v7()}function sa(s){if(!s.jwt_secret)throw new Error('[auth] is enabled but `auth.jwt_secret` is empty. Add `jwt_secret = "<secret>"` under [auth] in your config.toml.')}var Qs=class{constructor(e,r,t){this.repo=e;this.config=r;this.mailer=t;sa(r),this.jwtExpiry=r.jwt_expiry??3600,this.minPasswordLength=r.minimum_password_length??6,this.passwordRequiredCharacters=r.password_required_characters??dS(r.password_requirements),this.sessionTimeboxSeconds=Vf(r.sessions?.timebox),this.sessionInactivitySeconds=Vf(r.sessions?.inactivity_timeout);}jwtExpiry;minPasswordLength;passwordRequiredCharacters;sessionTimeboxSeconds;sessionInactivitySeconds;async signUp(e,r,t){if(this.config.enable_signup===false)throw Al();if(!e)throw Ff();if(this.config.email?.enable_signup===false)throw xf();if(r==null||r===void 0||r==="")throw re("Signup requires a valid password",400);if(!Kr(e))throw re("Unable to validate email address: invalid format",400);if(r.length>72)throw re("Password cannot be longer than 72 characters",400);this.assertPasswordStrong(r);let i=!(this.config.email?.enable_confirmations??this.config.enable_confirmations??false);e=e.toLowerCase();let a=await this.repo.findUserByEmail(e);if(a)throw i?(await this.createAuditLog(a.id,e,"user_repeated_signup","user"),Df()):ra();let o=Ke(),l=await Xs(r),u=new Date().toISOString(),p=null,c=null,f=null;i||(p=kt(),c=et(),f=u);let m={...t??{},email:e,email_verified:i,phone_verified:false,sub:o},d={...t??{},email:e,email_verified:false,phone_verified:false,sub:o},g=await this.repo.createUser({id:o,email:e,encrypted_password:l,confirmed_at:i?u:null,raw_user_meta_data:m,raw_app_meta_data:{provider:"email",providers:["email"]},confirmation_token:c,confirmation_sent_at:f});await this.repo.createIdentity({id:Ke(),provider:"email",provider_id:o,user_id:o,identity_data:d}),!i&&p&&c&&await this.mailer.sendConfirmation(e,c,p,{userId:o,redirectTo:this.config.site_url});let b=await this.repo.findIdentitiesByUserId(o),y=this.repo.parseUserJson(g),T=this.mapUserToResponse(y,b,"signup");if(i){let C=await this.createSessionForUser(y,b);return await this.createAuditLog(o,e,"user_signedup","team"),{user:T,session:C}}return await this.createAuditLog(o,e,"user_confirmation_requested","user"),{user:T}}async signInWithPassword(e,r){if(!e)throw re("missing email or phone",400);if(!r)throw ct();let t=await this.repo.findUserByEmail(e.toLowerCase());if(!t||!t.encrypted_password)throw ct();let n=this.repo.parseUserJson(t);if(!n.confirmed_at)throw Of();if(!await Il(r,n.encrypted_password))throw ct();let a=await this.repo.findIdentitiesByUserId(t.id);return this.createSessionForUser(n,a,"user")}async refreshSession(e){if(!e)throw Rl();let r=await this.repo.findRefreshToken(e);if(!r)throw gS(e)?Vr():Rl();if(Kf(r))return this.refreshWithRevokedToken(r);let t=await this.repo.findUserById(r.user_id);if(!t)throw Vr();let n=null;if(r.session_id){if(n=await this.repo.findSessionById(r.session_id),!n)throw Vr();this.assertSessionRefreshable(n);}let i=Yf(n?.updated_at,n?.refreshed_at,t.updated_at);await this.repo.revokeRefreshToken(r.id);let a=Ll(),o=r.session_id??Ke();return r.session_id?await this.repo.updateSessionRefreshedAt(r.session_id,i):await this.repo.createSession({id:o,user_id:t.id}),await this.repo.createRefreshToken({token:a,user_id:t.id,session_id:o,parent:r.token}),await this.createAuditLog(t.id,t.email??"","token_refreshed","token",false),await this.createAuditLog(t.id,t.email??"","token_revoked","token",false),this.createRefreshResponse(t,o,a,i)}async refreshWithRevokedToken(e){if(this.config.sessions?.single_per_user)throw Mf();if(!e.session_id)throw ta(e.session_id,e.user_id);let r=await this.repo.findRefreshTokensBySession(e.session_id),t=yS(r,e.token),n=t.filter(u=>!Kf(u));if((this.config.enable_refresh_token_rotation??false)&&t.length>1)throw await this.repo.revokeRefreshTokensByIds(n.map(u=>u.id)),ta(e.session_id,e.user_id);let i=n.at(-1);if(!i)throw ta(e.session_id,e.user_id);let a=await this.repo.findUserById(e.user_id);if(!a)throw Vr();let o=await this.repo.findSessionById(e.session_id);if(!o)throw Vr();this.assertSessionRefreshable(o);let l=Yf(o.updated_at,o.refreshed_at,a.updated_at);return await this.repo.updateSessionRefreshedAt(e.session_id,l),await this.createAuditLog(a.id,a.email??"","token_refreshed","token",false),this.createRefreshResponse(a,e.session_id,i.token,l)}async createRefreshResponse(e,r,t,n){let i=await this.repo.updateUser(e.id,{last_sign_in_at:n}),a=this.repo.parseUserJson(i??e),o=await this.repo.findIdentitiesByUserId(e.id),l=await Ol({sub:e.id,aud:e.aud||"authenticated",role:e.role||"authenticated",email:e.email??void 0,session_id:r},this.config.jwt_secret,this.jwtExpiry),u=Math.floor(Date.now()/1e3);return zf({access_token:l,refresh_token:t,token_type:"bearer",expires_in:this.jwtExpiry,expires_at:u+this.jwtExpiry,user:this.mapUserToResponse(a,o,"user")},r,e.id)}assertSessionRefreshable(e){let r=Date.now();if(this.sessionTimeboxSeconds!==void 0&&r-Date.parse(e.created_at)>this.sessionTimeboxSeconds*1e3)throw _l(void 0,e.id,e.user_id);let t=e.refreshed_at??e.created_at;if(this.sessionInactivitySeconds!==void 0&&r-Date.parse(t)>this.sessionInactivitySeconds*1e3)throw _l("inactivity",e.id,e.user_id)}async getUser(e){let r=await this.repo.findUserById(e);if(!r)throw ct();let t=this.repo.parseUserJson(r),n=await this.repo.findIdentitiesByUserId(e);return this.mapUserToResponse(t,n,"user")}async updateUser(e,r){let t=await this.repo.findUserById(e);if(!t)throw ct();let n=this.repo.parseUserJson(t),i={},a=false,o=false,l=r.data!==void 0||r.password!==void 0||r.email!==void 0;if(r.data!==void 0){let c=typeof n.raw_user_meta_data=="object"?n.raw_user_meta_data:{};i.raw_user_meta_data=hS(c,r.data??{}),a=true;}if(r.password!==void 0){if(this.assertPasswordStrong(r.password),n.encrypted_password&&await Il(r.password,n.encrypted_password))throw Bf();i.encrypted_password=await Xs(r.password),i.recovery_token=null,i.recovery_sent_at=null,a=true,o=true;}if(r.email!==void 0)if(r.email==="")a=true;else {let c=r.email.toLowerCase();if(!Kr(c))throw re("Unable to validate email address: invalid format",400);if(a=true,c!==n.email?.toLowerCase()){let f=await this.repo.findUserByEmail(c);if(f&&f.id!==e)throw jf();let m=new Date().toISOString(),d=kt(),g=et(),b=kt(),y=et(),T=this.config.email?.double_confirm_changes??true;i.email_change=c,i.email_change_token_current=T?g:null,i.email_change_token_new=y,i.email_change_sent_at=m,T?await this.mailer.sendEmailChange(c,g,d,{userId:e,tokenNew:b,tokenHashNew:y,redirectTo:this.config.site_url}):await this.mailer.sendEmailChange(c,y,b,{userId:e,redirectTo:this.config.site_url});}}l||(a=true);let u=n;if(Object.keys(i).length>0){let c=await this.repo.updateUser(e,i);if(!c)throw ct();u=this.repo.parseUserJson(c);}o&&await this.createAuditLog(e,n.email??"","user_updated_password","user",false),a&&await this.createAuditLog(e,n.email??"","user_modified","user",false);let p=await this.repo.findIdentitiesByUserId(e);return this.mapUserToResponse(u,p,"user")}async signOut(e,r,t){let n=r??"local";if(!["global","local","others"].includes(n))throw re(`Unsupported logout scope "${n}"`,400);let i=await this.repo.findUserById(t);if(!i)throw ct();let a=this.repo.parseUserJson(i);n==="global"?(await this.repo.deleteRefreshTokensForUser(t),await this.repo.deleteUserSessions(t)):n==="others"&&e?(await this.repo.deleteRefreshTokensForUser(t,e),await this.repo.deleteUserSessions(t,e)):e&&(await this.repo.deleteRefreshTokensForSession(e),await this.repo.deleteSession(e)),await this.createAuditLog(t,a.email??"","logout","account",false);}async signInWithOtp(e,r){if(!e)throw re("One of email or phone must be set",400);if(e=e.toLowerCase(),!Kr(e))throw re("Unable to validate email address: invalid format",400);let t=await this.repo.findUserByEmail(e),n=!t;if(!t&&r?.shouldCreateUser!==false){let l=Ke(),u=await Xs(et()),p=new Date().toISOString();t=await this.repo.createUser({id:l,email:e,encrypted_password:u,confirmed_at:p,raw_app_meta_data:{provider:"email",providers:["email"]},raw_user_meta_data:{email:e,email_verified:true,phone_verified:false,sub:l}}),await this.repo.createIdentity({id:Ke(),provider:"email",provider_id:l,user_id:l,identity_data:{email:e,email_verified:false,phone_verified:false,sub:l}});}if(!t)throw Uf();let i=kt(),a=et(),o=new Date().toISOString();if(await this.repo.updateUser(t.id,{recovery_token:a,recovery_sent_at:o}),await this.createAuditLog(t.id,e,"user_recovery_requested","user",false),await this.mailer.sendMagicLink(e,a,i,{userId:t.id,redirectTo:this.config.site_url}),n){let l=await this.repo.findUserById(t.id);if(!l)throw ct();let u=this.repo.parseUserJson(l),p=await this.repo.findIdentitiesByUserId(t.id);await this.createSessionForUser(u,p),await this.createAuditLog(t.id,e,"user_signedup","team");}}async requestMagicLink(e,r){if(!e)throw re("Password recovery requires an email",422);if(e=e.toLowerCase(),!Kr(e))throw re("Unable to validate email address: invalid format",400);let t=await this.repo.findUserByEmail(e),n=!t;if(!t){if(this.config.enable_signup===false)throw Al();let l=Ke(),u=await Xs(et()),p=new Date().toISOString();t=await this.repo.createUser({id:l,email:e,encrypted_password:u,confirmed_at:p,raw_app_meta_data:{provider:"email",providers:["email"]},raw_user_meta_data:{email:e,email_verified:true,phone_verified:false,sub:l}}),await this.repo.createIdentity({id:Ke(),provider:l,provider_id:l,user_id:l,identity_data:{email:e,email_verified:false,phone_verified:false,sub:l}});}let i=kt(),a=et(),o=new Date().toISOString();if(await this.repo.updateUser(t.id,{recovery_token:a,recovery_sent_at:o}),await this.createAuditLog(t.id,e,"user_recovery_requested","user",false),await this.mailer.sendMagicLink(e,a,i,{userId:t.id,redirectTo:this.config.site_url}),n){let l=await this.repo.findUserById(t.id);if(!l)throw ct();let u=this.repo.parseUserJson(l),p=await this.repo.findIdentitiesByUserId(t.id);await this.createSessionForUser(u,p),await this.createAuditLog(t.id,e,"user_signedup","team");}}async verifyOtp(e){let r=null,t=null;if(e.token_hash){let u=await this.findUserByTokenAndType(e.token_hash,e.type);r=u?.user??null,t=u?.tokenColumn??null;}else if(e.email&&e.token)if(r=await this.repo.findUserByEmail(e.email.toLowerCase()),r){for(let u of this.getTokenColumnsForType(e.type)){let p=r[u];if(p===e.token||this.otpMatchesStoredTokenHash(e.email,e.token,p)){t=u;break}}if(!t)throw Gr()}else throw Gr();else throw Gr();if(!r)throw Gr();let n=this.repo.parseUserJson(r),i=new Date().toISOString(),a={};if(n.confirmed_at||(a.confirmed_at=i),e.type==="email_change"&&n.email_change){a.email=n.email_change,a.email_change=null,a.email_change_token_current=null,a.email_change_token_new=null;let u=await this.repo.findIdentitiesByUserId(r.id);for(let p of u){let c=typeof p.identity_data=="string"?JSON.parse(p.identity_data):{...p.identity_data??{}};await this.repo.updateIdentity(p.id,{identity_data:{...c,email:n.email_change,email_verified:true}});}await this.createAuditLog(r.id,n.email??"","user_modified","user",false);}else if(e.type==="signup"){let u=typeof n.raw_user_meta_data=="object"?n.raw_user_meta_data:{};a.raw_user_meta_data={...u,email_verified:true};let p=await this.repo.findIdentitiesByUserId(r.id);for(let c of p){let f=typeof c.identity_data=="string"?JSON.parse(c.identity_data):{...c.identity_data??{}};await this.repo.updateIdentity(c.id,{identity_data:{...f,email_verified:true}});}t&&(a[t]=null);}else t&&(a[t]=null);a.last_sign_in_at=i,await this.repo.updateUser(r.id,a);let o=await this.repo.findUserById(r.id);if(!o)throw Gr();let l=await this.repo.findIdentitiesByUserId(r.id);return e.type==="signup"&&await this.createAuditLog(r.id,o.email??"","user_signedup","team"),this.createSessionForUser(this.repo.parseUserJson(o),l,"verify",{createLoginAudit:["magiclink","recovery"].includes(e.type),includeLoginProviderTrait:!["magiclink","recovery"].includes(e.type),authenticationMethod:["email_change","magiclink","recovery","signup"].includes(e.type)?"otp":"password"})}async recover(e){if(!e)throw re("Password recovery requires an email",400);if(e=e.toLowerCase(),!Kr(e))throw re("Unable to validate email address: invalid format",400);let r=await this.repo.findUserByEmail(e);if(!r)return;let t=kt(),n=et(),i=new Date().toISOString();await this.repo.updateUser(r.id,{recovery_token:n,recovery_sent_at:i}),await this.createAuditLog(r.id,e,"user_recovery_requested","user",false),await this.mailer.sendRecovery(e,n,t,{userId:r.id,redirectTo:this.config.site_url});}async resend(e,r){if(!["signup","email_change","sms","phone_change"].includes(e))throw re("Missing one of these types: signup, email_change, sms, phone_change",400);if((e==="signup"||e==="email_change")&&!r)throw re("Type provided requires an email address",400);if(!r)return;if(r=r.toLowerCase(),!Kr(r))throw re("Unable to validate email address: invalid format",400);let t=await this.repo.findUserByEmail(r);if(!t)return;let n=kt(),i=et(),a=new Date().toISOString();if(e==="signup"){if(t.confirmed_at||!t.confirmation_sent_at)return;throw ra()}else if(e==="email_change"){if(!t.email_change)return;if(t.email_change_sent_at)throw ra();await this.repo.updateUser(t.id,{email_change_token_new:i,email_change_sent_at:a}),await this.mailer.sendEmailChange(t.email_change,i,n,{userId:t.id,redirectTo:this.config.site_url});}}async reauthenticate(e){let r=await this.repo.findUserById(e);if(!r)throw If();let t=kt(),n=et(),i=new Date().toISOString();await this.repo.updateUser(r.id,{reauthentication_token:n,reauthentication_sent_at:i}),await this.mailer.sendReauthentication(r.email,t,{userId:r.id,tokenHash:n,redirectTo:this.config.site_url}),await this.createAuditLog(r.id,r.email??"","user_reauthenticate_requested","",false);}async createSessionForUser(e,r,t="session",n={}){let i=new Date().toISOString(),a=await this.repo.updateUser(e.id,{last_sign_in_at:i}),o=a?this.repo.parseUserJson(a):e;this.config.sessions?.single_per_user&&await this.repo.revokeUserRefreshTokens(e.id);let l=Ke();await this.repo.createSession({id:l,user_id:e.id});let u=Ll();await this.repo.createRefreshToken({token:u,user_id:e.id,session_id:l}),(n.createLoginAudit??true)&&await this.createAuditLog(e.id,e.email??"","login","account",n.includeLoginProviderTrait??true);let p=await Ol({sub:e.id,aud:e.aud||"authenticated",role:e.role||"authenticated",email:e.email??void 0,session_id:l},this.config.jwt_secret,this.jwtExpiry),c=Math.floor(Date.now()/1e3);return zf({access_token:p,refresh_token:u,token_type:"bearer",expires_in:this.jwtExpiry,expires_at:c+this.jwtExpiry,user:this.mapUserToResponse(o,r,t)},l,e.id)}assertPasswordStrong(e){let r=Hf(e,this.minPasswordLength,this.passwordRequiredCharacters);if(r.length>0)throw Nf(this.minPasswordLength,this.passwordRequiredCharacters,r)}mapUserToResponse(e,r,t){let n=typeof e.raw_app_meta_data=="string"?JSON.parse(e.raw_app_meta_data):e.raw_app_meta_data??{},i=typeof e.raw_user_meta_data=="string"?JSON.parse(e.raw_user_meta_data):e.raw_user_meta_data??{},a={id:e.id,aud:e.aud||"authenticated",role:e.role||"authenticated",email:e.email??"",phone:e.phone??"",app_metadata:n,user_metadata:i,identities:r.map(o=>this.mapIdentityToResponse(o,t,e)),created_at:e.created_at,updated_at:e.updated_at,is_anonymous:false};return e.confirmed_at&&(a.email_confirmed_at=e.confirmed_at,(t==="user"||t==="verify")&&(a.confirmed_at=e.confirmed_at)),e.last_sign_in_at&&(a.last_sign_in_at=e.last_sign_in_at),e.confirmation_sent_at&&(a.confirmation_sent_at=e.confirmation_sent_at),e.email_change&&(a.new_email=e.email_change),e.email_change_sent_at&&(a.email_change_sent_at=e.email_change_sent_at),t==="verify"&&e.recovery_sent_at&&(a.recovery_sent_at=e.recovery_sent_at),a}mapIdentityToResponse(e,r,t){let n=typeof e.identity_data=="string"?JSON.parse(e.identity_data):e.identity_data??{},i=r==="session"&&t.confirmed_at?{...n,email_verified:true}:n,a=e.email??(typeof i.email=="string"?i.email:t.email??void 0);return {identity_id:e.id,id:e.provider_id,user_id:e.user_id,identity_data:i,provider:"email",last_sign_in_at:e.last_sign_in_at??e.created_at,created_at:e.created_at,updated_at:e.updated_at,...a?{email:a}:{}}}async findUserByTokenAndType(e,r){if(r==="email_change"){let t=await this.repo.findUserByToken("email_change_token_current",e);if(t)return {user:t,tokenColumn:"email_change_token_current"};let n=await this.repo.findUserByToken("email_change_token_new",e);return n?{user:n,tokenColumn:"email_change_token_new"}:null}for(let t of this.getTokenColumnsForType(r)){let n=await this.repo.findUserByToken(t,e);if(n)return {user:n,tokenColumn:t}}return null}otpMatchesStoredTokenHash(e,r,t){return !r||typeof t!="string"?false:(Sl.get(e.toLowerCase())??[]).some(i=>i.otp===r&&i.tokenHash===t)}getTokenColumnsForType(e){switch(e){case "signup":return ["confirmation_token"];case "magiclink":return ["recovery_token","confirmation_token"];case "recovery":return ["recovery_token"];case "email_change":return ["email_change_token_new"];case "reauthentication":return ["reauthentication_token"];default:return []}}async createAuditLog(e,r,t,n,i=true){let a={action:t,actor_id:e,actor_username:r,actor_via_sso:false,log_type:n};i&&(a.traits={provider:"email"}),await this.repo.createAuditLogEntry({id:Ke(),payload:a});}};function hS(s,e){let r={...s};for(let[t,n]of Object.entries(e))n===null?delete r[t]:r[t]=n;return r}function dS(s){switch(s){case "letters_digits":return ["abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ","0123456789"];case "lower_upper_letters_digits":return ["abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ","0123456789"];case "lower_upper_letters_digits_symbols":return ["abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ","0123456789","!@#$%^&*"];default:return []}}function Vf(s){if(!s)return;let e=s.match(/^(\d+)(ms|s|m|h)?$/);if(!e)return;let r=Number(e[1]);switch(e[2]??"s"){case "ms":return r/1e3;case "m":return r*60;case "h":return r*3600;default:return r}}function Kr(s){return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(s)}function gS(s){return /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(s)}function Kf(s){return s.revoked===true||s.revoked===1}function yS(s,e){let r=[],t=[e];for(;t.length>0;){let n=t.shift();for(let i of s)i.parent!==n||r.some(a=>a.id===i.id)||(r.push(i),t.push(i.token));}return r}function Yf(...s){let e=Math.max(0,...s.map(t=>t?Date.parse(t):0)),r=Date.now();return new Date(Math.max(r,e+1)).toISOString()}function zf(s,e,r){return Object.defineProperties(s,{session_id:{value:e,enumerable:false},user_id:{value:r,enumerable:false}}),s}function kl(s){if(s==null)return {};if(typeof s=="string")try{return JSON.parse(s)}catch{return {}}return s}function Tr(s){return typeof s=="string"?s:JSON.stringify(s??{})}var Zs=class{constructor(e,r){this.db=e;this.dialect=r;this.schema="auth";}schema;bool(e){return this.dialect==="sqlite"?e?1:0:e}table(e){return this.db.withSchema(this.schema).selectFrom(e)}insertInto(e){return this.db.withSchema(this.schema).insertInto(e)}update(e){return this.db.withSchema(this.schema).updateTable(e)}deleteFrom(e){return this.db.withSchema(this.schema).deleteFrom(e)}async findUserByEmail(e){return await this.table("users").selectAll().where("email","=",e.toLowerCase()).executeTakeFirst()??null}async findUserById(e){return await this.table("users").selectAll().where("id","=",e).executeTakeFirst()??null}async findUserByToken(e,r){return await this.table("users").selectAll().where(e,"=",r).executeTakeFirst()??null}async createUser(e){let r=new Date().toISOString(),t={id:e.id,aud:e.aud??"authenticated",role:e.role??"authenticated",email:e.email.toLowerCase(),encrypted_password:e.encrypted_password??null,phone:e.phone??null,email_confirmed_at:e.email_confirmed_at??e.confirmed_at??null,confirmation_token:e.confirmation_token??null,confirmation_sent_at:e.confirmation_sent_at??null,recovery_token:e.recovery_token??null,recovery_sent_at:e.recovery_sent_at??null,email_change:e.email_change??null,email_change_token_new:e.email_change_token_new??null,email_change_token_current:e.email_change_token_current??null,email_change_sent_at:e.email_change_sent_at??null,email_change_confirm_status:e.email_change_confirm_status??0,reauthentication_token:e.reauthentication_token??null,reauthentication_sent_at:e.reauthentication_sent_at??null,raw_app_meta_data:Tr(e.raw_app_meta_data??{provider:"email",providers:["email"]}),raw_user_meta_data:Tr(e.raw_user_meta_data??{}),is_sso_user:this.bool(e.is_sso_user??false),is_anonymous:this.bool(e.is_anonymous??false),last_sign_in_at:e.last_sign_in_at??null,created_at:r,updated_at:r};return await this.insertInto("users").values(t).execute(),await this.findUserById(e.id)}async updateUser(e,r){let t={...r,updated_at:new Date().toISOString()};return t.confirmed_at!=null&&t.email_confirmed_at==null&&(t.email_confirmed_at=t.confirmed_at),delete t.confirmed_at,t.raw_app_meta_data!=null&&(t.raw_app_meta_data=Tr(t.raw_app_meta_data)),t.raw_user_meta_data!=null&&(t.raw_user_meta_data=Tr(t.raw_user_meta_data)),t.is_sso_user!=null&&(t.is_sso_user=this.bool(!!t.is_sso_user)),t.is_anonymous!=null&&(t.is_anonymous=this.bool(!!t.is_anonymous)),await this.update("users").set(t).where("id","=",e).execute(),this.findUserById(e)}async createSession(e){let r=new Date().toISOString(),t={id:e.id,user_id:e.user_id,aal:e.aal??"aal1",not_after:null,refreshed_at:null,user_agent:null,ip:null,tag:null,refresh_token_hmac_key:null,refresh_token_counter:null,scopes:null,factor_id:null,created_at:r,updated_at:r};return await this.insertInto("sessions").values(t).execute(),t}async findSessionById(e){return await this.table("sessions").selectAll().where("id","=",e).executeTakeFirst()??null}async updateSessionRefreshedAt(e,r){return await this.update("sessions").set({refreshed_at:r,updated_at:r}).where("id","=",e).execute(),this.findSessionById(e)}async deleteSession(e){await this.deleteFrom("sessions").where("id","=",e).execute();}async deleteUserSessions(e,r){let t=this.deleteFrom("sessions").where("user_id","=",e);r&&(t=t.where("id","!=",r)),await t.execute();}async deleteRefreshTokensForSession(e){await this.deleteFrom("refresh_tokens").where("session_id","=",e).execute();}async deleteRefreshTokensForUser(e,r){let t=this.deleteFrom("refresh_tokens").where("user_id","=",e);r&&(t=t.where("session_id","!=",r)),await t.execute();}async createRefreshToken(e){let r=new Date().toISOString(),t={id:Ke(),token:e.token,user_id:e.user_id,session_id:e.session_id,revoked:this.bool(false),parent:e.parent??null,created_at:r,updated_at:r};return await this.insertInto("refresh_tokens").values(t).execute(),t}async findRefreshToken(e){return await this.table("refresh_tokens").selectAll().where("token","=",e).executeTakeFirst()??null}async findRefreshTokensBySession(e){return await this.table("refresh_tokens").selectAll().where("session_id","=",e).execute()}async revokeRefreshToken(e){await this.update("refresh_tokens").set({revoked:this.bool(true),updated_at:new Date().toISOString()}).where("id","=",e).execute();}async revokeSessionRefreshTokens(e){await this.update("refresh_tokens").set({revoked:this.bool(true),updated_at:new Date().toISOString()}).where("session_id","=",e).execute();}async revokeRefreshTokensByIds(e){e.length!==0&&await this.update("refresh_tokens").set({revoked:this.bool(true),updated_at:new Date().toISOString()}).where("id","in",e).execute();}async revokeUserRefreshTokens(e){await this.update("refresh_tokens").set({revoked:this.bool(true),updated_at:new Date().toISOString()}).where("user_id","=",e).execute();}async createIdentity(e){let r=new Date().toISOString(),t={id:e.id,provider:e.provider,provider_id:e.provider_id,user_id:e.user_id,identity_data:Tr(e.identity_data),last_sign_in_at:e.last_sign_in_at??r,created_at:r,updated_at:r};return await this.insertInto("identities").values(t).execute(),{...t,identity_data:e.identity_data}}async findIdentitiesByUserId(e){return (await this.table("identities").selectAll().where("user_id","=",e).execute()).map(t=>({...t,identity_data:kl(t.identity_data)}))}async updateIdentity(e,r){let t={...r,updated_at:new Date().toISOString()};t.identity_data!=null&&(t.identity_data=Tr(t.identity_data)),delete t.email,await this.update("identities").set(t).where("id","=",e).execute();}async createAuditLogEntry(e){let r={id:e.id,payload:Tr(e.payload??{}),ip_address:e.ip_address??"",created_at:new Date().toISOString()};await this.insertInto("audit_log_entries").values(r).execute();}parseUserJson(e){return {...e,raw_app_meta_data:kl(e.raw_app_meta_data),raw_user_meta_data:kl(e.raw_user_meta_data),confirmed_at:e.confirmed_at??e.email_confirmed_at??null}}};function Xf(){return {version:ES(),name:"GoTrue",description:"GoTrue is a user registration and authentication API"}}function Qf(s){return {external:{anonymous_users:s.enable_anonymous_sign_ins??false,apple:false,azure:false,bitbucket:false,discord:false,facebook:false,snapchat:false,figma:false,fly:false,github:false,gitlab:false,google:false,keycloak:false,kakao:false,linkedin:false,linkedin_oidc:false,notion:false,spotify:false,slack:false,slack_oidc:false,workos:false,twitch:false,twitter:false,email:s.email?.enable_signup??true,phone:false,zoom:false},disable_signup:!(s.enable_signup??true),mailer_autoconfirm:!(s.email?.enable_confirmations??false),phone_autoconfirm:false,sms_provider:"",saml_enabled:false}}function Zf(){return {keys:[]}}function em(){return {issuer:"",jwks_uri:"/.well-known/jwks.json"}}function ES(){return [$l(JSON.stringify({alg:"HS256",typ:"JWT"})),$l(JSON.stringify({name:"GoTrue",implementation:"@supabase/lite"})),$l("metadata")].join(".")}function $l(s){if(typeof Buffer<"u")return Buffer.from(s,"utf-8").toString("base64url");let e=new TextEncoder().encode(s),r="";for(let t of e)r+=String.fromCharCode(t);return btoa(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}var Pl=s=>s;var SS="00000000-0000-0000-0000-000000000000",bS=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Dl=({onError:s}={})=>Pl(async(e,r)=>{if(!e.var.userId||!e.var.sessionId){let t=await rm(e);if(t&&s)return s(t,e)}await r();}),en=()=>Pl(async(s,e)=>{if(!s.var.userId){let r=await rm(s);if(r)return tm(s,r);if(!s.var.userId)return tm(s,Hr())}await e();});async function rm(s){let e=s.req.header("Authorization");if(!e)return Hr();if(!e.startsWith("Bearer "))return Hr();let r=e.slice(7);if(!r||/^\s/.test(r))return Hr();let t=s.get("app").config.auth?.jwt_secret;if(!t)return null;let n;try{n=await Jf(r,t);}catch(u){return u instanceof M?u:Hr()}let i=TS(n);if(i)return i;let a=n.sub;if(n.role!=="service_role"&&!await s.var.authService.repo.findUserById(a))return $f();let l=n.session_id;if(l){if(!await s.var.authService.repo.findSessionById(l))return Pf();s.set("sessionId",l);}return s.set("userId",a),s.set("jwt",n),null}function TS(s){let e=s.sub,r=s.role;return e==null||e===""?wl():typeof e!="string"?Cl():bS.test(e)?e===SS&&r==="service_role"?wl():null:Cl()}function tm(s,e){return s.header("X-Sb-Error-Code",e.code),s.json(e.toJSON(),e.status)}var jl=new be().onError((s,e)=>{if(s instanceof M){e.header("X-Sb-Error-Code",s.code);for(let[r,t]of Object.entries(s.headers??{}))e.header(r,t);return e.json(s.toJSON(),s.status)}return console.error("Auth error:",s),e.json({error:"server_error",error_description:"Internal server error"},500)}).options("*",s=>{let e=s.req.header("Access-Control-Request-Method");return e&&s.header("Access-Control-Allow-Methods",e),s.header("Access-Control-Allow-Credentials","true"),s.header("Access-Control-Allow-Origin","*"),s.body(null,204)}).post("/signup",async s=>{let e=await $t(s,{requireBody:true}),{authService:r}=s.var,t=await r.signUp(e.email,e.password,e.data);return t.session?(na(s,t.session),s.json(t.session,200)):s.json(t.user,200)}).all("/signup",wr("POST")).post("/token",async s=>{let e=s.req.query("grant_type"),r=await $t(s,{requireBody:true}),{authService:t}=s.var;if(e==="password"){let n=await t.signInWithPassword(r.email,r.password);return na(s,n),s.json({...n,weak_password:null},200)}if(e==="refresh_token"){let n=await t.refreshSession(r.refresh_token);return na(s,n),s.json(n,200)}throw qf()}).all("/token",wr("POST")).post("/otp",async s=>{let e=await $t(s),{authService:r}=s.var;return await r.signInWithOtp(e.email,{shouldCreateUser:e.create_user??e.options?.shouldCreateUser}),s.json({},200)}).post("/magiclink",async s=>{let e=await $t(s),{authService:r}=s.var;return await r.requestMagicLink(e.email,e.gotrue_meta_security),s.json({},200)}).all("/magiclink",wr("POST")).post("/verify",async s=>{let e=await $t(s),{authService:r}=s.var;CS(e);let t=await r.verifyOtp({email:e.email,token:e.token,token_hash:e.token_hash,type:e.type});return na(s,t),s.json(t,200)}).get("/verify",s=>{let e=s.req.query("type");throw e?sm.has(e)?re("Verify requires a token or a token hash",400):re("Invalid email verification type",400):re("Verify requires a verification type",400)}).post("/recover",async s=>{let e=await $t(s),{authService:r}=s.var;return await r.recover(e.email),s.json({},200)}).post("/resend",async s=>{let e=await $t(s),{authService:r}=s.var;return await r.resend(e.type,e.email),s.json({},200)}).get("/health",s=>s.json(Xf(),200)).all("/health",wr("GET")).get("/settings",s=>s.json(Qf(s.var.app.config.auth??{}),200)).all("/settings",wr("GET")).get("/.well-known/jwks.json",s=>(s.header("Cache-Control","public, max-age=600"),s.json(Zf(),200))).get("/.well-known/openid-configuration",s=>(s.header("Cache-Control","public, max-age=600"),s.json(em(),200))).all("/nonexistent",wS).use(en()).post("/logout",async s=>{let e=await $t(s),{authService:r}=s.var;return await r.signOut(s.get("sessionId"),s.req.query("scope")??e.scope,s.get("userId")),s.body(null,204)}).get("/user",async s=>{let{authService:e}=s.var,r=await e.getUser(s.get("userId"));return s.json(r,200)}).put("/user",async s=>{let e=await $t(s),{authService:r}=s.var,t=await r.updateUser(s.get("userId"),{data:e.data,password:e.password,email:e.email});return s.json(t,200)}).all("/user",wr("GET, PUT")).get("/reauthenticate",async s=>{let{authService:e}=s.var;return await e.reauthenticate(s.get("userId")),s.json({},200)}).all("/reauthenticate",wr("GET"));function wr(s){return e=>(e.header("Allow",s),e.body(null,405))}function wS(s){return s.header("Content-Type","text/plain; charset=utf-8"),s.header("X-Content-Type-Options","nosniff"),s.body("404 page not found",404)}var sm=new Set(["signup","magiclink","recovery","email_change","reauthentication"]);function CS(s){let e=typeof s.type=="string"?s.type:"";if(!e)throw re("Verify requires a verification type",400);if(!sm.has(e))throw re("Invalid email verification type",400);let r=typeof s.token_hash=="string"?s.token_hash:"",t=typeof s.token=="string"?s.token:"",n=typeof s.email=="string"?s.email:"";if(e==="signup"&&!r&&!(n&&t))throw re("Verify requires either a token or a token hash",400)}async function $t(s,e={}){if(!s.req.raw.body){if(e.requireBody)throw zs("Could not parse request body as JSON: unexpected end of JSON input");return {}}let r=await s.req.text();if(r===""){if(e.requireBody)throw zs("Could not parse request body as JSON: unexpected end of JSON input");return {}}try{return JSON.parse(r)}catch{if(s.req.header("Content-Type")?.toLowerCase().split(";")[0]?.trim()==="application/x-www-form-urlencoded")throw zs("Could not parse request body as JSON: unexpected end of JSON input");let n=Nl(r)||"invalid character ' ' looking for beginning of value";throw zs(`Could not parse request body as JSON: ${n}`)}}function na(s,e){e.session_id&&s.header("Sb-Auth-Session-Id",e.session_id),e.user_id&&s.header("Sb-Auth-User-Id",e.user_id),e.refresh_token&&s.header("Sb-Auth-Refresh-Token-Prefix",String(e.refresh_token).slice(0,8));}function nm(s){let e=s.connection.dialect,r=new Zs(s.connection.kysely,e);return new Qs(r,s.config.auth,s._mailer??new Ks(s.drivers.email))}function im(s){if(s==null)return {};if(typeof s=="string")try{return JSON.parse(s)}catch{return {}}return s}function am(s){if(s==null)return [];if(Array.isArray(s))return s;if(typeof s=="string")try{return JSON.parse(s)}catch{return []}return []}function Qt(s){return typeof s=="string"?s:JSON.stringify(s??{})}var tn=class{constructor(e,r){this.db=e;this.dialect=r;this.schema="storage";}schema;table(e){return this.db.withSchema(this.schema).selectFrom(e)}insertInto(e){return this.db.withSchema(this.schema).insertInto(e)}update(e){return this.db.withSchema(this.schema).updateTable(e)}deleteFrom(e){return this.db.withSchema(this.schema).deleteFrom(e)}async createBucket(e){let r=new Date().toISOString(),t={id:e.id,name:e.name,owner:e.owner??null,owner_id:e.owner_id??null,public:e.public??false,file_size_limit:e.file_size_limit??null,allowed_mime_types:this.dialect==="postgres"?e.allowed_mime_types??null:Qt(e.allowed_mime_types??[]),created_at:r,updated_at:r};return await this.insertInto("buckets").values(t).execute(),await this.findBucketById(e.id)}async findBucketById(e){let r=await this.table("buckets").selectAll().where("id","=",e).executeTakeFirst();return r?this.parseBucketRow(r):null}async findBucketByName(e){let r=await this.table("buckets").selectAll().where("name","=",e).executeTakeFirst();return r?this.parseBucketRow(r):null}async listBuckets(){return (await this.table("buckets").selectAll().execute()).map(r=>this.parseBucketRow(r))}async updateBucket(e,r){let t={updated_at:new Date().toISOString()};return r.public!==void 0&&(t.public=r.public),r.file_size_limit!==void 0&&(t.file_size_limit=r.file_size_limit),r.allowed_mime_types!==void 0&&(t.allowed_mime_types=this.dialect==="postgres"?r.allowed_mime_types??null:Qt(r.allowed_mime_types)),await this.update("buckets").set(t).where("id","=",e).execute(),this.findBucketById(e)}async deleteBucket(e){await this.deleteFrom("buckets").where("id","=",e).execute();}async isBucketEmpty(e){let r=await this.table("objects").select(this.db.fn.count("id").as("count")).where("bucket_id","=",e).executeTakeFirst();return Number(r?.count??0)===0}async createObject(e){let r=new Date().toISOString(),t={id:e.id,bucket_id:e.bucket_id,name:e.name,owner:e.owner??null,owner_id:e.owner_id??null,metadata:Qt(e.metadata??{}),user_metadata:Qt(e.user_metadata??{}),version:e.version??null,created_at:r,updated_at:r,last_accessed_at:r};return this.dialect!=="postgres"&&(t.path_tokens=Qt(e.name.split("/"))),await this.insertInto("objects").values(t).execute(),await this.findObjectById(e.id)}async findObjectById(e){let r=await this.table("objects").selectAll().where("id","=",e).executeTakeFirst();return r?this.parseObjectRow(r):null}async findObjectByPath(e,r){let t=await this.table("objects").selectAll().where("bucket_id","=",e).where("name","=",r).executeTakeFirst();return t?this.parseObjectRow(t):null}async listObjects(e,r,t){let n=this.table("objects").selectAll().where("bucket_id","=",e);return r&&(n=n.where("name","like",`${r}%`)),t?.search&&(n=n.where("name","like",`%${t.search}%`)),t?.sortBy?n=n.orderBy(t.sortBy.column,t.sortBy.order):n=n.orderBy("name","asc"),t?.limit&&(n=n.limit(t.limit)),t?.offset&&(n=n.offset(t.offset)),(await n.execute()).map(a=>this.parseObjectRow(a))}async updateObject(e,r){let t={updated_at:new Date().toISOString()};return r.name!==void 0&&(t.name=r.name,this.dialect!=="postgres"&&(t.path_tokens=Qt(r.name.split("/")))),r.metadata!==void 0&&(t.metadata=Qt(r.metadata)),r.user_metadata!==void 0&&(t.user_metadata=Qt(r.user_metadata)),r.version!==void 0&&(t.version=r.version),r.owner!==void 0&&(t.owner=r.owner),r.owner_id!==void 0&&(t.owner_id=r.owner_id),await this.update("objects").set(t).where("id","=",e).execute(),this.findObjectById(e)}async deleteObject(e){await this.deleteFrom("objects").where("id","=",e).execute();}async deleteObjectsByBucket(e){let t=(await this.table("objects").select("name").where("bucket_id","=",e).execute()).map(n=>n.name);return t.length>0&&await this.deleteFrom("objects").where("bucket_id","=",e).execute(),t}async objectExists(e,r){return !!await this.table("objects").select("id").where("bucket_id","=",e).where("name","=",r).executeTakeFirst()}async touchObject(e){await this.update("objects").set({last_accessed_at:new Date().toISOString()}).where("id","=",e).execute();}parseBucketRow(e){return {...e,owner:e.owner??"",owner_id:e.owner_id??"",public:!!e.public,allowed_mime_types:e.allowed_mime_types==null?null:am(e.allowed_mime_types)}}parseObjectRow(e){return {...e,metadata:im(e.metadata),user_metadata:im(e.user_metadata),path_tokens:am(e.path_tokens)}}};var V=class s extends Error{constructor(r,t,n){super(n);this.status=r;this.code=t;}name="StorageError";static bucketNotFound(r){return new s(404,"Bucket not found",`Bucket not found: ${r}`)}static bucketAlreadyExists(r){return new s(409,"Duplicate","The resource already exists")}static bucketNotEmpty(r){return new s(409,"ResourceNotEmpty","The bucket you tried to delete is not empty")}static objectNotFound(r){return new s(404,"Object not found",`Object not found: ${r}`)}static invalidMimeType(r,t){return new s(415,"invalid_mime_type",`mime type ${r} is not supported. Supported: ${t.join(", ")}`)}static fileTooLarge(r){return new s(413,"Payload too large",`The object exceeded the maximum allowed size of ${r} bytes`)}static invalidKey(r){return new s(400,"Invalid key",`Invalid object key: ${r}`)}static storageNotConfigured(){return new s(500,"Storage not configured","Storage is enabled but no storage adapter has been set. Set app._storageAdapter before making storage requests.")}toJSON(){return {statusCode:String(this.status),error:this.code,message:this.message}}};var rn=class{constructor(e,r,t,n={},i){this.repo=e;this.adapter=r;this.config=t;this.options=n;this.transformationAdapter=i;}initialized=false;async init(){if(!this.initialized&&(this.initialized=true,this.options.autoCreateBuckets!==false&&this.config.buckets))for(let[e,r]of Object.entries(this.config.buckets))await this.repo.findBucketById(e)||await this.repo.createBucket({id:e,name:e,public:r.public??false,file_size_limit:r.file_size_limit?RS(r.file_size_limit):null,allowed_mime_types:r.allowed_mime_types});}async createBucket(e){if(await this.repo.findBucketById(e.id))throw V.bucketAlreadyExists(e.id);return this.repo.createBucket(e)}async getBucket(e){let r=await this.repo.findBucketById(e);if(!r)throw V.bucketNotFound(e);return r}async listBuckets(){return this.repo.listBuckets()}async updateBucket(e,r){if(!await this.repo.findBucketById(e))throw V.bucketNotFound(e);return await this.repo.updateBucket(e,r)}async deleteBucket(e){if(!await this.repo.findBucketById(e))throw V.bucketNotFound(e);if(!await this.repo.isBucketEmpty(e))throw V.bucketNotEmpty(e);await this.repo.deleteBucket(e);}async emptyBucket(e){if(!await this.repo.findBucketById(e))throw V.bucketNotFound(e);let t=await this.repo.deleteObjectsByBucket(e);t.length>0&&await this.adapter.deleteObjects(e,t);}async upload(e,r,t,n){xl(r);let i=await this.repo.findBucketById(e);if(!i)throw V.bucketNotFound(e);let a=n?.contentType??"application/octet-stream",o=n?.cacheControl??"no-cache";if(i.allowed_mime_types&&i.allowed_mime_types.length>0&&!i.allowed_mime_types.includes(a))throw V.invalidMimeType(a,i.allowed_mime_types);let l=i.file_size_limit??this.config.fileSizeLimit??null;if(l&&n?.contentLength&&n.contentLength>l)throw V.fileTooLarge(l);let u=await this.repo.findObjectByPath(e,r);if(u&&!n?.upsert)throw V.bucketAlreadyExists(r);return await this.adapter.uploadObject(e,r,void 0,t,a,o),u&&n?.upsert?await this.repo.updateObject(u.id,{metadata:n?.metadata??u.metadata,version:crypto.randomUUID()}):this.repo.createObject({id:crypto.randomUUID(),bucket_id:e,name:r,owner:n?.owner??null,owner_id:n?.owner??null,metadata:n?.metadata??{},version:crypto.randomUUID()})}async download(e,r,t){let n=await this.repo.findObjectByPath(e,r);if(!n)throw V.objectNotFound(r);if(await this.repo.touchObject(n.id),t?.transform&&this.transformationAdapter&&!this.transformationAdapter.requiresBuffer&&this.transformationAdapter.transformFromUrl){let a=await this.adapter.privateAssetUrl(e,r,n.version??void 0),o=await this.transformationAdapter.transformFromUrl(a,t.transform);return {body:o.body,metadata:{cacheControl:"public, max-age=3600",contentLength:o.contentLength??0,size:o.contentLength??0,mimetype:o.contentType,eTag:""}}}let i=await this.adapter.getObject(e,r,n.version??void 0);if(!i.body)throw V.objectNotFound(r);if(t?.transform&&this.transformationAdapter?.requiresBuffer){let a=await AS(i.body),o=await this.transformationAdapter.transform(a,t.transform);return {body:o.body,metadata:{...i.metadata,mimetype:o.contentType,size:o.contentLength??0,contentLength:o.contentLength??0}}}return {body:i.body,metadata:i.metadata}}async update(e,r,t,n){return this.upload(e,r,t,{...n,upsert:n?.upsert??true})}async remove(e,r){if(!await this.repo.findBucketById(e))throw V.bucketNotFound(e);let n=[];for(let i of r){let a=await this.repo.findObjectByPath(e,i);a&&(await this.adapter.deleteObject(e,i,a.version??void 0),await this.repo.deleteObject(a.id),n.push(a));}return n}async list(e,r,t){if(!await this.repo.findBucketById(e))throw V.bucketNotFound(e);return this.repo.listObjects(e,r,t)}async move(e,r,t){xl(t);let n=await this.repo.findObjectByPath(e,r);if(!n)throw V.objectNotFound(r);await this.adapter.copyObject(e,r,n.version??void 0,t,void 0),await this.adapter.deleteObject(e,r,n.version??void 0),await this.repo.updateObject(n.id,{name:t,version:crypto.randomUUID()});}async copy(e,r,t){xl(t);let n=await this.repo.findObjectByPath(e,r);if(!n)throw V.objectNotFound(r);return await this.adapter.copyObject(e,r,n.version??void 0,t,void 0),await this.repo.createObject({id:crypto.randomUUID(),bucket_id:e,name:t,owner:n.owner,owner_id:n.owner_id,metadata:n.metadata,version:crypto.randomUUID()}),{key:t}}async info(e,r){let t=await this.repo.findObjectByPath(e,r);if(!t)throw V.objectNotFound(r);let n=await this.adapter.headObject(e,r,t.version??void 0);return {...t,httpMetadata:n}}async exists(e,r){return this.repo.objectExists(e,r)}async createSignedUrl(e,r,t){if(!await this.repo.findObjectByPath(e,r))throw V.objectNotFound(r);let i=await this.signStorageToken({sub:r,bucket:e,intent:"download"},t);return {signedUrl:`/storage/v1/object/sign/${e}/${r}?token=${i}`}}async createSignedUrls(e,r,t){let n=[];for(let i of r)try{let{signedUrl:a}=await this.createSignedUrl(e,i,t);n.push({path:i,signedUrl:a,error:null});}catch(a){n.push({path:i,signedUrl:"",error:a.message});}return n}async createSignedUploadUrl(e,r){if(!await this.repo.findBucketById(e))throw V.bucketNotFound(e);let n=await this.signStorageToken({sub:r,bucket:e,intent:"upload"},7200);return {signedUrl:`/storage/v1/object/upload/sign/${e}/${r}?token=${n}`,token:n,path:r}}async verifySignedUrl(e){let r=new TextEncoder().encode(this.config.jwtSecret),{payload:t}=await yr(e,r,{algorithms:["HS256"]});return {bucket:t.bucket,path:t.sub,intent:t.intent}}async signStorageToken(e,r){let t=new TextEncoder().encode(this.config.jwtSecret),n=Math.floor(Date.now()/1e3);return new Er({...e,iat:n}).setProtectedHeader({alg:"HS256",typ:"JWT"}).setIssuedAt(n).setExpirationTime(n+r).sign(t)}};async function AS(s){if(s instanceof Uint8Array||Buffer.isBuffer(s))return s;if(s instanceof Blob)return new Uint8Array(await s.arrayBuffer());let e=[],r=s.getReader();for(;;){let{done:t,value:n}=await r.read();if(t)break;e.push(n);}return Buffer.concat(e)}function xl(s){if(!s||s.includes("..")||s.startsWith("/"))throw V.invalidKey(s)}function RS(s){let e=s.match(/^(\d+(?:\.\d+)?)\s*(B|KB|KiB|MB|MiB|GB|GiB)$/i);if(!e)return 0;let r=Number.parseFloat(e[1]),t=e[2].toUpperCase();return Math.floor(r*({B:1,KB:1e3,KIB:1024,MB:1e6,MIB:1048576,GB:1e9,GIB:1073741824}[t]??1))}var _S=/^[\w!#$%&'*.^`|~+-]+$/,vS=/^[ !#-:<-[\]-~]*$/,Ul=(s,e)=>{let r=s.trim().split(";"),t={};for(let n of r){n=n.trim();let i=n.indexOf("=");if(i===-1)continue;let a=n.substring(0,i).trim();if(!_S.test(a))continue;let o=n.substring(i+1).trim();if(o.startsWith('"')&&o.endsWith('"')&&(o=o.slice(1,-1)),vS.test(o)&&(t[a]=o.indexOf("%")!==-1?$r(o,Es):o,e));}return t};var om=(s,e,r)=>{let t=s.req.raw.headers.get("Cookie");return t?Ul(t):{}};var lm=(s,e)=>new Response(s,{headers:{"Content-Type":e}}).formData();var OS=/^application\/([a-z-\.]+\+)?json(;\s*[a-zA-Z0-9\-]+\=([^;]+))*$/,NS=/^multipart\/form-data(;\s?boundary=[a-zA-Z0-9'"()+_,\-./:=?]+)?$/,IS=/^application\/x-www-form-urlencoded(;\s*[a-zA-Z0-9\-]+\=([^;]+))*$/,Bl=(s,e)=>async(r,t)=>{let n={},i=r.req.header("Content-Type");switch(s){case "json":if(!i||!OS.test(i))break;try{n=await r.req.json();}catch{let o="Malformed JSON in request body";throw new ii(400,{message:o})}break;case "form":{if(!i||!(NS.test(i)||IS.test(i)))break;let o;if(r.req.bodyCache.formData)o=await r.req.bodyCache.formData;else try{let u=await r.req.arrayBuffer();o=await lm(u,i),r.req.bodyCache.formData=o;}catch(u){let p="Malformed FormData request.";throw p+=u instanceof Error?` ${u.message}`:` ${String(u)}`,new ii(400,{message:p})}let l={};o.forEach((u,p)=>{p.endsWith("[]")?(l[p]??=[]).push(u):Array.isArray(l[p])?l[p].push(u):p in l?l[p]=[l[p],u]:l[p]=u;}),n=l;break}case "query":n=Object.fromEntries(Object.entries(r.req.queries()).map(([o,l])=>l.length===1?[o,l[0]]:[o,l]));break;case "param":n=r.req.param();break;case "header":n=r.req.header();break;case "cookie":n=om(r);break}let a=await e(n,r);return a instanceof Response?a:(r.req.addValidatedData(s,a),await t())};var LS=Symbol.for("jsonv"),kS=(s,e)=>Object.assign(s,{[LS]:e}),Pt=(s,e,r,t)=>{let n=Bl(s,async(i,a)=>{let o=e.coerce(i,{dropUnknown:r?.dropUnknown}),l=e.validate(o);if(!l.valid)return a.json({...l,schema:e},400);return o});return kS(n,{type:"parameters",skip:r?.skipOpenAPI,value:{target:s,schema:e}})};var $S=E.object({id:E.string(),name:E.string(),public:E.boolean({default:false}).optional(),file_size_limit:E.number().optional(),allowed_mime_types:E.array(E.string()).optional()}),PS=E.object({public:E.boolean().optional(),file_size_limit:E.number().optional(),allowed_mime_types:E.array(E.string()).optional()}),DS=E.object({prefix:E.string().optional(),limit:E.number().optional(),offset:E.number().optional(),sortBy:E.object({column:E.string(),order:E.string()}).optional(),search:E.string().optional()}),um=E.object({bucketId:E.string(),sourceKey:E.string(),destinationKey:E.string()}),jS=E.object({expiresIn:E.number()}),xS=E.object({expiresIn:E.number(),paths:E.array(E.string())}),US=E.object({prefixes:E.array(E.string())}),BS=new be().get("/object/public/:bucketId/*",async s=>{let e=s.req.param("bucketId"),r=pt(s.req.path,`/object/public/${e}/`),{storageService:t}=s.var;if(!(await t.getBucket(e)).public)return s.json({error:"Bucket is not public"},400);let i=Ml(s.req.query()),a=await t.download(e,r,{transform:i??void 0});return new Response(a.body,{headers:Fl(a.metadata)})}).get("/object/sign/:bucketId/*",async s=>{let e=s.req.param("bucketId"),r=pt(s.req.path,`/object/sign/${e}/`),t=s.req.query("token"),{storageService:n}=s.var;if(!t)return s.json({error:"Missing token"},400);let i=await n.verifySignedUrl(t);if(i.bucket!==e||i.path!==r)return s.json({error:"Invalid token"},403);let a=Ml(s.req.query()),o=await n.download(e,r,{transform:a??void 0});return new Response(o.body,{headers:Fl(o.metadata)})}).put("/object/upload/sign/:bucketId/*",async s=>{let e=s.req.param("bucketId"),r=pt(s.req.path,`/object/upload/sign/${e}/`),t=s.req.query("token"),{storageService:n}=s.var;if(!t)return s.json({error:"Missing token"},400);let i=await n.verifySignedUrl(t);if(i.bucket!==e||i.path!==r||i.intent!=="upload")return s.json({error:"Invalid token"},403);let a=s.req.header("content-type")??"application/octet-stream",o=s.req.header("content-length")?Number.parseInt(s.req.header("content-length"),10):void 0,l=s.req.raw.body??new Uint8Array(await s.req.arrayBuffer()),u=await n.upload(e,r,l,{contentType:a,contentLength:o,upsert:true});return s.json({Key:u.name},200)}),MS=new be().use(en()).post("/bucket",Pt("json",$S),async s=>{let e=s.req.valid("json"),{storageService:r}=s.var,t=await r.createBucket({id:e.id,name:e.name??e.id,public:e.public,file_size_limit:e.file_size_limit,allowed_mime_types:e.allowed_mime_types});return s.json({name:t.name},200)}).get("/bucket",async s=>{let{storageService:e}=s.var,r=await e.listBuckets();return s.json(r,200)}).get("/bucket/:id",async s=>{let{storageService:e}=s.var,r=await e.getBucket(s.req.param("id"));return s.json(r,200)}).put("/bucket/:id",Pt("json",PS),async s=>{let{storageService:e}=s.var;return await e.updateBucket(s.req.param("id"),s.req.valid("json")),s.json({message:"Successfully updated"},200)}).delete("/bucket/:id",async s=>{let{storageService:e}=s.var;return await e.deleteBucket(s.req.param("id")),s.json({message:"Successfully deleted"},200)}).post("/bucket/:id/empty",async s=>{let{storageService:e}=s.var;return await e.emptyBucket(s.req.param("id")),s.json({message:"Empty bucket has been queued. Completion may take up to an hour."},200)}).post("/object/list/:bucketId",Pt("json",DS),async s=>{let e=s.req.param("bucketId"),r=s.req.valid("json"),{storageService:t}=s.var,n=await t.list(e,r.prefix,{limit:r.limit,offset:r.offset,sortBy:r.sortBy,search:r.search});return s.json(n,200)}).post("/object/move",Pt("json",um),async s=>{let e=s.req.valid("json"),{storageService:r}=s.var;return await r.move(e.bucketId,e.sourceKey,e.destinationKey),s.json({message:"Successfully moved"},200)}).post("/object/copy",Pt("json",um),async s=>{let e=s.req.valid("json"),{storageService:r}=s.var,t=await r.copy(e.bucketId,e.sourceKey,e.destinationKey);return s.json({key:t.key},200)}).get("/object/info/:bucketId/*",async s=>{let e=s.req.param("bucketId"),r=pt(s.req.path,`/object/info/${e}/`),{storageService:t}=s.var,n=await t.info(e,r);return s.json(n,200)}).post("/object/sign/:bucketId/*",Pt("json",jS),async s=>{let e=s.req.param("bucketId"),r=pt(s.req.path,`/object/sign/${e}/`),{expiresIn:t}=s.req.valid("json"),{storageService:n}=s.var,i=await n.createSignedUrl(e,r,t);return s.json(i,200)}).post("/object/sign/:bucketId",Pt("json",xS),async s=>{let e=s.req.param("bucketId"),{expiresIn:r,paths:t}=s.req.valid("json"),{storageService:n}=s.var,i=await n.createSignedUrls(e,t,r);return s.json(i,200)}).post("/object/upload/sign/:bucketId/*",async s=>{let e=s.req.param("bucketId"),r=pt(s.req.path,`/object/upload/sign/${e}/`),{storageService:t}=s.var,n=await t.createSignedUploadUrl(e,r);return s.json(n,200)}).delete("/object/:bucketId",Pt("json",US),async s=>{let e=s.req.param("bucketId"),{prefixes:r}=s.req.valid("json"),{storageService:t}=s.var,n=await t.remove(e,r);return s.json(n,200)}).post("/object/:bucketId/*",async s=>{let e=s.req.param("bucketId"),r=pt(s.req.path,`/object/${e}/`),{storageService:t}=s.var,n=s.req.header("content-type")??"application/octet-stream",i=s.req.header("cache-control")??"no-cache",a=s.req.header("x-upsert")==="true",o,l,u;if(n.startsWith("multipart/form-data")){let f=(await s.req.formData()).get("file");if(!f)throw new V(400,"InvalidRequest","Missing file in multipart upload");let m=new Uint8Array(await f.arrayBuffer());o=m,l=f.type||"application/octet-stream",u=m.length;}else o=s.req.raw.body??new Uint8Array(await s.req.arrayBuffer()),l=n,u=s.req.header("content-length")?Number.parseInt(s.req.header("content-length"),10):void 0;let p=await t.upload(e,r,o,{contentType:l,cacheControl:i,contentLength:u,upsert:a,owner:s.get("userId")??null});return s.json({Key:`${e}/${p.name}`,Id:p.id},200)}).put("/object/:bucketId/*",async s=>{let e=s.req.param("bucketId"),r=pt(s.req.path,`/object/${e}/`),{storageService:t}=s.var,n=s.req.header("content-type")??"application/octet-stream",i=s.req.header("cache-control")??"no-cache",a=s.req.header("content-length")?Number.parseInt(s.req.header("content-length"),10):void 0,o=s.req.raw.body??new Uint8Array(await s.req.arrayBuffer()),l=await t.update(e,r,o,{contentType:n,cacheControl:i,contentLength:a,owner:s.get("userId")??null});return s.json({Key:`${e}/${l.name}`,Id:l.id},200)}).get("/object/:bucketId/*",async s=>{let e=s.req.param("bucketId"),r=pt(s.req.path,`/object/${e}/`),{storageService:t}=s.var,n=Ml(s.req.query()),i=await t.download(e,r,{transform:n??void 0});return new Response(i.body,{headers:Fl(i.metadata)})}).on("HEAD","/object/:bucketId/*",async s=>{let e=s.req.param("bucketId"),r=pt(s.req.path,`/object/${e}/`),{storageService:t}=s.var;return await t.exists(e,r)?s.body(null,200):s.body(null,404)}),ql=new be().onError((s,e)=>s instanceof V?e.json(s.toJSON(),400):(console.error("Storage error:",s),e.json({error:"server_error",message:"Internal server error"},500))).route("/",BS).route("/",MS);function pt(s,e){let r=s.replace(/^\/storage\/v1/,""),t=r.indexOf(e);return t===-1?r.split("/").slice(3).join("/"):r.slice(t+e.length)}function Ml(s){let{width:e,height:r,resize:t,format:n,quality:i}=s;return !e&&!r&&!t&&!n&&!i?null:{width:e?Number.parseInt(e,10):void 0,height:r?Number.parseInt(r,10):void 0,resize:t,format:n,quality:i?Number.parseInt(i,10):void 0}}function Fl(s){let e={"Content-Type":s.mimetype,"Cache-Control":s.cacheControl,ETag:s.eTag};return s.contentLength&&(e["Content-Length"]=String(s.contentLength)),s.lastModified&&(e["Last-Modified"]=s.lastModified.toUTCString()),s.contentRange&&(e["Content-Range"]=s.contentRange),e}var Jl=`-- supabase/storage core schema (Postgres)
70
+ `)}function c0(t,e=true){return (e?On(t):t).split(";").filter(Boolean)}function u0(t){let e=[],r="",n=0,s=t.length,i=o=>{eb(o).length>0&&e.push(o.trim());};for(;n<s;){let o=t[n],a=t[n+1];if(o==="-"&&a==="-"){for(;n<s&&t[n]!==`
71
+ `;)r+=t[n],n++;continue}if(o==="/"&&a==="*"){for(r+="/*",n+=2;n<s&&!(t[n]==="*"&&t[n+1]==="/");)r+=t[n],n++;n<s&&(r+="*/",n+=2);continue}if(o==="'"){for(r+=o,n++;n<s;){if(t[n]==="'"&&t[n+1]==="'"){r+="''",n+=2;continue}if(r+=t[n],t[n]==="'"){n++;break}n++;}continue}if(o==='"'){for(r+=o,n++;n<s;){if(t[n]==='"'&&t[n+1]==='"'){r+='""',n+=2;continue}if(r+=t[n],t[n]==='"'){n++;break}n++;}continue}if(o==="$"){let l=t.indexOf("$",n+1);if(l!==-1){let u=t.slice(n,l+1);if(/^\$[A-Za-z_][A-Za-z0-9_]*\$$|^\$\$$/.test(u)){r+=u,n=l+1;let c=t.indexOf(u,n);c===-1?(r+=t.slice(n),n=s):(r+=t.slice(n,c+u.length),n=c+u.length);continue}}}if(o===";"){i(r),r="",n++;continue}r+=o,n++;}return i(r),e}function eb(t){let e="",r=0,n=t.length;for(;r<n;){let s=t[r],i=t[r+1];if(s==="-"&&i==="-"){for(;r<n&&t[r]!==`
72
+ `;)r++;continue}if(s==="/"&&i==="*"){for(r+=2;r<n&&!(t[r]==="*"&&t[r+1]==="/");)r++;r+=2;continue}e+=s,r++;}return e.trim()}function Pa(t){return (t??"").trim().toLowerCase()}function Ia(t){return (t??"").replace(/\s+/g," ").replace(/"/g,"").trim().toLowerCase()}function Na(t){if(t==null)return null;let e=t.trim();for(;e.startsWith("(")&&e.endsWith(")");)e=e.slice(1,-1).trim();return (e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"'))&&(e=e.slice(1,-1)),e}function p0(t=10,e={}){let o="abcdefghijklmnopqrstuvwxyz"+(e.uppercase?"ABCDEFGHIJKLMNOPQRSTUVWXYZ":"")+(e.numbers?"0123456789":"")+(e.special?"!@#$%^&*()_+{}:\"<>?|[];',./`~":""),a="";for(let l=0;l<t;l++)a+=o[Math.floor(Math.random()*o.length)];return a}function m0(t,e){if(typeof t!="string"){if(e?.panic)throw new Error("Email must be a string");return false}if(!g.string({format:"email"}).validate(t).valid){if(e?.panic)throw new Error("Invalid email");return false}if(e?.domains?.length&&!e.domains.includes(t.split("@")[1])){if(e?.panic)throw new Error("Email domain not allowed");return false}return true}function h0(t,{panic:e=true,length:r=8,numbers:n=0,special:s=0}={}){try{if(typeof t!="string"){if(e)throw new Error("Password must be a string");return !1}if(t.length<r){if(e)throw new Error(`Password must be at least ${r} characters long`);return !1}if((t.match(/[0-9]/g)?.length??0)<n){if(e)throw new Error(`Password must contain at least ${n} numbers`);return !1}if((t.match(/[!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?]/g)?.length??0)<s){if(e)throw new Error(`Password must contain at least ${s} special characters`);return !1}return !0}catch(i){if(e)throw i;return false}}function g0(t){return !t||t.length===0?t:t.charAt(0).toUpperCase()+t.slice(1)}function y0(t,e=" "){return !t||t.length===0?t:t.split(e).map(r=>r.charAt(0).toUpperCase()+r.slice(1)).join(e)}function b0(t){return !t||t.length===0?t:t.split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" ")}function tb(t){return String(t).normalize("NFKD").replace(/[\u0300-\u036f]/g,"")}function w0(t){return tb(t).trim().toLowerCase().replace(/[^a-z0-9 -]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-")}function S0(t,e=50,r="..."){return t.length<=e?t:t.substring(0,e)+r}function O(t,e='"'){return `${e}${t}${e}`}function xi(t,e,r){if(e instanceof RegExp)return e.test(t);if(typeof e=="string")switch(!r&&e.startsWith("/")&&(r="regex"),r){case "regex":return new RegExp(e).test(t);case "sql":return new RegExp(e.replace("%",".*").replace("_",".")).test(t);case "wildcard":return new RegExp(e.replace("*",".*")).test(t);default:return t.includes(e)}return false}function E0(t,e,r=/\{\{([\w-]+)\}\}/g){return t.replace(r,(n,s)=>s in e?e[s]:n)}function pf(t,e,r=.33){if(e.length===0)return null;let n=df(t),s=[];for(let l of e){let u=rb(n,df(l));u>.1&&s.push([l,u]);}s.sort((l,u)=>u[1]-l[1]);let i=s.slice(0,50),o=null,a=r;for(let[l]of i){let u=Math.max(t.length,l.length),f=u===0?1:1-nb(t.toLowerCase(),l.toLowerCase())/u;f>a&&(a=f,o=l);}return o}function df(t,e=2){let r=new Map,n=`-${t.toLowerCase()}-`;for(let s=0;s<=n.length-e;s++){let i=n.slice(s,s+e);r.set(i,(r.get(i)||0)+1);}return r}function rb(t,e){let r=0,n=0,s=0;for(let[i,o]of t){n+=o*o;let a=e.get(i);a!==void 0&&(r+=o*a);}for(let[,i]of e)s+=i*i;return n===0||s===0?0:r/(Math.sqrt(n)*Math.sqrt(s))}function nb(t,e){let r=t.length,n=e.length,s=Array.from({length:n+1},(i,o)=>o);for(let i=1;i<=r;i++){let o=s[0];s[0]=i;for(let a=1;a<=n;a++){let l=s[a];s[a]=t[i-1]===e[a-1]?o:1+Math.min(o,s[a],s[a-1]),o=l;}}return s[n]}function x0(t){return typeof t=="number"?t:Number.parseInt(String(t),10)}function C0(){return crypto.randomUUID()}var Pn=class extends Error{constructor(r,n){super(`Could not find the table '${[r,n].filter(Boolean).join(".")}' in the schema cache`);this.schema=r;this.relation=n;}},ja=class{constructor(e){this.config=e;}kysely;introspection;async translateDdl(e){return e}async clearSchemaCache(){this.introspection=void 0,await this.deleteCachedIntrospection();}async readCachedIntrospection(e){if(typeof this.introspection=="object"&&e?.useCache===true)return this.introspection;if(e?.useCache!==true||!this.config.schemaCache)return;let r=await this.config.schemaCache.get(this.schemaCacheKey());if(r)try{return this.introspection=JSON.parse(r),this.introspection}catch{await this.deleteCachedIntrospection();return}}async writeCachedIntrospection(e,r){this.introspection=e,r?.useDriver===true&&await this.config.schemaCache?.set(this.schemaCacheKey(),JSON.stringify(e));}async deleteCachedIntrospection(){await this.config.schemaCache?.delete(this.schemaCacheKey());}schemaCacheKey(){return ["@supabase/lite","schema-cache",this.dialect,this.config.introspection?.name??"",this.config.url??""].join(":")}async exec(e,...r){try{return sql(e,...r??[]).execute(this.kysely)}catch(n){throw console.error(n),new Error(`Failed to execute query: ${e}`)}}async ping(){try{let e=await this.exec("SELECT 1");return e&&Array.isArray(e.rows)&&e.rows.length===1}catch{return false}}async transaction(e,r){throw new Error("This Connection does not support transactions")}createMigrator(e){throw new Error("This Connection does not support migrations")}async onPostgrestAST(e,r){return e}deserializeRow(e){return e}normalizeDbError(e){return e}async withContext(e,r,n){return r(this.kysely)}};var vi=class extends Error{constructor(r){super(`new row violates row-level security policy for table "${r.data.table}"`);this.policy=r;this.name="PolicyViolation";}};var fr=class extends Error{constructor(r,n,s,i){super(`check constraint "${s}" violated for ${r}.${n}`);this.table=r;this.column=n;this.constraint=s;this.value=i;this.name="CheckConstraintError";}};function $(t,e,r,n,s){let i=JSON.stringify({code:e,details:n,hint:s,message:r}),o=new TextEncoder().encode(i);return new Response(o,{status:t,headers:{"Content-Type":"application/json; charset=utf-8","Content-Length":String(o.byteLength)}})}function Xe(t){return $(t.status,t.code,t.message,t.details??null,t.hint??null)}var dr=new TextEncoder,Ct=new TextDecoder;function Ci(...t){let e=t.reduce((s,{length:i})=>s+i,0),r=new Uint8Array(e),n=0;for(let s of t)r.set(s,n),n+=s.length;return r}function zt(t){let e=new Uint8Array(t.length);for(let r=0;r<t.length;r++){let n=t.charCodeAt(r);if(n>127)throw new TypeError("non-ASCII string encountered in encode()");e[r]=n;}return e}function mf(t){if(Uint8Array.prototype.toBase64)return t.toBase64();let e=32768,r=[];for(let n=0;n<t.length;n+=e)r.push(String.fromCharCode.apply(null,t.subarray(n,n+e)));return btoa(r.join(""))}function hf(t){if(Uint8Array.fromBase64)return Uint8Array.fromBase64(t);let e=atob(t),r=new Uint8Array(e.length);for(let n=0;n<e.length;n++)r[n]=e.charCodeAt(n);return r}function jr(t){if(Uint8Array.fromBase64)return Uint8Array.fromBase64(typeof t=="string"?t:Ct.decode(t),{alphabet:"base64url"});let e=t;e instanceof Uint8Array&&(e=Ct.decode(e)),e=e.replace(/-/g,"+").replace(/_/g,"/");try{return hf(e)}catch{throw new TypeError("The input to be decoded is not correctly encoded.")}}function Ai(t){let e=t;return typeof e=="string"&&(e=dr.encode(e)),Uint8Array.prototype.toBase64?e.toBase64({alphabet:"base64url",omitPadding:true}):mf(e).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}var Tt={};Is(Tt,{JOSEAlgNotAllowed:()=>In,JOSEError:()=>pe,JOSENotSupported:()=>Ue,JWEDecryptionFailed:()=>Da,JWEInvalid:()=>La,JWKInvalid:()=>Ua,JWKSInvalid:()=>Fa,JWKSMultipleMatchingKeys:()=>Ba,JWKSNoMatchingKey:()=>Ma,JWKSTimeout:()=>qa,JWSInvalid:()=>z,JWSSignatureVerificationFailed:()=>Nn,JWTClaimValidationFailed:()=>Oe,JWTExpired:()=>Dr,JWTInvalid:()=>At});var pe=class extends Error{static code="ERR_JOSE_GENERIC";code="ERR_JOSE_GENERIC";constructor(e,r){super(e,r),this.name=this.constructor.name,Error.captureStackTrace?.(this,this.constructor);}},Oe=class extends pe{static code="ERR_JWT_CLAIM_VALIDATION_FAILED";code="ERR_JWT_CLAIM_VALIDATION_FAILED";claim;reason;payload;constructor(e,r,n="unspecified",s="unspecified"){super(e,{cause:{claim:n,reason:s,payload:r}}),this.claim=n,this.reason=s,this.payload=r;}},Dr=class extends pe{static code="ERR_JWT_EXPIRED";code="ERR_JWT_EXPIRED";claim;reason;payload;constructor(e,r,n="unspecified",s="unspecified"){super(e,{cause:{claim:n,reason:s,payload:r}}),this.claim=n,this.reason=s,this.payload=r;}},In=class extends pe{static code="ERR_JOSE_ALG_NOT_ALLOWED";code="ERR_JOSE_ALG_NOT_ALLOWED"},Ue=class extends pe{static code="ERR_JOSE_NOT_SUPPORTED";code="ERR_JOSE_NOT_SUPPORTED"},Da=class extends pe{static code="ERR_JWE_DECRYPTION_FAILED";code="ERR_JWE_DECRYPTION_FAILED";constructor(e="decryption operation failed",r){super(e,r);}},La=class extends pe{static code="ERR_JWE_INVALID";code="ERR_JWE_INVALID"},z=class extends pe{static code="ERR_JWS_INVALID";code="ERR_JWS_INVALID"},At=class extends pe{static code="ERR_JWT_INVALID";code="ERR_JWT_INVALID"},Ua=class extends pe{static code="ERR_JWK_INVALID";code="ERR_JWK_INVALID"},Fa=class extends pe{static code="ERR_JWKS_INVALID";code="ERR_JWKS_INVALID"},Ma=class extends pe{static code="ERR_JWKS_NO_MATCHING_KEY";code="ERR_JWKS_NO_MATCHING_KEY";constructor(e="no applicable key found in the JSON Web Key Set",r){super(e,r);}},Ba=class extends pe{[Symbol.asyncIterator];static code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";constructor(e="multiple matching keys found in the JSON Web Key Set",r){super(e,r);}},qa=class extends pe{static code="ERR_JWKS_TIMEOUT";code="ERR_JWKS_TIMEOUT";constructor(e="request timed out",r){super(e,r);}},Nn=class extends pe{static code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";constructor(e="signature verification failed",r){super(e,r);}};var at=(t,e="algorithm.name")=>new TypeError(`CryptoKey does not support this operation, its ${e} must be ${t}`),Lr=(t,e)=>t.name===e;function Ja(t){return parseInt(t.name.slice(4),10)}function ib(t){switch(t){case "ES256":return "P-256";case "ES384":return "P-384";case "ES512":return "P-521";default:throw new Error("unreachable")}}function ob(t,e){if(e&&!t.usages.includes(e))throw new TypeError(`CryptoKey does not support this operation, its usages must include ${e}.`)}function gf(t,e,r){switch(e){case "HS256":case "HS384":case "HS512":{if(!Lr(t.algorithm,"HMAC"))throw at("HMAC");let n=parseInt(e.slice(2),10);if(Ja(t.algorithm.hash)!==n)throw at(`SHA-${n}`,"algorithm.hash");break}case "RS256":case "RS384":case "RS512":{if(!Lr(t.algorithm,"RSASSA-PKCS1-v1_5"))throw at("RSASSA-PKCS1-v1_5");let n=parseInt(e.slice(2),10);if(Ja(t.algorithm.hash)!==n)throw at(`SHA-${n}`,"algorithm.hash");break}case "PS256":case "PS384":case "PS512":{if(!Lr(t.algorithm,"RSA-PSS"))throw at("RSA-PSS");let n=parseInt(e.slice(2),10);if(Ja(t.algorithm.hash)!==n)throw at(`SHA-${n}`,"algorithm.hash");break}case "Ed25519":case "EdDSA":{if(!Lr(t.algorithm,"Ed25519"))throw at("Ed25519");break}case "ML-DSA-44":case "ML-DSA-65":case "ML-DSA-87":{if(!Lr(t.algorithm,e))throw at(e);break}case "ES256":case "ES384":case "ES512":{if(!Lr(t.algorithm,"ECDSA"))throw at("ECDSA");let n=ib(e);if(t.algorithm.namedCurve!==n)throw at(n,"algorithm.namedCurve");break}default:throw new TypeError("CryptoKey does not support this operation")}ob(t,r);}function yf(t,e,...r){if(r=r.filter(Boolean),r.length>2){let n=r.pop();t+=`one of type ${r.join(", ")}, or ${n}.`;}else r.length===2?t+=`one of type ${r[0]} or ${r[1]}.`:t+=`of type ${r[0]}.`;return e==null?t+=` Received ${e}`:typeof e=="function"&&e.name?t+=` Received function ${e.name}`:typeof e=="object"&&e!=null&&e.constructor?.name&&(t+=` Received an instance of ${e.constructor.name}`),t}var bf=(t,...e)=>yf("Key must be ",t,...e),Ka=(t,e,...r)=>yf(`Key for the ${t} algorithm must be `,e,...r);var Wa=t=>{if(t?.[Symbol.toStringTag]==="CryptoKey")return true;try{return t instanceof CryptoKey}catch{return false}},Ha=t=>t?.[Symbol.toStringTag]==="KeyObject",za=t=>Wa(t)||Ha(t);function Ti(...t){let e=t.filter(Boolean);if(e.length===0||e.length===1)return true;let r;for(let n of e){let s=Object.keys(n);if(!r||r.size===0){r=new Set(s);continue}for(let i of s){if(r.has(i))return false;r.add(i);}}return true}var ab=t=>typeof t=="object"&&t!==null;function Gt(t){if(!ab(t)||Object.prototype.toString.call(t)!=="[object Object]")return false;if(Object.getPrototypeOf(t)===null)return true;let e=t;for(;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}function Ri(t,e){if(t.startsWith("RS")||t.startsWith("PS")){let{modulusLength:r}=e.algorithm;if(typeof r!="number"||r<2048)throw new TypeError(`${t} requires key modulusLength to be 2048 bits or larger`)}}function lb(t){let e,r;switch(t.kty){case "AKP":{switch(t.alg){case "ML-DSA-44":case "ML-DSA-65":case "ML-DSA-87":e={name:t.alg},r=t.priv?["sign"]:["verify"];break;default:throw new Ue('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break}case "RSA":{switch(t.alg){case "PS256":case "PS384":case "PS512":e={name:"RSA-PSS",hash:`SHA-${t.alg.slice(-3)}`},r=t.d?["sign"]:["verify"];break;case "RS256":case "RS384":case "RS512":e={name:"RSASSA-PKCS1-v1_5",hash:`SHA-${t.alg.slice(-3)}`},r=t.d?["sign"]:["verify"];break;case "RSA-OAEP":case "RSA-OAEP-256":case "RSA-OAEP-384":case "RSA-OAEP-512":e={name:"RSA-OAEP",hash:`SHA-${parseInt(t.alg.slice(-3),10)||1}`},r=t.d?["decrypt","unwrapKey"]:["encrypt","wrapKey"];break;default:throw new Ue('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break}case "EC":{switch(t.alg){case "ES256":e={name:"ECDSA",namedCurve:"P-256"},r=t.d?["sign"]:["verify"];break;case "ES384":e={name:"ECDSA",namedCurve:"P-384"},r=t.d?["sign"]:["verify"];break;case "ES512":e={name:"ECDSA",namedCurve:"P-521"},r=t.d?["sign"]:["verify"];break;case "ECDH-ES":case "ECDH-ES+A128KW":case "ECDH-ES+A192KW":case "ECDH-ES+A256KW":e={name:"ECDH",namedCurve:t.crv},r=t.d?["deriveBits"]:[];break;default:throw new Ue('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break}case "OKP":{switch(t.alg){case "Ed25519":case "EdDSA":e={name:"Ed25519"},r=t.d?["sign"]:["verify"];break;case "ECDH-ES":case "ECDH-ES+A128KW":case "ECDH-ES+A192KW":case "ECDH-ES+A256KW":e={name:t.crv},r=t.d?["deriveBits"]:[];break;default:throw new Ue('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break}default:throw new Ue('Invalid or unsupported JWK "kty" (Key Type) Parameter value')}return {algorithm:e,keyUsages:r}}async function wf(t){if(!t.alg)throw new TypeError('"alg" argument is required when "jwk.alg" is not present');let{algorithm:e,keyUsages:r}=lb(t),n={...t};return n.kty!=="AKP"&&delete n.alg,delete n.use,crypto.subtle.importKey("jwk",n,e,t.ext??!(t.d||t.priv),t.key_ops??r)}function ki(t,e,r,n,s){if(s.crit!==void 0&&n?.crit===void 0)throw new t('"crit" (Critical) Header Parameter MUST be integrity protected');if(!n||n.crit===void 0)return new Set;if(!Array.isArray(n.crit)||n.crit.length===0||n.crit.some(o=>typeof o!="string"||o.length===0))throw new t('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');let i;r!==void 0?i=new Map([...Object.entries(r),...e.entries()]):i=e;for(let o of n.crit){if(!i.has(o))throw new Ue(`Extension Header Parameter "${o}" is not recognized`);if(s[o]===void 0)throw new t(`Extension Header Parameter "${o}" is missing`);if(i.get(o)&&n[o]===void 0)throw new t(`Extension Header Parameter "${o}" MUST be integrity protected`)}return new Set(n.crit)}function Sf(t,e){if(e!==void 0&&(!Array.isArray(e)||e.some(r=>typeof r!="string")))throw new TypeError(`"${t}" option must be an array of strings`);if(e)return new Set(e)}var jn=t=>Gt(t)&&typeof t.kty=="string",Ef=t=>t.kty!=="oct"&&(t.kty==="AKP"&&typeof t.priv=="string"||typeof t.d=="string"),_f=t=>t.kty!=="oct"&&t.d===void 0&&t.priv===void 0,xf=t=>t.kty==="oct"&&typeof t.k=="string";var Ur,vf=async(t,e,r,n=false)=>{Ur||=new WeakMap;let s=Ur.get(t);if(s?.[r])return s[r];let i=await wf({...e,alg:r});return n&&Object.freeze(t),s?s[r]=i:Ur.set(t,{[r]:i}),i},ub=(t,e)=>{Ur||=new WeakMap;let r=Ur.get(t);if(r?.[e])return r[e];let n=t.type==="public",s=!!n,i;if(t.asymmetricKeyType==="x25519"){switch(e){case "ECDH-ES":case "ECDH-ES+A128KW":case "ECDH-ES+A192KW":case "ECDH-ES+A256KW":break;default:throw new TypeError("given KeyObject instance cannot be used for this algorithm")}i=t.toCryptoKey(t.asymmetricKeyType,s,n?[]:["deriveBits"]);}if(t.asymmetricKeyType==="ed25519"){if(e!=="EdDSA"&&e!=="Ed25519")throw new TypeError("given KeyObject instance cannot be used for this algorithm");i=t.toCryptoKey(t.asymmetricKeyType,s,[n?"verify":"sign"]);}switch(t.asymmetricKeyType){case "ml-dsa-44":case "ml-dsa-65":case "ml-dsa-87":{if(e!==t.asymmetricKeyType.toUpperCase())throw new TypeError("given KeyObject instance cannot be used for this algorithm");i=t.toCryptoKey(t.asymmetricKeyType,s,[n?"verify":"sign"]);}}if(t.asymmetricKeyType==="rsa"){let o;switch(e){case "RSA-OAEP":o="SHA-1";break;case "RS256":case "PS256":case "RSA-OAEP-256":o="SHA-256";break;case "RS384":case "PS384":case "RSA-OAEP-384":o="SHA-384";break;case "RS512":case "PS512":case "RSA-OAEP-512":o="SHA-512";break;default:throw new TypeError("given KeyObject instance cannot be used for this algorithm")}if(e.startsWith("RSA-OAEP"))return t.toCryptoKey({name:"RSA-OAEP",hash:o},s,n?["encrypt"]:["decrypt"]);i=t.toCryptoKey({name:e.startsWith("PS")?"RSA-PSS":"RSASSA-PKCS1-v1_5",hash:o},s,[n?"verify":"sign"]);}if(t.asymmetricKeyType==="ec"){let a=new Map([["prime256v1","P-256"],["secp384r1","P-384"],["secp521r1","P-521"]]).get(t.asymmetricKeyDetails?.namedCurve);if(!a)throw new TypeError("given KeyObject instance cannot be used for this algorithm");e==="ES256"&&a==="P-256"&&(i=t.toCryptoKey({name:"ECDSA",namedCurve:a},s,[n?"verify":"sign"])),e==="ES384"&&a==="P-384"&&(i=t.toCryptoKey({name:"ECDSA",namedCurve:a},s,[n?"verify":"sign"])),e==="ES512"&&a==="P-521"&&(i=t.toCryptoKey({name:"ECDSA",namedCurve:a},s,[n?"verify":"sign"])),e.startsWith("ECDH-ES")&&(i=t.toCryptoKey({name:"ECDH",namedCurve:a},s,n?[]:["deriveBits"]));}if(!i)throw new TypeError("given KeyObject instance cannot be used for this algorithm");return r?r[e]=i:Ur.set(t,{[e]:i}),i};async function $i(t,e){if(t instanceof Uint8Array||Wa(t))return t;if(Ha(t)){if(t.type==="secret")return t.export();if("toCryptoKey"in t&&typeof t.toCryptoKey=="function")try{return ub(t,e)}catch(n){if(n instanceof TypeError)throw n}let r=t.export({format:"jwk"});return vf(t,r,e)}if(jn(t))return t.k?jr(t.k):vf(t,t,e,true);throw new Error("unreachable")}var Fr=t=>t?.[Symbol.toStringTag],Ga=(t,e,r)=>{if(e.use!==void 0){let n;switch(r){case "sign":case "verify":n="sig";break;case "encrypt":case "decrypt":n="enc";break}if(e.use!==n)throw new TypeError(`Invalid key for this operation, its "use" must be "${n}" when present`)}if(e.alg!==void 0&&e.alg!==t)throw new TypeError(`Invalid key for this operation, its "alg" must be "${t}" when present`);if(Array.isArray(e.key_ops)){let n;switch(true){case(r==="sign"||r==="verify"):case t==="dir":case t.includes("CBC-HS"):n=r;break;case t.startsWith("PBES2"):n="deriveBits";break;case /^A\d{3}(?:GCM)?(?:KW)?$/.test(t):!t.includes("GCM")&&t.endsWith("KW")?n=r==="encrypt"?"wrapKey":"unwrapKey":n=r;break;case(r==="encrypt"&&t.startsWith("RSA")):n="wrapKey";break;case r==="decrypt":n=t.startsWith("RSA")?"unwrapKey":"deriveBits";break}if(n&&e.key_ops?.includes?.(n)===false)throw new TypeError(`Invalid key for this operation, its "key_ops" must include "${n}" when present`)}return true},fb=(t,e,r)=>{if(!(e instanceof Uint8Array)){if(jn(e)){if(xf(e)&&Ga(t,e,r))return;throw new TypeError('JSON Web Key for symmetric algorithms must have JWK "kty" (Key Type) equal to "oct" and the JWK "k" (Key Value) present')}if(!za(e))throw new TypeError(Ka(t,e,"CryptoKey","KeyObject","JSON Web Key","Uint8Array"));if(e.type!=="secret")throw new TypeError(`${Fr(e)} instances for symmetric algorithms must be of type "secret"`)}},db=(t,e,r)=>{if(jn(e))switch(r){case "decrypt":case "sign":if(Ef(e)&&Ga(t,e,r))return;throw new TypeError("JSON Web Key for this operation must be a private JWK");case "encrypt":case "verify":if(_f(e)&&Ga(t,e,r))return;throw new TypeError("JSON Web Key for this operation must be a public JWK")}if(!za(e))throw new TypeError(Ka(t,e,"CryptoKey","KeyObject","JSON Web Key"));if(e.type==="secret")throw new TypeError(`${Fr(e)} instances for asymmetric algorithms must not be of type "secret"`);if(e.type==="public")switch(r){case "sign":throw new TypeError(`${Fr(e)} instances for asymmetric algorithm signing must be of type "private"`);case "decrypt":throw new TypeError(`${Fr(e)} instances for asymmetric algorithm decryption must be of type "private"`)}if(e.type==="private")switch(r){case "verify":throw new TypeError(`${Fr(e)} instances for asymmetric algorithm verifying must be of type "public"`);case "encrypt":throw new TypeError(`${Fr(e)} instances for asymmetric algorithm encryption must be of type "public"`)}};function Oi(t,e,r){switch(t.substring(0,2)){case "A1":case "A2":case "di":case "HS":case "PB":fb(t,e,r);break;default:db(t,e,r);}}function Pi(t,e){let r=`SHA-${t.slice(-3)}`;switch(t){case "HS256":case "HS384":case "HS512":return {hash:r,name:"HMAC"};case "PS256":case "PS384":case "PS512":return {hash:r,name:"RSA-PSS",saltLength:parseInt(t.slice(-3),10)>>3};case "RS256":case "RS384":case "RS512":return {hash:r,name:"RSASSA-PKCS1-v1_5"};case "ES256":case "ES384":case "ES512":return {hash:r,name:"ECDSA",namedCurve:e.namedCurve};case "Ed25519":case "EdDSA":return {name:"Ed25519"};case "ML-DSA-44":case "ML-DSA-65":case "ML-DSA-87":return {name:t};default:throw new Ue(`alg ${t} is not supported either by JOSE or your javascript runtime`)}}async function Ii(t,e,r){if(e instanceof Uint8Array){if(!t.startsWith("HS"))throw new TypeError(bf(e,"CryptoKey","KeyObject","JSON Web Key"));return crypto.subtle.importKey("raw",e,{hash:`SHA-${t.slice(-3)}`,name:"HMAC"},false,[r])}return gf(e,t,r),e}async function Cf(t,e,r,n){let s=await Ii(t,e,"verify");Ri(t,s);let i=Pi(t,s.algorithm);try{return await crypto.subtle.verify(i,s,r,n)}catch{return false}}async function Af(t,e,r){if(!Gt(t))throw new z("Flattened JWS must be an object");if(t.protected===void 0&&t.header===void 0)throw new z('Flattened JWS must have either of the "protected" or "header" members');if(t.protected!==void 0&&typeof t.protected!="string")throw new z("JWS Protected Header incorrect type");if(t.payload===void 0)throw new z("JWS Payload missing");if(typeof t.signature!="string")throw new z("JWS Signature missing or incorrect type");if(t.header!==void 0&&!Gt(t.header))throw new z("JWS Unprotected Header incorrect type");let n={};if(t.protected)try{let b=jr(t.protected);n=JSON.parse(Ct.decode(b));}catch{throw new z("JWS Protected Header is invalid")}if(!Ti(n,t.header))throw new z("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let s={...n,...t.header},i=ki(z,new Map([["b64",true]]),r?.crit,n,s),o=true;if(i.has("b64")&&(o=n.b64,typeof o!="boolean"))throw new z('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:a}=s;if(typeof a!="string"||!a)throw new z('JWS "alg" (Algorithm) Header Parameter missing or invalid');let l=r&&Sf("algorithms",r.algorithms);if(l&&!l.has(a))throw new In('"alg" (Algorithm) Header Parameter value not allowed');if(o){if(typeof t.payload!="string")throw new z("JWS Payload must be a string")}else if(typeof t.payload!="string"&&!(t.payload instanceof Uint8Array))throw new z("JWS Payload must be a string or an Uint8Array instance");let u=false;typeof e=="function"&&(e=await e(n,t),u=true),Oi(a,e,"verify");let f=Ci(t.protected!==void 0?zt(t.protected):new Uint8Array,zt("."),typeof t.payload=="string"?o?zt(t.payload):dr.encode(t.payload):t.payload),c;try{c=jr(t.signature);}catch{throw new z("Failed to base64url decode the signature")}let d=await $i(e,a);if(!await Cf(a,d,c,f))throw new Nn;let y;if(o)try{y=jr(t.payload);}catch{throw new z("Failed to base64url decode the payload")}else typeof t.payload=="string"?y=dr.encode(t.payload):y=t.payload;let h={payload:y};return t.protected!==void 0&&(h.protectedHeader=n),t.header!==void 0&&(h.unprotectedHeader=t.header),u?{...h,key:d}:h}async function Tf(t,e,r){if(t instanceof Uint8Array&&(t=Ct.decode(t)),typeof t!="string")throw new z("Compact JWS must be a string or Uint8Array");let{0:n,1:s,2:i,length:o}=t.split(".");if(o!==3)throw new z("Invalid Compact JWS");let a=await Af({payload:s,protected:n,signature:i},e,r),l={payload:a.payload,protectedHeader:a.protectedHeader};return typeof e=="function"?{...l,key:a.key}:l}var Vt=t=>Math.floor(t.getTime()/1e3),kf=60,$f=kf*60,Va=$f*24,pb=Va*7,mb=Va*365.25,hb=/^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i;function Dn(t){let e=hb.exec(t);if(!e||e[4]&&e[1])throw new TypeError("Invalid time period format");let r=parseFloat(e[2]),n=e[3].toLowerCase(),s;switch(n){case "sec":case "secs":case "second":case "seconds":case "s":s=Math.round(r);break;case "minute":case "minutes":case "min":case "mins":case "m":s=Math.round(r*kf);break;case "hour":case "hours":case "hr":case "hrs":case "h":s=Math.round(r*$f);break;case "day":case "days":case "d":s=Math.round(r*Va);break;case "week":case "weeks":case "w":s=Math.round(r*pb);break;default:s=Math.round(r*mb);break}return e[1]==="-"||e[4]==="ago"?-s:s}function pr(t,e){if(!Number.isFinite(e))throw new TypeError(`Invalid ${t} input`);return e}var Rf=t=>t.includes("/")?t.toLowerCase():`application/${t.toLowerCase()}`,gb=(t,e)=>typeof t=="string"?e.includes(t):Array.isArray(t)?e.some(Set.prototype.has.bind(new Set(t))):false;function Of(t,e,r={}){let n;try{n=JSON.parse(Ct.decode(e));}catch{}if(!Gt(n))throw new At("JWT Claims Set must be a top-level JSON object");let{typ:s}=r;if(s&&(typeof t.typ!="string"||Rf(t.typ)!==Rf(s)))throw new Oe('unexpected "typ" JWT header value',n,"typ","check_failed");let{requiredClaims:i=[],issuer:o,subject:a,audience:l,maxTokenAge:u}=r,f=[...i];u!==void 0&&f.push("iat"),l!==void 0&&f.push("aud"),a!==void 0&&f.push("sub"),o!==void 0&&f.push("iss");for(let y of new Set(f.reverse()))if(!(y in n))throw new Oe(`missing required "${y}" claim`,n,y,"missing");if(o&&!(Array.isArray(o)?o:[o]).includes(n.iss))throw new Oe('unexpected "iss" claim value',n,"iss","check_failed");if(a&&n.sub!==a)throw new Oe('unexpected "sub" claim value',n,"sub","check_failed");if(l&&!gb(n.aud,typeof l=="string"?[l]:l))throw new Oe('unexpected "aud" claim value',n,"aud","check_failed");let c;switch(typeof r.clockTolerance){case "string":c=Dn(r.clockTolerance);break;case "number":c=r.clockTolerance;break;case "undefined":c=0;break;default:throw new TypeError("Invalid clockTolerance option type")}let{currentDate:d}=r,p=Vt(d||new Date);if((n.iat!==void 0||u)&&typeof n.iat!="number")throw new Oe('"iat" claim must be a number',n,"iat","invalid");if(n.nbf!==void 0){if(typeof n.nbf!="number")throw new Oe('"nbf" claim must be a number',n,"nbf","invalid");if(n.nbf>p+c)throw new Oe('"nbf" claim timestamp check failed',n,"nbf","check_failed")}if(n.exp!==void 0){if(typeof n.exp!="number")throw new Oe('"exp" claim must be a number',n,"exp","invalid");if(n.exp<=p-c)throw new Dr('"exp" claim timestamp check failed',n,"exp","check_failed")}if(u){let y=p-n.iat,h=typeof u=="number"?u:Dn(u);if(y-c>h)throw new Dr('"iat" claim timestamp check failed (too far in the past)',n,"iat","check_failed");if(y<0-c)throw new Oe('"iat" claim timestamp check failed (it should be in the past)',n,"iat","check_failed")}return n}var Ni=class{#e;constructor(e){if(!Gt(e))throw new TypeError("JWT Claims Set MUST be an object");this.#e=structuredClone(e);}data(){return dr.encode(JSON.stringify(this.#e))}get iss(){return this.#e.iss}set iss(e){this.#e.iss=e;}get sub(){return this.#e.sub}set sub(e){this.#e.sub=e;}get aud(){return this.#e.aud}set aud(e){this.#e.aud=e;}set jti(e){this.#e.jti=e;}set nbf(e){typeof e=="number"?this.#e.nbf=pr("setNotBefore",e):e instanceof Date?this.#e.nbf=pr("setNotBefore",Vt(e)):this.#e.nbf=Vt(new Date)+Dn(e);}set exp(e){typeof e=="number"?this.#e.exp=pr("setExpirationTime",e):e instanceof Date?this.#e.exp=pr("setExpirationTime",Vt(e)):this.#e.exp=Vt(new Date)+Dn(e);}set iat(e){e===void 0?this.#e.iat=Vt(new Date):e instanceof Date?this.#e.iat=pr("setIssuedAt",Vt(e)):typeof e=="string"?this.#e.iat=pr("setIssuedAt",Vt(new Date)+Dn(e)):this.#e.iat=pr("setIssuedAt",e);}};async function mr(t,e,r){let n=await Tf(t,e,r);if(n.protectedHeader.crit?.includes("b64")&&n.protectedHeader.b64===false)throw new At("JWTs MUST NOT use unencoded payload");let i={payload:Of(n.protectedHeader,n.payload,r),protectedHeader:n.protectedHeader};return typeof e=="function"?{...i,key:n.key}:i}async function Pf(t,e,r){let n=await Ii(t,e,"sign");Ri(t,n);let s=await crypto.subtle.sign(Pi(t,n.algorithm),n,r);return new Uint8Array(s)}var ji=class{#e;#t;#r;constructor(e){if(!(e instanceof Uint8Array))throw new TypeError("payload must be an instance of Uint8Array");this.#e=e;}setProtectedHeader(e){if(this.#t)throw new TypeError("setProtectedHeader can only be called once");return this.#t=e,this}setUnprotectedHeader(e){if(this.#r)throw new TypeError("setUnprotectedHeader can only be called once");return this.#r=e,this}async sign(e,r){if(!this.#t&&!this.#r)throw new z("either setProtectedHeader or setUnprotectedHeader must be called before #sign()");if(!Ti(this.#t,this.#r))throw new z("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let n={...this.#t,...this.#r},s=ki(z,new Map([["b64",true]]),r?.crit,this.#t,n),i=true;if(s.has("b64")&&(i=this.#t.b64,typeof i!="boolean"))throw new z('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:o}=n;if(typeof o!="string"||!o)throw new z('JWS "alg" (Algorithm) Header Parameter missing or invalid');Oi(o,e,"sign");let a,l;i?(a=Ai(this.#e),l=zt(a)):(l=this.#e,a="");let u,f;this.#t?(u=Ai(JSON.stringify(this.#t)),f=zt(u)):(u="",f=new Uint8Array);let c=Ci(f,zt("."),l),d=await $i(e,o),p=await Pf(o,d,c),y={signature:Ai(p),payload:a};return this.#r&&(y.header=this.#r),this.#t&&(y.protected=u),y}};var Di=class{#e;constructor(e){this.#e=new ji(e);}setProtectedHeader(e){return this.#e.setProtectedHeader(e),this}async sign(e,r){let n=await this.#e.sign(e,r);if(n.payload===void 0)throw new TypeError("use the flattened module for creating JWS with b64: false");return `${n.protected}.${n.payload}.${n.signature}`}};var hr=class{#e;#t;constructor(e={}){this.#t=new Ni(e);}setIssuer(e){return this.#t.iss=e,this}setSubject(e){return this.#t.sub=e,this}setAudience(e){return this.#t.aud=e,this}setJti(e){return this.#t.jti=e,this}setNotBefore(e){return this.#t.nbf=e,this}setExpirationTime(e){return this.#t.exp=e,this}setIssuedAt(e){return this.#t.iat=e,this}setProtectedHeader(e){return this.#e=e,this}async sign(e,r){let n=new Di(this.#t.data());if(n.setProtectedHeader(this.#e),Array.isArray(this.#e?.crit)&&this.#e.crit.includes("b64")&&this.#e.b64===false)throw new At("JWTs MUST NOT use unencoded payload");return n.sign(e,r)}};async function If(t,e){if(!t||!t.startsWith("Bearer "))return e.anonymousEnabled?{kind:"ok",payload:null}:{kind:"error",response:Xe({status:401,code:"PGRST302",message:"Anonymous access is disabled"})};let r=t.slice(7).trim(),n=r.split(".");if(n.length!==3||n.some(s=>s.length===0))return e.anonymousEnabled?{kind:"ok",payload:null}:{kind:"error",response:Xe({status:401,code:"PGRST301",message:`Expected 3 parts in JWT; got ${Math.max(1,n.filter(s=>s.length>0).length)}`})};if(!e.jwtSecret)return {kind:"error",response:Xe({status:500,code:"PGRST300",message:"Server lacks JWT secret"})};try{let s=new TextEncoder().encode(e.jwtSecret),{payload:i}=await mr(r,s,{algorithms:["HS256"]});return typeof i.iat=="number"&&i.iat>Math.floor(Date.now()/1e3)?{kind:"error",response:Xe({status:401,code:"PGRST303",message:"JWT issued at future"})}:{kind:"ok",payload:i}}catch(s){return s instanceof Tt.JWTExpired?{kind:"error",response:Xe({status:401,code:"PGRST303",message:"JWT expired"})}:{kind:"error",response:Xe({status:401,code:"PGRST301",message:"No suitable key or wrong key type",details:"None of the keys was able to decode the JWT"})}}}function Li(t,e,r,n){return !r||!e?.from?t:t.map(s=>Qa(s,e.select,e.from,e.schema,e.join,r,n))}function Qa(t,e,r,n,s,i,o){let a=i.get(`${n??o}.${r}`),l=bb(e,s),u={};for(let[f,c]of Object.entries(t)){let d=l.get(f);if(d&&"embed"in d){let h=d.embed;u[f]=yb(c,h,n,i,o);continue}let p=d?.sourceColumn??f,y=a?.get(p);u[f]=y?y.deserialize(c):c;}return u}function yb(t,e,r,n,s){return Array.isArray(t)?t.map(i=>i&&typeof i=="object"?Qa(i,e.select,e.table,r,e.join,n,s):i):t&&typeof t=="object"?Qa(t,e.select,e.table,r,e.join,n,s):t}function bb(t,e){let r=new Map;if(!t)return r;for(let n of t){if(typeof n=="string"){if(n==="*")continue;r.set(n,{sourceColumn:n});continue}if(!(!n||typeof n!="object"))for(let[s,i]of Object.entries(n))if(wb(i)){let o=e?.[s]?.from??s;r.set(s,{embed:{table:o,select:i.select,join:i.join}});}else {let o=i;if(o.cast||o.path||o.aggregate)continue;r.set(s,{sourceColumn:o.column??s});}}return r}function wb(t){return t!=null&&typeof t=="object"&&("select"in t||"where"in t||"order"in t||"limit"in t||"offset"in t||"spread"in t||"join"in t)}var Ln=Symbol.for("lite-internal-request");function Rt(t){return JSON.stringify(t,(e,r)=>typeof r=="bigint"?Number.parseInt(r.toString(),10):r)}var Nf=/application\/vnd\.pgrst\.plan(?:\+(json|text))?/i;function jf(t){let e=t.match(Nf);if(!e)return null;let r=e[1]?.toLowerCase()==="json"?"json":"text",n=t.match(/;\s*options=([^;]+)/i),s=n?`; options=${n[1].trim()}`:"";return {format:r,optionsSegment:s}}function Df(t){return Nf.test(t)}function Lf(t){return /;\s*nulls\s*=\s*stripped/i.test(t)}function gr(t){if(Array.isArray(t))return t.map(e=>gr(e));if(t!==null&&typeof t=="object"){let e={};for(let[r,n]of Object.entries(t))n!==null&&(e[r]=gr(n));return e}return t}function el(t,e){if(!e||e.length===0)return t;let r=(n,s)=>{for(let i of e){if(i.embed)continue;let o=n[i.column],a=s[i.column],l=o==null,u=a==null;if(l&&u)continue;if(l)return i.nullsFirst?-1:1;if(u)return i.nullsFirst?1:-1;let f;if(typeof o=="number"&&typeof a=="number"?f=o-a:f=String(o).localeCompare(String(a)),f!==0)return i.direction==="desc"?-f:f}return 0};return [...t].sort(r)}function Uf(t,e){return !e||e.length===0?t:t.map(r=>tl(r,e))}function Ff(t,e){if(!e||e.length===0)return t;let r=Sb(e);return r.size===0?t:t.map(n=>{if(!Fn(n))return n;let s={...n};for(let i of r){let o=s[i];o!==null&&typeof o=="object"&&(s[i]=JSON.stringify(o));}return s})}function Mf(t,e){return !e||e.length===0?t:t.map(r=>Xa(r,e))}function Bf(t,e){return !e||e.length===0?t:t.map(r=>Ya(r,e))}function qf(t,e){return !e||e.length===0?t:t.map(r=>Za(r,e))}function Sb(t){let e=new Set;for(let r of t){if(typeof r=="string")continue;let[n,s]=Object.entries(r)[0]??[];if(!n||!s)continue;let i=s;i.path&&i.pathText&&!Jf(i.cast)&&e.add(n);}return e}function Jf(t){let e=t?.trim().toLowerCase();return e==="json"||e==="jsonb"}function tl(t,e){if(Array.isArray(t))return t.map(n=>tl(n,e));if(!Fn(t))return t;let r={...t};for(let n of e){if(typeof n=="string")continue;let[s,i]=Object.entries(n)[0]??[];!s||!i||!Ui(i)||s in r&&(r[s]=_b(r[s],i.select));}return r}function Xa(t,e){if(Array.isArray(t))return t.map(n=>Xa(n,e));if(!Fn(t))return t;let r={...t};for(let n of e){if(typeof n=="string")continue;let[s,i]=Object.entries(n)[0]??[];if(!s||!i)continue;if(Ui(i)){s in r&&i.select&&(r[s]=Xa(r[s],i.select));continue}let o=i;o.aggregate==="avg"&&o.cast!=="text"&&s in r&&(r[s]=Eb(r[s]));}return r}function Ya(t,e){if(Array.isArray(t))return t.map(n=>Ya(n,e));if(!Fn(t))return t;let r={...t};for(let n of e){if(typeof n=="string")continue;let[s,i]=Object.entries(n)[0]??[];if(!s||!i)continue;if(Ui(i)){s in r&&i.select&&(r[s]=Ya(r[s],i.select));continue}Jf(i.cast)&&s in r&&(r[s]=Kf(r[s]));}return r}function Za(t,e){if(Array.isArray(t))return t.map(n=>Za(n,e));if(!Fn(t))return t;let r={...t};for(let n of e){if(typeof n=="string")continue;let[s,i]=Object.entries(n)[0]??[];if(!s||!i)continue;if(Ui(i)){s in r&&i.select&&(r[s]=Za(r[s],i.select));continue}let o=i;o.path&&!o.pathText&&s in r&&(r[s]=Kf(r[s]));}return r}function Eb(t){if(typeof t!="string")return t;let e=t.trim();if(!/^[+-]?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?$/i.test(e))return t;let r=Number(e);return !Number.isFinite(r)||e.replace(/^[+-]/,"").replace(/e[+-]?\d+$/i,"").replace(".","").replace(/^0+/,"").replace(/0+$/,"").length>15?t:r}function _b(t,e){let r=xb(t);return !e||e.length===0?r:tl(r,e)}function xb(t){if(typeof t!="string")return t;let e=t[0];if(e!=="["&&e!=="{")return t;try{return JSON.parse(t)}catch{return t}}function Kf(t){if(typeof t!="string")return t;try{return JSON.parse(t)}catch{return t}}function Fn(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)}function Ui(t){return t!==null&&typeof t=="object"&&("select"in t||"spread"in t||"join"in t)}var vb=new Set(["*/*","application/*","application/json","application/vnd.pgrst.object","application/vnd.pgrst.object+json","application/vnd.pgrst.array","application/vnd.pgrst.array+json","application/octet-stream","text/csv"]);function Wf(t){let e=jf(t);return e?`application/vnd.pgrst.plan+${e.format}; for="application/json"${e.optionsSegment}`:t}function Hf(t,e){let r=t.split(",").map(n=>n.split(";")[0].trim().toLowerCase()).filter(Boolean);if(r.length===0)return true;for(let n of r)if(vb.has(n)||e&&n.startsWith("application/vnd.pgrst.plan"))return true;return false}function zf(t,e){let r=jf(t)??{format:"text",optionsSegment:""},n=`application/vnd.pgrst.plan+${r.format}; for="application/json"${r.optionsSegment}; charset=utf-8`,s=r.format==="json"?Rt({sql:e.sql,parameters:[...e.parameters]}):e.sql;return new Response(s,{status:200,headers:{"Content-Type":n}})}function yr(t,e,r){let n=t+e-1,s=r!==void 0?`${r}`:"*";return `${t}-${n}/${s}`}async function Un(t,e,r,n){let s=e.join&&Object.values(e.join).some(f=>f.type==="inner"),i=Cb(e);if(s||i){let f={...e,type:"query",order:void 0,limit:void 0,offset:void 0},c=de(f,r,{db:t,introspection:n}),{sql:d,parameters:p}=c.compile(),y=`SELECT count(*) as __count FROM (${d}) AS __inner_count`,b=(await t.executeQuery({sql:y,parameters:p,query:{kind:"RawNode"}})).rows?.[0];return Number(b?.__count??0)}let o={...e,type:"query",select:[{__count:{aggregate:"count"}}],order:void 0,limit:void 0,offset:void 0,join:void 0},l=await de(o,r,{db:t,introspection:n}).execute(),u=Array.isArray(l)?l[0]:l;return Number(u?.__count??0)}async function Gf(t,e,r,n){if(e.$meta?.count!=="planned"&&e.$meta?.count!=="estimated"||r!=="postgres")return Un(t,e,r,n);let s={...e,type:"query",order:void 0,limit:void 0,offset:void 0},o=de(s,r,{db:t,introspection:n}).compile(),u=(await t.executeQuery({sql:`EXPLAIN (FORMAT JSON) ${o.sql}`,parameters:o.parameters,query:{kind:"RawNode"}})).rows?.[0]?.["QUERY PLAN"],f=Array.isArray(u)&&u[0]&&typeof u[0]=="object"?u[0].Plan:void 0,c=f&&typeof f=="object"?Number(f["Plan Rows"]):Number.NaN;return Number.isFinite(c)?c:Un(t,e,r,n)}function Cb(t){if(t.type!=="query"||!t.where||!t.select)return false;let e=Ab(t.select);return e.size===0?false:Vf(t.where,e)}function Vf(t,e){for(let[r,n]of Object.entries(t)){if((r==="$or"||r==="$and")&&Array.isArray(n)){if(n.some(i=>i&&typeof i=="object"&&Vf(i,e)))return true;continue}if(!e.has(r)||!n||typeof n!="object")continue;let s=n;if(s.$is===null||s.$isNot===null)return true}return false}function Ab(t){let e=new Set;for(let r of t){if(typeof r=="string")continue;let[n,s]=Object.entries(r)[0]??[];n&&s&&typeof s=="object"&&"select"in s&&e.add(n);}return e}var Tb=/[",\n\r ]/;function Qf(t){if(t==null)return "";let e;return typeof t=="string"?e=t:typeof t=="number"||typeof t=="boolean"?e=String(t):typeof t=="bigint"?e=t.toString():e=JSON.stringify(t),Tb.test(e)?`"${e.replace(/"/g,'""')}"`:e}function Fi(t,e){let r=t.length>0?Object.keys(t[0]):[];if(r.length===0)return "";let n=[r.map(s=>Qf(s)).join(",")];for(let s of t)n.push(r.map(i=>Qf(s[i])).join(","));return n.join(`
73
+ `)}function Xf(t){return t.split(",").map(r=>r.split(";")[0].trim().toLowerCase()).includes("text/csv")}function ed(t,e){if(t.type!=="upsert"&&t.type!=="put")return {ast:t};if(t.type==="put"){if(t.limit!==void 0||t.offset!==void 0)return $(400,"PGRST114","limit/offset querystring parameters are not allowed for PUT",null,null);let n=Yf(t,e),s=Rb(t.where,n);if(!s)return $(405,"PGRST105","Filters must include all and only primary key columns with 'eq' operators",null,null);if(Array.isArray(t.values)&&t.values.length===0)return {ast:t,emptyPayload:true};if(!nl(t.values))return $(400,"PGRST102","Empty or invalid json",null,null);for(let i of n)if(!$b(t.values[i],s[i]))return $(400,"PGRST115","Payload values do not match URL in primary key column(s)",null,null);return t.onConflict=n,t.ignoreDuplicates=false,{ast:t,preflight:{mode:"put",conflictColumns:n}}}let r=t.onConflict?.length?t.onConflict:Yf(t,e);return r.length===0?(t.onConflict=void 0,{ast:t}):(t.onConflict=r,{ast:t,appliedResolution:t.ignoreDuplicates?"ignore-duplicates":"merge-duplicates",preflight:t.ignoreDuplicates?void 0:{mode:"merge-duplicates",conflictColumns:r}})}function td(t,e){let r=t.$meta,n={"Content-Type":"application/json; charset=utf-8"},s=rl(r,e.appliedResolution),i=r?.count==="exact"||r?.count==="planned"||r?.count==="estimated"?"*/0":"*/*";return r?.return==="representation"?(n["Content-Range"]=i,n["Content-Length"]="2",s&&(n["Preference-Applied"]=s),new Response("[]",{status:kt(t,"representation",e.appliedResolution,false),headers:n})):(n["Content-Range"]=i,s&&(n["Preference-Applied"]=s),new Response(null,{status:kt(t,"no-return",e.appliedResolution,false),headers:n}))}function Yf(t,e){if(!t.from)return [];let r=t.schema??"public",n=e.primary_keys.find(s=>s.table===t.from&&s.schema===r);return n?n.columns:e.primary_keys.find(s=>s.table===t.from)?.columns??[]}function Rb(t,e){if(!t||e.length===0)return null;let r=Object.keys(t);if(r.length!==e.length)return null;let n={};for(let s of r){if(s.startsWith("$")||!e.includes(s))return null;let i=kb(t[s]);if(!i.ok)return null;n[s]=i.value;}return n}function kb(t){if(!nl(t))return {ok:false};let e=Object.keys(t);return e.length!==1||e[0]!=="$eq"?{ok:false}:{ok:true,value:t.$eq}}function $b(t,e){return Object.is(t,e)?true:t!==null&&e!==null&&t!==void 0&&e!==void 0&&typeof t!="object"&&typeof e!="object"?String(t)===String(e):Rt(t)===Rt(e)}function rl(t,e){let r=[];return e&&r.push(`resolution=${e}`),t?.missing&&r.push(`missing=${t.missing}`),t?.return&&r.push(`return=${t.return}`),t?.count&&t.count!=="none"&&r.push(`count=${t.count}`),t?.tx&&r.push(`tx=${t.tx}`),r.length>0?r.join(", "):void 0}function kt(t,e,r,n){switch(t.type){case "insert":return 201;case "upsert":return !r||r==="ignore-duplicates"?201:n===false?200:201;case "put":return e==="representation"?n?201:200:204;case "update":case "delete":return e==="representation"?200:204;default:return 200}}async function rd(t,e,r,n,s){if(e.type==="insert")return true;if(!s.preflight||!e.from)return;if(s.preflight.mode==="put")return !await Zf(t,e.from,e.schema,e.where??{},r,n);let i=Array.isArray(e.values)?e.values:e.values?[e.values]:[];for(let o of i){if(!nl(o))continue;let a=Ob(s.preflight.conflictColumns,o);if(!a||!await Zf(t,e.from,e.schema,a,r,n))return true}return false}function Ob(t,e){let r={};for(let n of t){if(!(n in e))return;r[n]={$eq:e[n]};}return r}async function Zf(t,e,r,n,s,i){return await Un(t,{type:"query",from:e,schema:r,where:n},s,i)>0}function nl(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)}function sd(t){return t?.count==="exact"||t?.count==="planned"||t?.count==="estimated"}function nd(t,e,r){return sd(e)?`*/${r??0}`:t.type==="update"&&r!==0?yr(0,r??1,void 0):"*/*"}function Pb(t,e,r,n){return e&&(t.type==="insert"||t.type==="upsert"||t.type==="delete")?n!==void 0?`*/${n}`:"*/*":yr(r,1,n)}function id(t){return "select"in t||"spread"in t||"join"in t}function od(t,e){if(t){for(let r of t)if(typeof r!="string")for(let n of Object.values(r))id(n)&&((n.limit===void 0||n.limit>e)&&(n.limit=e),od(n.select,e));}}function Ib(t){if(!t)return false;for(let e of t)if(typeof e!="string")for(let[r,n]of Object.entries(e)){if(id(n))return true;let s=n;if(s.path||s.cast||s.preCast||s.aggregate||(s.column??r)!==r)return true}return false}var Nb={swagger:"2.0",info:{description:"",title:"standard public schema",version:"14.1"},basePath:"/",schemes:["https"],consumes:["application/json","application/vnd.pgrst.object+json;nulls=stripped","application/vnd.pgrst.object+json","text/csv"],produces:["application/json","application/vnd.pgrst.object+json;nulls=stripped","application/vnd.pgrst.object+json","text/csv"]},ad=t=>new be().all("/:relation",async e=>{let{app:r}=e.var,n=r.connection;if(!r.config.api?.enabled)return e.notFound();let s=e.req.param("relation"),i=await n.introspect({useCache:true});if(n.config.introspection?.exclude_tables?.some(d=>xi(s,d,"sql")))return e.notFound();if(!(Ln in e.req.raw)){let d=await If(e.req.header("Authorization"),{jwtSecret:r.config.auth?.jwt_secret,anonymousEnabled:r.config.api?.anonymous_enabled!==false});if(d.kind==="error")return d.response;d.payload&&(e.set("userId",d.payload.sub),e.set("sessionId",d.payload.session_id),e.set("jwt",d.payload));}let{dialect:a}=n,l=n.config.translation?.deparse?.schema,u=e.var.jwt,f={auth:{uid:e.var.userId??null,role:u?.role||"anon",jwt:u??null}},c;try{if(c=await ai(e.req.raw,{basePath:"/rest/v1"}),c.schema){let x=new Set;for(let A of i.tables)A.schema&&x.add(A.schema);for(let A of i.views)A.schema&&x.add(A.schema);if(x.size>0&&x.add("public"),x.size>0&&!x.has(c.schema)){let A=[...x].sort().join(", ");return $(406,"PGRST106",`Invalid schema: ${c.schema}`,null,`Only the following schemas are exposed: ${A}`)}}if(c=await n.onPostgrestAST(c,f),t?.debug&&console.log(We.default.dim("[POSTGREST:AST]"),c),r.config.api?.aggregates_enabled!==!0&&xa(c.select))return $(400,"PGRST123","Use of aggregate functions is not allowed",null,null);let d=e.req.header("Accept")??"application/json",p=r.config.api?.plan_enabled===!0;if(!Hf(d,p))return $(406,"PGRST107",`None of these media types are available: ${Wf(d)}`,null,null);let y=Lf(d),h=Xf(d),b=e.req.header("Prefer");if(b){let x=b.split(",").map(v=>v.trim()).filter(Boolean);if(x.find(v=>v.startsWith("handling="))==="handling=strict"){let v=x.filter(R=>!R.includes("="));if(v.length>0)return $(400,"PGRST122","Invalid preferences given with handling=strict",`Invalid preferences: ${v.join(", ")}`,null)}}if(n.dialect==="sqlite"&&c.from){let x=c.schema??"",A=i.tables.some(R=>R.name===c.from&&(R.schema??"")===x),v=i.views.some(R=>R.name===c.from&&(R.schema??"")===x);if(!A&&!v)throw new Pn(c.schema,c.from)}let m=c.$meta,w=c.type==="update"||c.type==="delete"||c.type==="insert"||c.type==="upsert"||c.type==="put",_={ast:c};if(w&&m?.return!=="representation"&&(c.select=void 0),(c.type==="put"||c.type==="upsert")&&(c.limit!==void 0||c.offset!==void 0))return $(400,"PGRST114","limit/offset querystring parameters are not allowed for PUT",null,null);if((c.type==="update"||c.type==="delete"||c.type==="insert")&&r.config.api?.limited_mutations_enabled!==!0&&(c.limit=void 0,c.offset=void 0),r.config.api?.pg_safe_update&&w){let x=c.where&&Object.keys(c.where).length>0;if(c.type==="update"&&!x)return $(400,"21000","UPDATE requires a WHERE clause",null,null);if(c.type==="delete"&&!x)return $(400,"21000","DELETE requires a WHERE clause",null,null)}if(w&&(c.type==="insert"||c.type==="update"||c.type==="upsert"||c.type==="put")){if((c.type==="update"||c.type==="insert"||c.type==="upsert"||c.type==="put")&&(c.values===void 0||c.values===null))return $(400,"PGRST102","Empty or invalid json",null,null);if(c.type==="update"&&c.values&&typeof c.values=="object"&&!Array.isArray(c.values)&&Object.keys(c.values).length===0){let x=m?.return==="representation"?200:204,A={"Content-Type":"application/json; charset=utf-8","Content-Range":"*/*"};if(m?.return==="representation"){let v=new TextEncoder().encode("[]");return A["Content-Length"]=String(v.byteLength),A["Preference-Applied"]="return=representation",new Response(v,{status:x,headers:A})}return new Response(null,{status:x,headers:A})}if(c.type==="put"&&Array.isArray(c.values)&&(c.values.length===0?_.emptyPayload=!0:c.values=c.values[0]),Array.isArray(c.values)){if(m?.cardinality==="one"&&(c.type==="insert"||c.type==="upsert")&&c.values.length>1)return $(406,"PGRST116","Cannot coerce the result to a single JSON object",`The result contains ${c.values.length} rows`,null);if(c.values.length>0&&c.values.some(x=>typeof x!="object"||x===null||Array.isArray(x)))return m?.columns?$(400,"22023","argument of jsonb_to_recordset must be an array of objects",null,null):$(400,"PGRST102","All object keys must match",null,null);if(!m?.columns&&c.values.length>1){let x=Object.keys(c.values[0]).sort().join(",");for(let A=1;A<c.values.length;A++)if(Object.keys(c.values[A]).sort().join(",")!==x)return $(400,"PGRST102","All object keys must match",null,null)}}if(m?.columns&&c.from){let x=i.columns.filter(v=>v.table===c.from).map(v=>v.name);for(let v of m.columns){if(v==="")return $(400,"PGRST100",'"failed to parse columns parameter ()" (line 1, column 1)',"unexpected end of input",null);if(!x.includes(v))return $(400,"PGRST204",`Could not find the '${v}' column of '${c.from}' in the schema cache`,null,null)}let A=new Set(m.columns);if(c.values)if(Array.isArray(c.values))c.values=c.values.map(v=>{let R={};for(let H of A)H in v&&(R[H]=v[H]);return R});else {let v={};for(let R of A)R in c.values&&(v[R]=c.values[R]);c.values=v;}}if(!m?.columns&&c.values&&c.from&&(c.type==="insert"||c.type==="update"||c.type==="upsert"||c.type==="put")){let x=i.columns.filter(A=>A.table===c.from).map(A=>A.name);if(x.length>0){let A=Array.isArray(c.values)?c.values.length>0?Object.keys(c.values[0]):[]:Object.keys(c.values);for(let v of A)if(!x.includes(v))return $(400,"PGRST204",`Could not find the '${v}' column of '${c.from}' in the schema cache`,null,null)}}if(c.values&&c.from&&(c.type==="insert"||c.type==="update"||c.type==="upsert"||c.type==="put")){let x=c.schema??"public",A=new Set(i.columns.filter(v=>v.table===c.from&&(v.schema||"public")===x&&v.is_generated===!0).map(v=>v.name));if(A.size>0){let v=Array.isArray(c.values)?c.values:[c.values];for(let R of v)if(!(!R||typeof R!="object")){for(let H of Object.keys(R))if(A.has(H))return $(400,"428C9",`cannot insert a non-DEFAULT value into column "${H}"`,`Column "${H}" is a generated column.`,null)}}}}let S=ed(c,i);if(S instanceof Response)return S;if(_=S,c=_.ast,w&&((c.type==="insert"||c.type==="upsert")&&Array.isArray(c.values)&&c.values.length===0||_.emptyPayload))return m?.cardinality==="one"?$(406,"PGRST116","Cannot coerce the result to a single JSON object","The result contains 0 rows",null):td(c,_);let E=e.req.method.toUpperCase(),C=e.req.header("Range");if(C&&(E==="GET"||E==="HEAD")){let x=C.match(/^(\d+)-(\d*)$/);if(x){let A=parseInt(x[1],10);if(x[2]!==""){let v=parseInt(x[2],10);if(A>v)return $(416,"PGRST103","Requested range not satisfiable","The lower boundary must be lower than or equal to the upper boundary in the Range header.",null);c.offset=A,c.limit=v-A+1;}else c.offset=A;}}if(c.limit!==void 0&&c.limit<0||c.limit===0&&c.offset!==void 0&&c.offset>0)return $(416,"PGRST103","Requested range not satisfiable","Limit should be greater than or equal to zero.",null);if(c.offset!==void 0&&c.offset<0&&(c.offset=0),!w){let x=r.config.api?.max_rows;x!==void 0&&x>0&&((c.limit===void 0||c.limit>x)&&(c.limit=x),od(c.select,x));}return await n.withContext(f,async x=>{let A=e.req.header("Accept")??"application/json";if(p&&Df(A)){let q=de(c,a,{db:x,introspection:i,schema:l}).compile();return t?.debug&&console.info(We.default.dim(`[POSTGREST:PLAN] ${q.sql}
74
+ - ${JSON.stringify([...q.parameters])}`)),zf(A,q)}let v=w?await rd(x,c,a,i,_):void 0,R=rl(m,_.appliedResolution);if(w&&m?.return==="minimal"){let ie={...c,select:void 0},q=de(ie,a,{db:x,introspection:i,schema:l}),{sql:Q,parameters:Ze}=q.compile();t?.debug&&console.info(We.default.dim(`[POSTGREST:SQL] ${Q}
75
+ - ${JSON.stringify([...Ze])}`));let Y=await q.execute(),Ae=Array.isArray(Y)&&Y.length>0&&Y[0]&&typeof Y[0]=="object"&&("numUpdatedRows"in Y[0]||"numInsertedOrUpdatedRows"in Y[0]||"numDeletedRows"in Y[0])?Y[0]:void 0,Lt=Ae===void 0?void 0:Number(Ae.numUpdatedRows??Ae.numInsertedOrUpdatedRows??Ae.numDeletedRows??0),Ie=kt(c,"no-return",_.appliedResolution,v),Ne={"Content-Range":nd(c,m,Lt)};return R&&(Ne["Preference-Applied"]=R),new Response(null,{status:Ie,headers:Ne})}if(w&&m?.return==="headers-only"){let q=i.primary_keys.find(Ie=>Ie.table===c.from)?.columns??[],Q={...c,select:q.length>0?q:void 0},Ze=de(Q,a,{db:x,introspection:i,schema:l});if(t?.debug){let{sql:Ie,parameters:Ne}=Ze.compile();console.info(We.default.dim(`[POSTGREST:SQL] ${Ie}
76
+ - ${JSON.stringify([...Ne])}`));}let Y=await Ze.execute(),Ae=kt(c,"no-return",_.appliedResolution,v),Lt={"Content-Range":"*/*"};if(R&&(Lt["Preference-Applied"]=R),q.length>0&&Array.isArray(Y)&&Y.length>0){let Ie=Y[0],Ne=q.map(mt=>`${mt}=eq.${Ie[mt]}`).join("&");Lt.Location=`/${c.from}?${Ne}`;}return new Response(null,{status:Ae,headers:Lt})}if(w&&(c.type==="update"||c.type==="delete")&&(c.limit!==void 0||c.offset!==void 0)){let ie={...c,select:void 0},q=de(ie,a,{db:x,introspection:i,schema:l});if(t?.debug){let{sql:mt,parameters:Ut}=q.compile();console.info(We.default.dim(`[POSTGREST:SQL:LTD] ${mt}
77
+ - ${JSON.stringify([...Ut])}`));}if(await q.execute(),m?.return==="representation"){let mt={...c,type:"query",values:void 0,limit:void 0,offset:void 0},Ut=de(mt,a,{db:x,introspection:i,schema:l});if(t?.debug){let{sql:rt,parameters:Ps}=Ut.compile();console.info(We.default.dim(`[POSTGREST:SQL:LTD-SEL] ${rt}
78
+ - ${JSON.stringify([...Ps])}`));}let Me=await Ut.execute(),Se=Array.isArray(Me)?Me:[];Se=Se.map(rt=>n.deserializeRow(rt)),Se=Li(Se,c,l,"public");let et=Se.length,Be=[];m.return==="representation"&&Be.push("return=representation"),m.count&&Be.push(`count=${m.count}`),m.tx&&Be.push(`tx=${m.tx}`);let qe=c.type==="delete"?"*/*":et>0?yr(0,et,void 0):"*/*",tt=y?gr(Se):Se,Ao=h?Fi(tt):Rt(tt),on=new TextEncoder().encode(Ao),ht={"Content-Type":h?"text/csv; charset=utf-8":y?"application/vnd.pgrst.array+json;nulls=stripped; charset=utf-8":"application/json; charset=utf-8","Content-Range":qe,"Content-Length":String(on.byteLength)};return Be.length>0&&(ht["Preference-Applied"]=Be.join(", ")),new Response(on,{status:200,headers:ht})}let Q={...c,type:"query",select:[{__count:{aggregate:"count"}}],values:void 0,order:void 0,limit:void 0,offset:void 0},Y=await de(Q,a,{db:x,introspection:i,schema:l}).execute(),Ae=Number((Array.isArray(Y)?Y[0]:Y)?.__count??0),Ie={"Content-Range":Ae>0?yr(0,Ae,void 0):"*/*"},Ne=[];return m?.count&&Ne.push(`count=${m.count}`),m?.tx&&Ne.push(`tx=${m.tx}`),Ne.length>0&&(Ie["Preference-Applied"]=Ne.join(", ")),new Response(null,{status:204,headers:Ie})}if(w&&m?.return==="representation"&&Ib(c.select)){let q=i.primary_keys.find(Me=>Me.table===c.from)?.columns??[],Q=[];if(c.type==="delete"){let Me={...c,type:"query",values:void 0},Se=de(Me,a,{db:x,introspection:i,schema:l});if(t?.debug){let{sql:qe,parameters:tt}=Se.compile();console.info(We.default.dim(`[POSTGREST:SQL:EMB-PRE] ${qe}
79
+ - ${JSON.stringify([...tt])}`));}Q=await Se.execute();let et={...c,select:void 0},Be=de(et,a,{db:x,introspection:i,schema:l});if(t?.debug){let{sql:qe,parameters:tt}=Be.compile();console.info(We.default.dim(`[POSTGREST:SQL:EMB-DEL] ${qe}
80
+ - ${JSON.stringify([...tt])}`));}await Be.execute();}else {if(q.length===0)return $(500,"PGRSTXXX","Cannot return embedded data on a table without a primary key",null,null);let Me={...c,select:q},Se=de(Me,a,{db:x,introspection:i,schema:l});if(t?.debug){let{sql:qe,parameters:tt}=Se.compile();console.info(We.default.dim(`[POSTGREST:SQL:EMB-MUT] ${qe}
81
+ - ${JSON.stringify([...tt])}`));}let et=await Se.execute(),Be=Array.isArray(et)?et:[];if(Be.length>0){let qe;if(q.length===1){let ht=q[0];qe={[ht]:{$in:Be.map(rt=>rt[ht])}};}else qe={$or:Be.map(ht=>{let rt={};for(let Ps of q)rt[Ps]={$eq:ht[Ps]};return rt})};let tt=c.where?{$and:[c.where,qe]}:qe,Ao={...c,type:"query",values:void 0,where:tt},on=de(Ao,a,{db:x,introspection:i,schema:l});if(t?.debug){let{sql:ht,parameters:rt}=on.compile();console.info(We.default.dim(`[POSTGREST:SQL:EMB-SEL] ${ht}
82
+ - ${JSON.stringify([...rt])}`));}Q=await on.execute();}}Q=Q.map(Me=>n.deserializeRow(Me)),Q=Li(Q,c,l,"public"),c.order&&c.order.length>0&&(Q=el(Q,c.order));let Ze=kt(c,"representation",_.appliedResolution,v),Y=Q.length,Ae=["return=representation"];m?.count&&Ae.push(`count=${m.count}`),m?.tx&&Ae.push(`tx=${m.tx}`);let Lt=c.type==="delete"||c.type==="insert"||c.type==="upsert"?"*/*":Y>0?yr(0,Y,void 0):"*/*",Ie=y?gr(Q):Q,Ne=h?Fi(Ie):Rt(Ie),mt=new TextEncoder().encode(Ne),Ut={"Content-Type":h?"text/csv; charset=utf-8":y?"application/vnd.pgrst.array+json;nulls=stripped; charset=utf-8":"application/json; charset=utf-8","Content-Range":Lt,"Content-Length":String(mt.byteLength)};if(Ae.length>0&&(Ut["Preference-Applied"]=Ae.join(", ")),(c.type==="insert"||c.type==="upsert")&&q.length>0&&Q.length>0){let Me=Q[0],Se=q.map(et=>`${et}=eq.${Me[et]}`).join("&");Ut.Location=`/${c.from}?${Se}`;}return new Response(mt,{status:Ze,headers:Ut})}let le=de(c,a,{db:x,introspection:i,schema:l}),{sql:Ve,parameters:ks}=le.compile();t?.debug&&console.info(We.default.dim(`[POSTGREST:SQL] ${Ve}
83
+ - ${JSON.stringify([...ks])}`));let pt=await le.execute(),te,lc=!1,nn=0;if(w&&Array.isArray(pt)&&pt.length>0&&pt[0]&&typeof pt[0]=="object"&&("numUpdatedRows"in pt[0]||"numInsertedOrUpdatedRows"in pt[0]||"numDeletedRows"in pt[0])){lc=!0;let ie=pt[0];nn=Number(ie.numUpdatedRows??ie.numInsertedOrUpdatedRows??ie.numDeletedRows??0),te=[];}else te=pt;let xo=Array.isArray(te);xo&&(te=te.map(ie=>n.deserializeRow(ie)),te=Li(te,c,l,"public"),te=Uf(te,c.select),te=Mf(te,c.select),te=Bf(te,c.select),te=qf(te,c.select),n.dialect==="sqlite"&&(te=Ff(te,c.select))),w&&xo&&c.order&&c.order.length>0&&(te=el(te,c.order));let vo=xo?te:[],Dt=vo.length,Yt=c.offset??0;if(w&&lc){if(m?.cardinality==="one"){if(nn===0)return $(406,"PGRST116","Cannot coerce the result to a single JSON object","The result contains 0 rows",null);if(nn>1)return $(406,"PGRST116","Cannot coerce the result to a single JSON object",`The result contains ${nn} rows`,null)}let ie=kt(c,"no-return",_.appliedResolution,v),q={"Content-Type":"application/json; charset=utf-8","Content-Range":nd(c,m,nn)};return R&&(q["Preference-Applied"]=R),new Response(null,{status:ie,headers:q})}let ye;if(sd(m)&&(w?ye=Dt:ye=await Gf(x,c,a,i)),m?.cardinality==="one"){if(Dt===0)return $(406,"PGRST116","Cannot coerce the result to a single JSON object","The result contains 0 rows",null);if(Dt>1)return $(406,"PGRST116","Cannot coerce the result to a single JSON object",`The result contains ${Dt} rows`,null);let ie=200;w&&(ie=kt(c,"representation",_.appliedResolution,v));let q=y?gr(vo[0]):vo[0],Q=Rt(q),Ze=new TextEncoder().encode(Q),Y={"Content-Type":y?"application/vnd.pgrst.object+json;nulls=stripped; charset=utf-8":"application/vnd.pgrst.object+json; charset=utf-8","Content-Range":Pb(c,w,Yt,ye),"Content-Length":String(Ze.byteLength)};return R&&(Y["Preference-Applied"]=R),m?.head?new Response(null,{status:ie,headers:Y}):new Response(Ze,{status:ie,headers:Y})}if(ye!==void 0&&Yt>0&&Dt===0&&Yt>=ye){let ie=JSON.stringify({code:"PGRST103",details:`An offset of ${Yt} was requested, but there are only ${ye} rows.`,hint:null,message:"Requested range not satisfiable"}),q=new TextEncoder().encode(ie),Q={"Content-Type":"application/json; charset=utf-8","Content-Range":`*/${ye}`,"Content-Length":String(q.byteLength)};return R&&(Q["Preference-Applied"]=R),new Response(q,{status:416,headers:Q})}let sn;w&&(c.type==="insert"||c.type==="upsert"||c.type==="delete")?sn=ye!==void 0?`*/${ye}`:"*/*":w&&m?.return!=="representation"?sn=ye!==void 0?`*/${ye}`:"*/*":Dt>0?sn=yr(Yt,Dt,ye):sn=ye!==void 0?`*/${ye}`:"*/*";let $s=200;w?$s=kt(c,"representation",_.appliedResolution,v):ye!==void 0&&(Yt+Dt<ye||Yt>0)&&($s=206);let Os=y?gr(te):te,um=h?Fi(Array.isArray(Os)?Os:[Os]):Rt(Os),cc=new TextEncoder().encode(um),Co={"Content-Type":h?"text/csv; charset=utf-8":y?"application/vnd.pgrst.array+json;nulls=stripped; charset=utf-8":"application/json; charset=utf-8","Content-Range":sn,"Content-Length":String(cc.byteLength)};return R&&(Co["Preference-Applied"]=R),m?.head?new Response(null,{status:$s,headers:Co}):new Response(cc,{status:$s,headers:Co})},{forceRollback:t?.forceRollback===!0})}catch(d){if(d instanceof fe){let y=`"${d.message}" (line 1, column ${d.position})`;return $(400,"PGRST100",y,d.details,null)}if(d instanceof Le)return $(400,"PGRST100",d.message,d.details,null);if(d instanceof Wt)return $(400,"PGRST100",d.message,d.details,null);if(d instanceof Pr)return $(404,"PGRST125",d.message,d.details,null);if(d instanceof Te)return $(d.httpStatus,d.code,d.message,d.details,d.hint);if(d instanceof Ir)return $(400,"PGRST102",d.message,null,null);if(d instanceof Error&&d.message.startsWith("Invalid JSON body"))return $(400,"PGRST102","Empty or invalid json",null,null);if(d instanceof Et)return $(400,"PGRST100",d.message,d.message,null);if(d instanceof fr)return $(400,"23514",d.message,`check constraint "${d.constraint}" violated`,null);if(d instanceof vi){let h=_i(f,"auth.role","anon")==="anon"?401:403;return Xe({status:h,code:"PGRST301",message:d.message})}let p=n.normalizeDbError(d);if(console.error(p),p instanceof Pn){let y=[...i.tables.map(m=>m.name),...i.views.map(m=>m.name)],h=pf(p.relation,y),b=p.schema||"public";return Xe({status:404,code:"PGRST205",message:p.message,hint:h?`Perhaps you meant the table '${b}.${h}'`:null})}if(p?.code==="42501"){let h=_i(f,"auth.role","anon")==="anon"?401:403;return Xe({status:h,code:"PGRST301",message:p.message})}if(p?.code==="42P01")return $(404,"PGRST205","Could not find the relation in the schema cache",p.message,null);if(p?.code==="23505"||p?.code==="23503")return $(409,p.code,p.message,p.detail??null,null);if(typeof p?.code=="string"){let y=p.code.slice(0,2);if(p.code==="42883")return $(404,p.code,p.message,p.detail??null,p.hint??null);if(y==="42"||y==="22"||y==="21"||p.code==="23502"){let h=p.message,b=c?.from;return p.code==="42703"&&b&&(h=h.replace(/^column "([^"]+)" does not exist$/,(m,w)=>`column ${b}.${w} does not exist`)),$(400,p.code,h,p.detail??null,p.hint??null)}if(y==="55")return $(500,p.code,p.message,p.detail??null,p.hint??null)}return p?.message?.includes("Unknown operator")?$(400,"PGRST100",p.message,null,null):p instanceof Error&&(p.message.includes("Expected identifier")||p.message.includes("Invalid filter")||p.message.includes("Unexpected input")||p.message.includes("Unsupported operator")||p.message.includes("failed to parse filter")||p.message.includes("failed to parse logic tree")||/^Expected .* at position \d+$/.test(p.message)||p.message.startsWith('Expected "(" for spread embed'))?$(400,"PGRST100",p.message,p.message,null):$(500,"SUP",String(p),null,null)}}).use(async(e,r)=>{if(e.req.method==="GET"&&e.req.path.endsWith("/"))return e.json(Nb);await r();}).all("*",e=>$(404,"PGRST125","Invalid path specified in request URL",null,null));var Mr=class{maxSizeBytes;now;entries=new Map;sizeBytes=0;constructor(e={}){this.maxSizeBytes=e.maxSizeBytes??1024*1024,this.now=e.now??Date.now;}async get(e){let r=this.entries.get(e);if(r){if(this.isExpired(r)){this.deleteEntry(e,r);return}return this.entries.delete(e),this.entries.set(e,r),r.value}}async set(e,r,n){let s=this.entries.get(e);s&&this.deleteEntry(e,s);let i={value:r,size:ld(e)+ld(r),expiresAt:n?.ttl&&n.ttl>0?this.now()+n.ttl*1e3:void 0};this.entries.set(e,i),this.sizeBytes+=i.size,this.evictToSize();}async delete(e){let r=this.entries.get(e);r&&this.deleteEntry(e,r);}isExpired(e){return typeof e.expiresAt=="number"&&e.expiresAt<=this.now()}evictToSize(){for(;this.sizeBytes>this.maxSizeBytes;){let e=this.entries.keys().next().value;if(typeof e!="string")break;let r=this.entries.get(e);if(!r)break;this.deleteEntry(e,r);}}deleteEntry(e,r){this.entries.delete(e),this.sizeBytes-=r.size;}};function ld(t){return new TextEncoder().encode(t).byteLength}var Mi=class{constructor(e){this.options=e;}async get(e){return await this.options.namespace.get(e)??void 0}async set(e,r,n){await this.options.namespace.put(e,r,{...n?.ttl&&n.ttl>0?{expirationTtl:n.ttl}:{}});}async delete(e){await this.options.namespace.delete(e);}};var Bi=class{constructor(e){this.options=e;}async get(e){return await this.options.client.get(e)??void 0}async set(e,r,n){if(n?.ttl&&n.ttl>0){await this.options.client.set(e,r,"EX",n.ttl);return}await this.options.client.set(e,r);}async delete(e){if(this.options.client.del){await this.options.client.del(e);return}if(this.options.client.delete){await this.options.client.delete(e);return}throw new Error("RedisCacheDriver client must provide del() or delete()")}};var qi=class{constructor(e){this.options=e;this.endpoint=e.endpoint??"https://api.resend.com/emails",this.fetchFn=e.fetch??fetch;}endpoint;fetchFn;async send(e){let r=await this.fetchFn(this.endpoint,{method:"POST",headers:{"content-type":"application/json",authorization:`Bearer ${this.options.apiKey}`},body:JSON.stringify({from:this.options.from,to:e.to,subject:e.subject,...e.text?{text:e.text}:{},...e.html?{html:e.html}:{}})});if(!r.ok)throw new Error(`Resend email failed (${r.status}): ${await r.text()}`)}};var Ki=class{constructor(e){this.options=e;this.endpoint=`https://email.${e.region}.amazonaws.com/v2/email/outbound-emails`,this.client=e.client;}endpoint;client;async send(e){let r=await this.getClient(),n={FromEmailAddress:this.options.from,Destination:{ToAddresses:[e.to]},Content:{Simple:{Subject:{Data:e.subject,Charset:"UTF-8"},Body:{...e.text?{Text:{Data:e.text,Charset:"UTF-8"}}:{},...e.html?{Html:{Data:e.html,Charset:"UTF-8"}}:{}}}}},s=await r.fetch(this.endpoint,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(n)});if(!s.ok)throw new Error(`AWS SES email failed (${s.status}): ${await s.text()}`)}async getClient(){if(this.client)return this.client;let{AwsClient:e}=await Promise.resolve().then(()=>(pd(),dd));return this.client=new e({accessKeyId:this.options.accessKeyId,secretAccessKey:this.options.secretAccessKey,service:"ses",region:this.options.region}),this.client}};var Wi=class{constructor(e){this.options=e;this.sendmailPath=e.sendmailPath??"/usr/sbin/sendmail";}sendmailPath;async send(e){let{spawn:r}=await import('node:child_process').catch(()=>{throw new Error("SendmailEmailDriver requires a Node-compatible runtime")}),n=al(this.options.from,e);await new Promise((s,i)=>{let o=r(this.sendmailPath,["-t","-i"],{stdio:["pipe","ignore","pipe"]}),a=[];o.on("error",l=>{i(new Error(`SendmailEmailDriver failed to start ${this.sendmailPath}: ${l.message}`));}),o.stderr?.on("data",l=>a.push(Buffer.from(l))),o.on("close",l=>{if(l===0){s();return}i(new Error(`SendmailEmailDriver exited with code ${l}: ${Buffer.concat(a).toString("utf8")}`));}),o.stdin.end(n);});}};function al(t,e){let r=e.html?"text/html; charset=UTF-8":"text/plain; charset=UTF-8";return [`From: ${t}`,`To: ${e.to}`,`Subject: ${e.subject}`,"MIME-Version: 1.0",`Content-Type: ${r}`,"",e.html??e.text??""].join(`
84
+ `)}var Bn=class{messages=new Map;maxKeepCount;order=[];constructor(e={}){this.maxKeepCount=e.maxKeepCount??100;}async send(e){if(this.maxKeepCount<=0)return;let r=e.to.toLowerCase(),n={...e,sentAt:new Date().toISOString()},s=this.messages.get(r)??[];s.push(n),this.messages.set(r,s),this.order.push({key:r,message:n}),this.trim();}clear(){this.messages.clear(),this.order.length=0;}trim(){for(;this.order.length>this.maxKeepCount;){let e=this.order.shift();if(!e)return;let r=this.messages.get(e.key);if(!r)continue;let n=r.indexOf(e.message);n>=0&&r.splice(n,1),r.length===0&&this.messages.delete(e.key);}}},Br=class extends Bn{silent;logger;constructor(e={}){super({maxKeepCount:0}),this.silent=e.silent??false,this.logger=e.logger??console;}async send(e){await super.send(e),this.silent||this.logger.info(["[@supabase/lite] Email driver noop send",`To: ${e.to}`,`Subject: ${e.subject}`,e.text?`Text: ${e.text}`:void 0,e.html?`HTML: ${e.html}`:void 0].filter(Boolean).join(`
85
+ `));}};var qn=class{silent;logger;constructor(e={}){this.silent=e.silent??false,this.logger=e.logger??console;}async send(e){this.silent||this.logger.info(["[@supabase/lite] SMS driver noop send",`To: ${e.to}`,`Body: ${e.body}`].join(`
86
+ `));}};function md(t={}){return {email:t.email??new Br,sms:t.sms??new qn,cache:t.cache??new Mr}}var ll=new Map,Jn=class{constructor(e){this.driver=e;}async sendConfirmation(e,r,n,s){await this.send(Ub(e,r,n,s));}async sendRecovery(e,r,n,s){await this.send(Fb(e,r,n,s));}async sendMagicLink(e,r,n,s){await this.send(Mb(e,r,n,s));}async sendEmailChange(e,r,n,s){await this.send(Bb(e,r,n,s));}async sendReauthentication(e,r,n){await this.send(qb(e,r,n));}async send(e){await this.driver.send({to:e.to,subject:e.subject,text:e.body.text,html:e.body.html});}};function Ub(t,e,r,n){return {to:t,subject:"Confirm Your Signup",body:{text:`Your confirmation code is: ${r}`,html:`<p>Your confirmation code is: <strong>${r}</strong></p><p><a href="http://localhost:3000/verify?token_hash=${e}&type=signup">Confirm</a></p>`},otp:r,tokenHash:e,meta:{...n,emailActionType:n?.emailActionType??"signup"}}}function Fb(t,e,r,n){return {to:t,subject:"Reset Your Password",body:{text:`Your recovery code is: ${r}`,html:`<p>Your recovery code is: <strong>${r}</strong></p><p><a href="http://localhost:3000/verify?token_hash=${e}&type=recovery">Reset</a></p>`},otp:r,tokenHash:e,meta:{...n,emailActionType:n?.emailActionType??"recovery"}}}function Mb(t,e,r,n){return {to:t,subject:"Your Magic Link",body:{text:`Your login code is: ${r}`,html:`<p>Your login code is: <strong>${r}</strong></p><p><a href="http://localhost:3000/verify?token_hash=${e}&type=magiclink">Login</a></p>`},otp:r,tokenHash:e,meta:{...n,emailActionType:n?.emailActionType??"magiclink"}}}function Bb(t,e,r,n){return {to:t,subject:"Confirm Email Change",body:{text:`Your email change code is: ${r}`,html:`<p>Your email change code is: <strong>${r}</strong></p><p><a href="http://localhost:3000/verify?token_hash=${e}&type=email_change">Confirm</a></p>`},otp:r,tokenHash:e,meta:{...n,emailActionType:n?.emailActionType??"email_change"}}}function qb(t,e,r){return {to:t,subject:"Reauthentication",body:{text:`Your reauthentication code is: ${e}`,html:`<p>Your reauthentication code is: <strong>${e}</strong></p>`},otp:e,tokenHash:r?.tokenHash,meta:{...r,emailActionType:r?.emailActionType??"reauthentication"}}}var U=class extends Error{constructor(r,n,s,i,o){super(s);this.status=r;this.code=n;this.details=i;this.headers=o;this.name="AuthError";}toJSON(){return {code:this.status,error_code:this.code,msg:this.message,...this.details}}},lt=()=>new U(400,"invalid_credentials","Invalid login credentials"),hd=()=>new U(400,"email_not_confirmed","Email not confirmed"),gd=(t,e=[],r=["length"])=>{let n=[];return r.includes("length")&&n.push(`Password should be at least ${t} characters.`),r.includes("characters")&&n.push(`Password should contain at least one character of each: ${e.join(", ")}.`),new U(422,"weak_password",n.join(" "),{weak_password:{reasons:r}})},yd=(t="Access token is required")=>new U(401,"no_authorization",t),qr=()=>new U(401,"no_authorization","This endpoint requires a valid Bearer token"),Kn=t=>new U(403,"bad_jwt",t),cl=()=>Kn("invalid JWT: unable to parse or verify signature, token is malformed: token contains an invalid number of segments"),ul=t=>Kn(`invalid JWT: unable to parse or verify signature, token is malformed: could not JSON decode header: ${t}`),bd=()=>Kn("invalid JWT: unable to parse or verify signature, token signature is invalid: signature is invalid"),wd=()=>Kn("invalid JWT: unable to parse or verify signature, token has invalid claims: token is expired"),fl=()=>Kn("invalid claim: missing sub claim"),dl=()=>new U(400,"bad_jwt","invalid claim: sub claim must be a UUID");var Sd=()=>new U(403,"user_not_found","User from sub claim in JWT does not exist"),Ed=()=>new U(403,"session_not_found","Session from session_id claim in JWT does not exist"),_d=()=>new U(422,"user_already_exists","User already registered"),xd=()=>new U(422,"email_exists","A user with this email address has already been registered"),pl=()=>new U(422,"signup_disabled","Signups not allowed for this instance"),vd=()=>new U(400,"email_provider_disabled","Email signups are disabled"),Cd=()=>new U(422,"otp_disabled","Signups not allowed for otp"),Ad=()=>new U(422,"same_password","New password should be different from the old password."),Jr=()=>new U(403,"otp_expired","Email link is invalid or has expired"),ee=(t,e=422)=>new U(e,"validation_failed",t);var Wn=t=>new U(400,"bad_json",t),ml=()=>new U(400,"validation_failed","Refresh token is not valid"),Kr=()=>new U(400,"refresh_token_not_found","Invalid Refresh Token: Refresh Token Not Found"),Hi=(t,e)=>new U(400,"refresh_token_already_used","Invalid Refresh Token: Already Used",void 0,{...t?{"Sb-Auth-Session-Id":t}:{},...e?{"Sb-Auth-User-Id":e}:{}}),Td=()=>new U(401,"session_not_found","Invalid Refresh Token: Already Used"),hl=(t,e,r)=>new U(400,"session_expired",t==="inactivity"?"Invalid Refresh Token: Session Expired (Inactivity)":"Invalid Refresh Token: Session Expired",void 0,{...e?{"Sb-Auth-Session-Id":e}:{},...r?{"Sb-Auth-User-Id":r}:{}}),Rd=()=>new U(422,"anonymous_provider_disabled","Anonymous sign-ins are disabled"),kd=()=>new U(400,"invalid_credentials","unsupported_grant_type"),zi=()=>new U(429,"over_email_send_rate_limit","For security purposes, you can only request this after 59 seconds.");async function yl(t,e,r){let n=new TextEncoder().encode(e),s=Math.floor(Date.now()/1e3);return new hr({...t,iat:s}).setProtectedHeader({alg:"HS256",typ:"JWT"}).setIssuedAt(s).setExpirationTime(s+r).sign(n)}async function $d(t,e){let r=t.split(".");if(r.length!==3||r.some(i=>i===""))throw cl();let n=Jb(r[0]);if(n)throw n;let s=new TextEncoder().encode(e);try{let{payload:i}=await mr(t,s,{algorithms:["HS256"]});return i}catch(i){throw i instanceof Tt.JWTExpired?wd():i instanceof Tt.JWSSignatureVerificationFailed?bd():i instanceof Tt.JWSInvalid||i instanceof Tt.JWTInvalid?cl():i}}function Jb(t){let e=Kb(t);if(!e)return ul("unexpected end of JSON input");let r=Wb(e);try{return JSON.parse(new TextDecoder("utf-8").decode(e)),null}catch{return ul(bl(r))}}function Kb(t){try{let e=t.replace(/-/g,"+").replace(/_/g,"/").padEnd(t.length+(4-t.length%4)%4,"="),r=atob(e),n=new Uint8Array(r.length);for(let s=0;s<r.length;s++)n[s]=r.charCodeAt(s);return n}catch{return null}}function Wb(t){let e="";for(let r of t)e+=String.fromCharCode(r);return e}var Hb={n:"null",t:"true",f:"false"};function bl(t){let e=0;for(;e<t.length;){let i=t.charCodeAt(e);if(i===32||i===9||i===10||i===13)e++;else break}let r=t.slice(e);if(!r)return "unexpected end of JSON input";let n=r[0],s=Hb[n];if(s){for(let i=1;i<s.length;i++){if(i>=r.length)return "unexpected end of JSON input";if(r[i]!==s[i])return `invalid character ${gl(r[i])} in literal ${s} (expecting '${s[i]}')`}return `invalid character ${gl(r[s.length]??" ")} after top-level value`}return n==="{"||n==="["||n==='"'||n==="-"||n>="0"&&n<="9"?"":`invalid character ${gl(n)} looking for beginning of value`}function gl(t){let e=t.codePointAt(0)??0;return e>=32&&e<127?`'${t}'`:`'\\u${e.toString(16).padStart(4,"0")}'`}async function Hn(t){return Od.hash(t,10)}async function wl(t,e){return Od.compare(t,e)}function Pd(t,e=6,r=[]){let n=[];return t.length<e&&n.push("length"),r.length>0&&r.some(s=>!zb(t,s))&&n.push("characters"),n}function zb(t,e){for(let r of t)if(e.includes(r))return true;return false}function $t(t=6){let e=crypto.getRandomValues(new Uint8Array(t)),r="";for(let n=0;n<t;n++)r+=(e[n]%10).toString();return r}function Ye(){let t=crypto.getRandomValues(new Uint8Array(32));return Array.from(t).map(e=>e.toString(16).padStart(2,"0")).join("")}function Sl(){return v7()}function He(){return v7()}function Gi(t){if(!t.jwt_secret)throw new Error('[auth] is enabled but `auth.jwt_secret` is empty. Add `jwt_secret = "<secret>"` under [auth] in your config.toml.')}var zn=class{constructor(e,r,n){this.repo=e;this.config=r;this.mailer=n;Gi(r),this.jwtExpiry=r.jwt_expiry??3600,this.minPasswordLength=r.minimum_password_length??6,this.passwordRequiredCharacters=r.password_required_characters??Vb(r.password_requirements),this.sessionTimeboxSeconds=Nd(r.sessions?.timebox),this.sessionInactivitySeconds=Nd(r.sessions?.inactivity_timeout);}jwtExpiry;minPasswordLength;passwordRequiredCharacters;sessionTimeboxSeconds;sessionInactivitySeconds;async signUp(e,r,n){if(this.config.enable_signup===false)throw pl();if(!e)throw Rd();if(this.config.email?.enable_signup===false)throw vd();if(r==null||r===void 0||r==="")throw ee("Signup requires a valid password",400);if(!Wr(e))throw ee("Unable to validate email address: invalid format",400);if(r.length>72)throw ee("Password cannot be longer than 72 characters",400);this.assertPasswordStrong(r);let i=!(this.config.email?.enable_confirmations??this.config.enable_confirmations??false);e=e.toLowerCase();let o=await this.repo.findUserByEmail(e);if(o)throw i?(await this.createAuditLog(o.id,e,"user_repeated_signup","user"),_d()):zi();let a=He(),l=await Hn(r),u=new Date().toISOString(),f=null,c=null,d=null;i||(f=$t(),c=Ye(),d=u);let p={...n??{},email:e,email_verified:i,phone_verified:false,sub:a},y={...n??{},email:e,email_verified:false,phone_verified:false,sub:a},h=await this.repo.createUser({id:a,email:e,encrypted_password:l,confirmed_at:i?u:null,raw_user_meta_data:p,raw_app_meta_data:{provider:"email",providers:["email"]},confirmation_token:c,confirmation_sent_at:d});await this.repo.createIdentity({id:He(),provider:"email",provider_id:a,user_id:a,identity_data:y}),!i&&f&&c&&await this.mailer.sendConfirmation(e,c,f,{userId:a,redirectTo:this.config.site_url});let b=await this.repo.findIdentitiesByUserId(a),m=this.repo.parseUserJson(h),w=this.mapUserToResponse(m,b,"signup");if(i){let _=await this.createSessionForUser(m,b);return await this.createAuditLog(a,e,"user_signedup","team"),{user:w,session:_}}return await this.createAuditLog(a,e,"user_confirmation_requested","user"),{user:w}}async signInWithPassword(e,r){if(!e)throw ee("missing email or phone",400);if(!r)throw lt();let n=await this.repo.findUserByEmail(e.toLowerCase());if(!n||!n.encrypted_password)throw lt();let s=this.repo.parseUserJson(n);if(!s.confirmed_at)throw hd();if(!await wl(r,s.encrypted_password))throw lt();let o=await this.repo.findIdentitiesByUserId(n.id);return this.createSessionForUser(s,o,"user")}async refreshSession(e){if(!e)throw ml();let r=await this.repo.findRefreshToken(e);if(!r)throw Qb(e)?Kr():ml();if(jd(r))return this.refreshWithRevokedToken(r);let n=await this.repo.findUserById(r.user_id);if(!n)throw Kr();let s=null;if(r.session_id){if(s=await this.repo.findSessionById(r.session_id),!s)throw Kr();this.assertSessionRefreshable(s);}let i=Dd(s?.updated_at,s?.refreshed_at,n.updated_at);await this.repo.revokeRefreshToken(r.id);let o=Sl(),a=r.session_id??He();return r.session_id?await this.repo.updateSessionRefreshedAt(r.session_id,i):await this.repo.createSession({id:a,user_id:n.id}),await this.repo.createRefreshToken({token:o,user_id:n.id,session_id:a,parent:r.token}),await this.createAuditLog(n.id,n.email??"","token_refreshed","token",false),await this.createAuditLog(n.id,n.email??"","token_revoked","token",false),this.createRefreshResponse(n,a,o,i)}async refreshWithRevokedToken(e){if(this.config.sessions?.single_per_user)throw Td();if(!e.session_id)throw Hi(e.session_id,e.user_id);let r=await this.repo.findRefreshTokensBySession(e.session_id),n=Xb(r,e.token),s=n.filter(u=>!jd(u));if((this.config.enable_refresh_token_rotation??false)&&n.length>1)throw await this.repo.revokeRefreshTokensByIds(s.map(u=>u.id)),Hi(e.session_id,e.user_id);let i=s.at(-1);if(!i)throw Hi(e.session_id,e.user_id);let o=await this.repo.findUserById(e.user_id);if(!o)throw Kr();let a=await this.repo.findSessionById(e.session_id);if(!a)throw Kr();this.assertSessionRefreshable(a);let l=Dd(a.updated_at,a.refreshed_at,o.updated_at);return await this.repo.updateSessionRefreshedAt(e.session_id,l),await this.createAuditLog(o.id,o.email??"","token_refreshed","token",false),this.createRefreshResponse(o,e.session_id,i.token,l)}async createRefreshResponse(e,r,n,s){let i=await this.repo.updateUser(e.id,{last_sign_in_at:s}),o=this.repo.parseUserJson(i??e),a=await this.repo.findIdentitiesByUserId(e.id),l=await yl({sub:e.id,aud:e.aud||"authenticated",role:e.role||"authenticated",email:e.email??void 0,session_id:r},this.config.jwt_secret,this.jwtExpiry),u=Math.floor(Date.now()/1e3);return Ld({access_token:l,refresh_token:n,token_type:"bearer",expires_in:this.jwtExpiry,expires_at:u+this.jwtExpiry,user:this.mapUserToResponse(o,a,"user")},r,e.id)}assertSessionRefreshable(e){let r=Date.now();if(this.sessionTimeboxSeconds!==void 0&&r-Date.parse(e.created_at)>this.sessionTimeboxSeconds*1e3)throw hl(void 0,e.id,e.user_id);let n=e.refreshed_at??e.created_at;if(this.sessionInactivitySeconds!==void 0&&r-Date.parse(n)>this.sessionInactivitySeconds*1e3)throw hl("inactivity",e.id,e.user_id)}async getUser(e){let r=await this.repo.findUserById(e);if(!r)throw lt();let n=this.repo.parseUserJson(r),s=await this.repo.findIdentitiesByUserId(e);return this.mapUserToResponse(n,s,"user")}async updateUser(e,r){let n=await this.repo.findUserById(e);if(!n)throw lt();let s=this.repo.parseUserJson(n),i={},o=false,a=false,l=r.data!==void 0||r.password!==void 0||r.email!==void 0;if(r.data!==void 0){let c=typeof s.raw_user_meta_data=="object"?s.raw_user_meta_data:{};i.raw_user_meta_data=Gb(c,r.data??{}),o=true;}if(r.password!==void 0){if(this.assertPasswordStrong(r.password),s.encrypted_password&&await wl(r.password,s.encrypted_password))throw Ad();i.encrypted_password=await Hn(r.password),i.recovery_token=null,i.recovery_sent_at=null,o=true,a=true;}if(r.email!==void 0)if(r.email==="")o=true;else {let c=r.email.toLowerCase();if(!Wr(c))throw ee("Unable to validate email address: invalid format",400);if(o=true,c!==s.email?.toLowerCase()){let d=await this.repo.findUserByEmail(c);if(d&&d.id!==e)throw xd();let p=new Date().toISOString(),y=$t(),h=Ye(),b=$t(),m=Ye(),w=this.config.email?.double_confirm_changes??true;i.email_change=c,i.email_change_token_current=w?h:null,i.email_change_token_new=m,i.email_change_sent_at=p,w?await this.mailer.sendEmailChange(c,h,y,{userId:e,tokenNew:b,tokenHashNew:m,redirectTo:this.config.site_url}):await this.mailer.sendEmailChange(c,m,b,{userId:e,redirectTo:this.config.site_url});}}l||(o=true);let u=s;if(Object.keys(i).length>0){let c=await this.repo.updateUser(e,i);if(!c)throw lt();u=this.repo.parseUserJson(c);}a&&await this.createAuditLog(e,s.email??"","user_updated_password","user",false),o&&await this.createAuditLog(e,s.email??"","user_modified","user",false);let f=await this.repo.findIdentitiesByUserId(e);return this.mapUserToResponse(u,f,"user")}async signOut(e,r,n){let s=r??"local";if(!["global","local","others"].includes(s))throw ee(`Unsupported logout scope "${s}"`,400);let i=await this.repo.findUserById(n);if(!i)throw lt();let o=this.repo.parseUserJson(i);s==="global"?(await this.repo.deleteRefreshTokensForUser(n),await this.repo.deleteUserSessions(n)):s==="others"&&e?(await this.repo.deleteRefreshTokensForUser(n,e),await this.repo.deleteUserSessions(n,e)):e&&(await this.repo.deleteRefreshTokensForSession(e),await this.repo.deleteSession(e)),await this.createAuditLog(n,o.email??"","logout","account",false);}async signInWithOtp(e,r){if(!e)throw ee("One of email or phone must be set",400);if(e=e.toLowerCase(),!Wr(e))throw ee("Unable to validate email address: invalid format",400);let n=await this.repo.findUserByEmail(e),s=!n;if(!n&&r?.shouldCreateUser!==false){let l=He(),u=await Hn(Ye()),f=new Date().toISOString();n=await this.repo.createUser({id:l,email:e,encrypted_password:u,confirmed_at:f,raw_app_meta_data:{provider:"email",providers:["email"]},raw_user_meta_data:{email:e,email_verified:true,phone_verified:false,sub:l}}),await this.repo.createIdentity({id:He(),provider:"email",provider_id:l,user_id:l,identity_data:{email:e,email_verified:false,phone_verified:false,sub:l}});}if(!n)throw Cd();let i=$t(),o=Ye(),a=new Date().toISOString();if(await this.repo.updateUser(n.id,{recovery_token:o,recovery_sent_at:a}),await this.createAuditLog(n.id,e,"user_recovery_requested","user",false),await this.mailer.sendMagicLink(e,o,i,{userId:n.id,redirectTo:this.config.site_url}),s){let l=await this.repo.findUserById(n.id);if(!l)throw lt();let u=this.repo.parseUserJson(l),f=await this.repo.findIdentitiesByUserId(n.id);await this.createSessionForUser(u,f),await this.createAuditLog(n.id,e,"user_signedup","team");}}async requestMagicLink(e,r){if(!e)throw ee("Password recovery requires an email",422);if(e=e.toLowerCase(),!Wr(e))throw ee("Unable to validate email address: invalid format",400);let n=await this.repo.findUserByEmail(e),s=!n;if(!n){if(this.config.enable_signup===false)throw pl();let l=He(),u=await Hn(Ye()),f=new Date().toISOString();n=await this.repo.createUser({id:l,email:e,encrypted_password:u,confirmed_at:f,raw_app_meta_data:{provider:"email",providers:["email"]},raw_user_meta_data:{email:e,email_verified:true,phone_verified:false,sub:l}}),await this.repo.createIdentity({id:He(),provider:l,provider_id:l,user_id:l,identity_data:{email:e,email_verified:false,phone_verified:false,sub:l}});}let i=$t(),o=Ye(),a=new Date().toISOString();if(await this.repo.updateUser(n.id,{recovery_token:o,recovery_sent_at:a}),await this.createAuditLog(n.id,e,"user_recovery_requested","user",false),await this.mailer.sendMagicLink(e,o,i,{userId:n.id,redirectTo:this.config.site_url}),s){let l=await this.repo.findUserById(n.id);if(!l)throw lt();let u=this.repo.parseUserJson(l),f=await this.repo.findIdentitiesByUserId(n.id);await this.createSessionForUser(u,f),await this.createAuditLog(n.id,e,"user_signedup","team");}}async verifyOtp(e){let r=null,n=null;if(e.token_hash){let u=await this.findUserByTokenAndType(e.token_hash,e.type);r=u?.user??null,n=u?.tokenColumn??null;}else if(e.email&&e.token)if(r=await this.repo.findUserByEmail(e.email.toLowerCase()),r){for(let u of this.getTokenColumnsForType(e.type)){let f=r[u];if(f===e.token||this.otpMatchesStoredTokenHash(e.email,e.token,f)){n=u;break}}if(!n)throw Jr()}else throw Jr();else throw Jr();if(!r)throw Jr();let s=this.repo.parseUserJson(r),i=new Date().toISOString(),o={};if(s.confirmed_at||(o.confirmed_at=i),e.type==="email_change"&&s.email_change){o.email=s.email_change,o.email_change=null,o.email_change_token_current=null,o.email_change_token_new=null;let u=await this.repo.findIdentitiesByUserId(r.id);for(let f of u){let c=typeof f.identity_data=="string"?JSON.parse(f.identity_data):{...f.identity_data??{}};await this.repo.updateIdentity(f.id,{identity_data:{...c,email:s.email_change,email_verified:true}});}await this.createAuditLog(r.id,s.email??"","user_modified","user",false);}else if(e.type==="signup"){let u=typeof s.raw_user_meta_data=="object"?s.raw_user_meta_data:{};o.raw_user_meta_data={...u,email_verified:true};let f=await this.repo.findIdentitiesByUserId(r.id);for(let c of f){let d=typeof c.identity_data=="string"?JSON.parse(c.identity_data):{...c.identity_data??{}};await this.repo.updateIdentity(c.id,{identity_data:{...d,email_verified:true}});}n&&(o[n]=null);}else n&&(o[n]=null);o.last_sign_in_at=i,await this.repo.updateUser(r.id,o);let a=await this.repo.findUserById(r.id);if(!a)throw Jr();let l=await this.repo.findIdentitiesByUserId(r.id);return e.type==="signup"&&await this.createAuditLog(r.id,a.email??"","user_signedup","team"),this.createSessionForUser(this.repo.parseUserJson(a),l,"verify",{createLoginAudit:["magiclink","recovery"].includes(e.type),includeLoginProviderTrait:!["magiclink","recovery"].includes(e.type),authenticationMethod:["email_change","magiclink","recovery","signup"].includes(e.type)?"otp":"password"})}async recover(e){if(!e)throw ee("Password recovery requires an email",400);if(e=e.toLowerCase(),!Wr(e))throw ee("Unable to validate email address: invalid format",400);let r=await this.repo.findUserByEmail(e);if(!r)return;let n=$t(),s=Ye(),i=new Date().toISOString();await this.repo.updateUser(r.id,{recovery_token:s,recovery_sent_at:i}),await this.createAuditLog(r.id,e,"user_recovery_requested","user",false),await this.mailer.sendRecovery(e,s,n,{userId:r.id,redirectTo:this.config.site_url});}async resend(e,r){if(!["signup","email_change","sms","phone_change"].includes(e))throw ee("Missing one of these types: signup, email_change, sms, phone_change",400);if((e==="signup"||e==="email_change")&&!r)throw ee("Type provided requires an email address",400);if(!r)return;if(r=r.toLowerCase(),!Wr(r))throw ee("Unable to validate email address: invalid format",400);let n=await this.repo.findUserByEmail(r);if(!n)return;let s=$t(),i=Ye(),o=new Date().toISOString();if(e==="signup"){if(n.confirmed_at||!n.confirmation_sent_at)return;throw zi()}else if(e==="email_change"){if(!n.email_change)return;if(n.email_change_sent_at)throw zi();await this.repo.updateUser(n.id,{email_change_token_new:i,email_change_sent_at:o}),await this.mailer.sendEmailChange(n.email_change,i,s,{userId:n.id,redirectTo:this.config.site_url});}}async reauthenticate(e){let r=await this.repo.findUserById(e);if(!r)throw yd();let n=$t(),s=Ye(),i=new Date().toISOString();await this.repo.updateUser(r.id,{reauthentication_token:s,reauthentication_sent_at:i}),await this.mailer.sendReauthentication(r.email,n,{userId:r.id,tokenHash:s,redirectTo:this.config.site_url}),await this.createAuditLog(r.id,r.email??"","user_reauthenticate_requested","",false);}async createSessionForUser(e,r,n="session",s={}){let i=new Date().toISOString(),o=await this.repo.updateUser(e.id,{last_sign_in_at:i}),a=o?this.repo.parseUserJson(o):e;this.config.sessions?.single_per_user&&await this.repo.revokeUserRefreshTokens(e.id);let l=He();await this.repo.createSession({id:l,user_id:e.id});let u=Sl();await this.repo.createRefreshToken({token:u,user_id:e.id,session_id:l}),(s.createLoginAudit??true)&&await this.createAuditLog(e.id,e.email??"","login","account",s.includeLoginProviderTrait??true);let f=await yl({sub:e.id,aud:e.aud||"authenticated",role:e.role||"authenticated",email:e.email??void 0,session_id:l},this.config.jwt_secret,this.jwtExpiry),c=Math.floor(Date.now()/1e3);return Ld({access_token:f,refresh_token:u,token_type:"bearer",expires_in:this.jwtExpiry,expires_at:c+this.jwtExpiry,user:this.mapUserToResponse(a,r,n)},l,e.id)}assertPasswordStrong(e){let r=Pd(e,this.minPasswordLength,this.passwordRequiredCharacters);if(r.length>0)throw gd(this.minPasswordLength,this.passwordRequiredCharacters,r)}mapUserToResponse(e,r,n){let s=typeof e.raw_app_meta_data=="string"?JSON.parse(e.raw_app_meta_data):e.raw_app_meta_data??{},i=typeof e.raw_user_meta_data=="string"?JSON.parse(e.raw_user_meta_data):e.raw_user_meta_data??{},o={id:e.id,aud:e.aud||"authenticated",role:e.role||"authenticated",email:e.email??"",phone:e.phone??"",app_metadata:s,user_metadata:i,identities:r.map(a=>this.mapIdentityToResponse(a,n,e)),created_at:e.created_at,updated_at:e.updated_at,is_anonymous:false};return e.confirmed_at&&(o.email_confirmed_at=e.confirmed_at,(n==="user"||n==="verify")&&(o.confirmed_at=e.confirmed_at)),e.last_sign_in_at&&(o.last_sign_in_at=e.last_sign_in_at),e.confirmation_sent_at&&(o.confirmation_sent_at=e.confirmation_sent_at),e.email_change&&(o.new_email=e.email_change),e.email_change_sent_at&&(o.email_change_sent_at=e.email_change_sent_at),n==="verify"&&e.recovery_sent_at&&(o.recovery_sent_at=e.recovery_sent_at),o}mapIdentityToResponse(e,r,n){let s=typeof e.identity_data=="string"?JSON.parse(e.identity_data):e.identity_data??{},i=r==="session"&&n.confirmed_at?{...s,email_verified:true}:s,o=e.email??(typeof i.email=="string"?i.email:n.email??void 0);return {identity_id:e.id,id:e.provider_id,user_id:e.user_id,identity_data:i,provider:"email",last_sign_in_at:e.last_sign_in_at??e.created_at,created_at:e.created_at,updated_at:e.updated_at,...o?{email:o}:{}}}async findUserByTokenAndType(e,r){if(r==="email_change"){let n=await this.repo.findUserByToken("email_change_token_current",e);if(n)return {user:n,tokenColumn:"email_change_token_current"};let s=await this.repo.findUserByToken("email_change_token_new",e);return s?{user:s,tokenColumn:"email_change_token_new"}:null}for(let n of this.getTokenColumnsForType(r)){let s=await this.repo.findUserByToken(n,e);if(s)return {user:s,tokenColumn:n}}return null}otpMatchesStoredTokenHash(e,r,n){return !r||typeof n!="string"?false:(ll.get(e.toLowerCase())??[]).some(i=>i.otp===r&&i.tokenHash===n)}getTokenColumnsForType(e){switch(e){case "signup":return ["confirmation_token"];case "magiclink":return ["recovery_token","confirmation_token"];case "recovery":return ["recovery_token"];case "email_change":return ["email_change_token_new"];case "reauthentication":return ["reauthentication_token"];default:return []}}async createAuditLog(e,r,n,s,i=true){let o={action:n,actor_id:e,actor_username:r,actor_via_sso:false,log_type:s};i&&(o.traits={provider:"email"}),await this.repo.createAuditLogEntry({id:He(),payload:o});}};function Gb(t,e){let r={...t};for(let[n,s]of Object.entries(e))s===null?delete r[n]:r[n]=s;return r}function Vb(t){switch(t){case "letters_digits":return ["abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ","0123456789"];case "lower_upper_letters_digits":return ["abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ","0123456789"];case "lower_upper_letters_digits_symbols":return ["abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ","0123456789","!@#$%^&*"];default:return []}}function Nd(t){if(!t)return;let e=t.match(/^(\d+)(ms|s|m|h)?$/);if(!e)return;let r=Number(e[1]);switch(e[2]??"s"){case "ms":return r/1e3;case "m":return r*60;case "h":return r*3600;default:return r}}function Wr(t){return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t)}function Qb(t){return /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(t)}function jd(t){return t.revoked===true||t.revoked===1}function Xb(t,e){let r=[],n=[e];for(;n.length>0;){let s=n.shift();for(let i of t)i.parent!==s||r.some(o=>o.id===i.id)||(r.push(i),n.push(i.token));}return r}function Dd(...t){let e=Math.max(0,...t.map(n=>n?Date.parse(n):0)),r=Date.now();return new Date(Math.max(r,e+1)).toISOString()}function Ld(t,e,r){return Object.defineProperties(t,{session_id:{value:e,enumerable:false},user_id:{value:r,enumerable:false}}),t}function El(t){if(t==null)return {};if(typeof t=="string")try{return JSON.parse(t)}catch{return {}}return t}function br(t){return typeof t=="string"?t:JSON.stringify(t??{})}var Gn=class{constructor(e,r){this.db=e;this.dialect=r;this.schema="auth";}schema;bool(e){return this.dialect==="sqlite"?e?1:0:e}table(e){return this.db.withSchema(this.schema).selectFrom(e)}insertInto(e){return this.db.withSchema(this.schema).insertInto(e)}update(e){return this.db.withSchema(this.schema).updateTable(e)}deleteFrom(e){return this.db.withSchema(this.schema).deleteFrom(e)}async findUserByEmail(e){return await this.table("users").selectAll().where("email","=",e.toLowerCase()).executeTakeFirst()??null}async findUserById(e){return await this.table("users").selectAll().where("id","=",e).executeTakeFirst()??null}async findUserByToken(e,r){return await this.table("users").selectAll().where(e,"=",r).executeTakeFirst()??null}async createUser(e){let r=new Date().toISOString(),n={id:e.id,aud:e.aud??"authenticated",role:e.role??"authenticated",email:e.email.toLowerCase(),encrypted_password:e.encrypted_password??null,phone:e.phone??null,email_confirmed_at:e.email_confirmed_at??e.confirmed_at??null,confirmation_token:e.confirmation_token??null,confirmation_sent_at:e.confirmation_sent_at??null,recovery_token:e.recovery_token??null,recovery_sent_at:e.recovery_sent_at??null,email_change:e.email_change??null,email_change_token_new:e.email_change_token_new??null,email_change_token_current:e.email_change_token_current??null,email_change_sent_at:e.email_change_sent_at??null,email_change_confirm_status:e.email_change_confirm_status??0,reauthentication_token:e.reauthentication_token??null,reauthentication_sent_at:e.reauthentication_sent_at??null,raw_app_meta_data:br(e.raw_app_meta_data??{provider:"email",providers:["email"]}),raw_user_meta_data:br(e.raw_user_meta_data??{}),is_sso_user:this.bool(e.is_sso_user??false),is_anonymous:this.bool(e.is_anonymous??false),last_sign_in_at:e.last_sign_in_at??null,created_at:r,updated_at:r};return await this.insertInto("users").values(n).execute(),await this.findUserById(e.id)}async updateUser(e,r){let n={...r,updated_at:new Date().toISOString()};return n.confirmed_at!=null&&n.email_confirmed_at==null&&(n.email_confirmed_at=n.confirmed_at),delete n.confirmed_at,n.raw_app_meta_data!=null&&(n.raw_app_meta_data=br(n.raw_app_meta_data)),n.raw_user_meta_data!=null&&(n.raw_user_meta_data=br(n.raw_user_meta_data)),n.is_sso_user!=null&&(n.is_sso_user=this.bool(!!n.is_sso_user)),n.is_anonymous!=null&&(n.is_anonymous=this.bool(!!n.is_anonymous)),await this.update("users").set(n).where("id","=",e).execute(),this.findUserById(e)}async createSession(e){let r=new Date().toISOString(),n={id:e.id,user_id:e.user_id,aal:e.aal??"aal1",not_after:null,refreshed_at:null,user_agent:null,ip:null,tag:null,refresh_token_hmac_key:null,refresh_token_counter:null,scopes:null,factor_id:null,created_at:r,updated_at:r};return await this.insertInto("sessions").values(n).execute(),n}async findSessionById(e){return await this.table("sessions").selectAll().where("id","=",e).executeTakeFirst()??null}async updateSessionRefreshedAt(e,r){return await this.update("sessions").set({refreshed_at:r,updated_at:r}).where("id","=",e).execute(),this.findSessionById(e)}async deleteSession(e){await this.deleteFrom("sessions").where("id","=",e).execute();}async deleteUserSessions(e,r){let n=this.deleteFrom("sessions").where("user_id","=",e);r&&(n=n.where("id","!=",r)),await n.execute();}async deleteRefreshTokensForSession(e){await this.deleteFrom("refresh_tokens").where("session_id","=",e).execute();}async deleteRefreshTokensForUser(e,r){let n=this.deleteFrom("refresh_tokens").where("user_id","=",e);r&&(n=n.where("session_id","!=",r)),await n.execute();}async createRefreshToken(e){let r=new Date().toISOString(),n={id:He(),token:e.token,user_id:e.user_id,session_id:e.session_id,revoked:this.bool(false),parent:e.parent??null,created_at:r,updated_at:r};return await this.insertInto("refresh_tokens").values(n).execute(),n}async findRefreshToken(e){return await this.table("refresh_tokens").selectAll().where("token","=",e).executeTakeFirst()??null}async findRefreshTokensBySession(e){return await this.table("refresh_tokens").selectAll().where("session_id","=",e).execute()}async revokeRefreshToken(e){await this.update("refresh_tokens").set({revoked:this.bool(true),updated_at:new Date().toISOString()}).where("id","=",e).execute();}async revokeSessionRefreshTokens(e){await this.update("refresh_tokens").set({revoked:this.bool(true),updated_at:new Date().toISOString()}).where("session_id","=",e).execute();}async revokeRefreshTokensByIds(e){e.length!==0&&await this.update("refresh_tokens").set({revoked:this.bool(true),updated_at:new Date().toISOString()}).where("id","in",e).execute();}async revokeUserRefreshTokens(e){await this.update("refresh_tokens").set({revoked:this.bool(true),updated_at:new Date().toISOString()}).where("user_id","=",e).execute();}async createIdentity(e){let r=new Date().toISOString(),n={id:e.id,provider:e.provider,provider_id:e.provider_id,user_id:e.user_id,identity_data:br(e.identity_data),last_sign_in_at:e.last_sign_in_at??r,created_at:r,updated_at:r};return await this.insertInto("identities").values(n).execute(),{...n,identity_data:e.identity_data}}async findIdentitiesByUserId(e){return (await this.table("identities").selectAll().where("user_id","=",e).execute()).map(n=>({...n,identity_data:El(n.identity_data)}))}async updateIdentity(e,r){let n={...r,updated_at:new Date().toISOString()};n.identity_data!=null&&(n.identity_data=br(n.identity_data)),delete n.email,await this.update("identities").set(n).where("id","=",e).execute();}async createAuditLogEntry(e){let r={id:e.id,payload:br(e.payload??{}),ip_address:e.ip_address??"",created_at:new Date().toISOString()};await this.insertInto("audit_log_entries").values(r).execute();}parseUserJson(e){return {...e,raw_app_meta_data:El(e.raw_app_meta_data),raw_user_meta_data:El(e.raw_user_meta_data),confirmed_at:e.confirmed_at??e.email_confirmed_at??null}}};function Ud(){return {version:Yb(),name:"GoTrue",description:"GoTrue is a user registration and authentication API"}}function Fd(t){return {external:{anonymous_users:t.enable_anonymous_sign_ins??false,apple:false,azure:false,bitbucket:false,discord:false,facebook:false,snapchat:false,figma:false,fly:false,github:false,gitlab:false,google:false,keycloak:false,kakao:false,linkedin:false,linkedin_oidc:false,notion:false,spotify:false,slack:false,slack_oidc:false,workos:false,twitch:false,twitter:false,email:t.email?.enable_signup??true,phone:false,zoom:false},disable_signup:!(t.enable_signup??true),mailer_autoconfirm:!(t.email?.enable_confirmations??false),phone_autoconfirm:false,sms_provider:"",saml_enabled:false}}function Md(){return {keys:[]}}function Bd(){return {issuer:"",jwks_uri:"/.well-known/jwks.json"}}function Yb(){return [_l(JSON.stringify({alg:"HS256",typ:"JWT"})),_l(JSON.stringify({name:"GoTrue",implementation:"@supabase/lite"})),_l("metadata")].join(".")}function _l(t){if(typeof Buffer<"u")return Buffer.from(t,"utf-8").toString("base64url");let e=new TextEncoder().encode(t),r="";for(let n of e)r+=String.fromCharCode(n);return btoa(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}var xl=t=>t;var Zb="00000000-0000-0000-0000-000000000000",ew=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,vl=({onError:t}={})=>xl(async(e,r)=>{if(!e.var.userId||!e.var.sessionId){let n=await Jd(e);if(n&&t)return t(n,e)}await r();}),Vn=()=>xl(async(t,e)=>{if(!t.var.userId){let r=await Jd(t);if(r)return qd(t,r);if(!t.var.userId)return qd(t,qr())}await e();});async function Jd(t){let e=t.req.header("Authorization");if(!e)return qr();if(!e.startsWith("Bearer "))return qr();let r=e.slice(7);if(!r||/^\s/.test(r))return qr();let n=t.get("app").config.auth?.jwt_secret;if(!n)return null;let s;try{s=await $d(r,n);}catch(u){return u instanceof U?u:qr()}let i=tw(s);if(i)return i;let o=s.sub;if(s.role!=="service_role"&&!await t.var.authService.repo.findUserById(o))return Sd();let l=s.session_id;if(l){if(!await t.var.authService.repo.findSessionById(l))return Ed();t.set("sessionId",l);}return t.set("userId",o),t.set("jwt",s),null}function tw(t){let e=t.sub,r=t.role;return e==null||e===""?fl():typeof e!="string"?dl():ew.test(e)?e===Zb&&r==="service_role"?fl():null:dl()}function qd(t,e){return t.header("X-Sb-Error-Code",e.code),t.json(e.toJSON(),e.status)}var Cl=new be().onError((t,e)=>{if(t instanceof U){e.header("X-Sb-Error-Code",t.code);for(let[r,n]of Object.entries(t.headers??{}))e.header(r,n);return e.json(t.toJSON(),t.status)}return console.error("Auth error:",t),e.json({error:"server_error",error_description:"Internal server error"},500)}).options("*",t=>{let e=t.req.header("Access-Control-Request-Method");return e&&t.header("Access-Control-Allow-Methods",e),t.header("Access-Control-Allow-Credentials","true"),t.header("Access-Control-Allow-Origin","*"),t.body(null,204)}).post("/signup",async t=>{let e=await Ot(t,{requireBody:true}),{authService:r}=t.var,n=await r.signUp(e.email,e.password,e.data);return n.session?(Vi(t,n.session),t.json(n.session,200)):t.json(n.user,200)}).all("/signup",wr("POST")).post("/token",async t=>{let e=t.req.query("grant_type"),r=await Ot(t,{requireBody:true}),{authService:n}=t.var;if(e==="password"){let s=await n.signInWithPassword(r.email,r.password);return Vi(t,s),t.json({...s,weak_password:null},200)}if(e==="refresh_token"){let s=await n.refreshSession(r.refresh_token);return Vi(t,s),t.json(s,200)}throw kd()}).all("/token",wr("POST")).post("/otp",async t=>{let e=await Ot(t),{authService:r}=t.var;return await r.signInWithOtp(e.email,{shouldCreateUser:e.create_user??e.options?.shouldCreateUser}),t.json({},200)}).post("/magiclink",async t=>{let e=await Ot(t),{authService:r}=t.var;return await r.requestMagicLink(e.email,e.gotrue_meta_security),t.json({},200)}).all("/magiclink",wr("POST")).post("/verify",async t=>{let e=await Ot(t),{authService:r}=t.var;nw(e);let n=await r.verifyOtp({email:e.email,token:e.token,token_hash:e.token_hash,type:e.type});return Vi(t,n),t.json(n,200)}).get("/verify",t=>{let e=t.req.query("type");throw e?Kd.has(e)?ee("Verify requires a token or a token hash",400):ee("Invalid email verification type",400):ee("Verify requires a verification type",400)}).post("/recover",async t=>{let e=await Ot(t),{authService:r}=t.var;return await r.recover(e.email),t.json({},200)}).post("/resend",async t=>{let e=await Ot(t),{authService:r}=t.var;return await r.resend(e.type,e.email),t.json({},200)}).get("/health",t=>t.json(Ud(),200)).all("/health",wr("GET")).get("/settings",t=>t.json(Fd(t.var.app.config.auth??{}),200)).all("/settings",wr("GET")).get("/.well-known/jwks.json",t=>(t.header("Cache-Control","public, max-age=600"),t.json(Md(),200))).get("/.well-known/openid-configuration",t=>(t.header("Cache-Control","public, max-age=600"),t.json(Bd(),200))).all("/nonexistent",rw).use(Vn()).post("/logout",async t=>{let e=await Ot(t),{authService:r}=t.var;return await r.signOut(t.get("sessionId"),t.req.query("scope")??e.scope,t.get("userId")),t.body(null,204)}).get("/user",async t=>{let{authService:e}=t.var,r=await e.getUser(t.get("userId"));return t.json(r,200)}).put("/user",async t=>{let e=await Ot(t),{authService:r}=t.var,n=await r.updateUser(t.get("userId"),{data:e.data,password:e.password,email:e.email});return t.json(n,200)}).all("/user",wr("GET, PUT")).get("/reauthenticate",async t=>{let{authService:e}=t.var;return await e.reauthenticate(t.get("userId")),t.json({},200)}).all("/reauthenticate",wr("GET"));function wr(t){return e=>(e.header("Allow",t),e.body(null,405))}function rw(t){return t.header("Content-Type","text/plain; charset=utf-8"),t.header("X-Content-Type-Options","nosniff"),t.body("404 page not found",404)}var Kd=new Set(["signup","magiclink","recovery","email_change","reauthentication"]);function nw(t){let e=typeof t.type=="string"?t.type:"";if(!e)throw ee("Verify requires a verification type",400);if(!Kd.has(e))throw ee("Invalid email verification type",400);let r=typeof t.token_hash=="string"?t.token_hash:"",n=typeof t.token=="string"?t.token:"",s=typeof t.email=="string"?t.email:"";if(e==="signup"&&!r&&!(s&&n))throw ee("Verify requires either a token or a token hash",400)}async function Ot(t,e={}){if(!t.req.raw.body){if(e.requireBody)throw Wn("Could not parse request body as JSON: unexpected end of JSON input");return {}}let r=await t.req.text();if(r===""){if(e.requireBody)throw Wn("Could not parse request body as JSON: unexpected end of JSON input");return {}}try{return JSON.parse(r)}catch{if(t.req.header("Content-Type")?.toLowerCase().split(";")[0]?.trim()==="application/x-www-form-urlencoded")throw Wn("Could not parse request body as JSON: unexpected end of JSON input");let s=bl(r)||"invalid character ' ' looking for beginning of value";throw Wn(`Could not parse request body as JSON: ${s}`)}}function Vi(t,e){e.session_id&&t.header("Sb-Auth-Session-Id",e.session_id),e.user_id&&t.header("Sb-Auth-User-Id",e.user_id),e.refresh_token&&t.header("Sb-Auth-Refresh-Token-Prefix",String(e.refresh_token).slice(0,8));}function Wd(t){let e=t.connection.dialect,r=new Gn(t.connection.kysely,e);return new zn(r,t.config.auth,t._mailer??new Jn(t.drivers.email))}function Hd(t){if(t==null)return {};if(typeof t=="string")try{return JSON.parse(t)}catch{return {}}return t}function zd(t){if(t==null)return [];if(Array.isArray(t))return t;if(typeof t=="string")try{return JSON.parse(t)}catch{return []}return []}function Qt(t){return typeof t=="string"?t:JSON.stringify(t??{})}var Qn=class{constructor(e,r){this.db=e;this.dialect=r;this.schema="storage";}schema;table(e){return this.db.withSchema(this.schema).selectFrom(e)}insertInto(e){return this.db.withSchema(this.schema).insertInto(e)}update(e){return this.db.withSchema(this.schema).updateTable(e)}deleteFrom(e){return this.db.withSchema(this.schema).deleteFrom(e)}async createBucket(e){let r=new Date().toISOString(),n={id:e.id,name:e.name,owner:e.owner??null,owner_id:e.owner_id??null,public:e.public??false,file_size_limit:e.file_size_limit??null,allowed_mime_types:this.dialect==="postgres"?e.allowed_mime_types??null:Qt(e.allowed_mime_types??[]),created_at:r,updated_at:r};return await this.insertInto("buckets").values(n).execute(),await this.findBucketById(e.id)}async findBucketById(e){let r=await this.table("buckets").selectAll().where("id","=",e).executeTakeFirst();return r?this.parseBucketRow(r):null}async findBucketByName(e){let r=await this.table("buckets").selectAll().where("name","=",e).executeTakeFirst();return r?this.parseBucketRow(r):null}async listBuckets(){return (await this.table("buckets").selectAll().execute()).map(r=>this.parseBucketRow(r))}async updateBucket(e,r){let n={updated_at:new Date().toISOString()};return r.public!==void 0&&(n.public=r.public),r.file_size_limit!==void 0&&(n.file_size_limit=r.file_size_limit),r.allowed_mime_types!==void 0&&(n.allowed_mime_types=this.dialect==="postgres"?r.allowed_mime_types??null:Qt(r.allowed_mime_types)),await this.update("buckets").set(n).where("id","=",e).execute(),this.findBucketById(e)}async deleteBucket(e){await this.deleteFrom("buckets").where("id","=",e).execute();}async isBucketEmpty(e){let r=await this.table("objects").select(this.db.fn.count("id").as("count")).where("bucket_id","=",e).executeTakeFirst();return Number(r?.count??0)===0}async createObject(e){let r=new Date().toISOString(),n={id:e.id,bucket_id:e.bucket_id,name:e.name,owner:e.owner??null,owner_id:e.owner_id??null,metadata:Qt(e.metadata??{}),user_metadata:Qt(e.user_metadata??{}),version:e.version??null,created_at:r,updated_at:r,last_accessed_at:r};return this.dialect!=="postgres"&&(n.path_tokens=Qt(e.name.split("/"))),await this.insertInto("objects").values(n).execute(),await this.findObjectById(e.id)}async findObjectById(e){let r=await this.table("objects").selectAll().where("id","=",e).executeTakeFirst();return r?this.parseObjectRow(r):null}async findObjectByPath(e,r){let n=await this.table("objects").selectAll().where("bucket_id","=",e).where("name","=",r).executeTakeFirst();return n?this.parseObjectRow(n):null}async listObjects(e,r,n){let s=this.table("objects").selectAll().where("bucket_id","=",e);return r&&(s=s.where("name","like",`${r}%`)),n?.search&&(s=s.where("name","like",`%${n.search}%`)),n?.sortBy?s=s.orderBy(n.sortBy.column,n.sortBy.order):s=s.orderBy("name","asc"),n?.limit&&(s=s.limit(n.limit)),n?.offset&&(s=s.offset(n.offset)),(await s.execute()).map(o=>this.parseObjectRow(o))}async updateObject(e,r){let n={updated_at:new Date().toISOString()};return r.name!==void 0&&(n.name=r.name,this.dialect!=="postgres"&&(n.path_tokens=Qt(r.name.split("/")))),r.metadata!==void 0&&(n.metadata=Qt(r.metadata)),r.user_metadata!==void 0&&(n.user_metadata=Qt(r.user_metadata)),r.version!==void 0&&(n.version=r.version),r.owner!==void 0&&(n.owner=r.owner),r.owner_id!==void 0&&(n.owner_id=r.owner_id),await this.update("objects").set(n).where("id","=",e).execute(),this.findObjectById(e)}async deleteObject(e){await this.deleteFrom("objects").where("id","=",e).execute();}async deleteObjectsByBucket(e){let n=(await this.table("objects").select("name").where("bucket_id","=",e).execute()).map(s=>s.name);return n.length>0&&await this.deleteFrom("objects").where("bucket_id","=",e).execute(),n}async objectExists(e,r){return !!await this.table("objects").select("id").where("bucket_id","=",e).where("name","=",r).executeTakeFirst()}async touchObject(e){await this.update("objects").set({last_accessed_at:new Date().toISOString()}).where("id","=",e).execute();}parseBucketRow(e){return {...e,owner:e.owner??"",owner_id:e.owner_id??"",public:!!e.public,allowed_mime_types:e.allowed_mime_types==null?null:zd(e.allowed_mime_types)}}parseObjectRow(e){return {...e,metadata:Hd(e.metadata),user_metadata:Hd(e.user_metadata),path_tokens:zd(e.path_tokens)}}};var W=class t extends Error{constructor(r,n,s){super(s);this.status=r;this.code=n;}name="StorageError";static bucketNotFound(r){return new t(404,"Bucket not found",`Bucket not found: ${r}`)}static bucketAlreadyExists(r){return new t(409,"Duplicate","The resource already exists")}static bucketNotEmpty(r){return new t(409,"ResourceNotEmpty","The bucket you tried to delete is not empty")}static objectNotFound(r){return new t(404,"Object not found",`Object not found: ${r}`)}static invalidMimeType(r,n){return new t(415,"invalid_mime_type",`mime type ${r} is not supported. Supported: ${n.join(", ")}`)}static fileTooLarge(r){return new t(413,"Payload too large",`The object exceeded the maximum allowed size of ${r} bytes`)}static invalidKey(r){return new t(400,"Invalid key",`Invalid object key: ${r}`)}static storageNotConfigured(){return new t(500,"Storage not configured","Storage is enabled but no storage adapter has been set. Set app._storageAdapter before making storage requests.")}toJSON(){return {statusCode:String(this.status),error:this.code,message:this.message}}};var Xn=class{constructor(e,r,n,s={},i){this.repo=e;this.adapter=r;this.config=n;this.options=s;this.transformationAdapter=i;}initialized=false;async init(){if(!this.initialized&&(this.initialized=true,this.options.autoCreateBuckets!==false&&this.config.buckets))for(let[e,r]of Object.entries(this.config.buckets))await this.repo.findBucketById(e)||await this.repo.createBucket({id:e,name:e,public:r.public??false,file_size_limit:r.file_size_limit?iw(r.file_size_limit):null,allowed_mime_types:r.allowed_mime_types});}async createBucket(e){if(await this.repo.findBucketById(e.id))throw W.bucketAlreadyExists(e.id);return this.repo.createBucket(e)}async getBucket(e){let r=await this.repo.findBucketById(e);if(!r)throw W.bucketNotFound(e);return r}async listBuckets(){return this.repo.listBuckets()}async updateBucket(e,r){if(!await this.repo.findBucketById(e))throw W.bucketNotFound(e);return await this.repo.updateBucket(e,r)}async deleteBucket(e){if(!await this.repo.findBucketById(e))throw W.bucketNotFound(e);if(!await this.repo.isBucketEmpty(e))throw W.bucketNotEmpty(e);await this.repo.deleteBucket(e);}async emptyBucket(e){if(!await this.repo.findBucketById(e))throw W.bucketNotFound(e);let n=await this.repo.deleteObjectsByBucket(e);n.length>0&&await this.adapter.deleteObjects(e,n);}async upload(e,r,n,s){Al(r);let i=await this.repo.findBucketById(e);if(!i)throw W.bucketNotFound(e);let o=s?.contentType??"application/octet-stream",a=s?.cacheControl??"no-cache";if(i.allowed_mime_types&&i.allowed_mime_types.length>0&&!i.allowed_mime_types.includes(o))throw W.invalidMimeType(o,i.allowed_mime_types);let l=i.file_size_limit??this.config.fileSizeLimit??null;if(l&&s?.contentLength&&s.contentLength>l)throw W.fileTooLarge(l);let u=await this.repo.findObjectByPath(e,r);if(u&&!s?.upsert)throw W.bucketAlreadyExists(r);return await this.adapter.uploadObject(e,r,void 0,n,o,a),u&&s?.upsert?await this.repo.updateObject(u.id,{metadata:s?.metadata??u.metadata,version:crypto.randomUUID()}):this.repo.createObject({id:crypto.randomUUID(),bucket_id:e,name:r,owner:s?.owner??null,owner_id:s?.owner??null,metadata:s?.metadata??{},version:crypto.randomUUID()})}async download(e,r,n){let s=await this.repo.findObjectByPath(e,r);if(!s)throw W.objectNotFound(r);if(await this.repo.touchObject(s.id),n?.transform&&this.transformationAdapter&&!this.transformationAdapter.requiresBuffer&&this.transformationAdapter.transformFromUrl){let o=await this.adapter.privateAssetUrl(e,r,s.version??void 0),a=await this.transformationAdapter.transformFromUrl(o,n.transform);return {body:a.body,metadata:{cacheControl:"public, max-age=3600",contentLength:a.contentLength??0,size:a.contentLength??0,mimetype:a.contentType,eTag:""}}}let i=await this.adapter.getObject(e,r,s.version??void 0);if(!i.body)throw W.objectNotFound(r);if(n?.transform&&this.transformationAdapter?.requiresBuffer){let o=await sw(i.body),a=await this.transformationAdapter.transform(o,n.transform);return {body:a.body,metadata:{...i.metadata,mimetype:a.contentType,size:a.contentLength??0,contentLength:a.contentLength??0}}}return {body:i.body,metadata:i.metadata}}async update(e,r,n,s){return this.upload(e,r,n,{...s,upsert:s?.upsert??true})}async remove(e,r){if(!await this.repo.findBucketById(e))throw W.bucketNotFound(e);let s=[];for(let i of r){let o=await this.repo.findObjectByPath(e,i);o&&(await this.adapter.deleteObject(e,i,o.version??void 0),await this.repo.deleteObject(o.id),s.push(o));}return s}async list(e,r,n){if(!await this.repo.findBucketById(e))throw W.bucketNotFound(e);return this.repo.listObjects(e,r,n)}async move(e,r,n){Al(n);let s=await this.repo.findObjectByPath(e,r);if(!s)throw W.objectNotFound(r);await this.adapter.copyObject(e,r,s.version??void 0,n,void 0),await this.adapter.deleteObject(e,r,s.version??void 0),await this.repo.updateObject(s.id,{name:n,version:crypto.randomUUID()});}async copy(e,r,n){Al(n);let s=await this.repo.findObjectByPath(e,r);if(!s)throw W.objectNotFound(r);return await this.adapter.copyObject(e,r,s.version??void 0,n,void 0),await this.repo.createObject({id:crypto.randomUUID(),bucket_id:e,name:n,owner:s.owner,owner_id:s.owner_id,metadata:s.metadata,version:crypto.randomUUID()}),{key:n}}async info(e,r){let n=await this.repo.findObjectByPath(e,r);if(!n)throw W.objectNotFound(r);let s=await this.adapter.headObject(e,r,n.version??void 0);return {...n,httpMetadata:s}}async exists(e,r){return this.repo.objectExists(e,r)}async createSignedUrl(e,r,n){if(!await this.repo.findObjectByPath(e,r))throw W.objectNotFound(r);let i=await this.signStorageToken({sub:r,bucket:e,intent:"download"},n);return {signedUrl:`/storage/v1/object/sign/${e}/${r}?token=${i}`}}async createSignedUrls(e,r,n){let s=[];for(let i of r)try{let{signedUrl:o}=await this.createSignedUrl(e,i,n);s.push({path:i,signedUrl:o,error:null});}catch(o){s.push({path:i,signedUrl:"",error:o.message});}return s}async createSignedUploadUrl(e,r){if(!await this.repo.findBucketById(e))throw W.bucketNotFound(e);let s=await this.signStorageToken({sub:r,bucket:e,intent:"upload"},7200);return {signedUrl:`/storage/v1/object/upload/sign/${e}/${r}?token=${s}`,token:s,path:r}}async verifySignedUrl(e){let r=new TextEncoder().encode(this.config.jwtSecret),{payload:n}=await mr(e,r,{algorithms:["HS256"]});return {bucket:n.bucket,path:n.sub,intent:n.intent}}async signStorageToken(e,r){let n=new TextEncoder().encode(this.config.jwtSecret),s=Math.floor(Date.now()/1e3);return new hr({...e,iat:s}).setProtectedHeader({alg:"HS256",typ:"JWT"}).setIssuedAt(s).setExpirationTime(s+r).sign(n)}};async function sw(t){if(t instanceof Uint8Array||Buffer.isBuffer(t))return t;if(t instanceof Blob)return new Uint8Array(await t.arrayBuffer());let e=[],r=t.getReader();for(;;){let{done:n,value:s}=await r.read();if(n)break;e.push(s);}return Buffer.concat(e)}function Al(t){if(!t||t.includes("..")||t.startsWith("/"))throw W.invalidKey(t)}function iw(t){let e=t.match(/^(\d+(?:\.\d+)?)\s*(B|KB|KiB|MB|MiB|GB|GiB)$/i);if(!e)return 0;let r=Number.parseFloat(e[1]),n=e[2].toUpperCase();return Math.floor(r*({B:1,KB:1e3,KIB:1024,MB:1e6,MIB:1048576,GB:1e9,GIB:1073741824}[n]??1))}var ow=/^[\w!#$%&'*.^`|~+-]+$/,aw=/^[ !#-:<-[\]-~]*$/,Tl=(t,e)=>{let r=t.trim().split(";"),n={};for(let s of r){s=s.trim();let i=s.indexOf("=");if(i===-1)continue;let o=s.substring(0,i).trim();if(!ow.test(o))continue;let a=s.substring(i+1).trim();if(a.startsWith('"')&&a.endsWith('"')&&(a=a.slice(1,-1)),aw.test(a)&&(n[o]=a.indexOf("%")!==-1?$r(a,pn):a,e));}return n};var Gd=(t,e,r)=>{let n=t.req.raw.headers.get("Cookie");return n?Tl(n):{}};var Vd=(t,e)=>new Response(t,{headers:{"Content-Type":e}}).formData();var lw=/^application\/([a-z-\.]+\+)?json(;\s*[a-zA-Z0-9\-]+\=([^;]+))*$/,cw=/^multipart\/form-data(;\s?boundary=[a-zA-Z0-9'"()+_,\-./:=?]+)?$/,uw=/^application\/x-www-form-urlencoded(;\s*[a-zA-Z0-9\-]+\=([^;]+))*$/,Rl=(t,e)=>async(r,n)=>{let s={},i=r.req.header("Content-Type");switch(t){case "json":if(!i||!lw.test(i))break;try{s=await r.req.json();}catch{let a="Malformed JSON in request body";throw new Qs(400,{message:a})}break;case "form":{if(!i||!(cw.test(i)||uw.test(i)))break;let a;if(r.req.bodyCache.formData)a=await r.req.bodyCache.formData;else try{let u=await r.req.arrayBuffer();a=await Vd(u,i),r.req.bodyCache.formData=a;}catch(u){let f="Malformed FormData request.";throw f+=u instanceof Error?` ${u.message}`:` ${String(u)}`,new Qs(400,{message:f})}let l={};a.forEach((u,f)=>{f.endsWith("[]")?(l[f]??=[]).push(u):Array.isArray(l[f])?l[f].push(u):f in l?l[f]=[l[f],u]:l[f]=u;}),s=l;break}case "query":s=Object.fromEntries(Object.entries(r.req.queries()).map(([a,l])=>l.length===1?[a,l[0]]:[a,l]));break;case "param":s=r.req.param();break;case "header":s=r.req.header();break;case "cookie":s=Gd(r);break}let o=await e(s,r);return o instanceof Response?o:(r.req.addValidatedData(t,o),await n())};var fw=Symbol.for("jsonv"),dw=(t,e)=>Object.assign(t,{[fw]:e}),Pt=(t,e,r,n)=>{let s=Rl(t,async(i,o)=>{let a=e.coerce(i,{dropUnknown:r?.dropUnknown}),l=e.validate(a);if(!l.valid)return o.json({...l,schema:e},400);return a});return dw(s,{type:"parameters",skip:r?.skipOpenAPI,value:{target:t,schema:e}})};var pw=g.object({id:g.string(),name:g.string(),public:g.boolean({default:false}).optional(),file_size_limit:g.number().optional(),allowed_mime_types:g.array(g.string()).optional()}),mw=g.object({public:g.boolean().optional(),file_size_limit:g.number().optional(),allowed_mime_types:g.array(g.string()).optional()}),hw=g.object({prefix:g.string().optional(),limit:g.number().optional(),offset:g.number().optional(),sortBy:g.object({column:g.string(),order:g.string()}).optional(),search:g.string().optional()}),Qd=g.object({bucketId:g.string(),sourceKey:g.string(),destinationKey:g.string()}),gw=g.object({expiresIn:g.number()}),yw=g.object({expiresIn:g.number(),paths:g.array(g.string())}),bw=g.object({prefixes:g.array(g.string())}),ww=new be().get("/object/public/:bucketId/*",async t=>{let e=t.req.param("bucketId"),r=ct(t.req.path,`/object/public/${e}/`),{storageService:n}=t.var;if(!(await n.getBucket(e)).public)return t.json({error:"Bucket is not public"},400);let i=kl(t.req.query()),o=await n.download(e,r,{transform:i??void 0});return new Response(o.body,{headers:$l(o.metadata)})}).get("/object/sign/:bucketId/*",async t=>{let e=t.req.param("bucketId"),r=ct(t.req.path,`/object/sign/${e}/`),n=t.req.query("token"),{storageService:s}=t.var;if(!n)return t.json({error:"Missing token"},400);let i=await s.verifySignedUrl(n);if(i.bucket!==e||i.path!==r)return t.json({error:"Invalid token"},403);let o=kl(t.req.query()),a=await s.download(e,r,{transform:o??void 0});return new Response(a.body,{headers:$l(a.metadata)})}).put("/object/upload/sign/:bucketId/*",async t=>{let e=t.req.param("bucketId"),r=ct(t.req.path,`/object/upload/sign/${e}/`),n=t.req.query("token"),{storageService:s}=t.var;if(!n)return t.json({error:"Missing token"},400);let i=await s.verifySignedUrl(n);if(i.bucket!==e||i.path!==r||i.intent!=="upload")return t.json({error:"Invalid token"},403);let o=t.req.header("content-type")??"application/octet-stream",a=t.req.header("content-length")?Number.parseInt(t.req.header("content-length"),10):void 0,l=t.req.raw.body??new Uint8Array(await t.req.arrayBuffer()),u=await s.upload(e,r,l,{contentType:o,contentLength:a,upsert:true});return t.json({Key:u.name},200)}),Sw=new be().use(Vn()).post("/bucket",Pt("json",pw),async t=>{let e=t.req.valid("json"),{storageService:r}=t.var,n=await r.createBucket({id:e.id,name:e.name??e.id,public:e.public,file_size_limit:e.file_size_limit,allowed_mime_types:e.allowed_mime_types});return t.json({name:n.name},200)}).get("/bucket",async t=>{let{storageService:e}=t.var,r=await e.listBuckets();return t.json(r,200)}).get("/bucket/:id",async t=>{let{storageService:e}=t.var,r=await e.getBucket(t.req.param("id"));return t.json(r,200)}).put("/bucket/:id",Pt("json",mw),async t=>{let{storageService:e}=t.var;return await e.updateBucket(t.req.param("id"),t.req.valid("json")),t.json({message:"Successfully updated"},200)}).delete("/bucket/:id",async t=>{let{storageService:e}=t.var;return await e.deleteBucket(t.req.param("id")),t.json({message:"Successfully deleted"},200)}).post("/bucket/:id/empty",async t=>{let{storageService:e}=t.var;return await e.emptyBucket(t.req.param("id")),t.json({message:"Empty bucket has been queued. Completion may take up to an hour."},200)}).post("/object/list/:bucketId",Pt("json",hw),async t=>{let e=t.req.param("bucketId"),r=t.req.valid("json"),{storageService:n}=t.var,s=await n.list(e,r.prefix,{limit:r.limit,offset:r.offset,sortBy:r.sortBy,search:r.search});return t.json(s,200)}).post("/object/move",Pt("json",Qd),async t=>{let e=t.req.valid("json"),{storageService:r}=t.var;return await r.move(e.bucketId,e.sourceKey,e.destinationKey),t.json({message:"Successfully moved"},200)}).post("/object/copy",Pt("json",Qd),async t=>{let e=t.req.valid("json"),{storageService:r}=t.var,n=await r.copy(e.bucketId,e.sourceKey,e.destinationKey);return t.json({key:n.key},200)}).get("/object/info/:bucketId/*",async t=>{let e=t.req.param("bucketId"),r=ct(t.req.path,`/object/info/${e}/`),{storageService:n}=t.var,s=await n.info(e,r);return t.json(s,200)}).post("/object/sign/:bucketId/*",Pt("json",gw),async t=>{let e=t.req.param("bucketId"),r=ct(t.req.path,`/object/sign/${e}/`),{expiresIn:n}=t.req.valid("json"),{storageService:s}=t.var,i=await s.createSignedUrl(e,r,n);return t.json(i,200)}).post("/object/sign/:bucketId",Pt("json",yw),async t=>{let e=t.req.param("bucketId"),{expiresIn:r,paths:n}=t.req.valid("json"),{storageService:s}=t.var,i=await s.createSignedUrls(e,n,r);return t.json(i,200)}).post("/object/upload/sign/:bucketId/*",async t=>{let e=t.req.param("bucketId"),r=ct(t.req.path,`/object/upload/sign/${e}/`),{storageService:n}=t.var,s=await n.createSignedUploadUrl(e,r);return t.json(s,200)}).delete("/object/:bucketId",Pt("json",bw),async t=>{let e=t.req.param("bucketId"),{prefixes:r}=t.req.valid("json"),{storageService:n}=t.var,s=await n.remove(e,r);return t.json(s,200)}).post("/object/:bucketId/*",async t=>{let e=t.req.param("bucketId"),r=ct(t.req.path,`/object/${e}/`),{storageService:n}=t.var,s=t.req.header("content-type")??"application/octet-stream",i=t.req.header("cache-control")??"no-cache",o=t.req.header("x-upsert")==="true",a,l,u;if(s.startsWith("multipart/form-data")){let d=(await t.req.formData()).get("file");if(!d)throw new W(400,"InvalidRequest","Missing file in multipart upload");let p=new Uint8Array(await d.arrayBuffer());a=p,l=d.type||"application/octet-stream",u=p.length;}else a=t.req.raw.body??new Uint8Array(await t.req.arrayBuffer()),l=s,u=t.req.header("content-length")?Number.parseInt(t.req.header("content-length"),10):void 0;let f=await n.upload(e,r,a,{contentType:l,cacheControl:i,contentLength:u,upsert:o,owner:t.get("userId")??null});return t.json({Key:`${e}/${f.name}`,Id:f.id},200)}).put("/object/:bucketId/*",async t=>{let e=t.req.param("bucketId"),r=ct(t.req.path,`/object/${e}/`),{storageService:n}=t.var,s=t.req.header("content-type")??"application/octet-stream",i=t.req.header("cache-control")??"no-cache",o=t.req.header("content-length")?Number.parseInt(t.req.header("content-length"),10):void 0,a=t.req.raw.body??new Uint8Array(await t.req.arrayBuffer()),l=await n.update(e,r,a,{contentType:s,cacheControl:i,contentLength:o,owner:t.get("userId")??null});return t.json({Key:`${e}/${l.name}`,Id:l.id},200)}).get("/object/:bucketId/*",async t=>{let e=t.req.param("bucketId"),r=ct(t.req.path,`/object/${e}/`),{storageService:n}=t.var,s=kl(t.req.query()),i=await n.download(e,r,{transform:s??void 0});return new Response(i.body,{headers:$l(i.metadata)})}).on("HEAD","/object/:bucketId/*",async t=>{let e=t.req.param("bucketId"),r=ct(t.req.path,`/object/${e}/`),{storageService:n}=t.var;return await n.exists(e,r)?t.body(null,200):t.body(null,404)}),Ol=new be().onError((t,e)=>t instanceof W?e.json(t.toJSON(),400):(console.error("Storage error:",t),e.json({error:"server_error",message:"Internal server error"},500))).route("/",ww).route("/",Sw);function ct(t,e){let r=t.replace(/^\/storage\/v1/,""),n=r.indexOf(e);return n===-1?r.split("/").slice(3).join("/"):r.slice(n+e.length)}function kl(t){let{width:e,height:r,resize:n,format:s,quality:i}=t;return !e&&!r&&!n&&!s&&!i?null:{width:e?Number.parseInt(e,10):void 0,height:r?Number.parseInt(r,10):void 0,resize:n,format:s,quality:i?Number.parseInt(i,10):void 0}}function $l(t){let e={"Content-Type":t.mimetype,"Cache-Control":t.cacheControl,ETag:t.eTag};return t.contentLength&&(e["Content-Length"]=String(t.contentLength)),t.lastModified&&(e["Last-Modified"]=t.lastModified.toUTCString()),t.contentRange&&(e["Content-Range"]=t.contentRange),e}var Pl=`-- supabase/storage core schema (Postgres)
89
87
  -- Source: supabase/storage migrations (consolidated)
90
88
 
91
89
  CREATE SCHEMA IF NOT EXISTS storage;
@@ -120,11 +118,11 @@ CREATE TABLE IF NOT EXISTS storage.objects (
120
118
  );
121
119
 
122
120
  CREATE INDEX IF NOT EXISTS storage_objects_name_pattern_search ON storage.objects (name text_pattern_ops);
123
- `;function Wl(s=true){return s?js(Jl):Jl}var ia=class{driver=null;requiresBuffer=false;async transform(e,r){return {body:e,contentType:"application/octet-stream",contentLength:e.byteLength}}};function cm(s){if(!s._storageAdapter)throw V.storageNotConfigured();let e=s.connection.dialect,r=new tn(s.connection.kysely,e),t=s.config.auth?.jwt_secret??"secret",n=s._transformationAdapter??new ia;return new rn(r,s._storageAdapter,{jwtSecret:t,fileSizeLimit:s.config.storage?.file_size_limit?qS(s.config.storage.file_size_limit):void 0,buckets:s.config.storage?.buckets},{autoCreateBuckets:true},n)}function qS(s){let e=s.match(/^(\d+(?:\.\d+)?)\s*(B|KB|KiB|MB|MiB|GB|GiB)$/i);if(!e)return 0;let r=Number.parseFloat(e[1]),t=e[2].toUpperCase();return Math.floor(r*({B:1,KB:1e3,KIB:1024,MB:1e6,MIB:1048576,GB:1e9,GIB:1073741824}[t]??1))}var Ye=Symbol("RENDERER"),Zt=Symbol("ERROR_HANDLER"),z=Symbol("STASH"),aa=Symbol("INTERNAL"),Hl=Symbol("MEMO"),Yr=Symbol("PERMALINK");var Gl=s=>(s[aa]=true,s);var Vl=s=>({value:e,children:r})=>{if(!r)return;let t={children:[{tag:Gl(()=>{s.push(e);}),props:{}}]};Array.isArray(r)?t.children.push(...r.flat()):t.children.push(r),t.children.push({tag:Gl(()=>{s.pop();}),props:{}});let n={tag:"",props:t,type:""};return n[Zt]=i=>{throw s.pop(),i},n},oa=s=>{let e=[s],r=Vl(e);return r.values=e,r.Provider=r,Dt.push(r),r};var Dt=[],sn=s=>{let e=[s],r=(t=>{e.push(t.value);let n;try{n=t.children?(Array.isArray(t.children)?new Kl("",{},t.children):t.children).toString():"";}catch(i){throw e.pop(),i}return n instanceof Promise?n.finally(()=>e.pop()).then(i=>G(i,i.callbacks)):(e.pop(),G(n))});return r.values=e,r.Provider=r,r[Ye]=Vl(e),Dt.push(r),r},Te=s=>s.values.at(-1);var zr={title:[],script:["src"],style:["data-href"],link:["href"],meta:["name","httpEquiv","charset","itemProp"]},nn={},Xr="data-precedence";var ln={};Fn(ln,{button:()=>zS,form:()=>KS,input:()=>YS,link:()=>GS,meta:()=>VS,script:()=>WS,style:()=>HS,title:()=>JS});var Cr=s=>Array.isArray(s)?s:[s];var pm=new WeakMap,fm=(s,e,r,t)=>({buffer:n,context:i})=>{if(!n)return;let a=pm.get(i)||{};pm.set(i,a);let o=a[s]||=[],l=false,u=zr[s];if(u.length>0){e:for(let[,p]of o)for(let c of u)if((p?.[c]??null)===r?.[c]){l=true;break e}}if(l?n[0]=n[0].replaceAll(e,""):u.length>0?o.push([e,r,t]):o.unshift([e,r,t]),n[0].indexOf("</head>")!==-1){let p;if(t===void 0)p=o.map(([c])=>c);else {let c=[];p=o.map(([f,,m])=>{let d=c.indexOf(m);return d===-1&&(c.push(m),d=c.length-1),[f,d]}).sort((f,m)=>f[1]-m[1]).map(([f])=>f);}p.forEach(c=>{n[0]=n[0].replaceAll(c,"");}),n[0]=n[0].replace(/(?=<\/head>)/,p.join(""));}},an=(s,e,r)=>G(new Fe(s,r,Cr(e??[])).toString()),on=(s,e,r,t)=>{if("itemProp"in r)return an(s,e,r);let{precedence:n,blocking:i,...a}=r;n=t?n??"":void 0,t&&(a[Xr]=n);let o=new Fe(s,a,Cr(e||[])).toString();return o instanceof Promise?o.then(l=>G(o,[...l.callbacks||[],fm(s,l,a,n)])):G(o,[fm(s,o,a,n)])},JS=({children:s,...e})=>{let r=la();if(r){let t=Te(r);if(t==="svg"||t==="head")return new Fe("title",e,Cr(s??[]))}return on("title",s,e,false)},WS=({children:s,...e})=>{let r=la();return ["src","async"].some(t=>!e[t])||r&&Te(r)==="head"?an("script",s,e):on("script",s,e,false)},HS=({children:s,...e})=>["href","precedence"].every(r=>r in e)?(e["data-href"]=e.href,delete e.href,on("style",s,e,true)):an("style",s,e),GS=({children:s,...e})=>["onLoad","onError"].some(r=>r in e)||e.rel==="stylesheet"&&(!("precedence"in e)||"disabled"in e)?an("link",s,e):on("link",s,e,"precedence"in e),VS=({children:s,...e})=>{let r=la();return r&&Te(r)==="head"?an("meta",s,e):on("meta",s,e,false)},mm=(s,{children:e,...r})=>new Fe(s,r,Cr(e??[])),KS=s=>(typeof s.action=="function"&&(s.action=Yr in s.action?s.action[Yr]:void 0),mm("form",s)),hm=(s,e)=>(typeof e.formAction=="function"&&(e.formAction=Yr in e.formAction?e.formAction[Yr]:void 0),mm(s,e)),YS=s=>hm("input",s),zS=s=>hm("button",s);var XS=new Map([["className","class"],["htmlFor","for"],["crossOrigin","crossorigin"],["httpEquiv","http-equiv"],["itemProp","itemprop"],["fetchPriority","fetchpriority"],["noModule","nomodule"],["formAction","formaction"]]),Qr=s=>XS.get(s)||s,un=(s,e)=>{for(let[r,t]of Object.entries(s)){let n=r[0]==="-"||!/[A-Z]/.test(r)?r:r.replace(/[A-Z]/g,i=>`-${i.toLowerCase()}`);e(n,t==null?null:typeof t=="number"?n.match(/^(?:a|border-im|column(?:-c|s)|flex(?:$|-[^b])|grid-(?:ar|[^a])|font-w|li|or|sca|st|ta|wido|z)|ty$/)?`${t}`:`${t}px`:t);}};var cn=void 0,la=()=>cn,QS=s=>/[A-Z]/.test(s)&&s.match(/^(?:al|basel|clip(?:Path|Rule)$|co|do|fill|fl|fo|gl|let|lig|i|marker[EMS]|o|pai|pointe|sh|st[or]|text[^L]|tr|u|ve|w)/)?s.replace(/([A-Z])/g,"-$1").toLowerCase():s,ZS=["area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],eb=["allowfullscreen","async","autofocus","autoplay","checked","controls","default","defer","disabled","download","formnovalidate","hidden","inert","ismap","itemscope","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","selected"],zl=(s,e)=>{for(let r=0,t=s.length;r<t;r++){let n=s[r];if(typeof n=="string")Tt(n,e);else {if(typeof n=="boolean"||n===null||n===void 0)continue;n instanceof Fe?n.toStringToBuffer(e):typeof n=="number"||n.isEscaped?e[0]+=n:n instanceof Promise?e.unshift("",n):zl(n,e);}}},Fe=class{tag;props;key;children;isEscaped=true;localContexts;constructor(s,e,r){this.tag=s,this.props=e,this.children=r;}get type(){return this.tag}get ref(){return this.props.ref||null}toString(){let s=[""];this.localContexts?.forEach(([e,r])=>{e.values.push(r);});try{this.toStringToBuffer(s);}finally{this.localContexts?.forEach(([e])=>{e.values.pop();});}return s.length===1?"callbacks"in s?so(G(s[0],s.callbacks)).toString():s[0]:ui(s,s.callbacks)}toStringToBuffer(s){let e=this.tag,r=this.props,{children:t}=this;s[0]+=`<${e}`;let n=cn&&Te(cn)==="svg"?i=>QS(Qr(i)):i=>Qr(i);for(let[i,a]of Object.entries(r))if(i=n(i),i!=="children"){if(i==="style"&&typeof a=="object"){let o="";un(a,(l,u)=>{u!=null&&(o+=`${o?";":""}${l}:${u}`);}),s[0]+=' style="',Tt(o,s),s[0]+='"';}else if(typeof a=="string")s[0]+=` ${i}="`,Tt(a,s),s[0]+='"';else if(a!=null)if(typeof a=="number"||a.isEscaped)s[0]+=` ${i}="${a}"`;else if(typeof a=="boolean"&&eb.includes(i))a&&(s[0]+=` ${i}=""`);else if(i==="dangerouslySetInnerHTML"){if(t.length>0)throw new Error("Can only set one of `children` or `props.dangerouslySetInnerHTML`.");t=[G(a.__html)];}else if(a instanceof Promise)s[0]+=` ${i}="`,s.unshift('"',a);else if(typeof a=="function"){if(!i.startsWith("on")&&i!=="ref")throw new Error(`Invalid prop '${i}' of type 'function' supplied to '${e}'.`)}else s[0]+=` ${i}="`,Tt(a.toString(),s),s[0]+='"';}if(ZS.includes(e)&&t.length===0){s[0]+="/>";return}s[0]+=">",zl(t,s),s[0]+=`</${e}>`;}},Yl=class extends Fe{toStringToBuffer(s){let{children:e}=this,r={...this.props};e.length&&(r.children=e.length===1?e[0]:e);let t=this.tag.call(null,r);if(!(typeof t=="boolean"||t==null))if(t instanceof Promise)if(Dt.length===0)s.unshift("",t);else {let n=Dt.map(i=>[i,i.values.at(-1)]);s.unshift("",t.then(i=>(i instanceof Fe&&(i.localContexts=n),i)));}else t instanceof Fe?t.toStringToBuffer(s):typeof t=="number"||t.isEscaped?(s[0]+=t,t.callbacks&&(s.callbacks||=[],s.callbacks.push(...t.callbacks))):Tt(t,s);}},Kl=class extends Fe{toStringToBuffer(s){zl(this.children,s);}},dm=false,pn=(s,e,r)=>{if(!dm){for(let t in nn)ln[t][Ye]=nn[t];dm=true;}return typeof s=="function"?new Yl(s,e,r):ln[s]?new Yl(ln[s],e,r):s==="svg"||s==="head"?(cn||=sn(""),new Fe(s,e,[new Yl(cn,{value:s},r)])):new Fe(s,e,r)};var ft=({children:s})=>new Kl("",{children:s},Array.isArray(s)?s:s?[s]:[]);var fa={};Fn(fa,{button:()=>qm,clearCache:()=>fb,composeRef:()=>pa,form:()=>Bm,input:()=>Fm,link:()=>jm,meta:()=>xm,script:()=>Pm,style:()=>Dm,title:()=>$m});var mn="_hp",tb={Change:"Input",DoubleClick:"DblClick"},rb={svg:"2000/svg",math:"1998/Math/MathML"},mt=[],Zl=new WeakMap,Zr=void 0,wm=()=>Zr,jt=s=>"t"in s,Ql={onClick:["click",false]},gm=s=>{if(!s.startsWith("on"))return;if(Ql[s])return Ql[s];let e=s.match(/^on([A-Z][a-zA-Z]+?(?:PointerCapture)?)(Capture)?$/);if(e){let[,r,t]=e;return Ql[s]=[(tb[r]||r).toLowerCase(),!!t]}},ym=(s,e)=>Zr&&s instanceof SVGElement&&/[A-Z]/.test(e)&&(e in s.style||e.match(/^(?:o|pai|str|u|ve)/))?e.replace(/([A-Z])/g,"-$1").toLowerCase():e,sb=(s,e,r)=>{e||={};for(let t in e){let n=e[t];if(t!=="children"&&(!r||r[t]!==n)){t=Qr(t);let i=gm(t);if(i){if(r?.[t]!==n&&(r&&s.removeEventListener(i[0],r[t],i[1]),n!=null)){if(typeof n!="function")throw new Error(`Event handler for "${t}" is not a function`);s.addEventListener(i[0],n,i[1]);}}else if(t==="dangerouslySetInnerHTML"&&n)s.innerHTML=n.__html;else if(t==="ref"){let a;typeof n=="function"?a=n(s)||(()=>n(null)):n&&"current"in n&&(n.current=s,a=()=>n.current=null),Zl.set(s,a);}else if(t==="style"){let a=s.style;typeof n=="string"?a.cssText=n:(a.cssText="",n!=null&&un(n,a.setProperty.bind(a)));}else {if(t==="value"){let o=s.nodeName;if(o==="INPUT"||o==="TEXTAREA"||o==="SELECT"){if(s.value=n==null||n===false?null:n,o==="TEXTAREA"){s.textContent=n;continue}else if(o==="SELECT"){s.selectedIndex===-1&&(s.selectedIndex=0);continue}}}else (t==="checked"&&s.nodeName==="INPUT"||t==="selected"&&s.nodeName==="OPTION")&&(s[t]=n);let a=ym(s,t);n==null||n===false?s.removeAttribute(a):n===true?s.setAttribute(a,""):typeof n=="string"||typeof n=="number"?s.setAttribute(a,n):s.setAttribute(a,n.toString());}}}if(r)for(let t in r){let n=r[t];if(t!=="children"&&!(t in e)){t=Qr(t);let i=gm(t);i?s.removeEventListener(i[0],n,i[1]):t==="ref"?Zl.get(s)?.():s.removeAttribute(ym(s,t));}}},nb=(s,e)=>{e[z][0]=0,mt.push([s,e]);let r=e.tag[Ye]||e.tag,t=r.defaultProps?{...r.defaultProps,...e.props}:e.props;try{return [r.call(null,t)]}finally{mt.pop();}},Cm=(s,e,r,t,n)=>{s.vR?.length&&(t.push(...s.vR),delete s.vR),typeof s.tag=="function"&&s[z][1][tu]?.forEach(i=>n.push(i)),s.vC.forEach(i=>{if(jt(i))r.push(i);else if(typeof i.tag=="function"||i.tag===""){i.c=e;let a=r.length;if(Cm(i,e,r,t,n),i.s){for(let o=a;o<r.length;o++)r[o].s=true;i.s=false;}}else r.push(i),i.vR?.length&&(t.push(...i.vR),delete i.vR);});},ib=s=>{for(;s&&(s.tag===mn||!s.e);)s=s.tag===mn||!s.vC?.[0]?s.nN:s.vC[0];return s?.e},Am=s=>{jt(s)||(s[z]?.[1][tu]?.forEach(e=>e[2]?.()),Zl.get(s.e)?.(),s.p===2&&s.vC?.forEach(e=>e.p=2),s.vC?.forEach(Am)),s.p||(s.e?.remove(),delete s.e),typeof s.tag=="function"&&(fn.delete(s),ua.delete(s),delete s[z][3],s.a=true);},Rm=(s,e,r)=>{s.c=e,_m(s,e,r);},Em=(s,e)=>{if(e){for(let r=0,t=s.length;r<t;r++)if(s[r]===e)return r}},Sm=Symbol(),_m=(s,e,r)=>{let t=[],n=[],i=[];Cm(s,e,t,n,i),n.forEach(Am);let a=r?void 0:e.childNodes,o,l=null;if(r)o=-1;else if(!a.length)o=0;else {let u=Em(a,ib(s.nN));u!==void 0?(l=a[u],o=u):o=Em(a,t.find(p=>p.tag!==mn&&p.e)?.e)??-1,o===-1&&(r=true);}for(let u=0,p=t.length;u<p;u++,o++){let c=t[u],f;if(c.s&&c.e)f=c.e,c.s=false;else {let m=r||!c.e;jt(c)?(c.e&&c.d&&(c.e.textContent=c.t),c.d=false,f=c.e||=document.createTextNode(c.t)):(f=c.e||=c.n?document.createElementNS(c.n,c.tag):document.createElement(c.tag),sb(f,c.props,c.pP),_m(c,f,m));}c.tag===mn?o--:r?f.parentNode||e.appendChild(f):a[o]!==f&&a[o-1]!==f&&(a[o+1]===f?e.appendChild(a[o]):e.insertBefore(f,l||a[o]||null));}if(s.pP&&(s.pP=void 0),i.length){let u=[],p=[];i.forEach(([,c,,f,m])=>{c&&u.push(c),f&&p.push(f),m?.();}),u.forEach(c=>c()),p.length&&requestAnimationFrame(()=>{p.forEach(c=>c());});}},ab=(s,e)=>!!(s&&s.length===e.length&&s.every((r,t)=>r[1]===e[t][1])),ua=new WeakMap,eu=(s,e,r)=>{let t=!r&&e.pC;r&&(e.pC||=e.vC);let n;try{r||=typeof e.tag=="function"?nb(s,e):Cr(e.props.children),r[0]?.tag===""&&r[0][Zt]&&(n=r[0][Zt],s[5].push([s,n,e]));let i=t?[...e.pC]:e.vC?[...e.vC]:void 0,a=[],o;for(let l=0;l<r.length;l++){if(Array.isArray(r[l])){r.splice(l,1,...r[l].flat(1/0)),l--;continue}let u=ob(r[l]);if(u){typeof u.tag=="function"&&!u.tag[aa]&&(Dt.length>0&&(u[z][2]=Dt.map(c=>[c,c.values.at(-1)])),s[5]?.length&&(u[z][3]=s[5].at(-1)));let p;if(i&&i.length){let c=i.findIndex(jt(u)?f=>jt(f):u.key!==void 0?f=>f.key===u.key&&f.tag===u.tag:f=>f.tag===u.tag);c!==-1&&(p=i[c],i.splice(c,1));}if(p)if(jt(u))p.t!==u.t&&(p.t=u.t,p.d=!0),u=p;else {let c=p.pP=p.props;if(p.props=u.props,p.f||=u.f||e.f,typeof u.tag=="function"){let f=p[z][2];p[z][2]=u[z][2]||[],p[z][3]=u[z][3],!p.f&&((p.o||p)===u.o||p.tag[Hl]?.(c,p.props))&&ab(f,p[z][2])&&(p.s=!0);}u=p;}else if(!jt(u)&&Zr){let c=Te(Zr);c&&(u.n=c);}if(!jt(u)&&!u.s&&(eu(s,u),delete u.f),a.push(u),o&&!o.s&&!u.s)for(let c=o;c&&!jt(c);c=c.vC?.at(-1))c.nN=u;o=u;}}e.vR=t?[...e.vC,...i||[]]:i||[],e.vC=a,t&&delete e.pC;}catch(i){if(e.f=true,i===Sm){if(n)return;throw i}let[a,o,l]=e[z]?.[3]||[];if(o){let u=()=>hn([0,false,s[2]],l),p=ua.get(l)||[];p.push(u),ua.set(l,p);let c=o(i,()=>{let f=ua.get(l);if(f){let m=f.indexOf(u);if(m!==-1)return f.splice(m,1),u()}});if(c){if(s[0]===1)s[1]=true;else if(eu(s,l,[c]),(o.length===1||s!==a)&&l.c){Rm(l,l.c,false);return}throw Sm}}throw i}finally{n&&s[5].pop();}},ob=s=>{if(!(s==null||typeof s=="boolean")){if(typeof s=="string"||typeof s=="number")return {t:s.toString(),d:true};if("vR"in s&&(s={tag:s.tag,props:s.props,key:s.key,f:s.f,type:s.tag,ref:s.props.ref,o:s.o||s}),typeof s.tag=="function")s[z]=[0,[]];else {let e=rb[s.tag];e&&(Zr||=oa(""),s.props.children=[{tag:Zr,props:{value:s.n=`http://www.w3.org/${e}`,children:s.props.children}}]);}return s}};var bm=(s,e)=>{e[z][2]?.forEach(([r,t])=>{r.values.push(t);});try{eu(s,e,void 0);}catch{return}if(e.a){delete e.a;return}e[z][2]?.forEach(([r])=>{r.values.pop();}),(s[0]!==1||!s[1])&&Rm(e,e.c,false);},fn=new WeakMap,Tm=[],hn=async(s,e)=>{s[5]||=[];let r=fn.get(e);r&&r[0](void 0);let t,n=new Promise(i=>t=i);if(fn.set(e,[t,()=>{s[2]?s[2](s,e,i=>{bm(i,e);}).then(()=>t(e)):(bm(s,e),t(e));}]),Tm.length)Tm.at(-1).add(e);else {await Promise.resolve();let i=fn.get(e);i&&(fn.delete(e),i[1]());}return n};var vm=(s,e,r)=>({tag:mn,props:{children:s},key:r,e,p:1});var lb=0,tu=1,ub=2,cb=3;var ru=new WeakMap,Nm=(s,e)=>!s||!e||s.length!==e.length||e.some((r,t)=>r!==s[t]);var pb=void 0;var Om=[];var ca=s=>{let e=()=>typeof s=="function"?s():s,r=mt.at(-1);if(!r)return [e(),()=>{}];let[,t]=r,n=t[z][1][lb]||=[],i=t[z][0]++;return n[i]||=[e(),a=>{let o=pb,l=n[i];if(typeof a=="function"&&(a=a(l[0])),!Object.is(a,l[0]))if(l[0]=a,Om.length){let[u,p]=Om.at(-1);Promise.all([u===3?t:hn([u,false,o],t),p]).then(([c])=>{if(!c||!(u===2||u===3))return;let f=c.vC;requestAnimationFrame(()=>{setTimeout(()=>{f===c.vC&&hn([u===3?1:0,false,o],c);});});});}else hn([0,false,o],t);}]};var es=(s,e)=>{let r=mt.at(-1);if(!r)return s;let[,t]=r,n=t[z][1][ub]||=[],i=t[z][0]++,a=n[i];return Nm(a?.[1],e)?n[i]=[s,e]:s=n[i][0],s};var su=s=>{let e=ru.get(s);if(e){if(e.length===2)throw e[1];return e[0]}throw s.then(r=>ru.set(s,[r]),r=>ru.set(s,[void 0,r])),s},nu=(s,e)=>{let r=mt.at(-1);if(!r)return s();let[,t]=r,n=t[z][1][cb]||=[],i=t[z][0]++,a=n[i];return Nm(a?.[1],e)&&(n[i]=[s(),e]),n[i][0]};var Lm=oa({pending:false,data:null,method:null,action:null}),Im=new Set,km=s=>{Im.add(s),s.finally(()=>Im.delete(s));};var fb=()=>{iu=Object.create(null),au=Object.create(null);},pa=(s,e)=>nu(()=>r=>{let t;s&&(typeof s=="function"?t=s(r)||(()=>{s(null);}):s&&"current"in s&&(s.current=r,t=()=>{s.current=null;}));let n=e(r);return ()=>{n?.(),t?.();}},[s]),iu=Object.create(null),au=Object.create(null),dn=(s,e,r,t,n)=>{if(e?.itemProp)return {tag:s,props:e,type:s,ref:e.ref};let i=document.head,{onLoad:a,onError:o,precedence:l,blocking:u,...p}=e,c=null,f=false,m=zr[s],d;if(m.length>0){let T=i.querySelectorAll(s);e:for(let C of T)for(let w of zr[s])if(C.getAttribute(w)===e[w]){c=C;break e}if(!c){let C=m.reduce((w,A)=>e[A]===void 0?w:`${w}-${A}-${e[A]}`,s);f=!au[C],c=au[C]||=(()=>{let w=document.createElement(s);for(let A of m)e[A]!==void 0&&w.setAttribute(A,e[A]),e.rel&&w.setAttribute("rel",e.rel);return w})();}}else d=i.querySelectorAll(s);l=t?l??"":void 0,t&&(p[Xr]=l);let g=es(T=>{if(m.length>0){let C=false;for(let w of i.querySelectorAll(s)){if(C&&w.getAttribute(Xr)!==l){i.insertBefore(T,w);return}w.getAttribute(Xr)===l&&(C=true);}i.appendChild(T);}else if(d){let C=false;for(let w of d)if(w===T){C=true;break}C||i.insertBefore(T,i.contains(d[0])?d[0]:i.querySelector(s)),d=void 0;}},[l]),b=pa(e.ref,T=>{let C=m[0];if(r===2&&(T.innerHTML=""),(f||d)&&g(T),!o&&!a)return;let w=iu[T.getAttribute(C)]||=new Promise((A,v)=>{T.addEventListener("load",A),T.addEventListener("error",v);});a&&(w=w.then(a)),o&&(w=w.catch(o)),w.catch(()=>{});});if(n&&u==="render"){let T=zr[s][0];if(e[T]){let C=e[T],w=iu[C]||=new Promise((A,v)=>{g(c),c.addEventListener("load",A),c.addEventListener("error",v);});su(w);}}let y={tag:s,type:s,props:{...p,ref:b},ref:b};return y.p=r,c&&(y.e=c),vm(y,i)},$m=s=>{let e=wm();return (e&&Te(e))?.endsWith("svg")?{tag:"title",props:s,type:"title",ref:s.ref}:dn("title",s,void 0,false,false)},Pm=s=>!s||["src","async"].some(e=>!s[e])?{tag:"script",props:s,type:"script",ref:s.ref}:dn("script",s,1,false,true),Dm=s=>!s||!["href","precedence"].every(e=>e in s)?{tag:"style",props:s,type:"style",ref:s.ref}:(s["data-href"]=s.href,delete s.href,dn("style",s,2,true,true)),jm=s=>!s||["onLoad","onError"].some(e=>e in s)||s.rel==="stylesheet"&&(!("precedence"in s)||"disabled"in s)?{tag:"link",props:s,type:"link",ref:s.ref}:dn("link",s,1,"precedence"in s,true),xm=s=>dn("meta",s,void 0,false,false),Um=Symbol(),Bm=s=>{let{action:e,...r}=s;typeof e!="function"&&(r.action=e);let[t,n]=ca([null,false]),i=es(async u=>{let p=u.isTrusted?e:u.detail[Um];if(typeof p!="function")return;u.preventDefault();let c=new FormData(u.target);n([c,true]);let f=p(c);f instanceof Promise&&(km(f),await f),n([null,true]);},[]),a=pa(s.ref,u=>(u.addEventListener("submit",i),()=>{u.removeEventListener("submit",i);})),[o,l]=t;return t[1]=false,{tag:Lm,props:{value:{pending:o!==null,data:o,method:o?"post":null,action:o?e:null},children:{tag:"form",props:{...r,ref:a},type:"form",ref:a}},f:l}},Mm=(s,{formAction:e,...r})=>{if(typeof e=="function"){let t=es(n=>{n.preventDefault(),n.currentTarget.form.dispatchEvent(new CustomEvent("submit",{detail:{[Um]:e}}));},[]);r.ref=pa(r.ref,n=>(n.addEventListener("click",t),()=>{n.removeEventListener("click",t);}));}return {tag:s,props:r,type:s,ref:r.ref}},Fm=s=>Mm("input",s),qm=s=>Mm("button",s);Object.assign(nn,{title:$m,script:Pm,style:Dm,link:jm,meta:xm,form:Bm,input:Fm,button:qm});sn(null);new TextEncoder;var Ar=":-hono-global",gb=new RegExp(`^${Ar}{(.*)}$`),da="hono-css",xt=Symbol(),ge=Symbol(),Pe=Symbol(),ht=Symbol(),ga=Symbol(),Vm=Symbol();var Km=s=>{let e=0,r=11;for(;e<s.length;)r=101*r+s.charCodeAt(e++)>>>0;return "css-"+r},yb=['"(?:(?:\\\\[\\s\\S]|[^"\\\\])*)"',"'(?:(?:\\\\[\\s\\S]|[^'\\\\])*)'"].join("|"),Eb=new RegExp(["("+yb+")","(?:"+["^\\s+","\\/\\*.*?\\*\\/\\s*","\\/\\/.*\\n\\s*","\\s+$"].join("|")+")","\\s*;\\s*(}|$)\\s*","\\s*([{};:,])\\s*","(\\s)\\s+"].join("|"),"g"),Sb=s=>s.replace(Eb,(e,r,t,n,i)=>r||t||n||i||""),Ym=(s,e)=>{let r=[],t=[],n=s[0].match(/^\s*\/\*(.*?)\*\//)?.[1]||"",i="";for(let a=0,o=s.length;a<o;a++){i+=s[a];let l=e[a];if(!(typeof l=="boolean"||l===null||l===void 0)){Array.isArray(l)||(l=[l]);for(let u=0,p=l.length;u<p;u++){let c=l[u];if(!(typeof c=="boolean"||c===null||c===void 0))if(typeof c=="string")/([\\"'\/])/.test(c)?i+=c.replace(/([\\"']|(?<=<)\/)/g,"\\$1"):i+=c;else if(typeof c=="number")i+=c;else if(c[Vm])i+=c[Vm];else if(c[ge].startsWith("@keyframes "))r.push(c),i+=` ${c[ge].substring(11)} `;else {if(s[a+1]?.match(/^\s*{/))r.push(c),c=`.${c[ge]}`;else {r.push(...c[ht]),t.push(...c[ga]),c=c[Pe];let f=c.length;if(f>0){let m=c[f-1];m!==";"&&m!=="}"&&(c+=";");}}i+=`${c||""}`;}}}}return [n,Sb(i),r,t]},ts=(s,e)=>{let[r,t,n,i]=Ym(s,e),a=gb.exec(t);a&&(t=a[1]);let o=(a?Ar:"")+Km(r+t),l=(a?n.map(u=>u[ge]):[o,...i]).join(" ");return {[xt]:o,[ge]:l,[Pe]:t,[ht]:n,[ga]:i}},ya=s=>{for(let e=0,r=s.length;e<r;e++){let t=s[e];typeof t=="string"&&(s[e]={[xt]:"",[ge]:"",[Pe]:"",[ht]:[],[ga]:[t]});}return s},Ea=(s,...e)=>{let[r,t]=Ym(s,e);return {[xt]:"",[ge]:`@keyframes ${Km(r+t)}`,[Pe]:t,[ht]:[],[ga]:[]}},bb=0,Sa=((s,e)=>{s||(s=[`/* h-v-t ${bb++} */`]);let r=Array.isArray(s)?ts(s,e):s,t=r[ge],n=ts(["view-transition-name:",""],[t]);return r[ge]=Ar+r[ge],r[Pe]=r[Pe].replace(/(?<=::view-transition(?:[a-z-]*)\()(?=\))/g,t),n[ge]=n[xt]=t,n[ht]=[...r[ht],r],n});var wb=s=>{let e=[],r=0,t=0;for(let n=0,i=s.length;n<i;n++){let a=s[n];if(a==="'"||a==='"'){let o=a;for(n++;n<i;n++){if(s[n]==="\\"){n++;continue}if(s[n]===o)break}continue}if(a==="{"){t++;continue}if(a==="}"){t--,t===0&&(e.push(s.slice(r,n+1)),r=n+1);continue}}return e},uu=({id:s})=>{let e,r=()=>(e||(e=document.querySelector(`style#${s}`)?.sheet,e&&(e.addedStyles=new Set)),e?[e,e.addedStyles]:[]),t=(a,o)=>{let[l,u]=r();if(!l||!u){Promise.resolve().then(()=>{if(!r()[0])throw new Error("style sheet not found");t(a,o);});return}u.has(a)||(u.add(a),(a.startsWith(Ar)?wb(o):[`${a[0]==="@"?"":"."}${a}{${o}}`]).forEach(p=>{l.insertRule(p,l.cssRules.length);}));};return [{toString(){let a=this[xt];return t(a,this[Pe]),this[ht].forEach(({[ge]:o,[Pe]:l})=>{t(o,l);}),this[ge]}},({children:a,nonce:o})=>({tag:"style",props:{id:s,nonce:o,children:a&&(Array.isArray(a)?a:[a]).map(l=>l[Pe])}})]};var Ab=({id:s})=>{let[e,r]=uu({id:s}),t=new WeakMap,n=new WeakMap,i=new RegExp(`(<style id="${s}"(?: nonce="[^"]*")?>.*?)(</style>)`),a=f=>{let m=({buffer:y,context:T})=>{let[C,w]=t.get(T),A=Object.keys(C);if(!A.length)return;let v="";if(A.forEach(_=>{w[_]=true,v+=_.startsWith(Ar)?C[_]:`${_[0]==="@"?"":"."}${_}{${C[_]}}`;}),t.set(T,[{},w]),y&&i.test(y[0])){y[0]=y[0].replace(i,(_,I,K)=>`${I}${v}${K}`);return}let R=n.get(T),O=`<script${R?` nonce="${R}"`:""}>document.querySelector('#${s}').textContent+=${JSON.stringify(v)}</script>`;if(y){y[0]=`${O}${y[0]}`;return}return Promise.resolve(O)},d=({context:y})=>{t.has(y)||t.set(y,[{},{}]);let[T,C]=t.get(y),w=true;if(C[f[xt]]||(w=false,T[f[xt]]=f[Pe]),f[ht].forEach(({[ge]:A,[Pe]:v})=>{C[A]||(w=false,T[A]=v);}),!w)return Promise.resolve(G("",[m]))},g=new String(f[ge]);Object.assign(g,f),g.isEscaped=true,g.callbacks=[d];let b=Promise.resolve(g);return Object.assign(b,f),b.toString=e.toString,b},o=(f,...m)=>a(ts(f,m)),l=(...f)=>(f=ya(f),o(Array(f.length).fill(""),...f)),u=Ea,p=((f,...m)=>a(Sa(f,m))),c=({children:f,nonce:m}={})=>G(`<style id="${s}"${m?` nonce="${m}"`:""}>${f?f[Pe]:""}</style>`,[({context:d})=>{n.set(d,m);}]);return c[Ye]=r,{css:o,cx:l,keyframes:u,viewTransition:p,Style:c}},yn=Ab({id:da}),zm=yn.Style;function ye(s,e,r){let t;if(!e||!("children"in e))t=pn(s,e,[]);else {let n=e.children;t=Array.isArray(n)?pn(s,e,n):pn(s,e,[n]);}return t.key=r,t}var cu=new be().get("/*",async s=>{let e={js:"main.js",css:["styles.css"]},r="/static/",t=await Promise.resolve().then(()=>qn(Xm())).then(n=>n.default);try{let n=Object.values(t).find(i=>i.isEntry);if(!n)throw new Error("No entry found in manifest");e.js=n?.file,e.css=n?.css??[];}catch(n){console.warn("Couldn't find assets in manifest",n);}return s.html(ye(ft,{children:ye("html",{lang:"en","data-theme":"dark",style:"color-scheme: dark",class:"dark",children:[ye("head",{children:[ye("meta",{charset:"UTF-8"}),ye("meta",{name:"viewport",content:"width=device-width, initial-scale=1, maximum-scale=1"}),ye("link",{rel:"icon",href:r+"favicon.ico",type:"image/x-icon"}),ye("title",{children:"Supalite"}),ye(ft,{children:[ye("script",{type:"module",src:r+e?.js}),e?.css.map((n,i)=>ye("link",{rel:"stylesheet",href:r+n},i))]}),ye(zm,{})]}),ye("body",{children:ye("div",{id:"root"})})]})}))});async function _b(s){return cu.fetch(s)}var vb={storage:"EXPERIMENTAL_STORAGE",cloud:"EXPERIMENTAL_CLOUD"},Qm=["storage","cloud"],fu=Object.fromEntries(Qm.map(s=>[s,Ob(s)]));function Ob(s){let e=typeof process<"u"&&process.env||void 0;return e?e.NODE_ENV==="test"?true:e[vb[s]]==="1":false}function rs(s){return fu[s]}function Nb(s,e){fu[s]=e;}function Zm(){return Qm.filter(s=>fu[s])}function Ib(){let s=Zm();if(s.length===0)return null;let e=s.includes("storage")?" Cloud sync (lite cloud deploy) is disabled.":"";return `EXPERIMENTAL FEATURES ENABLED: ${s.join(", ")} - not supported, do not use in production.${e}`}var pu=false;function eh(s=e=>console.warn(e)){if(pu)return;if(typeof process<"u"&&process.env?.NODE_ENV==="test"){pu=true;return}let e=Ib();e&&s(e),pu=true;}function th(s,e={}){let r=e.middlewares??[async(t,n)=>{await n();}];return new be().use(async(t,n)=>{t.set("app",s),s.config.auth?.enabled&&t.set("authService",nm(s)),s.config.storage?.enabled&&s._storageAdapter&&rs("storage")&&t.set("storageService",cm(s)),await n();}).use(...r).use(Dl()).route("/auth/v1",jl).route("/rest/v1",bf({forceRollback:e.forceRollback})).use("/storage/v1/*",async(t,n)=>{if(!rs("storage"))return t.notFound();await n();}).route("/storage/v1",ql).route("/_system",Oc).use(async(t,n)=>{if(!e.disableStudio&&s.config.studio?.enabled)return cu.fetch(t.req.raw);if(!e.disableFallback)return t.notFound();await n();})}var Lb=s=>{let e=s.toJSON();return Ft(e)},mu=class extends Error{constructor(r,t,n=[]){super(`Invalid schema given for ${JSON.stringify(t,null,2)}
121
+ `;function Il(t=true){return t?On(Pl):Pl}var Qi=class{driver=null;requiresBuffer=false;async transform(e,r){return {body:e,contentType:"application/octet-stream",contentLength:e.byteLength}}};function Xd(t){if(!t._storageAdapter)throw W.storageNotConfigured();let e=t.connection.dialect,r=new Qn(t.connection.kysely,e),n=t.config.auth?.jwt_secret??"secret",s=t._transformationAdapter??new Qi;return new Xn(r,t._storageAdapter,{jwtSecret:n,fileSizeLimit:t.config.storage?.file_size_limit?_w(t.config.storage.file_size_limit):void 0,buckets:t.config.storage?.buckets},{autoCreateBuckets:true},s)}function _w(t){let e=t.match(/^(\d+(?:\.\d+)?)\s*(B|KB|KiB|MB|MiB|GB|GiB)$/i);if(!e)return 0;let r=Number.parseFloat(e[1]),n=e[2].toUpperCase();return Math.floor(r*({B:1,KB:1e3,KIB:1024,MB:1e6,MIB:1048576,GB:1e9,GIB:1073741824}[n]??1))}var ze=Symbol("RENDERER"),Xt=Symbol("ERROR_HANDLER"),G=Symbol("STASH"),Xi=Symbol("INTERNAL"),Nl=Symbol("MEMO"),Hr=Symbol("PERMALINK");var jl=t=>(t[Xi]=true,t);var Dl=t=>({value:e,children:r})=>{if(!r)return;let n={children:[{tag:jl(()=>{t.push(e);}),props:{}}]};Array.isArray(r)?n.children.push(...r.flat()):n.children.push(r),n.children.push({tag:jl(()=>{t.pop();}),props:{}});let s={tag:"",props:n,type:""};return s[Xt]=i=>{throw t.pop(),i},s},Yi=t=>{let e=[t],r=Dl(e);return r.values=e,r.Provider=r,It.push(r),r};var It=[],Yn=t=>{let e=[t],r=(n=>{e.push(n.value);let s;try{s=n.children?(Array.isArray(n.children)?new Ll("",{},n.children):n.children).toString():"";}catch(i){throw e.pop(),i}return s instanceof Promise?s.finally(()=>e.pop()).then(i=>K(i,i.callbacks)):(e.pop(),K(s))});return r.values=e,r.Provider=r,r[ze]=Dl(e),It.push(r),r},we=t=>t.values.at(-1);var zr={title:[],script:["src"],style:["data-href"],link:["href"],meta:["name","httpEquiv","charset","itemProp"]},Zn={},Gr="data-precedence";var rs={};Is(rs,{button:()=>$w,form:()=>Rw,input:()=>kw,link:()=>Aw,meta:()=>Tw,script:()=>vw,style:()=>Cw,title:()=>xw});var Sr=t=>Array.isArray(t)?t:[t];var Yd=new WeakMap,Zd=(t,e,r,n)=>({buffer:s,context:i})=>{if(!s)return;let o=Yd.get(i)||{};Yd.set(i,o);let a=o[t]||=[],l=false,u=zr[t];if(u.length>0){e:for(let[,f]of a)for(let c of u)if((f?.[c]??null)===r?.[c]){l=true;break e}}if(l?s[0]=s[0].replaceAll(e,""):u.length>0?a.push([e,r,n]):a.unshift([e,r,n]),s[0].indexOf("</head>")!==-1){let f;if(n===void 0)f=a.map(([c])=>c);else {let c=[];f=a.map(([d,,p])=>{let y=c.indexOf(p);return y===-1&&(c.push(p),y=c.length-1),[d,y]}).sort((d,p)=>d[1]-p[1]).map(([d])=>d);}f.forEach(c=>{s[0]=s[0].replaceAll(c,"");}),s[0]=s[0].replace(/(?=<\/head>)/,f.join(""));}},es=(t,e,r)=>K(new Fe(t,r,Sr(e??[])).toString()),ts=(t,e,r,n)=>{if("itemProp"in r)return es(t,e,r);let{precedence:s,blocking:i,...o}=r;s=n?s??"":void 0,n&&(o[Gr]=s);let a=new Fe(t,o,Sr(e||[])).toString();return a instanceof Promise?a.then(l=>K(a,[...l.callbacks||[],Zd(t,l,o,s)])):K(a,[Zd(t,a,o,s)])},xw=({children:t,...e})=>{let r=Zi();if(r){let n=we(r);if(n==="svg"||n==="head")return new Fe("title",e,Sr(t??[]))}return ts("title",t,e,false)},vw=({children:t,...e})=>{let r=Zi();return ["src","async"].some(n=>!e[n])||r&&we(r)==="head"?es("script",t,e):ts("script",t,e,false)},Cw=({children:t,...e})=>["href","precedence"].every(r=>r in e)?(e["data-href"]=e.href,delete e.href,ts("style",t,e,true)):es("style",t,e),Aw=({children:t,...e})=>["onLoad","onError"].some(r=>r in e)||e.rel==="stylesheet"&&(!("precedence"in e)||"disabled"in e)?es("link",t,e):ts("link",t,e,"precedence"in e),Tw=({children:t,...e})=>{let r=Zi();return r&&we(r)==="head"?es("meta",t,e):ts("meta",t,e,false)},ep=(t,{children:e,...r})=>new Fe(t,r,Sr(e??[])),Rw=t=>(typeof t.action=="function"&&(t.action=Hr in t.action?t.action[Hr]:void 0),ep("form",t)),tp=(t,e)=>(typeof e.formAction=="function"&&(e.formAction=Hr in e.formAction?e.formAction[Hr]:void 0),ep(t,e)),kw=t=>tp("input",t),$w=t=>tp("button",t);var Ow=new Map([["className","class"],["htmlFor","for"],["crossOrigin","crossorigin"],["httpEquiv","http-equiv"],["itemProp","itemprop"],["fetchPriority","fetchpriority"],["noModule","nomodule"],["formAction","formaction"]]),Vr=t=>Ow.get(t)||t,ns=(t,e)=>{for(let[r,n]of Object.entries(t)){let s=r[0]==="-"||!/[A-Z]/.test(r)?r:r.replace(/[A-Z]/g,i=>`-${i.toLowerCase()}`);e(s,n==null?null:typeof n=="number"?s.match(/^(?:a|border-im|column(?:-c|s)|flex(?:$|-[^b])|grid-(?:ar|[^a])|font-w|li|or|sca|st|ta|wido|z)|ty$/)?`${n}`:`${n}px`:n);}};var ss=void 0,Zi=()=>ss,Pw=t=>/[A-Z]/.test(t)&&t.match(/^(?:al|basel|clip(?:Path|Rule)$|co|do|fill|fl|fo|gl|let|lig|i|marker[EMS]|o|pai|pointe|sh|st[or]|text[^L]|tr|u|ve|w)/)?t.replace(/([A-Z])/g,"-$1").toLowerCase():t,Iw=["area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],Nw=["allowfullscreen","async","autofocus","autoplay","checked","controls","default","defer","disabled","download","formnovalidate","hidden","inert","ismap","itemscope","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","selected"],Fl=(t,e)=>{for(let r=0,n=t.length;r<n;r++){let s=t[r];if(typeof s=="string")wt(s,e);else {if(typeof s=="boolean"||s===null||s===void 0)continue;s instanceof Fe?s.toStringToBuffer(e):typeof s=="number"||s.isEscaped?e[0]+=s:s instanceof Promise?e.unshift("",s):Fl(s,e);}}},Fe=class{tag;props;key;children;isEscaped=true;localContexts;constructor(t,e,r){this.tag=t,this.props=e,this.children=r;}get type(){return this.tag}get ref(){return this.props.ref||null}toString(){let t=[""];this.localContexts?.forEach(([e,r])=>{e.values.push(r);});try{this.toStringToBuffer(t);}finally{this.localContexts?.forEach(([e])=>{e.values.pop();});}return t.length===1?"callbacks"in t?zo(K(t[0],t.callbacks)).toString():t[0]:ei(t,t.callbacks)}toStringToBuffer(t){let e=this.tag,r=this.props,{children:n}=this;t[0]+=`<${e}`;let s=ss&&we(ss)==="svg"?i=>Pw(Vr(i)):i=>Vr(i);for(let[i,o]of Object.entries(r))if(i=s(i),i!=="children"){if(i==="style"&&typeof o=="object"){let a="";ns(o,(l,u)=>{u!=null&&(a+=`${a?";":""}${l}:${u}`);}),t[0]+=' style="',wt(a,t),t[0]+='"';}else if(typeof o=="string")t[0]+=` ${i}="`,wt(o,t),t[0]+='"';else if(o!=null)if(typeof o=="number"||o.isEscaped)t[0]+=` ${i}="${o}"`;else if(typeof o=="boolean"&&Nw.includes(i))o&&(t[0]+=` ${i}=""`);else if(i==="dangerouslySetInnerHTML"){if(n.length>0)throw new Error("Can only set one of `children` or `props.dangerouslySetInnerHTML`.");n=[K(o.__html)];}else if(o instanceof Promise)t[0]+=` ${i}="`,t.unshift('"',o);else if(typeof o=="function"){if(!i.startsWith("on")&&i!=="ref")throw new Error(`Invalid prop '${i}' of type 'function' supplied to '${e}'.`)}else t[0]+=` ${i}="`,wt(o.toString(),t),t[0]+='"';}if(Iw.includes(e)&&n.length===0){t[0]+="/>";return}t[0]+=">",Fl(n,t),t[0]+=`</${e}>`;}},Ul=class extends Fe{toStringToBuffer(t){let{children:e}=this,r={...this.props};e.length&&(r.children=e.length===1?e[0]:e);let n=this.tag.call(null,r);if(!(typeof n=="boolean"||n==null))if(n instanceof Promise)if(It.length===0)t.unshift("",n);else {let s=It.map(i=>[i,i.values.at(-1)]);t.unshift("",n.then(i=>(i instanceof Fe&&(i.localContexts=s),i)));}else n instanceof Fe?n.toStringToBuffer(t):typeof n=="number"||n.isEscaped?(t[0]+=n,n.callbacks&&(t.callbacks||=[],t.callbacks.push(...n.callbacks))):wt(n,t);}},Ll=class extends Fe{toStringToBuffer(t){Fl(this.children,t);}},rp=false,is=(t,e,r)=>{if(!rp){for(let n in Zn)rs[n][ze]=Zn[n];rp=true;}return typeof t=="function"?new Ul(t,e,r):rs[t]?new Ul(rs[t],e,r):t==="svg"||t==="head"?(ss||=Yn(""),new Fe(t,e,[new Ul(ss,{value:t},r)])):new Fe(t,e,r)};var ut=({children:t})=>new Ll("",{children:t},Array.isArray(t)?t:t?[t]:[]);var no={};Is(no,{button:()=>kp,clearCache:()=>Hw,composeRef:()=>ro,form:()=>Ap,input:()=>Rp,link:()=>xp,meta:()=>vp,script:()=>Ep,style:()=>_p,title:()=>Sp});var as="_hp",jw={Change:"Input",DoubleClick:"DblClick"},Dw={svg:"2000/svg",math:"1998/Math/MathML"},ft=[],ql=new WeakMap,Qr=void 0,cp=()=>Qr,Nt=t=>"t"in t,Bl={onClick:["click",false]},np=t=>{if(!t.startsWith("on"))return;if(Bl[t])return Bl[t];let e=t.match(/^on([A-Z][a-zA-Z]+?(?:PointerCapture)?)(Capture)?$/);if(e){let[,r,n]=e;return Bl[t]=[(jw[r]||r).toLowerCase(),!!n]}},sp=(t,e)=>Qr&&t instanceof SVGElement&&/[A-Z]/.test(e)&&(e in t.style||e.match(/^(?:o|pai|str|u|ve)/))?e.replace(/([A-Z])/g,"-$1").toLowerCase():e,Lw=(t,e,r)=>{e||={};for(let n in e){let s=e[n];if(n!=="children"&&(!r||r[n]!==s)){n=Vr(n);let i=np(n);if(i){if(r?.[n]!==s&&(r&&t.removeEventListener(i[0],r[n],i[1]),s!=null)){if(typeof s!="function")throw new Error(`Event handler for "${n}" is not a function`);t.addEventListener(i[0],s,i[1]);}}else if(n==="dangerouslySetInnerHTML"&&s)t.innerHTML=s.__html;else if(n==="ref"){let o;typeof s=="function"?o=s(t)||(()=>s(null)):s&&"current"in s&&(s.current=t,o=()=>s.current=null),ql.set(t,o);}else if(n==="style"){let o=t.style;typeof s=="string"?o.cssText=s:(o.cssText="",s!=null&&ns(s,o.setProperty.bind(o)));}else {if(n==="value"){let a=t.nodeName;if(a==="INPUT"||a==="TEXTAREA"||a==="SELECT"){if(t.value=s==null||s===false?null:s,a==="TEXTAREA"){t.textContent=s;continue}else if(a==="SELECT"){t.selectedIndex===-1&&(t.selectedIndex=0);continue}}}else (n==="checked"&&t.nodeName==="INPUT"||n==="selected"&&t.nodeName==="OPTION")&&(t[n]=s);let o=sp(t,n);s==null||s===false?t.removeAttribute(o):s===true?t.setAttribute(o,""):typeof s=="string"||typeof s=="number"?t.setAttribute(o,s):t.setAttribute(o,s.toString());}}}if(r)for(let n in r){let s=r[n];if(n!=="children"&&!(n in e)){n=Vr(n);let i=np(n);i?t.removeEventListener(i[0],s,i[1]):n==="ref"?ql.get(t)?.():t.removeAttribute(sp(t,n));}}},Uw=(t,e)=>{e[G][0]=0,ft.push([t,e]);let r=e.tag[ze]||e.tag,n=r.defaultProps?{...r.defaultProps,...e.props}:e.props;try{return [r.call(null,n)]}finally{ft.pop();}},up=(t,e,r,n,s)=>{t.vR?.length&&(n.push(...t.vR),delete t.vR),typeof t.tag=="function"&&t[G][1][Kl]?.forEach(i=>s.push(i)),t.vC.forEach(i=>{if(Nt(i))r.push(i);else if(typeof i.tag=="function"||i.tag===""){i.c=e;let o=r.length;if(up(i,e,r,n,s),i.s){for(let a=o;a<r.length;a++)r[a].s=true;i.s=false;}}else r.push(i),i.vR?.length&&(n.push(...i.vR),delete i.vR);});},Fw=t=>{for(;t&&(t.tag===as||!t.e);)t=t.tag===as||!t.vC?.[0]?t.nN:t.vC[0];return t?.e},fp=t=>{Nt(t)||(t[G]?.[1][Kl]?.forEach(e=>e[2]?.()),ql.get(t.e)?.(),t.p===2&&t.vC?.forEach(e=>e.p=2),t.vC?.forEach(fp)),t.p||(t.e?.remove(),delete t.e),typeof t.tag=="function"&&(os.delete(t),eo.delete(t),delete t[G][3],t.a=true);},dp=(t,e,r)=>{t.c=e,pp(t,e,r);},ip=(t,e)=>{if(e){for(let r=0,n=t.length;r<n;r++)if(t[r]===e)return r}},op=Symbol(),pp=(t,e,r)=>{let n=[],s=[],i=[];up(t,e,n,s,i),s.forEach(fp);let o=r?void 0:e.childNodes,a,l=null;if(r)a=-1;else if(!o.length)a=0;else {let u=ip(o,Fw(t.nN));u!==void 0?(l=o[u],a=u):a=ip(o,n.find(f=>f.tag!==as&&f.e)?.e)??-1,a===-1&&(r=true);}for(let u=0,f=n.length;u<f;u++,a++){let c=n[u],d;if(c.s&&c.e)d=c.e,c.s=false;else {let p=r||!c.e;Nt(c)?(c.e&&c.d&&(c.e.textContent=c.t),c.d=false,d=c.e||=document.createTextNode(c.t)):(d=c.e||=c.n?document.createElementNS(c.n,c.tag):document.createElement(c.tag),Lw(d,c.props,c.pP),pp(c,d,p));}c.tag===as?a--:r?d.parentNode||e.appendChild(d):o[a]!==d&&o[a-1]!==d&&(o[a+1]===d?e.appendChild(o[a]):e.insertBefore(d,l||o[a]||null));}if(t.pP&&(t.pP=void 0),i.length){let u=[],f=[];i.forEach(([,c,,d,p])=>{c&&u.push(c),d&&f.push(d),p?.();}),u.forEach(c=>c()),f.length&&requestAnimationFrame(()=>{f.forEach(c=>c());});}},Mw=(t,e)=>!!(t&&t.length===e.length&&t.every((r,n)=>r[1]===e[n][1])),eo=new WeakMap,Jl=(t,e,r)=>{let n=!r&&e.pC;r&&(e.pC||=e.vC);let s;try{r||=typeof e.tag=="function"?Uw(t,e):Sr(e.props.children),r[0]?.tag===""&&r[0][Xt]&&(s=r[0][Xt],t[5].push([t,s,e]));let i=n?[...e.pC]:e.vC?[...e.vC]:void 0,o=[],a;for(let l=0;l<r.length;l++){if(Array.isArray(r[l])){r.splice(l,1,...r[l].flat(1/0)),l--;continue}let u=Bw(r[l]);if(u){typeof u.tag=="function"&&!u.tag[Xi]&&(It.length>0&&(u[G][2]=It.map(c=>[c,c.values.at(-1)])),t[5]?.length&&(u[G][3]=t[5].at(-1)));let f;if(i&&i.length){let c=i.findIndex(Nt(u)?d=>Nt(d):u.key!==void 0?d=>d.key===u.key&&d.tag===u.tag:d=>d.tag===u.tag);c!==-1&&(f=i[c],i.splice(c,1));}if(f)if(Nt(u))f.t!==u.t&&(f.t=u.t,f.d=!0),u=f;else {let c=f.pP=f.props;if(f.props=u.props,f.f||=u.f||e.f,typeof u.tag=="function"){let d=f[G][2];f[G][2]=u[G][2]||[],f[G][3]=u[G][3],!f.f&&((f.o||f)===u.o||f.tag[Nl]?.(c,f.props))&&Mw(d,f[G][2])&&(f.s=!0);}u=f;}else if(!Nt(u)&&Qr){let c=we(Qr);c&&(u.n=c);}if(!Nt(u)&&!u.s&&(Jl(t,u),delete u.f),o.push(u),a&&!a.s&&!u.s)for(let c=a;c&&!Nt(c);c=c.vC?.at(-1))c.nN=u;a=u;}}e.vR=n?[...e.vC,...i||[]]:i||[],e.vC=o,n&&delete e.pC;}catch(i){if(e.f=true,i===op){if(s)return;throw i}let[o,a,l]=e[G]?.[3]||[];if(a){let u=()=>ls([0,false,t[2]],l),f=eo.get(l)||[];f.push(u),eo.set(l,f);let c=a(i,()=>{let d=eo.get(l);if(d){let p=d.indexOf(u);if(p!==-1)return d.splice(p,1),u()}});if(c){if(t[0]===1)t[1]=true;else if(Jl(t,l,[c]),(a.length===1||t!==o)&&l.c){dp(l,l.c,false);return}throw op}}throw i}finally{s&&t[5].pop();}},Bw=t=>{if(!(t==null||typeof t=="boolean")){if(typeof t=="string"||typeof t=="number")return {t:t.toString(),d:true};if("vR"in t&&(t={tag:t.tag,props:t.props,key:t.key,f:t.f,type:t.tag,ref:t.props.ref,o:t.o||t}),typeof t.tag=="function")t[G]=[0,[]];else {let e=Dw[t.tag];e&&(Qr||=Yi(""),t.props.children=[{tag:Qr,props:{value:t.n=`http://www.w3.org/${e}`,children:t.props.children}}]);}return t}};var ap=(t,e)=>{e[G][2]?.forEach(([r,n])=>{r.values.push(n);});try{Jl(t,e,void 0);}catch{return}if(e.a){delete e.a;return}e[G][2]?.forEach(([r])=>{r.values.pop();}),(t[0]!==1||!t[1])&&dp(e,e.c,false);},os=new WeakMap,lp=[],ls=async(t,e)=>{t[5]||=[];let r=os.get(e);r&&r[0](void 0);let n,s=new Promise(i=>n=i);if(os.set(e,[n,()=>{t[2]?t[2](t,e,i=>{ap(i,e);}).then(()=>n(e)):(ap(t,e),n(e));}]),lp.length)lp.at(-1).add(e);else {await Promise.resolve();let i=os.get(e);i&&(os.delete(e),i[1]());}return s};var mp=(t,e,r)=>({tag:as,props:{children:t},key:r,e,p:1});var qw=0,Kl=1,Jw=2,Kw=3;var Wl=new WeakMap,gp=(t,e)=>!t||!e||t.length!==e.length||e.some((r,n)=>r!==t[n]);var Ww=void 0;var hp=[];var to=t=>{let e=()=>typeof t=="function"?t():t,r=ft.at(-1);if(!r)return [e(),()=>{}];let[,n]=r,s=n[G][1][qw]||=[],i=n[G][0]++;return s[i]||=[e(),o=>{let a=Ww,l=s[i];if(typeof o=="function"&&(o=o(l[0])),!Object.is(o,l[0]))if(l[0]=o,hp.length){let[u,f]=hp.at(-1);Promise.all([u===3?n:ls([u,false,a],n),f]).then(([c])=>{if(!c||!(u===2||u===3))return;let d=c.vC;requestAnimationFrame(()=>{setTimeout(()=>{d===c.vC&&ls([u===3?1:0,false,a],c);});});});}else ls([0,false,a],n);}]};var Xr=(t,e)=>{let r=ft.at(-1);if(!r)return t;let[,n]=r,s=n[G][1][Jw]||=[],i=n[G][0]++,o=s[i];return gp(o?.[1],e)?s[i]=[t,e]:t=s[i][0],t};var Hl=t=>{let e=Wl.get(t);if(e){if(e.length===2)throw e[1];return e[0]}throw t.then(r=>Wl.set(t,[r]),r=>Wl.set(t,[void 0,r])),t},zl=(t,e)=>{let r=ft.at(-1);if(!r)return t();let[,n]=r,s=n[G][1][Kw]||=[],i=n[G][0]++,o=s[i];return gp(o?.[1],e)&&(s[i]=[t(),e]),s[i][0]};var bp=Yi({pending:false,data:null,method:null,action:null}),yp=new Set,wp=t=>{yp.add(t),t.finally(()=>yp.delete(t));};var Hw=()=>{Gl=Object.create(null),Vl=Object.create(null);},ro=(t,e)=>zl(()=>r=>{let n;t&&(typeof t=="function"?n=t(r)||(()=>{t(null);}):t&&"current"in t&&(t.current=r,n=()=>{t.current=null;}));let s=e(r);return ()=>{s?.(),n?.();}},[t]),Gl=Object.create(null),Vl=Object.create(null),cs=(t,e,r,n,s)=>{if(e?.itemProp)return {tag:t,props:e,type:t,ref:e.ref};let i=document.head,{onLoad:o,onError:a,precedence:l,blocking:u,...f}=e,c=null,d=false,p=zr[t],y;if(p.length>0){let w=i.querySelectorAll(t);e:for(let _ of w)for(let S of zr[t])if(_.getAttribute(S)===e[S]){c=_;break e}if(!c){let _=p.reduce((S,E)=>e[E]===void 0?S:`${S}-${E}-${e[E]}`,t);d=!Vl[_],c=Vl[_]||=(()=>{let S=document.createElement(t);for(let E of p)e[E]!==void 0&&S.setAttribute(E,e[E]),e.rel&&S.setAttribute("rel",e.rel);return S})();}}else y=i.querySelectorAll(t);l=n?l??"":void 0,n&&(f[Gr]=l);let h=Xr(w=>{if(p.length>0){let _=false;for(let S of i.querySelectorAll(t)){if(_&&S.getAttribute(Gr)!==l){i.insertBefore(w,S);return}S.getAttribute(Gr)===l&&(_=true);}i.appendChild(w);}else if(y){let _=false;for(let S of y)if(S===w){_=true;break}_||i.insertBefore(w,i.contains(y[0])?y[0]:i.querySelector(t)),y=void 0;}},[l]),b=ro(e.ref,w=>{let _=p[0];if(r===2&&(w.innerHTML=""),(d||y)&&h(w),!a&&!o)return;let S=Gl[w.getAttribute(_)]||=new Promise((E,C)=>{w.addEventListener("load",E),w.addEventListener("error",C);});o&&(S=S.then(o)),a&&(S=S.catch(a)),S.catch(()=>{});});if(s&&u==="render"){let w=zr[t][0];if(e[w]){let _=e[w],S=Gl[_]||=new Promise((E,C)=>{h(c),c.addEventListener("load",E),c.addEventListener("error",C);});Hl(S);}}let m={tag:t,type:t,props:{...f,ref:b},ref:b};return m.p=r,c&&(m.e=c),mp(m,i)},Sp=t=>{let e=cp();return (e&&we(e))?.endsWith("svg")?{tag:"title",props:t,type:"title",ref:t.ref}:cs("title",t,void 0,false,false)},Ep=t=>!t||["src","async"].some(e=>!t[e])?{tag:"script",props:t,type:"script",ref:t.ref}:cs("script",t,1,false,true),_p=t=>!t||!["href","precedence"].every(e=>e in t)?{tag:"style",props:t,type:"style",ref:t.ref}:(t["data-href"]=t.href,delete t.href,cs("style",t,2,true,true)),xp=t=>!t||["onLoad","onError"].some(e=>e in t)||t.rel==="stylesheet"&&(!("precedence"in t)||"disabled"in t)?{tag:"link",props:t,type:"link",ref:t.ref}:cs("link",t,1,"precedence"in t,true),vp=t=>cs("meta",t,void 0,false,false),Cp=Symbol(),Ap=t=>{let{action:e,...r}=t;typeof e!="function"&&(r.action=e);let[n,s]=to([null,false]),i=Xr(async u=>{let f=u.isTrusted?e:u.detail[Cp];if(typeof f!="function")return;u.preventDefault();let c=new FormData(u.target);s([c,true]);let d=f(c);d instanceof Promise&&(wp(d),await d),s([null,true]);},[]),o=ro(t.ref,u=>(u.addEventListener("submit",i),()=>{u.removeEventListener("submit",i);})),[a,l]=n;return n[1]=false,{tag:bp,props:{value:{pending:a!==null,data:a,method:a?"post":null,action:a?e:null},children:{tag:"form",props:{...r,ref:o},type:"form",ref:o}},f:l}},Tp=(t,{formAction:e,...r})=>{if(typeof e=="function"){let n=Xr(s=>{s.preventDefault(),s.currentTarget.form.dispatchEvent(new CustomEvent("submit",{detail:{[Cp]:e}}));},[]);r.ref=ro(r.ref,s=>(s.addEventListener("click",n),()=>{s.removeEventListener("click",n);}));}return {tag:t,props:r,type:t,ref:r.ref}},Rp=t=>Tp("input",t),kp=t=>Tp("button",t);Object.assign(Zn,{title:Sp,script:Ep,style:_p,link:xp,meta:vp,form:Ap,input:Rp,button:kp});Yn(null);new TextEncoder;var Er=":-hono-global",Qw=new RegExp(`^${Er}{(.*)}$`),oo="hono-css",jt=Symbol(),me=Symbol(),Pe=Symbol(),dt=Symbol(),ao=Symbol(),Np=Symbol();var jp=t=>{let e=0,r=11;for(;e<t.length;)r=101*r+t.charCodeAt(e++)>>>0;return "css-"+r},Xw=['"(?:(?:\\\\[\\s\\S]|[^"\\\\])*)"',"'(?:(?:\\\\[\\s\\S]|[^'\\\\])*)'"].join("|"),Yw=new RegExp(["("+Xw+")","(?:"+["^\\s+","\\/\\*.*?\\*\\/\\s*","\\/\\/.*\\n\\s*","\\s+$"].join("|")+")","\\s*;\\s*(}|$)\\s*","\\s*([{};:,])\\s*","(\\s)\\s+"].join("|"),"g"),Zw=t=>t.replace(Yw,(e,r,n,s,i)=>r||n||s||i||""),Dp=(t,e)=>{let r=[],n=[],s=t[0].match(/^\s*\/\*(.*?)\*\//)?.[1]||"",i="";for(let o=0,a=t.length;o<a;o++){i+=t[o];let l=e[o];if(!(typeof l=="boolean"||l===null||l===void 0)){Array.isArray(l)||(l=[l]);for(let u=0,f=l.length;u<f;u++){let c=l[u];if(!(typeof c=="boolean"||c===null||c===void 0))if(typeof c=="string")/([\\"'\/])/.test(c)?i+=c.replace(/([\\"']|(?<=<)\/)/g,"\\$1"):i+=c;else if(typeof c=="number")i+=c;else if(c[Np])i+=c[Np];else if(c[me].startsWith("@keyframes "))r.push(c),i+=` ${c[me].substring(11)} `;else {if(t[o+1]?.match(/^\s*{/))r.push(c),c=`.${c[me]}`;else {r.push(...c[dt]),n.push(...c[ao]),c=c[Pe];let d=c.length;if(d>0){let p=c[d-1];p!==";"&&p!=="}"&&(c+=";");}}i+=`${c||""}`;}}}}return [s,Zw(i),r,n]},Yr=(t,e)=>{let[r,n,s,i]=Dp(t,e),o=Qw.exec(n);o&&(n=o[1]);let a=(o?Er:"")+jp(r+n),l=(o?s.map(u=>u[me]):[a,...i]).join(" ");return {[jt]:a,[me]:l,[Pe]:n,[dt]:s,[ao]:i}},lo=t=>{for(let e=0,r=t.length;e<r;e++){let n=t[e];typeof n=="string"&&(t[e]={[jt]:"",[me]:"",[Pe]:"",[dt]:[],[ao]:[n]});}return t},co=(t,...e)=>{let[r,n]=Dp(t,e);return {[jt]:"",[me]:`@keyframes ${jp(r+n)}`,[Pe]:n,[dt]:[],[ao]:[]}},eS=0,uo=((t,e)=>{t||(t=[`/* h-v-t ${eS++} */`]);let r=Array.isArray(t)?Yr(t,e):t,n=r[me],s=Yr(["view-transition-name:",""],[n]);return r[me]=Er+r[me],r[Pe]=r[Pe].replace(/(?<=::view-transition(?:[a-z-]*)\()(?=\))/g,n),s[me]=s[jt]=n,s[dt]=[...r[dt],r],s});var rS=t=>{let e=[],r=0,n=0;for(let s=0,i=t.length;s<i;s++){let o=t[s];if(o==="'"||o==='"'){let a=o;for(s++;s<i;s++){if(t[s]==="\\"){s++;continue}if(t[s]===a)break}continue}if(o==="{"){n++;continue}if(o==="}"){n--,n===0&&(e.push(t.slice(r,s+1)),r=s+1);continue}}return e},Yl=({id:t})=>{let e,r=()=>(e||(e=document.querySelector(`style#${t}`)?.sheet,e&&(e.addedStyles=new Set)),e?[e,e.addedStyles]:[]),n=(o,a)=>{let[l,u]=r();if(!l||!u){Promise.resolve().then(()=>{if(!r()[0])throw new Error("style sheet not found");n(o,a);});return}u.has(o)||(u.add(o),(o.startsWith(Er)?rS(a):[`${o[0]==="@"?"":"."}${o}{${a}}`]).forEach(f=>{l.insertRule(f,l.cssRules.length);}));};return [{toString(){let o=this[jt];return n(o,this[Pe]),this[dt].forEach(({[me]:a,[Pe]:l})=>{n(a,l);}),this[me]}},({children:o,nonce:a})=>({tag:"style",props:{id:t,nonce:a,children:o&&(Array.isArray(o)?o:[o]).map(l=>l[Pe])}})]};var sS=({id:t})=>{let[e,r]=Yl({id:t}),n=new WeakMap,s=new WeakMap,i=new RegExp(`(<style id="${t}"(?: nonce="[^"]*")?>.*?)(</style>)`),o=d=>{let p=({buffer:m,context:w})=>{let[_,S]=n.get(w),E=Object.keys(_);if(!E.length)return;let C="";if(E.forEach(v=>{S[v]=true,C+=v.startsWith(Er)?_[v]:`${v[0]==="@"?"":"."}${v}{${_[v]}}`;}),n.set(w,[{},S]),m&&i.test(m[0])){m[0]=m[0].replace(i,(v,R,H)=>`${R}${C}${H}`);return}let x=s.get(w),A=`<script${x?` nonce="${x}"`:""}>document.querySelector('#${t}').textContent+=${JSON.stringify(C)}</script>`;if(m){m[0]=`${A}${m[0]}`;return}return Promise.resolve(A)},y=({context:m})=>{n.has(m)||n.set(m,[{},{}]);let[w,_]=n.get(m),S=true;if(_[d[jt]]||(S=false,w[d[jt]]=d[Pe]),d[dt].forEach(({[me]:E,[Pe]:C})=>{_[E]||(S=false,w[E]=C);}),!S)return Promise.resolve(K("",[p]))},h=new String(d[me]);Object.assign(h,d),h.isEscaped=true,h.callbacks=[y];let b=Promise.resolve(h);return Object.assign(b,d),b.toString=e.toString,b},a=(d,...p)=>o(Yr(d,p)),l=(...d)=>(d=lo(d),a(Array(d.length).fill(""),...d)),u=co,f=((d,...p)=>o(uo(d,p))),c=({children:d,nonce:p}={})=>K(`<style id="${t}"${p?` nonce="${p}"`:""}>${d?d[Pe]:""}</style>`,[({context:y})=>{s.set(y,p);}]);return c[ze]=r,{css:a,cx:l,keyframes:u,viewTransition:f,Style:c}},fs=sS({id:oo}),Lp=fs.Style;function he(t,e,r){let n;if(!e||!("children"in e))n=is(t,e,[]);else {let s=e.children;n=Array.isArray(s)?is(t,e,s):is(t,e,[s]);}return n.key=r,n}var Zl=new be().get("/*",async t=>{let e={js:"main.js",css:["styles.css"]},r="/static/",n=await Promise.resolve().then(()=>fc(Up())).then(s=>s.default);try{let s=Object.values(n).find(i=>i.isEntry);if(!s)throw new Error("No entry found in manifest");e.js=s?.file,e.css=s?.css??[];}catch(s){console.warn("Couldn't find assets in manifest",s);}return t.html(he(ut,{children:he("html",{lang:"en","data-theme":"dark",style:"color-scheme: dark",class:"dark",children:[he("head",{children:[he("meta",{charset:"UTF-8"}),he("meta",{name:"viewport",content:"width=device-width, initial-scale=1, maximum-scale=1"}),he("link",{rel:"icon",href:r+"favicon.ico",type:"image/x-icon"}),he("title",{children:"Supalite"}),he(ut,{children:[he("script",{type:"module",src:r+e?.js}),e?.css.map((s,i)=>he("link",{rel:"stylesheet",href:r+s},i))]}),he(Lp,{})]}),he("body",{children:he("div",{id:"root"})})]})}))});async function oS(t){return Zl.fetch(t)}var aS={storage:"EXPERIMENTAL_STORAGE",cloud:"EXPERIMENTAL_CLOUD"},Fp=["storage","cloud"],tc=Object.fromEntries(Fp.map(t=>[t,lS(t)]));function lS(t){let e=typeof process<"u"&&process.env||void 0;return e?e.NODE_ENV==="test"?true:e[aS[t]]==="1":false}function Zr(t){return tc[t]}function cS(t,e){tc[t]=e;}function Mp(){return Fp.filter(t=>tc[t])}function uS(){let t=Mp();if(t.length===0)return null;let e=t.includes("storage")?" Cloud sync (lite cloud deploy) is disabled.":"";return `EXPERIMENTAL FEATURES ENABLED: ${t.join(", ")} - not supported, do not use in production.${e}`}var ec=false;function Bp(t=e=>console.warn(e)){if(ec)return;if(typeof process<"u"&&process.env?.NODE_ENV==="test"){ec=true;return}let e=uS();e&&t(e),ec=true;}function qp(t,e={}){let r=e.middlewares??[async(n,s)=>{await s();}];return new be().use(async(n,s)=>{n.set("app",t),t.config.auth?.enabled&&n.set("authService",Wd(t)),t.config.storage?.enabled&&t._storageAdapter&&Zr("storage")&&n.set("storageService",Xd(t)),await s();}).use(...r).use(vl()).route("/auth/v1",Cl).route("/rest/v1",ad({forceRollback:e.forceRollback})).use("/storage/v1/*",async(n,s)=>{if(!Zr("storage"))return n.notFound();await s();}).route("/storage/v1",Ol).route("/_system",hu).use(async(n,s)=>{if(!e.disableStudio&&t.config.studio?.enabled)return Zl.fetch(n.req.raw);if(!e.disableFallback)return n.notFound();await s();})}var fS=t=>{let e=t.toJSON();return Ft(e)},rc=class extends Error{constructor(r,n,s=[]){super(`Invalid schema given for ${JSON.stringify(n,null,2)}
124
122
 
125
- Error: ${JSON.stringify(n[0],null,2)}
123
+ Error: ${JSON.stringify(s[0],null,2)}
126
124
 
127
- Schema: ${JSON.stringify(r.toJSON(),null,2)}`);this.schema=r;this.value=t;this.errors=n;}name="InvalidSchemaError";first(){return this.errors[0]}firstToString(){let r=this.first();return `${r.error} at ${r.instanceLocation}`}};function rh(s,e,r){let t=r?.clone?Lb(s):s,n=r?.coerce!==false?t.coerce(e,{dropUnknown:r?.coerceDropUnknown??false}):e;r?.withDefaults!==false&&(n=t.template(n,{withOptional:true,withExtendedOptional:r?.withExtendedDefaults??false}));let i=s.validate(n,{shortCircuit:true,ignoreUnsupported:true});if(!i.valid)if(r?.onError)r.onError(i.errors);else throw new mu(t,e,i.errors);return n}var hu=`-- supabase/auth core schema (Postgres)
125
+ Schema: ${JSON.stringify(r.toJSON(),null,2)}`);this.schema=r;this.value=n;this.errors=s;}name="InvalidSchemaError";first(){return this.errors[0]}firstToString(){let r=this.first();return `${r.error} at ${r.instanceLocation}`}};function Jp(t,e,r){let n=r?.clone?fS(t):t,s=r?.coerce!==false?n.coerce(e,{dropUnknown:r?.coerceDropUnknown??false}):e;r?.withDefaults!==false&&(s=n.template(s,{withOptional:true,withExtendedOptional:r?.withExtendedDefaults??false}));let i=t.validate(s,{shortCircuit:true,ignoreUnsupported:true});if(!i.valid)if(r?.onError)r.onError(i.errors);else throw new rc(n,e,i.errors);return s}var nc=`-- supabase/auth core schema (Postgres)
128
126
  -- Scope: Core Authentication + User Management
129
127
  -- Source: GoTrue migrations + runtime analysis
130
128
 
@@ -301,50 +299,21 @@ CREATE TABLE IF NOT EXISTS auth.audit_log_entries (
301
299
  created_at timestamptz DEFAULT now(),
302
300
  ip_address varchar(64) DEFAULT ''
303
301
  );
304
- `;function du(s=true){return s?js(hu):hu}var gu=class{_connection;_rls;config;server;drivers;#e=false;_mailer;_storageAdapter;_transformationAdapter;constructor({connection:e,options:r={},rls:t,...n}){this._connection=e,this._rls=t,this.drivers=vf(r.drivers),this.config=rh(ni,n,{withDefaults:r.defaults??true}),this.server=th(this,r.server);}get connection(){if(this._connection instanceof Promise)throw new Error("Connection is not available yet");return this._connection}async init(){if(this.#e)return this;eh(),this.config.auth?.enabled&&sa(this.config.auth),await this._connection;let e=this.connection;if(e.config.schemaCache??=this.drivers.cache,e.config.baseSchema=[e.config.baseSchema??"",this.config.auth?.enabled&&du(),this.config.storage?.enabled&&this._storageAdapter&&rs("storage")&&Wl()].filter(Boolean).join(`
305
-
306
- `),this._rls){let r=e;if(typeof r.updateDeparseInfo=="function"){let t=r.config.translation?.deparse;r.updateDeparseInfo({enums:t?.enums??new Map,schema:t?.schema??new Map,vars:t?.vars??new Map,...t,rls:{tables:new Set(this._rls.tables),policies:this._rls.policies}});}}return this.#e=true,this}isValidConfig(e){if(typeof e=="object"&&e!==null&&("connection"in e||"options"in e)){let{connection:r,options:t,...n}=e;return ni.validate(n).valid}return ni.validate(e).valid}getClient(e){return createClient("http://localhost","<nokey>",{...e,global:{...e?.global,fetch:async(r,t)=>{let n=new Request(r,t);return Object.assign(n,{[qs]:true}),await this.fetch(n)}}})}isLocalRequest(e){return qs in e}fetch=async e=>(await this.init(),this.server.fetch(e));getInfoJson(){return JSON.parse(jsonStringify({connection:this.connection?.config??{},config:this.config}))}};var sh=class extends Error{name="UnableToCreateRuntimeConnection";constructor(e){super(`Unable to create runtime connection: ${e}`);}},nh=class extends Error{constructor(r,t,n){super(`Failed to translate Postgres to SQLite DDL: ${String(n)}`);this.pgSql=r;this.sqliteDdl=t;this.cause=n;}name="InvalidPostgresToSQLiteTranslation"};var yu=(m=>(m.DISABLE_FOREIGN_KEYS="disable_foreign_keys",m.ENABLE_FOREIGN_KEYS="enable_foreign_keys",m.BEGIN_TRANSACTION="begin_transaction",m.COMMIT_TRANSACTION="commit_transaction",m.CREATE_TABLE="create_table",m.ADD_COLUMN="add_column",m.DROP_COLUMN="drop_column",m.ADD_INDEX="add_index",m.DROP_INDEX="drop_index",m.DROP_TABLE="drop_table",m.RENAME_TABLE="rename_table",m.COPY_DATA="copy_data",m.CREATE_TRIGGER="create_trigger",m))(yu||{}),ih=class extends Error{constructor(r){super(`Migration would cause data loss:
307
- ${r.map(t=>` - ${t.table}: ${t.reason}`).join(`
308
- `)}`);this.warnings=r;this.name="DataLossError";}},ah=class extends Error{constructor(r,t,n){super(`Migration failed at step ${r}: ${n.message}
309
- SQL: ${t}`);this.stepIndex=r;this.sql=t;this.cause=n;this.name="MigrationError";}};async function oh(s){let{parse:e}=await import('pgsql-parser');return e(s)}var er=class{newlineChar;tabChar;prettyMode;constructor(e=`
310
- `,r=" ",t=true){this.newlineChar=e,this.tabChar=r,this.prettyMode=t;}format(e,r=" "){return e.filter(t=>t!=null&&t!=="").join(r)}indent(e,r=1){if(!this.prettyMode)return e;let t=this.tabChar.repeat(r);return e.split(this.newlineChar).map(n=>n.trim()?t+n:n).join(this.newlineChar)}parens(e){return `(${e})`}newline(){return this.newlineChar}tab(){return this.tabChar}isPretty(){return this.prettyMode}};var ss=class s{indentLevel;prettyMode;isStringLiteral;parentNodeTypes;formatter;select;from;group;sort;insertColumns;update;bool;isColumnConstraint;isDomainConstraint;alterColumnOptions;alterTableOptions;isEnumValue;objtype;subtype;constructor({indentLevel:e=0,prettyMode:r=true,isStringLiteral:t,parentNodeTypes:n=[],formatter:i,select:a,from:o,group:l,sort:u,insertColumns:p,update:c,bool:f,isColumnConstraint:m,isDomainConstraint:d,alterColumnOptions:g,alterTableOptions:b,isEnumValue:y,objtype:T,subtype:C,...w}={}){this.indentLevel=e,this.prettyMode=r,this.isStringLiteral=t,this.parentNodeTypes=n,this.formatter=i||new er(`
311
- `," ",r),this.select=a,this.from=o,this.group=l,this.sort=u,this.insertColumns=p,this.update=c,this.bool=f,this.isColumnConstraint=m,this.isDomainConstraint=d,this.alterColumnOptions=g,this.alterTableOptions=b,this.isEnumValue=y,this.objtype=T,this.subtype=C,Object.assign(this,w);}spawn(e,r={}){return new s({indentLevel:this.indentLevel,prettyMode:this.prettyMode,isStringLiteral:this.isStringLiteral,parentNodeTypes:[...this.parentNodeTypes,e],formatter:this.formatter,select:this.select,from:this.from,group:this.group,sort:this.sort,insertColumns:this.insertColumns,update:this.update,bool:this.bool,isColumnConstraint:this.isColumnConstraint,isDomainConstraint:this.isDomainConstraint,alterColumnOptions:this.alterColumnOptions,alterTableOptions:this.alterTableOptions,isEnumValue:this.isEnumValue,objtype:this.objtype,subtype:this.subtype,...r})}indent(e,r){if(!this.prettyMode)return e;let t=r!==void 0?r:this.indentLevel+1;return this.formatter.indent(e,t)}newline(){return this.formatter.newline()}parens(e){return this.formatter.parens(e)}format(e,r){return this.formatter.format(e,r)}isPretty(){return this.formatter.isPretty()}};var En={UNRESERVED_KEYWORD:["abort","absent","absolute","access","action","add","admin","after","aggregate","also","alter","always","asensitive","assertion","assignment","at","atomic","attach","attribute","backward","before","begin","breadth","by","cache","call","called","cascade","cascaded","catalog","chain","characteristics","checkpoint","class","close","cluster","columns","comment","comments","commit","committed","compression","conditional","configuration","conflict","connection","constraints","content","continue","conversion","copy","cost","csv","cube","current","cursor","cycle","data","database","day","deallocate","declare","defaults","deferred","definer","delete","delimiter","delimiters","depends","depth","detach","dictionary","disable","discard","document","domain","double","drop","each","empty","enable","encoding","encrypted","enforced","enum","error","escape","event","exclude","excluding","exclusive","execute","explain","expression","extension","external","family","filter","finalize","first","following","force","format","forward","function","functions","generated","global","granted","groups","handler","header","hold","hour","identity","if","ignore","immediate","immutable","implicit","import","include","including","increment","indent","index","indexes","inherit","inherits","inline","input","insensitive","insert","instead","invoker","isolation","keep","key","keys","label","language","large","last","leakproof","level","listen","load","local","location","lock","locked","logged","lsn","mapping","match","matched","materialized","maxvalue","merge","method","minute","minvalue","mode","month","move","name","names","nested","new","next","nfc","nfd","nfkc","nfkd","no","normalized","nothing","notify","nowait","nulls","object","objects","of","off","oids","old","omit","operator","option","options","ordinality","others","over","overriding","owned","owner","parallel","parameter","parser","partial","partition","partitions","passing","password","path","period","plan","plans","policy","preceding","prepare","prepared","preserve","prior","privileges","procedural","procedure","procedures","program","publication","quote","quotes","range","read","reassign","recursive","ref","referencing","refresh","reindex","relative","release","rename","repeatable","replace","replica","reset","respect","restart","restrict","return","returns","revoke","role","rollback","rollup","routine","routines","rows","rule","savepoint","scalar","schema","schemas","scroll","search","second","security","sequence","sequences","serializable","server","session","set","sets","share","show","simple","skip","snapshot","source","split","sql","stable","standalone","start","statement","statistics","stdin","stdout","storage","stored","strict","string","strip","subscription","support","sysid","system","tables","tablespace","target","temp","template","temporary","text","ties","transaction","transform","trigger","truncate","trusted","type","types","uescape","unbounded","uncommitted","unconditional","unencrypted","unknown","unlisten","unlogged","until","update","vacuum","valid","validate","validator","value","varying","version","view","views","virtual","volatile","wait","whitespace","within","without","work","wrapper","write","xml","year","yes","zone"],RESERVED_KEYWORD:["all","analyse","analyze","and","any","array","as","asc","asymmetric","both","case","cast","check","collate","column","constraint","create","current_catalog","current_date","current_role","current_time","current_timestamp","current_user","default","deferrable","desc","distinct","do","else","end","except","false","fetch","for","foreign","from","grant","group","having","in","initially","intersect","into","lateral","leading","limit","localtime","localtimestamp","not","null","offset","on","only","or","order","placing","primary","references","returning","select","session_user","some","symmetric","system_user","table","then","to","trailing","true","union","unique","user","using","variadic","when","where","window","with"],TYPE_FUNC_NAME_KEYWORD:["authorization","binary","collation","concurrently","cross","current_schema","freeze","full","ilike","inner","is","isnull","join","left","like","natural","notnull","outer","overlaps","right","similar","tablesample","verbose"],COL_NAME_KEYWORD:["between","bigint","bit","boolean","char","character","coalesce","dec","decimal","exists","extract","float","greatest","grouping","inout","int","integer","interval","json","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_scalar","json_serialize","json_table","json_value","least","merge_action","national","nchar","none","normalize","nullif","numeric","out","overlay","position","precision","real","row","setof","smallint","substring","time","timestamp","treat","trim","values","varchar","xmlattributes","xmlconcat","xmlelement","xmlexists","xmlforest","xmlnamespaces","xmlparse","xmlpi","xmlroot","xmlserialize","xmltable"]},lh=new Set(En.RESERVED_KEYWORD??[]),uh=new Set(En.UNRESERVED_KEYWORD??[]),ch=new Set(En.COL_NAME_KEYWORD??[]),ph=new Set(En.TYPE_FUNC_NAME_KEYWORD??[]);function ba(s){let e=s.toLowerCase();return lh.has(e)?"RESERVED_KEYWORD":ph.has(e)?"TYPE_FUNC_NAME_KEYWORD":ch.has(e)?"COL_NAME_KEYWORD":uh.has(e)?"UNRESERVED_KEYWORD":"NO_KEYWORD"}var S=class s{static escape(e){return `'${e.replace(/'/g,"''")}'`}static escapeEString(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"''")}static formatEString(e){return s.needsEscapePrefix(e)?`E'${s.escapeEString(e)}'`:s.escape(e)}static needsEscapePrefix(e){return !/^\\x[0-9a-fA-F]+$/i.test(e)&&e.includes("\\")}static quoteIdentifier(e){if(!e)return e;let r=true,t=e[0];t>="a"&&t<="z"||t==="_"||(r=false);for(let i=0;i<e.length;i++){let a=e[i];a>="a"&&a<="z"||a>="0"&&a<="9"||a==="_"||(r=false);}if(r){let i=ba(e);i!=="NO_KEYWORD"&&i!=="UNRESERVED_KEYWORD"&&(r=false);}if(r)return e;let n='"';for(let i=0;i<e.length;i++){let a=e[i];a==='"'&&(n+='"'),n+=a;}return n+='"',n}static quoteIdentifierAfterDot(e){if(!e)return e;let r=true,t=e[0];t>="a"&&t<="z"||t==="_"||(r=false);for(let i=0;i<e.length;i++){let a=e[i];a>="a"&&a<="z"||a>="0"&&a<="9"||a==="_"||(r=false);}if(r)return e;let n='"';for(let i=0;i<e.length;i++){let a=e[i];a==='"'&&(n+='"'),n+=a;}return n+='"',n}static quoteDottedName(e){return !e||e.length===0?"":e.length===1?s.quoteIdentifier(e[0]):e.map((r,t)=>t===0?s.quoteIdentifier(r):s.quoteIdentifierAfterDot(r)).join(".")}static quoteQualifiedIdentifier(e,r){return e?`${s.quoteIdentifier(e)}.${s.quoteIdentifierAfterDot(r)}`:s.quoteIdentifier(r)}static quoteIdentifierTypeName(e){if(!e)return e;let r=true,t=e[0];t>="a"&&t<="z"||t==="_"||(r=false);for(let i=0;i<e.length;i++){let a=e[i];a>="a"&&a<="z"||a>="0"&&a<="9"||a==="_"||(r=false);}if(r&&ba(e)==="RESERVED_KEYWORD"&&(r=false),r)return e;let n='"';for(let i=0;i<e.length;i++){let a=e[i];a==='"'&&(n+='"'),n+=a;}return n+='"',n}static quoteTypeDottedName(e){return !e||e.length===0?"":e.map(r=>s.quoteIdentifierTypeName(r)).join(".")}};var h=class{static unwrapList(e){return e==null?[]:e.List!==void 0?e.List.items||[]:Array.isArray(e)?e:[e]}static formatList(e,r=", ",t="",n){return !e||e.length===0?"":e.map(i=>`${t}${n(i)}`).join(r)}};var Db=["int2","int4","int8","float4","float8","numeric","varchar","char","bpchar","text","bool","date","time","timetz","timestamp","timestamptz","interval","bytea","uuid","json","jsonb","xml","money","bit","varbit","inet","cidr","macaddr","macaddr8"],jb=[["numeric",["decimal","dec"]],["int4",["int","integer"]],["float8",["float"]],["bpchar",["character"]],["varchar",["character varying"]]];function xb(s){return s&&typeof s=="object"&&!Array.isArray(s)&&!("ParseResult"in s)&&!("RawStmt"in s)&&("stmts"in s||"version"in s)}var ns=class s{tree;options;constructor(e,r={}){this.options={functionDelimiter:"$$",functionDelimiterFallback:"$EOFCODE$",...r},xb(e)?this.tree=[{ParseResult:e}]:Array.isArray(e)?this.tree=e:this.tree=[e];}static deparse(e,r={}){return new s(e,r).deparseQuery()}deparseQuery(){let e=new er(this.options.newline,this.options.tab,this.options.pretty),r=new ss({formatter:e,prettyMode:this.options.pretty});return this.tree.map(t=>this.deparse(t,r)||"").filter(t=>t!=="").join(r.newline()+r.newline())}getFunctionDelimiter(e){let r=this.options.functionDelimiter||"$$";return e.includes(r)?this.options.functionDelimiterFallback||"$EOFCODE$":r}getObjectTypeKeyword(e){switch(e){case "OBJECT_TABLE":return "TABLE";case "OBJECT_VIEW":return "VIEW";case "OBJECT_INDEX":return "INDEX";case "OBJECT_SEQUENCE":return "SEQUENCE";case "OBJECT_FUNCTION":return "FUNCTION";case "OBJECT_PROCEDURE":return "PROCEDURE";case "OBJECT_SCHEMA":return "SCHEMA";case "OBJECT_DATABASE":return "DATABASE";case "OBJECT_DOMAIN":return "DOMAIN";case "OBJECT_AGGREGATE":return "AGGREGATE";case "OBJECT_CONVERSION":return "CONVERSION";case "OBJECT_LANGUAGE":return "LANGUAGE";case "OBJECT_OPERATOR":return "OPERATOR";case "OBJECT_OPFAMILY":return "OPERATOR FAMILY";case "OBJECT_OPCLASS":return "OPERATOR CLASS";case "OBJECT_TSDICTIONARY":return "TEXT SEARCH DICTIONARY";case "OBJECT_TSCONFIGURATION":return "TEXT SEARCH CONFIGURATION";case "OBJECT_EVENT_TRIGGER":return "EVENT TRIGGER";case "OBJECT_FDW":return "FOREIGN DATA WRAPPER";case "OBJECT_FOREIGN_SERVER":return "SERVER";case "OBJECT_TYPE":return "TYPE";case "OBJECT_COLLATION":return "COLLATION";case "OBJECT_PUBLICATION":return "PUBLICATION";case "OBJECT_ACCESS_METHOD":return "ACCESS METHOD";case "OBJECT_AMOP":return "OPERATOR CLASS";case "OBJECT_AMPROC":return "OPERATOR CLASS";case "OBJECT_ATTRIBUTE":return "ATTRIBUTE";case "OBJECT_CAST":return "CAST";case "OBJECT_COLUMN":return "COLUMN";case "OBJECT_DEFAULT":return "DEFAULT";case "OBJECT_DEFACL":return "DEFAULT PRIVILEGES";case "OBJECT_DOMCONSTRAINT":return "DOMAIN";case "OBJECT_EXTENSION":return "EXTENSION";case "OBJECT_FOREIGN_TABLE":return "FOREIGN TABLE";case "OBJECT_LARGEOBJECT":return "LARGE OBJECT";case "OBJECT_MATVIEW":return "MATERIALIZED VIEW";case "OBJECT_PARAMETER_ACL":return "PARAMETER";case "OBJECT_POLICY":return "POLICY";case "OBJECT_PUBLICATION_NAMESPACE":return "PUBLICATION";case "OBJECT_PUBLICATION_REL":return "PUBLICATION";case "OBJECT_ROLE":return "ROLE";case "OBJECT_ROUTINE":return "ROUTINE";case "OBJECT_RULE":return "RULE";case "OBJECT_STATISTIC_EXT":return "STATISTICS";case "OBJECT_SUBSCRIPTION":return "SUBSCRIPTION";case "OBJECT_TABCONSTRAINT":return "CONSTRAINT";case "OBJECT_TABLESPACE":return "TABLESPACE";case "OBJECT_TRANSFORM":return "TRANSFORM";case "OBJECT_TRIGGER":return "TRIGGER";case "OBJECT_TSPARSER":return "TEXT SEARCH PARSER";case "OBJECT_TSTEMPLATE":return "TEXT SEARCH TEMPLATE";case "OBJECT_USER_MAPPING":return "USER MAPPING";default:throw new Error(`Unsupported objectType: ${e}`)}}deparse(e,r){if(e==null)return null;if(!r){let t=new er(this.options.newline,this.options.tab,this.options.pretty);r=new ss({formatter:t,prettyMode:this.options.pretty});}if(typeof e=="number"||e instanceof Number)return e.toString();try{return this.visit(e,r)}catch(t){let n=Object.keys(e)[0];throw new Error(`Error deparsing ${n}: ${t.message}`)}}visit(e,r){if(!r){let a=new er(this.options.newline,this.options.tab,this.options.pretty);r=new ss({formatter:a,prettyMode:this.options.pretty});}let t=this.getNodeType(e);if(!t)return "";let n=this.getNodeData(e),i=t;if(typeof this[i]=="function")return this[i](n,r);throw new Error(`Deparser does not handle node type: ${t}`)}getNodeType(e){return Object.keys(e)[0]}getNodeData(e){let r=Object.keys(e);return r.length===1&&typeof e[r[0]]=="object"?e[r[0]]:e}ParseResult(e,r){return !e.stmts||e.stmts.length===0?"":e.stmts.filter(t=>t!=null).map(t=>this.RawStmt(t,r)).filter(t=>t!=="").join(r.newline()+r.newline())}RawStmt(e,r){if(!e.stmt)return "";let t=this.deparse(e.stmt,r);return e.stmt_len?t+";":t}SelectStmt(e,r){let t=[];if(e.withClause&&t.push(this.WithClause(e.withClause,r)),!e.op||e.op==="SETOP_NONE")e.valuesLists==null&&(!r.isPretty()||!e.targetList)&&t.push("SELECT");else {let i=this.SelectStmt(e.larg,r),a=this.SelectStmt(e.rarg,r),o=e.larg&&(e.larg.op&&e.larg.op!=="SETOP_NONE"||e.larg.sortClause||e.larg.limitCount||e.larg.limitOffset||e.larg.withClause),l=e.rarg&&(e.rarg.op&&e.rarg.op!=="SETOP_NONE"||e.rarg.sortClause||e.rarg.limitCount||e.rarg.limitOffset||e.rarg.withClause);switch(o?t.push(r.parens(i)):t.push(i),e.op){case "SETOP_UNION":t.push("UNION");break;case "SETOP_INTERSECT":t.push("INTERSECT");break;case "SETOP_EXCEPT":t.push("EXCEPT");break;default:throw new Error(`Bad SelectStmt op: ${e.op}`)}e.all&&t.push("ALL"),l?t.push(r.parens(a)):t.push(a);}let n="";if(e.distinctClause){let i=h.unwrapList(e.distinctClause);if(i.length>0&&Object.keys(i[0]).length>0){let a=i.map(o=>this.visit(o,r.spawn("SelectStmt",{select:true}))).join(", ");n=" DISTINCT ON "+r.parens(a);}else n=" DISTINCT";if(!r.isPretty())if(i.length>0&&Object.keys(i[0]).length>0){t.push("DISTINCT ON");let a=i.map(o=>this.visit(o,r.spawn("SelectStmt",{select:true}))).join(", ");t.push(r.parens(a));}else t.push("DISTINCT");}if(e.targetList){let i=h.unwrapList(e.targetList);if(r.isPretty())if(i.length===1){let a=i[0],o=this.visit(a,r.spawn("SelectStmt",{select:true}));this.isComplexSelectTarget(a)?(t.push("SELECT"+n),this.containsMultilineStringLiteral(o)?t.push(o):t.push(r.indent(o))):t.push("SELECT"+n+" "+o);}else {let o=i.map(l=>{let u=this.visit(l,r.spawn("SelectStmt",{select:true}));return this.containsMultilineStringLiteral(u)?u:r.indent(u)}).join(","+r.newline());t.push("SELECT"+n),t.push(o);}else {let a=i.map(o=>this.visit(o,r.spawn("SelectStmt",{select:true}))).join(", ");t.push(a);}}if(e.intoClause&&(t.push("INTO"),t.push(this.IntoClause(e.intoClause,r))),e.fromClause){let a=h.unwrapList(e.fromClause).map(o=>this.deparse(o,r.spawn("SelectStmt",{from:true}))).join(", ");t.push("FROM "+a.trim());}if(e.whereClause)if(r.isPretty()){t.push("WHERE");let o=this.visit(e.whereClause,r).split(r.newline()).map((l,u)=>u===0?r.indent(l):l);t.push(o.join(r.newline()));}else t.push("WHERE"),t.push(this.visit(e.whereClause,r));if(e.valuesLists)if(r.isPretty()){t.push("VALUES");let a=h.unwrapList(e.valuesLists).map(o=>{let l=h.unwrapList(o).map(u=>this.visit(u,r));return r.parens(l.join(", "))}).map(o=>this.containsMultilineStringLiteral(o)?o:r.indent(o));t.push(a.join(`,
312
- `));}else {t.push("VALUES");let i=h.unwrapList(e.valuesLists).map(a=>{let o=h.unwrapList(a).map(l=>this.visit(l,r));return r.parens(o.join(", "))});t.push(i.join(", "));}if(e.groupClause){let i=h.unwrapList(e.groupClause);if(r.isPretty()){let a=i.map(o=>{let l=this.visit(o,r.spawn("SelectStmt",{group:true,indentLevel:r.indentLevel+1}));return this.containsMultilineStringLiteral(l)?l:r.indent(l)}).join(","+r.newline());t.push("GROUP BY"),t.push(a);}else {t.push("GROUP BY");let a=i.map(o=>this.visit(o,r.spawn("SelectStmt",{group:true}))).join(", ");t.push(a);}}if(e.havingClause)if(r.isPretty()){t.push("HAVING");let i=this.visit(e.havingClause,r);this.containsMultilineStringLiteral(i)?t.push(i):t.push(r.indent(i));}else t.push("HAVING"),t.push(this.visit(e.havingClause,r));if(e.windowClause){t.push("WINDOW");let a=h.unwrapList(e.windowClause).map(o=>this.visit(o,r)).join(", ");t.push(a);}if(e.sortClause){let i=h.unwrapList(e.sortClause);if(r.isPretty()){let a=i.map(o=>{let l=this.visit(o,r.spawn("SelectStmt",{sort:true,indentLevel:r.indentLevel+1}));return this.containsMultilineStringLiteral(l)?l:r.indent(l)}).join(","+r.newline());t.push("ORDER BY"),t.push(a);}else {t.push("ORDER BY");let a=i.map(o=>this.visit(o,r.spawn("SelectStmt",{sort:true}))).join(", ");t.push(a);}}if(e.limitCount&&t.push("LIMIT "+this.visit(e.limitCount,r)),e.limitOffset&&t.push("OFFSET "+this.visit(e.limitOffset,r)),e.lockingClause){let a=h.unwrapList(e.lockingClause).map(o=>this.visit(o,r)).join(" ");t.push(a);}return r.isPretty()?t.filter(a=>a.trim()!=="").join(r.newline()):t.join(" ")}A_Expr(e,r){let t=e.kind,n=h.unwrapList(e.name),i=e.lexpr,a=e.rexpr;switch(t){case "AEXPR_OP":if(i&&a){let f=this.deparseOperatorName(n,r),m=this.visit(i,r),d=this.visit(a,r),g=false;if(i&&"A_Expr"in i&&i.A_Expr?.kind==="AEXPR_OP"){let y=this.deparseOperatorName(h.unwrapList(i.A_Expr.name),r);this.needsParentheses(y,f,"left")&&(g=true);}i&&this.isComplexExpression(i)&&(g=true),g&&(m=r.parens(m));let b=false;if(a&&"A_Expr"in a&&a.A_Expr?.kind==="AEXPR_OP"){let y=this.deparseOperatorName(h.unwrapList(a.A_Expr.name),r);this.needsParentheses(y,f,"right")&&(b=true);}return a&&this.isComplexExpression(a)&&(b=true),b&&(d=r.parens(d)),r.format([m,f,d])}else if(a){let f=this.deparseOperatorName(n,r),m=this.visit(a,r);return a&&"A_Expr"in a&&a.A_Expr?.kind==="AEXPR_OP"&&a.A_Expr?.lexpr&&(m=r.parens(m)),r.format([f,m])}break;case "AEXPR_OP_ANY":return r.format([this.visit(i,r),this.deparseOperatorName(n,r),"ANY",r.parens(this.visit(a,r))]);case "AEXPR_OP_ALL":return r.format([this.visit(i,r),this.deparseOperatorName(n,r),"ALL",r.parens(this.visit(a,r))]);case "AEXPR_DISTINCT":{let f=this.visit(i,r),m=this.visit(a,r);return i&&this.isComplexExpression(i)&&(f=r.parens(f)),a&&this.isComplexExpression(a)&&(m=r.parens(m)),r.format([f,"IS DISTINCT FROM",m])}case "AEXPR_NOT_DISTINCT":{let f=this.visit(i,r),m=this.visit(a,r);return i&&this.isComplexExpression(i)&&(f=r.parens(f)),a&&this.isComplexExpression(a)&&(m=r.parens(m)),r.format([f,"IS NOT DISTINCT FROM",m])}case "AEXPR_NULLIF":return r.format(["NULLIF",r.parens([this.visit(i,r),this.visit(a,r)].join(", "))]);case "AEXPR_IN":let o=this.deparseOperatorName(n,r);return o==="<>"||o==="!="?r.format([this.visit(i,r),"NOT IN",r.parens(this.visit(a,r))]):r.format([this.visit(i,r),"IN",r.parens(this.visit(a,r))]);case "AEXPR_LIKE":return this.deparseOperatorName(n,r)==="!~~"?r.format([this.visit(i,r),"NOT LIKE",this.visit(a,r)]):r.format([this.visit(i,r),"LIKE",this.visit(a,r)]);case "AEXPR_ILIKE":return this.deparseOperatorName(n,r)==="!~~*"?r.format([this.visit(i,r),"NOT ILIKE",this.visit(a,r)]):r.format([this.visit(i,r),"ILIKE",this.visit(a,r)]);case "AEXPR_SIMILAR":let p=this.deparseOperatorName(n,r),c;if(a&&"FuncCall"in a&&a.FuncCall?.funcname?.length===2&&a.FuncCall.funcname[0]?.String?.sval==="pg_catalog"&&a.FuncCall.funcname[1]?.String?.sval==="similar_to_escape"){let f=a.FuncCall.args||[];c=this.visit(f[0],r),f.length>1&&(c+=` ESCAPE ${this.visit(f[1],r)}`);}else c=this.visit(a,r);return p==="!~"?r.format([this.visit(i,r),"NOT SIMILAR TO",c]):r.format([this.visit(i,r),"SIMILAR TO",c]);case "AEXPR_BETWEEN":return r.format([this.visit(i,r),"BETWEEN",this.visitBetweenRange(a,r)]);case "AEXPR_NOT_BETWEEN":return r.format([this.visit(i,r),"NOT BETWEEN",this.visitBetweenRange(a,r)]);case "AEXPR_BETWEEN_SYM":return r.format([this.visit(i,r),"BETWEEN SYMMETRIC",this.visitBetweenRange(a,r)]);case "AEXPR_NOT_BETWEEN_SYM":return r.format([this.visit(i,r),"NOT BETWEEN SYMMETRIC",this.visitBetweenRange(a,r)])}throw new Error(`Unhandled A_Expr kind: ${t}`)}deparseOperatorName(e,r){if(!e||e.length===0)return "";let t=e.map(n=>n.String?n.String.sval||n.String.str:this.visit(n,r));return t.length>1?`OPERATOR(${t.join(".")})`:t.join(".")}getOperatorPrecedence(e){return {"||":1,OR:2,AND:3,NOT:4,IS:5,IN:5,BETWEEN:5,LIKE:5,ILIKE:5,SIMILAR:5,"<":6,"<=":6,">":6,">=":6,"=":6,"<>":6,"!=":6,"+":7,"-":7,"*":8,"/":8,"%":8,"^":9,"~":10,"&":10,"|":10,"#":10,"<<":10,">>":10}[e]||0}needsParentheses(e,r,t){let n=this.getOperatorPrecedence(e),i=this.getOperatorPrecedence(r);return n<i||n===i&&t==="right"&&(r==="-"||r==="/")}isComplexExpression(e){return !!(e.NullTest||e.BooleanTest||e.BoolExpr||e.CaseExpr||e.CoalesceExpr||e.SubLink||e.A_Expr)}isComplexSelectTarget(e){if(!e)return false;if(e.ResTarget?.val)return this.isComplexExpression(e.ResTarget.val);if(e.CaseExpr||e.SubLink||e.NullTest||e.BooleanTest||e.BoolExpr)return true;if(e.CoalesceExpr){let r=e.CoalesceExpr.args;if(r&&Array.isArray(r)&&r.length>1)return true}if(e.FuncCall){let r=e.FuncCall,t=r.args?Array.isArray(r.args)?r.args:[r.args]:[];if(r.over||r.agg_filter||r.agg_order||r.agg_distinct||t.length>1)return true;if(t.length===1)return this.isComplexSelectTarget(t[0])}if(e.A_Expr){let r=e.A_Expr;return !!(r.lexpr&&this.isComplexSelectTarget(r.lexpr)||r.rexpr&&this.isComplexSelectTarget(r.rexpr))}return e.TypeCast?this.isComplexSelectTarget(e.TypeCast.arg):e.A_ArrayExpr?true:e.A_Indirection?this.isComplexSelectTarget(e.A_Indirection.arg):(e.A_Const||e.ColumnRef||e.ParamRef||e.A_Star,false)}visitBetweenRange(e,r){return e&&"List"in e&&e.List?.items?e.List.items.map(n=>this.visit(n,r)).join(" AND "):this.visit(e,r)}InsertStmt(e,r){let t=[];if(e.withClause&&t.push(this.WithClause(e.withClause,r)),t.push("INSERT INTO"),t.push(this.RangeVar(e.relation,r)),e.cols){let n=h.unwrapList(e.cols),i=r.spawn("InsertStmt",{insertColumns:true}),a=n.map(o=>this.visit(o,i));if(r.isPretty()){let o=a.map(l=>r.indent(l));t.push(`(
313
- `+o.join(`,
314
- `)+`
315
- )`);}else t.push(r.parens(a.join(", ")));}if(e.selectStmt?t.push(this.visit(e.selectStmt,r)):(!e.cols||e.cols&&h.unwrapList(e.cols).length===0)&&t.push("DEFAULT VALUES"),e.onConflictClause){if(t.push("ON CONFLICT"),e.onConflictClause.infer){let n=e.onConflictClause.infer;if(n.conname)t.push("ON CONSTRAINT"),t.push(n.conname);else if(n.indexElems){let a=h.unwrapList(n.indexElems).map(o=>this.visit(o,r));t.push(r.parens(a.join(", ")));}n.whereClause&&(t.push("WHERE"),t.push(this.visit(n.whereClause,r)));}if(e.onConflictClause.action==="ONCONFLICT_UPDATE"){t.push("DO UPDATE SET");let n=h.unwrapList(e.onConflictClause.targetList);if(n&&n.length){let i=n[0];if(i.ResTarget?.val?.MultiAssignRef&&n.every(a=>a.ResTarget?.val?.MultiAssignRef)){let o=n.sort((l,u)=>l.ResTarget.val.MultiAssignRef.colno-u.ResTarget.val.MultiAssignRef.colno).map(l=>l.ResTarget.name);t.push(r.parens(o.join(", "))),t.push("="),t.push(this.visit(i.ResTarget.val.MultiAssignRef.source,r));}else {let a=r.spawn("UpdateStmt",{update:true}),o=n.map(l=>this.visit(l,a));if(r.isPretty()){let l=o.map(u=>r.indent(u));t.push(`
316
- `+l.join(`,
317
- `));}else t.push(o.join(", "));}}e.onConflictClause.whereClause&&(t.push("WHERE"),t.push(this.visit(e.onConflictClause.whereClause,r)));}else e.onConflictClause.action==="ONCONFLICT_NOTHING"&&t.push("DO NOTHING");}if(e.returningList){t.push("RETURNING");let i=h.unwrapList(e.returningList).map(a=>this.visit(a,r));t.push(i.join(", "));}return t.join(" ")}UpdateStmt(e,r){let t=[];e.withClause&&t.push(this.WithClause(e.withClause,r)),t.push("UPDATE"),e.relation&&t.push(this.RangeVar(e.relation,r)),t.push("SET");let n=h.unwrapList(e.targetList);if(n&&n.length){n[0];let a=new Set,o=[];for(let l=0;l<n.length;l++){if(a.has(l))continue;let u=n[l],p=u.ResTarget?.val?.MultiAssignRef;if(p){let c=[];for(let d=l;d<n.length;d++){let g=n[d],b=g.ResTarget?.val?.MultiAssignRef;b&&JSON.stringify(b.source)===JSON.stringify(p.source)&&(c.push(g),a.add(d));}let f=c.map(d=>d.ResTarget.name),m=`${r.parens(f.join(", "))} = ${this.visit(p.source,r)}`;o.push(m);}else o.push(this.visit(u,r.spawn("UpdateStmt",{update:true}))),a.add(l);}t.push(o.join(","));}if(e.fromClause){t.push("FROM");let a=h.unwrapList(e.fromClause).map(o=>this.visit(o,r));t.push(a.join(", "));}return e.whereClause&&(t.push("WHERE"),t.push(this.visit(e.whereClause,r))),e.returningList&&(t.push("RETURNING"),t.push(this.deparseReturningList(e.returningList,r))),t.join(" ")}DeleteStmt(e,r){try{let t=[];if(e.withClause)try{t.push(this.WithClause(e.withClause,r));}catch(n){throw console.warn(`Error processing withClause in DeleteStmt: ${n instanceof Error?n.message:String(n)}`),new Error(`Error deparsing DeleteStmt: ${n instanceof Error?n.message:String(n)}`)}if(t.push("DELETE"),t.push("FROM"),!e.relation)throw new Error("DeleteStmt requires a relation");if(t.push(this.RangeVar(e.relation,r)),e.usingClause){t.push("USING");let i=h.unwrapList(e.usingClause).filter(a=>a!=null&&this.getNodeType(a)!=="undefined").map(a=>{try{return this.visit(a,r)}catch(o){return console.warn(`Error processing usingClause item in DeleteStmt: ${o instanceof Error?o.message:String(o)}`),""}}).filter(a=>a&&a.trim());i.length>0&&t.push(i.join(", "));}if(e.whereClause){t.push("WHERE");try{t.push(this.visit(e.whereClause,r));}catch(n){throw console.warn(`Error processing whereClause in DeleteStmt: ${n instanceof Error?n.message:String(n)}`),new Error(`Error deparsing DeleteStmt: ${n instanceof Error?n.message:String(n)}`)}}if(e.returningList){t.push("RETURNING");try{t.push(this.deparseReturningList(e.returningList,r));}catch(n){throw console.warn(`Error processing returningList in DeleteStmt: ${n instanceof Error?n.message:String(n)}`),new Error(`Error deparsing DeleteStmt: ${n instanceof Error?n.message:String(n)}`)}}return t.join(" ")}catch(t){throw new Error(`Error deparsing DeleteStmt: ${t instanceof Error?t.message:String(t)}`)}}WithClause(e,r){let t=["WITH"];if(e.recursive&&t.push("RECURSIVE"),e.ctes&&e.ctes.length>0){let n=h.unwrapList(e.ctes);if(r.isPretty()){let i=n.map((a,o)=>{let l=this.visit(a,r),u=o===0?r.newline():","+r.newline();return this.containsMultilineStringLiteral(l)?u+l:u+r.indent(l)});t.push(i.join(""));}else {let i=n.map(a=>this.visit(a,r));t.push(i.join(", "));}}return t.join(" ")}ResTarget(e,r){let t=[];if(r.update&&e.name){if(t.push(S.quoteIdentifier(e.name)),e.indirection&&e.indirection.length>0){let n=h.unwrapList(e.indirection).map(i=>i.String?`.${S.quoteIdentifierAfterDot(i.String.sval||i.String.str)}`:this.visit(i,r));t.push(n.join(""));}t.push("="),e.val&&t.push(this.deparse(e.val,r));}else if(r.insertColumns&&e.name){if(t.push(S.quoteIdentifier(e.name)),e.indirection&&e.indirection.length>0){let n=h.unwrapList(e.indirection).map(i=>i.String?`.${S.quoteIdentifierAfterDot(i.String.sval||i.String.str)}`:this.visit(i,r));t.push(n.join(""));}}else e.val&&t.push(this.deparse(e.val,r)),e.name&&(t.push("AS"),t.push(S.quoteIdentifier(e.name)));return t.join(" ")}deparseReturningList(e,r){return h.unwrapList(e).filter(t=>t!=null&&this.getNodeType(t)!=="undefined").map(t=>{try{if(this.getNodeType(t)==="ResTarget"){let n=this.getNodeData(t),i=n.val?this.visit(n.val,r):"",a=n.name?` AS ${S.quoteIdentifier(n.name)}`:"";return i+a}else return this.visit(t,r)}catch(n){return console.warn(`Error processing returning item: ${n instanceof Error?n.message:String(n)}`),""}}).filter(t=>t&&t.trim()).join(", ")}BoolExpr(e,r){let t=e.boolop,n=h.unwrapList(e.args),i="%s";r.bool&&(i="(%s)");let a=r.spawn("BoolExpr",{bool:true});switch(t){case "AND_EXPR":if(r.isPretty()&&n.length>1){let o=n.map(l=>this.visit(l,a)).join(r.newline()+r.indent("AND "));return i.replace("%s",()=>o)}else {let o=n.map(l=>this.visit(l,a)).join(" AND ");return i.replace("%s",()=>o)}case "OR_EXPR":if(r.isPretty()&&n.length>1){let o=n.map(l=>this.visit(l,a)).join(r.newline()+r.indent("OR "));return i.replace("%s",()=>o)}else {let o=n.map(l=>this.visit(l,a)).join(" OR ");return i.replace("%s",()=>o)}case "NOT_EXPR":return `NOT (${this.visit(n[0],r)})`;default:throw new Error(`Unhandled BoolExpr boolop: ${t}`)}}FuncCall(e,r){let t=h.unwrapList(e.funcname),n=h.unwrapList(e.args),i=t.map(p=>p.String?.sval||p.String?.str||"").filter(p=>p),a=S.quoteDottedName(i);if(e.funcformat==="COERCE_SQL_SYNTAX"&&a==="pg_catalog.xmlexists"&&n.length>=2){let p=this.visit(n[0],r),c=this.visit(n[1],r);return `xmlexists (${p} PASSING ${c})`}if(e.funcformat==="COERCE_SQL_SYNTAX"&&a==="pg_catalog.extract"&&n.length>=2){let p=this.visit(n[0],r),c=this.visit(n[1],r);return p.startsWith("'")&&p.endsWith("'")&&(p=p.slice(1,-1).toUpperCase()),`EXTRACT(${p} FROM ${c})`}if(e.funcformat==="COERCE_SQL_SYNTAX"&&(a==="pg_catalog.rtrim"||a==="pg_catalog.ltrim"||a==="pg_catalog.btrim")&&n.length>=1){let p=this.visit(n[0],r),c="";if(n.length>=2&&(c=` ${this.visit(n[1],r)}`),a==="pg_catalog.rtrim")return `TRIM(TRAILING${c} FROM ${p})`;if(a==="pg_catalog.ltrim")return `TRIM(LEADING${c} FROM ${p})`;if(a==="pg_catalog.btrim")return `TRIM(BOTH${c} FROM ${p})`}if(e.funcformat==="COERCE_SQL_SYNTAX"&&a==="pg_catalog.pg_collation_for")return `COLLATION FOR (${n.map(c=>this.visit(c,r)).join(", ")})`;if(e.funcformat==="COERCE_SQL_SYNTAX"&&a==="pg_catalog.substring"){let p=this.visit(n[0],r);if(n.length===3){let c=this.visit(n[1],r),f=this.visit(n[2],r);return `SUBSTRING(${p} FROM ${c} FOR ${f})`}else if(n.length===2){let c=this.visit(n[1],r);return `SUBSTRING(${p} FROM ${c})`}}if(e.funcformat==="COERCE_SQL_SYNTAX"&&a==="pg_catalog.position"&&n.length===2){let p=this.visit(n[0],r);return `POSITION(${this.visit(n[1],r)} IN ${p})`}if(e.funcformat==="COERCE_SQL_SYNTAX"&&a==="pg_catalog.overlay"){if(n.length===4){let p=this.visit(n[0],r),c=this.visit(n[1],r),f=this.visit(n[2],r),m=this.visit(n[3],r);return `OVERLAY(${p} PLACING ${c} FROM ${f} FOR ${m})`}else if(n.length===3){let p=this.visit(n[0],r),c=this.visit(n[1],r),f=this.visit(n[2],r);return `OVERLAY(${p} PLACING ${c} FROM ${f})`}}if(e.funcformat==="COERCE_SQL_SYNTAX"&&a==="pg_catalog.is_normalized"){let p=this.visit(n[0],r);if(n.length===2){let f=this.visit(n[1],r).replace(/'/g,"");return `${p} IS ${f} NORMALIZED`}else return `${p} IS NORMALIZED`}if(e.funcformat==="COERCE_SQL_SYNTAX"&&a==="pg_catalog.normalize"){let p=this.visit(n[0],r);if(n.length===2){let f=this.visit(n[1],r).replace(/'/g,"");return `normalize(${p}, ${f})`}else return `normalize(${p})`}if(e.funcformat==="COERCE_SQL_SYNTAX"&&a==="pg_catalog.system_user"&&n.length===0)return "SYSTEM_USER";if(a==="pg_catalog.overlaps"&&n.length===4){let p=this.visit(n[0],r),c=this.visit(n[1],r),f=this.visit(n[2],r),m=this.visit(n[3],r);return `(${p}, ${c}) OVERLAPS (${f}, ${m})`}if(a==="pg_catalog.timezone"&&n.length===2){let p=this.visit(n[1],r),c=this.visit(n[0],r);if(n[1]&&"A_Expr"in n[1]&&n[1].A_Expr?.kind==="AEXPR_OP"){let f=this.deparseOperatorName(h.unwrapList(n[1].A_Expr.name),r);(f==="+"||f==="-"||f==="*"||f==="/")&&(p=r.parens(p));}return `${p} AT TIME ZONE ${c}`}let o=[];if(e.agg_star)e.agg_distinct?o.push("DISTINCT *"):o.push("*");else {let p=n.map(c=>this.visit(c,r));if(e.func_variadic&&p.length>0){let c=p.length-1;p[c]=`VARIADIC ${p[c]}`;}e.agg_distinct&&p.length>0?o.push("DISTINCT "+p.join(", ")):o.push(...p);}let l="";if(e.agg_order&&e.agg_order.length>0){let c=h.unwrapList(e.agg_order).map(f=>this.visit(f,r));e.agg_within_group?l=` WITHIN GROUP (ORDER BY ${c.join(", ")})`:l=` ORDER BY ${c.join(", ")}`;}let u;if(e.agg_within_group&&l?u=`${a}(${o.join(", ")})${l}`:u=`${a}(${o.join(", ")}${l})`,e.agg_filter&&(u+=` FILTER (WHERE ${this.visit(e.agg_filter,r)})`),e.over)if(e.over.name)u+=` OVER ${e.over.name}`;else {let p=[];if(e.over.partitionClause){let m=h.unwrapList(e.over.partitionClause).map(d=>this.visit(d,r));p.push(`PARTITION BY ${m.join(", ")}`);}if(e.over.orderClause){let m=h.unwrapList(e.over.orderClause).map(d=>this.visit(d,r));p.push(`ORDER BY ${m.join(", ")}`);}let c=this.formatWindowFrame(e.over,r.spawn("FuncCall"));if(c&&p.push(c),p.length>0)if(r.isPretty()&&p.length>1){let f=p.map(m=>r.indent(m));u+=` OVER (${r.newline()}${f.join(r.newline())}${r.newline()})`;}else u+=` OVER (${p.join(" ")})`;else u+=" OVER ()";}return u}FuncExpr(e,r){let t=`func_${e.funcid}`,n=e.args?h.unwrapList(e.args).map(i=>this.visit(i,r)).join(", "):"";return `${t}(${n})`}A_Const(e,r){let t=e;if(t.ival!==void 0)return typeof t.ival=="object"&&t.ival!==null?t.ival.ival!==void 0?t.ival.ival.toString():Object.keys(t.ival).length===0?"0":t.ival.toString():t.ival===null?"NULL":t.ival.toString();if(t.fval!==void 0)return typeof t.fval=="object"&&t.fval!==null?t.fval.fval!==void 0?t.fval.fval.toString():Object.keys(t.fval).length===0?"0.0":t.fval.toString():t.fval===null?"NULL":t.fval.toString();if(t.sval!==void 0)return typeof t.sval=="object"&&t.sval!==null?t.sval.sval!==void 0?S.formatEString(t.sval.sval):t.sval.String&&t.sval.String.sval!==void 0?S.formatEString(t.sval.String.sval):Object.keys(t.sval).length===0?"''":S.formatEString(t.sval.toString()):t.sval===null?"NULL":S.formatEString(t.sval);if(t.boolval!==void 0)return typeof t.boolval=="object"&&t.boolval!==null?t.boolval.boolval!==void 0?t.boolval.boolval?"true":"false":Object.keys(t.boolval).length===0?"false":t.boolval?"true":"false":t.boolval===null?"NULL":t.boolval?"true":"false";if(t.bsval!==void 0)if(typeof t.bsval=="object"&&t.bsval!==null)if(t.bsval.bsval!==void 0){let n=t.bsval.bsval;return n.startsWith("x")&&/^x[0-9A-Fa-f]+$/.test(n)?`x'${n.substring(1)}'`:n.startsWith("b")?`b'${n.substring(1)}'`:`b'${n}'`}else return Object.keys(t.bsval).length===0?"''":t.bsval.toString();else {if(t.bsval===null)return "NULL";{let n=t.bsval;return n.startsWith("x")&&/^x[0-9A-Fa-f]+$/.test(n)?`x'${n.substring(1)}'`:n.startsWith("b")?`b'${n.substring(1)}'`:`b'${n}'`}}if(t.val){if(t.val.Integer?.ival!==void 0)return t.val.Integer.ival.toString();if(t.val.Float?.fval!==void 0)return t.val.Float.fval.toString();if(t.val.String?.sval!==void 0)return S.escape(t.val.String.sval);if(t.val.Boolean?.boolval!==void 0)return t.val.Boolean.boolval?"true":"false";if(t.val.BitString?.bsval!==void 0)return t.val.BitString.bsval}return t.isnull===true?"NULL":typeof t=="object"&&t!==null?t.Boolean!==void 0?t.Boolean?"true":"false":t.Integer!==void 0?typeof t.Integer=="object"&&t.Integer.ival!==void 0?t.Integer.ival.toString():t.Integer.toString():t.Float!==void 0?typeof t.Float=="object"&&t.Float.fval!==void 0?t.Float.fval.toString():t.Float.toString():t.String!==void 0?typeof t.String=="object"&&t.String.sval!==void 0?S.escape(t.String.sval):S.escape(t.String):(Object.keys(t).length===0||console.warn("A_Const: Unhandled object structure:",JSON.stringify(t,null,2)),"NULL"):"NULL"}ColumnRef(e,r){return h.unwrapList(e.fields).map(n=>n.String?S.quoteIdentifier(n.String.sval||n.String.str):n.A_Star?"*":this.visit(n,r)).join(".")}TypeName(e,r){if(!e.names)return "";let t=[];e.setof&&t.push("SETOF");let n=e.names.map(u=>u.String?u.String.sval||u.String.str:"").filter(Boolean);if(n.length===0)return "";let i=null;e.typmods?n.some(p=>(typeof p=="string"?p:p.String?.sval||p.String?.str)==="interval")?i=this.formatIntervalTypeMods(e.typmods,r):i=this.formatTypeMods(e.typmods,r):e.typemod&&e.typemod!==-1&&(i=this.formatSingleTypeMod(e.typemod,n[0]));let a=(u,p)=>p!=null?u==="interval"?p.startsWith("(")?`${u}${p}`:`${u} ${p}`:`${u}(${p})`:u,o=u=>u.map(p=>p.Integer&&p.Integer.ival!==void 0&&p.Integer.ival!==-1?`[${p.Integer.ival}]`:"[]").join("");if(n.length===1){let u=n[0];if(u==="char")return r.parentNodeTypes.includes("TypeCast")&&i==="1"?t.push('"char"'):t.push(a('"char"',i)),t.join(" ");let p=a(S.quoteIdentifierTypeName(u),i);return e.arrayBounds&&e.arrayBounds.length>0&&(p+=o(e.arrayBounds)),t.push(p),t.join(" ")}if(n.length===2){let[u,p]=n;if(u==="pg_catalog"&&p==="char")return t.push(a("pg_catalog.char",i)),t.join(" ");if(u==="pg_catalog"){let c=`${u}.${p}`;p==="bpchar"&&i?c="char":p==="varchar"?c="varchar":p==="numeric"?c="numeric":p==="int4"?c="int":p==="float8"?c="double precision":p==="float4"?c="real":p==="int8"?c="bigint":p==="int2"?c="smallint":p==="bool"?c="boolean":p==="interval"?(r.parentNodeTypes.includes("TypeCast"),c="interval"):p==="timestamptz"?i?(c=`timestamp(${i}) with time zone`,i=null):c="timestamp with time zone":p==="timetz"?i?(c=`time(${i}) with time zone`,i=null):c="time with time zone":p==="timestamp"?i?(c=`timestamp(${i})`,i=null):c="timestamp":p==="time"&&(i?(c=`time(${i})`,i=null):c="time");let f=a(c,i);return e.arrayBounds&&e.arrayBounds.length>0&&(f+=o(e.arrayBounds)),t.push(f),t.join(" ")}}let l=a(S.quoteTypeDottedName(n),i);return e.arrayBounds&&e.arrayBounds.length>0&&(l+=o(e.arrayBounds)),t.push(l),t.join(" ")}Alias(e,r){let t=e.aliasname,n=[];if(e.colnames){let a=h.unwrapList(e.colnames).map(o=>{let l=this.deparse(o,r);return l.startsWith('"')&&l.endsWith('"')?l:this.quoteIfNeeded(l)});n.push("AS",this.quoteIfNeeded(t)+r.parens(a.join(", ")));}else n.push("AS",this.quoteIfNeeded(t));return n.join(" ")}RangeVar(e,r){let t=[];e&&(!("inh"in e)||e.inh===void 0)&&!r.parentNodeTypes.includes("CompositeTypeStmt")&&!r.parentNodeTypes.includes("AlterTypeStmt")&&r.objtype!=="OBJECT_TYPE"&&!r.parentNodeTypes.includes("CreateForeignTableStmt")&&t.push("ONLY");let n="";if(e.catalogname?(n=S.quoteIdentifier(e.catalogname),e.schemaname&&(n+="."+S.quoteIdentifierAfterDot(e.schemaname)),n+="."+S.quoteIdentifierAfterDot(e.relname)):e.schemaname?n=S.quoteQualifiedIdentifier(e.schemaname,e.relname):n=S.quoteIdentifier(e.relname),t.push(n),e.alias){let a=this.Alias(e.alias,r);t.push(a);}return t.join(" ")}formatIntervalTypeMods(e,r){if(!e||e.length===0)return null;let t=h.unwrapList(e),n={4:"year",2:"month",8:"day",1024:"hour",2048:"minute",4096:"second",6:"year to month",1032:"day to hour",3080:"day to minute",7176:"day to second",3072:"hour to minute",7168:"hour to second",6144:"minute to second"};if(t.length===1){let a=t[0];if(a&&typeof a=="object"){let o=a.A_Const;if(o&&o.ival!==void 0){let l=typeof o.ival=="object"?o.ival.ival:o.ival;if(l!==void 0)return n[l]?n[l]:`(${l})`}}}if(t.length===2){let a=t[0],o=t[1];if(a&&typeof a=="object"){let l=a.A_Const;if(l&&l.ival!==void 0){let u=typeof l.ival=="object"?l.ival.ival:l.ival;if(o&&typeof o=="object"){let p=o.A_Const;if(p&&p.ival!==void 0){let c=typeof p.ival=="object"?p.ival.ival!==void 0?p.ival.ival:0:p.ival;if(u===32767&&c>=0)return `(${c})`;if(n[u]&&c>=0)return `${n[u]}(${c})`}}}}}let i=t.map(a=>{if(a&&typeof a=="object"){let l=a.A_Const;if(l&&l.ival!==void 0){let u=typeof l.ival=="object"?l.ival.ival:l.ival;if(u!==void 0)return n[u]||u.toString()}}return this.visit(a,r)||""}).filter(Boolean);return i.length>0?i.join(" "):null}formatTypeMods(e,r){if(!e||e.length===0)return null;let n=h.unwrapList(e).filter(i=>{if(i&&typeof i=="object"){let a=i.A_Const;if(a&&a.ival&&(typeof a.ival=="object"?a.ival.ival:a.ival)===32767)return false}return true});return n.length===0?null:n.map(i=>this.deparse(i,r)).join(", ")}formatSingleTypeMod(e,r){switch(r){case "varchar":case "bpchar":case "char":if(e>4)return (e-64).toString();break;case "numeric":case "decimal":if(e>4){let t=e-4,n=t>>16&65535,i=t&65535;return i>0?`${n},${i}`:n.toString()}break;case "time":case "timetz":case "timestamp":case "timestamptz":case "interval":if(e>=0)return e.toString();break}return null}getPgCatalogTypeName(e,r){switch(e){case "bpchar":return r!=null?"char":"bpchar";case "varchar":return "varchar";case "numeric":return "numeric";case "bool":return "boolean";case "int2":return "smallint";case "int4":return "int";case "int8":return "bigint";case "real":return "float4";case "time":return "time";case "timestamp":return "timestamp";case "interval":return "interval";case "bit":return "bit";default:return e}}isPgCatalogType(e){let r=e.replace(/^pg_catalog\./,"");if(Db.includes(r))return true;for(let[t,n]of jb)if(n.includes(r))return true;return false}A_ArrayExpr(e,r){return `ARRAY[${h.unwrapList(e.elements).map(i=>this.visit(i,r)).join(", ")}]`}A_Indices(e,r){let t=[];return e.is_slice?(e.lidx&&t.push(this.visit(e.lidx,r)),t.push(":"),e.uidx&&t.push(this.visit(e.uidx,r))):e.uidx&&t.push(this.visit(e.uidx,r)),`[${t.join("")}]`}A_Indirection(e,r){let t=this.visit(e.arg,r),n=this.getNodeType(e.arg);(n==="TypeCast"||n==="SubLink"||n==="A_Expr"||n==="FuncCall"||n==="A_Indirection"||n==="ColumnRef"||n==="RowExpr")&&(t=`(${t})`);let i=[t],a=h.unwrapList(e.indirection);for(let o of a)if(o.String||o.A_Star){let l=o.A_Star?"*":S.quoteIdentifier(o.String.sval||o.String.str);i.push(`.${l}`);}else i.push(this.visit(o,r));return i.join("")}A_Star(e,r){return "*"}CaseExpr(e,r){let t=["CASE"];e.arg&&t.push(this.visit(e.arg,r));let n=h.unwrapList(e.args);if(r.isPretty()&&n.length>0){for(let i of n){let a=this.visit(i,r);this.containsMultilineStringLiteral(a)?t.push(r.newline()+a):t.push(r.newline()+r.indent(a));}if(e.defresult){let i=this.visit(e.defresult,r);this.containsMultilineStringLiteral(i)?t.push(r.newline()+"ELSE "+i):t.push(r.newline()+r.indent("ELSE "+i));}return t.push(r.newline()+"END"),t.join(" ")}else {for(let i of n)t.push(this.visit(i,r));return e.defresult&&(t.push("ELSE"),t.push(this.visit(e.defresult,r))),t.push("END"),t.join(" ")}}CoalesceExpr(e,r){return `COALESCE(${h.unwrapList(e.args).map(i=>this.visit(i,r)).join(", ")})`}TypeCast(e,r){let t=this.visit(e.arg,r),n=this.TypeName(e.typeName,r);if(n==="bpchar"||n==="pg_catalog.bpchar"){let i=e.typeName?.names;if(i&&i.length===2&&i[0]?.String?.sval==="pg_catalog"&&i[1]?.String?.sval==="bpchar")return `CAST(${t} AS ${n})`}if(this.isPgCatalogType(n)){let i=this.getNodeType(e.arg),a=i==="A_Const"||i==="ColumnRef",o=i==="FuncCall";if((a||o)&&!(a&&(t.includes("(")||t.startsWith("-")))){let u=n.replace("pg_catalog.","");return o?`${r.parens(t)}::${u}`:`${t}::${u}`}}return `CAST(${t} AS ${n})`}CollateClause(e,r){let t=[];if(e.arg){let n=this.visit(e.arg,r),i=this.getNodeType(e.arg);(i==="A_Expr"||i==="FuncCall"||i==="SubLink")&&(n=`(${n})`),t.push(n);}if(t.push("COLLATE"),e.collname){let n=h.unwrapList(e.collname);t.push(n.map(i=>this.visit(i,r)).join("."));}return t.join(" ")}BooleanTest(e,r){let t=[],n=r.spawn("BooleanTest",{bool:true});switch(t.push(this.visit(e.arg,n)),e.booltesttype){case "IS_TRUE":t.push("IS TRUE");break;case "IS_NOT_TRUE":t.push("IS NOT TRUE");break;case "IS_FALSE":t.push("IS FALSE");break;case "IS_NOT_FALSE":t.push("IS NOT FALSE");break;case "IS_UNKNOWN":t.push("IS UNKNOWN");break;case "IS_NOT_UNKNOWN":t.push("IS NOT UNKNOWN");break}return t.join(" ")}NullTest(e,r){let t=[];switch(t.push(this.visit(e.arg,r)),e.nulltesttype){case "IS_NULL":t.push("IS NULL");break;case "IS_NOT_NULL":t.push("IS NOT NULL");break}return t.join(" ")}quoteIfNeeded(e){return S.quoteIdentifier(e)}preserveOperatorDefElemCase(e){return {leftarg:"Leftarg",rightarg:"Rightarg",procedure:"Procedure",function:"Function",commutator:"Commutator",negator:"Negator",restrict:"Restrict",join:"Join",hashes:"Hashes",merges:"Merges"}[e.toLowerCase()]||e}String(e,r){if(r.isStringLiteral||r.isEnumValue)return S.formatEString(e.sval||"");let t=e.sval||"";return r.parentNodeTypes.includes("DefElem")||r.parentNodeTypes.includes("CreateOpClassItem")||r.parentNodeTypes.includes("ObjectWithArgs")&&/^[+\-*/<>=~!@#%^&|`?]+$/.test(t)?t:S.quoteIdentifier(t)}Integer(e,r){return e.ival?.toString()||"0"}Float(e,r){return e.fval||"0.0"}Boolean(e,r){return e.boolval?"true":"false"}BitString(e,r){return e.bsval.startsWith("x")?`x'${e.bsval.substring(1)}'`:e.bsval.startsWith("b")?`b'${e.bsval.substring(1)}'`:`b'${e.bsval}'`}Null(e,r){return "NULL"}List(e,r){return !e.items||e.items.length===0?"":e.items.map(t=>this.visit(t,r)).join(", ")}CreateStmt(e,r){let t=["CREATE"];if(e.relation&&e.relation.relpersistence==="t"?t.push("TEMPORARY"):e.relation&&e.relation.relpersistence==="u"&&t.push("UNLOGGED"),e.if_not_exists?t.push("TABLE IF NOT EXISTS"):t.push("TABLE"),t.push(this.RangeVar(e.relation,r)),e.ofTypename){if(t.push("OF"),t.push(this.TypeName(e.ofTypename,r)),e.tableElts){let i=h.unwrapList(e.tableElts).map(a=>this.deparse(a,r));t.push(r.parens(i.join(", ")));}}else if(e.tableElts){let i=h.unwrapList(e.tableElts).map(a=>this.deparse(a,r.spawn("CreateStmt")));if(r.isPretty()){let a=i.map(o=>{let l=o.trim();return l.startsWith(`
318
- `)?r.indent(l.substring(1)):r.indent(l)}).join(","+r.newline());t.push("("+r.newline()+a+r.newline()+")");}else t.push(r.parens(i.join(", ")));}else e.partbound||t.push(r.parens(""));if(e.partbound&&e.inhRelations&&e.inhRelations.length>0){t.push("PARTITION OF");let i=h.unwrapList(e.inhRelations).map(a=>this.visit(a,r));if(t.push(i[0]),e.partbound.strategy==="l"&&e.partbound.listdatums){t.push("FOR VALUES IN");let a=h.unwrapList(e.partbound.listdatums).map(o=>this.visit(o,r)).join(", ");t.push(`(${a})`);}else if(e.partbound.strategy==="r"&&(e.partbound.lowerdatums||e.partbound.upperdatums)){if(t.push("FOR VALUES FROM"),e.partbound.lowerdatums){let a=h.unwrapList(e.partbound.lowerdatums).map(o=>this.visit(o,r)).join(", ");t.push(`(${a})`);}if(e.partbound.upperdatums){t.push("TO");let a=h.unwrapList(e.partbound.upperdatums).map(o=>this.visit(o,r)).join(", ");t.push(`(${a})`);}}else if(e.partbound.strategy==="h"&&e.partbound.modulus!==void 0){t.push("FOR VALUES WITH");let a=e.partbound.remainder!==void 0?e.partbound.remainder:0;t.push(`(MODULUS ${e.partbound.modulus}, REMAINDER ${a})`);}else e.partbound.is_default&&t.push("DEFAULT");}else if(e.inhRelations){t.push("INHERITS");let i=h.unwrapList(e.inhRelations).map(a=>this.visit(a,r));t.push(r.parens(i.join(", ")));}if(e.partspec){switch(t.push("PARTITION BY"),e.partspec.strategy){case "PARTITION_STRATEGY_HASH":t.push("HASH");break;case "PARTITION_STRATEGY_LIST":t.push("LIST");break;case "PARTITION_STRATEGY_RANGE":t.push("RANGE");break}if(e.partspec.partParams&&e.partspec.partParams.length>0){let n=h.unwrapList(e.partspec.partParams).map(i=>this.visit(i,r)).join(", ");t.push(`(${n})`);}}if(e.oncommit&&e.oncommit!=="ONCOMMIT_NOOP")switch(t.push("ON COMMIT"),e.oncommit){case "ONCOMMIT_PRESERVE_ROWS":t.push("PRESERVE ROWS");break;case "ONCOMMIT_DELETE_ROWS":t.push("DELETE ROWS");break;case "ONCOMMIT_DROP":t.push("DROP");break}if(e.options&&e.options.length>0){let n=r.spawn("CreateStmt"),i=e.options.map(a=>this.deparse(a,n));t.push("WITH",`(${i.join(", ")})`);}return e.accessMethod&&(t.push("USING"),t.push(this.quoteIfNeeded(e.accessMethod))),t.join(" ")}ColumnDef(e,r){let t=[];if(e.colname&&t.push(S.quoteIdentifier(e.colname)),e.typeName&&t.push(this.TypeName(e.typeName,r)),e.fdwoptions&&e.fdwoptions.length>0){t.push("OPTIONS");let n=r.spawn("ColumnDef"),i=h.unwrapList(e.fdwoptions).map(a=>this.visit(a,n));t.push(`(${i.join(", ")})`);}if(e.collClause&&t.push(this.CollateClause(e.collClause,r)),e.constraints){let i=h.unwrapList(e.constraints).map(a=>{let o=r.spawn("ColumnDef",{isColumnConstraint:true});return this.visit(a,o)});t.push(...i);}return e.raw_default&&(t.push("DEFAULT"),t.push(this.visit(e.raw_default,r))),e.generated&&(t.push("GENERATED ALWAYS AS"),t.push(`(${e.generated})`),t.push("STORED")),e.is_not_null&&t.push("NOT NULL"),t.join(" ")}Constraint(e,r){let t=[];switch(e.conname&&(e.contype==="CONSTR_CHECK"||e.contype==="CONSTR_UNIQUE"||e.contype==="CONSTR_PRIMARY"||e.contype==="CONSTR_FOREIGN")&&(t.push("CONSTRAINT"),t.push(S.quoteIdentifier(e.conname))),e.contype){case "CONSTR_NULL":t.push("NULL");break;case "CONSTR_NOTNULL":t.push("NOT NULL");break;case "CONSTR_DEFAULT":t.push("DEFAULT"),e.raw_expr&&t.push(this.visit(e.raw_expr,r));break;case "CONSTR_CHECK":if(r.isPretty()&&!r.isColumnConstraint?t.push(`
319
- `+r.indent("CHECK")):t.push("CHECK"),e.raw_expr)if(r.isPretty()){let n=this.visit(e.raw_expr,r);n.includes(`
320
- `)?t.push(`(
321
- `+r.indent(n)+`
322
- )`):t.push(`(${n})`);}else t.push(r.parens(this.visit(e.raw_expr,r)));e.skip_validation&&t.push("NOT VALID"),e.is_no_inherit&&!r.isDomainConstraint&&t.push("NO INHERIT");break;case "CONSTR_GENERATED":t.push("GENERATED"),e.generated_when==="a"?t.push("ALWAYS"):e.generated_when==="s"&&t.push("BY DEFAULT"),t.push("AS"),e.raw_expr&&t.push(r.parens(this.visit(e.raw_expr,r))),t.push("STORED");break;case "CONSTR_IDENTITY":if(t.push("GENERATED"),e.generated_when==="a"?t.push("ALWAYS"):(e.generated_when==="d"||e.generated_when==="s")&&t.push("BY DEFAULT"),t.push("AS IDENTITY"),e.options&&e.options.length>0){let n=h.unwrapList(e.options).map(i=>{if(i.DefElem){let a=i.DefElem;if(a.defname==="sequence_name")return a.arg&&a.arg.List?`SEQUENCE NAME ${h.unwrapList(a.arg).map(u=>this.visit(u,r)).join(".")}`:"SEQUENCE NAME";if(a.defname==="start")return `START WITH ${a.arg?this.visit(a.arg,r):""}`;if(a.defname==="increment")return `INCREMENT BY ${a.arg?this.visit(a.arg,r):""}`;if(a.defname==="minvalue")return a.arg?`MINVALUE ${this.visit(a.arg,r)}`:"NO MINVALUE";if(a.defname==="maxvalue")return a.arg?`MAXVALUE ${this.visit(a.arg,r)}`:"NO MAXVALUE";if(a.defname==="cache")return `CACHE ${a.arg?this.visit(a.arg,r):""}`;if(a.defname==="cycle")return (a.arg?this.visit(a.arg,r):"")==="true"?"CYCLE":"NO CYCLE";let o=a.arg?this.visit(a.arg,r):"";return `${a.defname.toUpperCase()} ${o}`}return this.visit(i,r)});if(r.isPretty()){let i=n.map(a=>r.indent(a));t.push(`(
323
- `+i.join(`
324
- `)+`
325
- )`);}else t.push(`(${n.join(" ")})`);}break;case "CONSTR_PRIMARY":if(t.push("PRIMARY KEY"),e.keys&&e.keys.length>0){let n=h.unwrapList(e.keys).map(i=>this.visit(i,r)).join(", ");t.push(`(${n})`);}e.indexname&&(t.push("USING INDEX"),t.push(e.indexname));break;case "CONSTR_UNIQUE":if(r.isPretty()&&!r.isColumnConstraint?t.push(`
326
- `+r.indent("UNIQUE")):t.push("UNIQUE"),e.nulls_not_distinct&&t.push("NULLS NOT DISTINCT"),e.keys&&e.keys.length>0){let n=h.unwrapList(e.keys).map(i=>this.visit(i,r)).join(", ");t.push(`(${n})`);}e.indexname&&(t.push("USING INDEX"),t.push(e.indexname));break;case "CONSTR_FOREIGN":if(r.isColumnConstraint)t.push("REFERENCES");else if(r.isPretty()){if(t.push(`
327
- `+r.indent("FOREIGN KEY")),e.fk_attrs&&e.fk_attrs.length>0){let n=h.unwrapList(e.fk_attrs).map(i=>this.visit(i,r)).join(", ");t.push(`(${n})`);}t.push(`
328
- `+r.indent("REFERENCES"));}else {if(t.push("FOREIGN KEY"),e.fk_attrs&&e.fk_attrs.length>0){let n=h.unwrapList(e.fk_attrs).map(i=>this.visit(i,r)).join(", ");t.push(`(${n})`);}t.push("REFERENCES");}if(e.pktable)if(r.isPretty()&&!r.isColumnConstraint){let n=t.length-1;n>=0&&t[n].includes("REFERENCES")?t[n]+=" "+this.RangeVar(e.pktable,r):t.push(this.RangeVar(e.pktable,r));}else t.push(this.RangeVar(e.pktable,r));if(e.pk_attrs&&e.pk_attrs.length>0){let n=h.unwrapList(e.pk_attrs).map(i=>this.visit(i,r)).join(", ");if(r.isPretty()&&!r.isColumnConstraint){let i=t.length-1;i>=0?t[i]+=` (${n})`:t.push(`(${n})`);}else t.push(`(${n})`);}if(e.fk_matchtype&&e.fk_matchtype!=="s"){let n="";switch(e.fk_matchtype){case "f":n="MATCH FULL";break;case "p":n="MATCH PARTIAL";break}r.isPretty()&&!r.isColumnConstraint?t.push(`
329
- `+r.indent(n)):t.push(n);}if(e.fk_upd_action&&e.fk_upd_action!=="a"){let n="ON UPDATE ";switch(e.fk_upd_action){case "r":n+="RESTRICT";break;case "c":n+="CASCADE";break;case "n":n+="SET NULL";break;case "d":n+="SET DEFAULT";break}r.isPretty()?t.push(`
330
- `+r.indent(n)):(t.push("ON UPDATE"),t.push(n.replace("ON UPDATE ","")));}if(e.fk_del_action&&e.fk_del_action!=="a"){let n="ON DELETE ";switch(e.fk_del_action){case "r":n+="RESTRICT";break;case "c":n+="CASCADE";break;case "n":n+="SET NULL";break;case "d":n+="SET DEFAULT";break}r.isPretty()?t.push(`
331
- `+r.indent(n)):(t.push("ON DELETE"),t.push(n.replace("ON DELETE ","")));}e.skip_validation&&!r.isDomainConstraint&&(r.isPretty()&&!r.isColumnConstraint?t.push(`
332
- `+r.indent("NOT VALID")):t.push("NOT VALID"));break;case "CONSTR_ATTR_DEFERRABLE":t.push("DEFERRABLE");break;case "CONSTR_ATTR_NOT_DEFERRABLE":t.push("NOT DEFERRABLE");break;case "CONSTR_ATTR_DEFERRED":t.push("INITIALLY DEFERRED");break;case "CONSTR_ATTR_IMMEDIATE":t.push("INITIALLY IMMEDIATE");break;case "CONSTR_EXCLUSION":if(t.push("EXCLUDE"),e.access_method&&(t.push("USING"),t.push(e.access_method)),e.exclusions&&e.exclusions.length>0){let n=h.unwrapList(e.exclusions).map(i=>{if(this.getNodeType(i)==="List"){let a=h.unwrapList(i);if(a.length>=2){let o=this.visit(a[0],r),l=a[1],u="";if(this.getNodeType(l)==="List"){let p=h.unwrapList(l);p.length>0&&p[0].String&&(u=p[0].String.sval);}else l.String?u=l.String.sval:u=this.visit(l,r);return `${o} WITH ${u}`}}return this.visit(i,r)});t.push(`(${n.join(", ")})`);}e.where_clause&&(t.push("WHERE"),t.push(r.parens(this.visit(e.where_clause,r))));break}if((e.contype==="CONSTR_PRIMARY"||e.contype==="CONSTR_UNIQUE"||e.contype==="CONSTR_FOREIGN")&&(e.deferrable?r.isPretty()&&e.contype==="CONSTR_FOREIGN"?(t.push(`
333
- `+r.indent("DEFERRABLE")),e.initdeferred===true?t.push(`
334
- `+r.indent("INITIALLY DEFERRED")):e.initdeferred===false&&t.push(`
335
- `+r.indent("INITIALLY IMMEDIATE"))):(t.push("DEFERRABLE"),e.initdeferred===true?t.push("INITIALLY DEFERRED"):e.initdeferred===false&&t.push("INITIALLY IMMEDIATE")):e.deferrable===false&&(r.isPretty()&&e.contype==="CONSTR_FOREIGN"?t.push(`
336
- `+r.indent("NOT DEFERRABLE")):t.push("NOT DEFERRABLE"))),r.isPretty()&&e.contype==="CONSTR_FOREIGN"){let n="";for(let i=0;i<t.length;i++)t[i].startsWith(`
337
- `)||i>0&&!t[i-1].startsWith(`
338
- `)&&(n+=" "),n+=t[i];return n}return t.join(" ")}SubLink(e,r){let t=r.parens(this.visit(e.subselect,r));switch(e.subLinkType){case "ANY_SUBLINK":if(e.testexpr&&e.operName){let n=this.visit(e.testexpr,r),i=this.deparseOperatorName(e.operName,r);return `${n} ${i} ANY ${t}`}else if(e.testexpr)return `${this.visit(e.testexpr,r)} IN ${t}`;return t;case "ALL_SUBLINK":if(e.testexpr&&e.operName){let n=this.visit(e.testexpr,r),i=this.deparseOperatorName(e.operName,r);return `${n} ${i} ALL ${t}`}return t;case "EXISTS_SUBLINK":return `EXISTS ${t}`;case "ARRAY_SUBLINK":return `ARRAY${t}`;default:return t}}CaseWhen(e,r){let t=["WHEN"];return e.expr&&t.push(this.visit(e.expr,r)),t.push("THEN"),e.result&&t.push(this.visit(e.result,r)),t.join(" ")}WindowDef(e,r){let t=[];e.name&&t.push(e.name);let n=[];if(e.partitionClause){let a=h.unwrapList(e.partitionClause).map(o=>this.visit(o,r));n.push(`PARTITION BY ${a.join(", ")}`);}if(e.orderClause){let a=h.unwrapList(e.orderClause).map(o=>this.visit(o,r));n.push(`ORDER BY ${a.join(", ")}`);}if(e.frameOptions&&e.frameOptions!==1058){let i=this.formatWindowFrame(e,r.spawn("WindowDef"));i&&n.push(i);}return n.length>0?(e.name&&t.push("AS"),t.push(`(${n.join(" ")})`)):e.name?(t.push("AS"),t.push("()")):t.length===0&&t.push("()"),t.join(" ")}formatWindowFrame(e,r){if(!e.frameOptions)return null;let t=e.frameOptions,i=t&-229377,a=[];if(t&1&&(t&2?a.push("RANGE"):t&4?a.push("ROWS"):t&8&&a.push("GROUPS")),a.length===0)return null;let o=[];if(i===789)o.push("CURRENT ROW"),o.push("AND UNBOUNDED FOLLOWING");else if(i===1077)o.push("UNBOUNDED PRECEDING"),o.push("AND CURRENT ROW");else if(i===18453)e.startOffset&&e.endOffset&&(o.push(`${this.visit(e.startOffset,r)} PRECEDING`),o.push(`AND ${this.visit(e.endOffset,r)} FOLLOWING`));else if(i===1557)o.push("CURRENT ROW"),o.push("AND CURRENT ROW");else if(i===16917)o.push("CURRENT ROW"),e.endOffset&&o.push(`AND ${this.visit(e.endOffset,r)} FOLLOWING`);else {if(i===1058)return null;e.startOffset?t&1024?o.push(`${this.visit(e.startOffset,r)} PRECEDING`):t&2048?o.push(`${this.visit(e.startOffset,r)} FOLLOWING`):o.push(`${this.visit(e.startOffset,r)} PRECEDING`):t&16?o.push("UNBOUNDED PRECEDING"):t&32&&o.push("CURRENT ROW"),e.endOffset?o.length>0&&(t&4096?o.push(`AND ${this.visit(e.endOffset,r)} PRECEDING`):t&8192?o.push(`AND ${this.visit(e.endOffset,r)} FOLLOWING`):o.push(`AND ${this.visit(e.endOffset,r)} FOLLOWING`)):t&128?o.length>0&&o.push("AND UNBOUNDED FOLLOWING"):(o.length>0&&o.push("AND CURRENT ROW"));}return o.length>0&&(a.push("BETWEEN"),a.push(o.join(" "))),t&32768?a.push("EXCLUDE CURRENT ROW"):t&65536?a.push("EXCLUDE GROUP"):t&131072&&a.push("EXCLUDE TIES"),a.join(" ")}SortBy(e,r){let t=[];if(e.node&&t.push(this.visit(e.node,r)),e.sortby_dir==="SORTBY_USING"&&e.useOp){t.push("USING");let n=h.unwrapList(e.useOp);t.push(n.map(i=>i.String&&i.String.sval?i.String.sval:this.visit(i,r)).join("."));}else e.sortby_dir==="SORTBY_ASC"?t.push("ASC"):e.sortby_dir==="SORTBY_DESC"&&t.push("DESC");return e.sortby_nulls==="SORTBY_NULLS_FIRST"?t.push("NULLS FIRST"):e.sortby_nulls==="SORTBY_NULLS_LAST"&&t.push("NULLS LAST"),t.join(" ")}GroupingSet(e,r){switch(e.kind){case "GROUPING_SET_EMPTY":return "()";case "GROUPING_SET_SIMPLE":return "";case "GROUPING_SET_ROLLUP":return `ROLLUP (${h.unwrapList(e.content).map(u=>this.visit(u,r)).join(", ")})`;case "GROUPING_SET_CUBE":return `CUBE (${h.unwrapList(e.content).map(u=>this.visit(u,r)).join(", ")})`;case "GROUPING_SET_SETS":return `GROUPING SETS (${h.unwrapList(e.content).map(u=>this.visit(u,r)).join(", ")})`;default:return ""}}CommonTableExpr(e,r){let t=[];if(e.ctename&&t.push(e.ctename),e.aliascolnames){let i=h.unwrapList(e.aliascolnames).map(a=>this.visit(a,r));t[t.length-1]+=r.parens(i.join(", "));}return t.push("AS"),e.ctematerialized==="CTEMaterializeNever"?t.push("NOT MATERIALIZED"):e.ctematerialized==="CTEMaterializeAlways"&&t.push("MATERIALIZED"),e.ctequery&&t.push(r.parens(this.visit(e.ctequery,r))),t.join(" ")}ParamRef(e,r){return `$${e.number}`}LockingClause(e,r){let t=[];switch(e.strength){case "LCS_FORUPDATE":t.push("FOR UPDATE");break;case "LCS_FORSHARE":t.push("FOR SHARE");break;case "LCS_FORKEYSHARE":t.push("FOR KEY SHARE");break;case "LCS_FORNOKEYUPDATE":t.push("FOR NO KEY UPDATE");break;default:throw new Error(`Unsupported locking strength: ${e.strength}`)}if(e.lockedRels&&e.lockedRels.length>0){t.push("OF");let n=h.unwrapList(e.lockedRels).map(i=>this.visit(i,r)).join(", ");t.push(n);}return e.waitPolicy==="LockWaitSkip"?t.push("SKIP LOCKED"):e.waitPolicy==="LockWaitError"&&t.push("NOWAIT"),t.join(" ")}MinMaxExpr(e,r){let n=h.unwrapList(e.args).map(i=>this.visit(i,r));return e.op==="IS_GREATEST"?`GREATEST(${n.join(", ")})`:`LEAST(${n.join(", ")})`}RowExpr(e,r){let n=h.unwrapList(e.args).map(i=>this.visit(i,r));return e.row_format==="COERCE_IMPLICIT_CAST"?`(${n.join(", ")})`:`ROW(${n.join(", ")})`}OpExpr(e,r){let t=h.unwrapList(e.args);if(t.length===2){let n=this.visit(t[0],r),i=this.visit(t[1],r),a=this.getOperatorName(e.opno);return `${n} ${a} ${i}`}else if(t.length===1){let n=this.visit(t[0],r);return `${this.getOperatorName(e.opno)} ${n}`}throw new Error(`Unsupported OpExpr with ${t.length} arguments`)}DistinctExpr(e,r){let t=h.unwrapList(e.args);if(t.length===2){let n=r.spawn("DistinctExpr",{isStringLiteral:true}),i=this.visit(t[0],n),a=this.visit(t[1],n);return `${i} IS DISTINCT FROM ${a}`}throw new Error(`DistinctExpr requires exactly 2 arguments, got ${t.length}`)}NullIfExpr(e,r){let t=h.unwrapList(e.args);if(t.length===2){let n=r.spawn("NullIfExpr",{isStringLiteral:true}),i=this.visit(t[0],n),a=this.visit(t[1],n);return `NULLIF(${i}, ${a})`}throw new Error(`NullIfExpr requires exactly 2 arguments, got ${t.length}`)}ScalarArrayOpExpr(e,r){let t=h.unwrapList(e.args);if(t.length===2){let n=this.visit(t[0],r),i=this.visit(t[1],r),a=e.useOr?"ANY":"ALL",o=this.getOperatorName(e.opno);return `${n} ${o} ${a}(${i})`}throw new Error(`ScalarArrayOpExpr requires exactly 2 arguments, got ${t.length}`)}Aggref(e,r){let t=this.getAggFunctionName(e.aggfnoid),n=t+"(",i=e.aggdistinct&&e.aggdistinct.length>0;if(e.args&&e.args.length>0){let o=h.unwrapList(e.args).map(l=>this.visit(l,r));i?n+="DISTINCT "+o.join(", "):n+=o.join(", ");}else t.toUpperCase()==="COUNT"&&(i?n+="DISTINCT *":n+="*");if(n+=")",e.aggorder&&e.aggorder.length>0){n+=" ORDER BY ";let o=h.unwrapList(e.aggorder).map(l=>this.visit(l,r));n+=o.join(", ");}return n}WindowFunc(e,r){let n=this.getWindowFunctionName(e.winfnoid)+"(";if(e.args&&e.args.length>0){let a=h.unwrapList(e.args).map(o=>this.visit(o,r));n+=a.join(", ");}return n+=") OVER (",e.winref&&typeof e.winref=="object"?n+=this.visit(e.winref,r):e.winref&&(n+="ORDER BY created_at ASC"),n+=")",n}FieldSelect(e,r){let t=[];return e.arg&&t.push(this.visit(e.arg,r)),e.fieldnum!==void 0&&t.push(`.field_${e.fieldnum}`),t.join("")}RelabelType(e,r){if(e.arg){let t=r.spawn("RelabelType",{isStringLiteral:true});return this.visit(e.arg,t)}return ""}CoerceViaIO(e,r){return e.arg?this.visit(e.arg,r):""}ArrayCoerceExpr(e,r){return e.arg?this.visit(e.arg,r):""}ConvertRowtypeExpr(e,r){if(e.arg){let t=r.spawn("ConvertRowtypeExpr",{isStringLiteral:true});return this.visit(e.arg,t)}return ""}NamedArgExpr(e,r){let t=[];return e.name&&(t.push(e.name),t.push("=>")),e.arg&&t.push(this.visit(e.arg,r)),t.join(" ")}ViewStmt(e,r){let t=[];if(t.push("CREATE"),e.replace&&t.push("OR REPLACE"),e.view&&e.view.relpersistence==="t"&&t.push("TEMPORARY"),t.push("VIEW"),e.view&&t.push(this.RangeVar(e.view,r)),e.aliases&&e.aliases.length>0){let n=h.unwrapList(e.aliases).map(i=>this.visit(i,r));t.push(r.parens(n.join(", ")));}if(e.options&&e.options.length>0){let n=r.spawn("ViewStmt"),i=h.unwrapList(e.options).map(a=>this.visit(a,n));t.push(`WITH (${i.join(", ")})`);}if(t.push("AS"),e.query&&t.push(this.visit(e.query,r)),e.withCheckOption)switch(e.withCheckOption){case "CASCADED_CHECK_OPTION":t.push("WITH CASCADED CHECK OPTION");break;case "LOCAL_CHECK_OPTION":t.push("WITH LOCAL CHECK OPTION");break}return t.join(" ")}IndexStmt(e,r){let t=[];if(t.push("CREATE"),e.unique&&t.push("UNIQUE"),t.push("INDEX"),e.concurrent&&t.push("CONCURRENTLY"),e.if_not_exists&&t.push("IF NOT EXISTS"),e.idxname&&t.push(S.quoteIdentifier(e.idxname)),t.push("ON"),e.relation&&t.push(this.RangeVar(e.relation,r)),e.accessMethod&&e.accessMethod!=="btree"&&(t.push("USING"),t.push(e.accessMethod)),e.indexParams&&e.indexParams.length>0){let n=h.unwrapList(e.indexParams).map(i=>this.visit(i,r));t.push(r.parens(n.join(", ")));}if(e.indexIncludingParams&&e.indexIncludingParams.length>0){let n=h.unwrapList(e.indexIncludingParams).map(i=>this.visit(i,r));t.push("INCLUDE"),t.push(r.parens(n.join(", ")));}if(e.whereClause&&(t.push("WHERE"),t.push(this.visit(e.whereClause,r))),e.options&&e.options.length>0){let n=r.spawn("IndexStmt"),i=h.unwrapList(e.options).map(a=>this.visit(a,n));t.push("WITH"),t.push(r.parens(i.join(", ")));}return e.nulls_not_distinct&&t.push("NULLS NOT DISTINCT"),e.tableSpace&&(t.push("TABLESPACE"),t.push(S.quoteIdentifier(e.tableSpace))),t.join(" ")}IndexElem(e,r){let t=[];if(e.name?t.push(S.quoteIdentifier(e.name)):e.expr&&t.push(r.parens(this.visit(e.expr,r))),e.collation&&e.collation.length>0){let n=h.unwrapList(e.collation).map(i=>this.visit(i,r));t.push("COLLATE"),t.push(n.join("."));}if(e.opclass&&e.opclass.length>0){let i=h.unwrapList(e.opclass).map(a=>this.visit(a,r)).join(".");if(e.opclassopts&&e.opclassopts.length>0){let a=h.unwrapList(e.opclassopts).map(o=>{if(o.DefElem&&o.DefElem.arg&&this.getNodeType(o.DefElem.arg)==="String"){let l=this.getNodeData(o.DefElem.arg);return `${o.DefElem.defname}='${l.sval}'`}return this.visit(o,r.spawn("IndexElem"))});i+=`(${a.join(", ")})`;}t.push(i);}if(e.ordering)switch(e.ordering){case "SORTBY_ASC":t.push("ASC");break;case "SORTBY_DESC":t.push("DESC");break}if(e.nulls_ordering)switch(e.nulls_ordering){case "SORTBY_NULLS_FIRST":t.push("NULLS FIRST");break;case "SORTBY_NULLS_LAST":t.push("NULLS LAST");break}return t.join(" ")}PartitionElem(e,r){let t=[];if(e.name?t.push(S.quoteIdentifier(e.name)):e.expr&&t.push(r.parens(this.visit(e.expr,r))),e.collation&&e.collation.length>0){let n=h.unwrapList(e.collation).map(i=>this.visit(i,r));t.push("COLLATE"),t.push(n.join("."));}if(e.opclass&&e.opclass.length>0){let n=h.unwrapList(e.opclass).map(i=>this.visit(i,r));t.push(n.join("."));}return t.join(" ")}PartitionCmd(e,r){let t=[];if(e.concurrent&&t.push("CONCURRENTLY"),e.name&&t.push(this.visit(e.name,r)),e.bound)if(e.bound.strategy==="l"&&e.bound.listdatums){t.push("FOR VALUES IN");let n=h.unwrapList(e.bound.listdatums).map(i=>this.visit(i,r)).join(", ");t.push(`(${n})`);}else if(e.bound.strategy==="r"&&(e.bound.lowerdatums||e.bound.upperdatums)){if(t.push("FOR VALUES FROM"),e.bound.lowerdatums){let n=h.unwrapList(e.bound.lowerdatums).map(i=>this.visit(i,r)).join(", ");t.push(`(${n})`);}if(e.bound.upperdatums){t.push("TO");let n=h.unwrapList(e.bound.upperdatums).map(i=>this.visit(i,r)).join(", ");t.push(`(${n})`);}}else e.bound.strategy==="h"&&e.bound.modulus!==void 0&&e.bound.remainder!==void 0?(t.push("FOR VALUES WITH"),t.push(`(modulus ${e.bound.modulus}, remainder ${e.bound.remainder})`)):e.bound.is_default&&t.push("DEFAULT");return t.join(" ")}getAggFunctionName(e){return {2100:"avg",2101:"count",2102:"max",2103:"min",2104:"sum",2105:"stddev",2106:"variance",2107:"array_agg",2108:"string_agg"}[e||0]||"unknown_agg"}getWindowFunctionName(e){return {3100:"row_number",3101:"rank",3102:"dense_rank",3103:"percent_rank",3104:"cume_dist",3105:"ntile",3106:"lag",3107:"lead",3108:"first_value",3109:"last_value"}[e||0]||"unknown_window_func"}getOperatorName(e){return {96:"=",518:"<>",97:"<",521:">",523:"<=",525:">=",551:"+",552:"-",553:"*",554:"/",555:"%",484:"-",1752:"~~",1753:"!~~",1754:"~~*",1755:"!~~*",15:"=",58:"<",59:"<=",61:">",62:">="}[e||0]||"="}JoinExpr(e,r){let t=[];e.larg&&t.push(this.visit(e.larg,r));let n="";switch(e.isNatural&&(n="NATURAL "),e.jointype){case "JOIN_INNER":e.isNatural?n+="JOIN":!e.quals&&(!e.usingClause||e.usingClause.length===0)?n+="CROSS JOIN":n+="JOIN";break;case "JOIN_LEFT":n+="LEFT JOIN";break;case "JOIN_FULL":n+="FULL JOIN";break;case "JOIN_RIGHT":n+="RIGHT JOIN";break;default:n+="JOIN";}if(e.rarg){let a=this.visit(e.rarg,r);e.rarg&&"JoinExpr"in e.rarg&&!e.rarg.JoinExpr.alias&&(a=`(${a})`),r.isPretty()?t.push(r.newline()+n+" "+a):t.push(n+" "+a);}else r.isPretty()?t.push(r.newline()+n):t.push(n);if(e.usingClause&&e.usingClause.length>0){let o=h.unwrapList(e.usingClause).map(l=>this.visit(l,r));r.isPretty()?t.push(` USING (${o.join(", ")})`):t.push(`USING (${o.join(", ")})`);}else if(e.quals){let a=this.visit(e.quals,r);r.isPretty()?a.includes("AND")||a.includes("OR")||a.length>50?this.containsMultilineStringLiteral(a)?t.push(` ON ${a}`):t.push(` ON${r.newline()}${r.indent(a)}`):t.push(` ON ${a}`):t.push(`ON ${a}`);}let i;if(r.isPretty()?i=t.join(""):i=t.join(" "),e.join_using_alias&&e.join_using_alias.aliasname){let a=e.join_using_alias.aliasname;if(e.join_using_alias.colnames&&e.join_using_alias.colnames.length>0){let l=h.unwrapList(e.join_using_alias.colnames).map(u=>this.visit(u,r)).join(", ");a+=`(${l})`;}i+=` AS ${a}`;}if(e.alias&&e.alias.aliasname){let a=e.alias.aliasname;if(e.alias.colnames&&e.alias.colnames.length>0){let l=h.unwrapList(e.alias.colnames).map(u=>this.visit(u,r)).join(", ");a+=`(${l})`;}i=`(${i}) ${a}`;}return i}FromExpr(e,r){let i=h.unwrapList(e.fromlist).map(a=>this.visit(a,r)).join(", ");return e.quals&&(i+=` WHERE ${this.visit(e.quals,r)}`),i}TransactionStmt(e,r){let t=[];switch(e.kind){case "TRANS_STMT_BEGIN":t.push("BEGIN");break;case "TRANS_STMT_START":t.push("START TRANSACTION");break;case "TRANS_STMT_COMMIT":t.push("COMMIT");break;case "TRANS_STMT_ROLLBACK":t.push("ROLLBACK");break;case "TRANS_STMT_SAVEPOINT":t.push("SAVEPOINT"),e.savepoint_name&&t.push(S.quoteIdentifier(e.savepoint_name));break;case "TRANS_STMT_RELEASE":t.push("RELEASE SAVEPOINT"),e.savepoint_name&&t.push(S.quoteIdentifier(e.savepoint_name));break;case "TRANS_STMT_ROLLBACK_TO":t.push("ROLLBACK TO"),e.savepoint_name&&t.push(S.quoteIdentifier(e.savepoint_name));break;case "TRANS_STMT_PREPARE":t.push("PREPARE TRANSACTION"),e.gid&&t.push(`'${e.gid}'`);break;case "TRANS_STMT_COMMIT_PREPARED":t.push("COMMIT PREPARED"),e.gid&&t.push(`'${e.gid}'`);break;case "TRANS_STMT_ROLLBACK_PREPARED":t.push("ROLLBACK PREPARED"),e.gid&&t.push(`'${e.gid}'`);break;default:throw new Error(`Unsupported TransactionStmt kind: ${e.kind}`)}if(e.options&&e.options.length>0){let n=h.unwrapList(e.options).map(i=>{if(i.DefElem){let a=i.DefElem;if(a.defname==="transaction_read_only"){let o=false;if(a.arg){let l=this.getNodeData(a.arg);if(l.ival!==void 0)o=(typeof l.ival=="object"?l.ival.ival:l.ival)===1;else if(l.sval!==void 0){let p=(typeof l.sval=="object"?l.sval.sval:l.sval).replace(/'/g,"");o=p.toLowerCase()==="on"||p.toLowerCase()==="true";}}return o?"READ ONLY":"READ WRITE"}else if(a.defname==="transaction_isolation"){if(a.arg&&a.arg.A_Const&&a.arg.A_Const.sval)return `ISOLATION LEVEL ${a.arg.A_Const.sval.sval.toUpperCase()}`}else if(a.defname==="transaction_deferrable"){let o=false;if(a.arg){let l=this.getNodeData(a.arg);if(l.ival!==void 0)o=(typeof l.ival=="object"?l.ival.ival:l.ival)===1;else if(l.sval!==void 0){let p=(typeof l.sval=="object"?l.sval.sval:l.sval).replace(/'/g,"");o=p.toLowerCase()==="on"||p.toLowerCase()==="true";}}return o?"DEFERRABLE":"NOT DEFERRABLE"}}return this.visit(i,r)}).filter(Boolean);n.length>0&&t.push(n.join(", "));}return t.join(" ")}VariableSetStmt(e,r){switch(e.kind){case "VAR_SET_VALUE":let t=e.is_local?"LOCAL ":"",n=e.args?h.unwrapList(e.args).map(u=>{let p=this.getNodeData(u);if(p.sval!==void 0){let c=typeof p.sval=="object"?p.sval.sval:p.sval;return c===""||c.includes(" ")||c.includes("-")||/[A-Z]/.test(c)||/^\d/.test(c)||c.includes(".")||c.includes("$")||c.toLowerCase()==="all"||/^[+-]\d/.test(c)?`'${c}'`:c}return this.visit(u,r)}).join(", "):"",i=S.quoteIdentifier(e.name);return !e.args||e.args.length===0?`SET ${t}${i}`:`SET ${t}${i} TO ${n}`;case "VAR_SET_DEFAULT":return `SET ${S.quoteIdentifier(e.name)} TO DEFAULT`;case "VAR_SET_CURRENT":return `SET ${S.quoteIdentifier(e.name)} FROM CURRENT`;case "VAR_SET_MULTI":if(e.name==="TRANSACTION"||e.name==="SESSION CHARACTERISTICS"){let u=[];if(e.args){let p=h.unwrapList(e.args);for(let c of p)if(c.DefElem){let f=c.DefElem;if(f.defname==="transaction_isolation"){let m=f.arg?this.visit(f.arg,r):"";u.push(`ISOLATION LEVEL ${m.replace(/'/g,"").toUpperCase()}`);}else if(f.defname==="transaction_read_only"){let m=false;if(f.arg){let d=this.getNodeData(f.arg);if(d.ival!==void 0)m=(typeof d.ival=="object"?d.ival.ival:d.ival)===1;else if(d.sval!==void 0){let b=(typeof d.sval=="object"?d.sval.sval:d.sval).replace(/'/g,"");m=b.toLowerCase()==="on"||b.toLowerCase()==="true";}}u.push(m?"READ ONLY":"READ WRITE");}else if(f.defname==="transaction_deferrable"){let m=false;if(f.arg){let d=this.getNodeData(f.arg);if(d.ival!==void 0)m=(typeof d.ival=="object"?d.ival.ival:d.ival)===1;else if(d.sval!==void 0){let b=(typeof d.sval=="object"?d.sval.sval:d.sval).replace(/'/g,"");m=b.toLowerCase()==="on"||b.toLowerCase()==="true";}}u.push(m?"DEFERRABLE":"NOT DEFERRABLE");}}}return e.name==="SESSION CHARACTERISTICS"?`SET SESSION CHARACTERISTICS AS TRANSACTION ${u.join(", ")}`:`SET TRANSACTION ${u.join(", ")}`}else return `SET ${e.args?h.unwrapList(e.args).map(p=>p.VariableSetStmt?this.VariableSetStmt(p.VariableSetStmt,r):this.visit(p,r)).join(", "):""}`;case "VAR_RESET":return `RESET ${S.quoteIdentifier(e.name)}`;case "VAR_RESET_ALL":return "RESET ALL";default:throw new Error(`Unsupported VariableSetStmt kind: ${e.kind}`)}}VariableShowStmt(e,r){return e.name==="ALL"?"SHOW ALL":`SHOW ${e.name}`}CreateSchemaStmt(e,r){let t=["CREATE SCHEMA"];if(e.if_not_exists&&t.push("IF NOT EXISTS"),e.schemaname&&t.push(S.quoteIdentifier(e.schemaname)),e.authrole&&(t.push("AUTHORIZATION"),t.push(this.RoleSpec(e.authrole,r))),e.schemaElts&&e.schemaElts.length>0){let n=h.unwrapList(e.schemaElts).map(i=>this.visit(i,r)).join(" ");t.push(n);}return t.join(" ")}RoleSpec(e,r){if(e.rolename)return this.quoteIfNeeded(e.rolename);switch(e.roletype){case "ROLESPEC_PUBLIC":return "PUBLIC";case "ROLESPEC_CURRENT_USER":return "CURRENT_USER";case "ROLESPEC_SESSION_USER":return "SESSION_USER";case "ROLESPEC_CURRENT_ROLE":return "CURRENT_ROLE";default:return "PUBLIC"}}roletype(e,r){return e.rolename?e.rolename:""}DropStmt(e,r){let t=["DROP"];if(e.removeType)switch(e.removeType){case "OBJECT_TABLE":t.push("TABLE");break;case "OBJECT_VIEW":t.push("VIEW");break;case "OBJECT_INDEX":t.push("INDEX");break;case "OBJECT_SEQUENCE":t.push("SEQUENCE");break;case "OBJECT_SCHEMA":t.push("SCHEMA");break;case "OBJECT_FUNCTION":t.push("FUNCTION");break;case "OBJECT_PROCEDURE":t.push("PROCEDURE");break;case "OBJECT_DATABASE":t.push("DATABASE");break;case "OBJECT_EXTENSION":t.push("EXTENSION");break;case "OBJECT_TYPE":t.push("TYPE");break;case "OBJECT_DOMAIN":t.push("DOMAIN");break;case "OBJECT_TRIGGER":t.push("TRIGGER");break;case "OBJECT_RULE":t.push("RULE");break;case "OBJECT_POLICY":t.push("POLICY");break;case "OBJECT_ROLE":t.push("ROLE");break;case "OBJECT_TABLESPACE":t.push("TABLESPACE");break;case "OBJECT_FOREIGN_SERVER":t.push("SERVER");break;case "OBJECT_FDW":t.push("FOREIGN DATA WRAPPER");break;case "OBJECT_PUBLICATION":t.push("PUBLICATION");break;case "OBJECT_SUBSCRIPTION":t.push("SUBSCRIPTION");break;case "OBJECT_CAST":t.push("CAST");break;case "OBJECT_TRANSFORM":t.push("TRANSFORM");break;case "OBJECT_ACCESS_METHOD":t.push("ACCESS METHOD");break;case "OBJECT_OPERATOR":t.push("OPERATOR");break;case "OBJECT_FOREIGN_TABLE":t.push("FOREIGN TABLE");break;case "OBJECT_MATVIEW":t.push("MATERIALIZED VIEW");break;case "OBJECT_OPCLASS":t.push("OPERATOR CLASS");break;case "OBJECT_OPFAMILY":t.push("OPERATOR FAMILY");break;case "OBJECT_COLLATION":t.push("COLLATION");break;case "OBJECT_CONVERSION":t.push("CONVERSION");break;case "OBJECT_LANGUAGE":t.push("LANGUAGE");break;case "OBJECT_LARGEOBJECT":t.push("LARGE OBJECT");break;case "OBJECT_AGGREGATE":t.push("AGGREGATE");break;case "OBJECT_STATISTIC_EXT":t.push("STATISTICS");break;case "OBJECT_EVENT_TRIGGER":t.push("EVENT TRIGGER");break;case "OBJECT_AMOP":t.push("OPERATOR CLASS");break;case "OBJECT_AMPROC":t.push("OPERATOR CLASS");break;case "OBJECT_ATTRIBUTE":t.push("ATTRIBUTE");break;case "OBJECT_DEFAULT":t.push("DEFAULT");break;case "OBJECT_DEFACL":t.push("DEFAULT PRIVILEGES");break;case "OBJECT_PARAMETER_ACL":t.push("PARAMETER");break;case "OBJECT_PUBLICATION_NAMESPACE":t.push("PUBLICATION");break;case "OBJECT_PUBLICATION_REL":t.push("PUBLICATION");break;case "OBJECT_ROUTINE":t.push("ROUTINE");break;case "OBJECT_TABCONSTRAINT":t.push("CONSTRAINT");break;case "OBJECT_TSCONFIGURATION":t.push("TEXT SEARCH CONFIGURATION");break;case "OBJECT_TSDICTIONARY":t.push("TEXT SEARCH DICTIONARY");break;case "OBJECT_TSPARSER":t.push("TEXT SEARCH PARSER");break;case "OBJECT_TSTEMPLATE":t.push("TEXT SEARCH TEMPLATE");break;case "OBJECT_USER_MAPPING":t.push("USER MAPPING");break;default:throw new Error(`Unsupported DROP object type: ${e.removeType}`)}if(e.concurrent&&t.push("CONCURRENTLY"),e.missing_ok&&t.push("IF EXISTS"),e.objects&&e.objects.length>0)if(e.removeType==="OBJECT_POLICY"){let n=e.objects[0];if(n&&n.List&&n.List.items){let i=n.List.items.map(a=>a.String&&a.String.sval?a.String.sval:this.visit(a,r));if(i.length===3){let[a,o,l]=i;t.push(`${l} ON ${a}.${o}`);}else if(i.length===2){let[a,o]=i;t.push(`${o} ON ${a}`);}else t.push(i.join(", "));}}else if(e.removeType==="OBJECT_CAST"){let n=e.objects.map(i=>{if(i&&i.List&&i.List.items){let o=i.List.items.map(l=>this.visit(l,r)).filter(l=>l&&l.trim());if(o.length===2){let[l,u]=o;return `(${l} AS ${u})`}return o.join(".")}return this.visit(i,r)}).filter(i=>i&&i.trim()).join(", ");n&&t.push(n);}else if(e.removeType==="OBJECT_TRIGGER"||e.removeType==="OBJECT_RULE"){let n=e.objects.map(i=>{if(i&&i.List&&i.List.items){let o=i.List.items.map(l=>l.String&&l.String.sval?S.quoteIdentifier(l.String.sval):this.visit(l,r)).filter(l=>l&&l.trim());if(o.length===2){let[l,u]=o;return `${u} ON ${l}`}else if(o.length===3){let[l,u,p]=o;return `${p} ON ${l}.${u}`}return o.join(".")}return this.visit(i,r)}).filter(i=>i&&i.trim()).join(", ");n&&t.push(n);}else if(e.removeType==="OBJECT_OPFAMILY"||e.removeType==="OBJECT_OPCLASS"){let n=e.objects.map(i=>{if(i&&i.List&&i.List.items){let o=i.List.items.map(l=>l.String&&l.String.sval?l.String.sval:this.visit(l,r)).filter(l=>l&&l.trim());if(o.length===2){let l=o[0],u=o[1];return `${S.quoteIdentifier(u)} USING ${l}`}else if(o.length===3){let l=o[0],u=o[1],p=o[2];return `${S.quoteQualifiedIdentifier(u,p)} USING ${l}`}return o.join(".")}return this.visit(i,r)}).filter(i=>i&&i.trim()).join(", ");n&&t.push(n);}else if(e.removeType==="OBJECT_TRANSFORM"){let n=e.objects.map(i=>{if(i&&i.List&&i.List.items){let o=i.List.items.map(l=>l.String&&l.String.sval?l.String.sval:this.visit(l,r)).filter(l=>l&&l.trim());if(o.length===2){let[l,u]=o;return `FOR ${l} LANGUAGE ${u}`}return o.join(".")}return this.visit(i,r)}).filter(i=>i&&i.trim()).join(", ");n&&t.push(n);}else {let n=e.objects.map(i=>{if(Array.isArray(i))return i.map(u=>this.visit(u,r)).filter(u=>u&&u.trim()).join(".");if(i&&i.List&&i.List.items)return i.List.items.map(u=>u.String&&u.String.sval?S.quoteIdentifier(u.String.sval):this.visit(u,r)).filter(u=>u&&u.trim()).join(".");let a=r.spawn("DropStmt",{objtype:e.removeType});return this.visit(i,a)}).filter(i=>i&&i.trim()).join(", ");n&&t.push(n);}return e.behavior==="DROP_CASCADE"&&t.push("CASCADE"),t.join(" ")}TruncateStmt(e,r){let t=["TRUNCATE"];if(e.relations&&e.relations.length>0){let n=e.relations.map(i=>this.visit(i,r)).join(", ");t.push(n);}return e.restart_seqs&&t.push("RESTART IDENTITY"),e.behavior==="DROP_CASCADE"&&t.push("CASCADE"),t.join(" ")}ReturnStmt(e,r){let t=["RETURN"];if(e.returnval){let n=this.visit(e.returnval,r);t.push(n);}return t.join(" ")}PLAssignStmt(e,r){let t=[];if(e.name){let n=S.quoteIdentifier(e.name);if(e.indirection&&e.indirection.length>0){let i=e.indirection.map(a=>this.visit(a,r)).join("");n+=i;}t.push(n);}if(t.push(":="),e.val){let n=e.val;if(n.targetList){t.push("SELECT");let i=this.targetList(n.targetList,r);t.push(i);}else {let i=this.visit(e.val,r);t.push(i);}}return t.join(" ")}CopyStmt(e,r){let t=["COPY"];if(e.relation){let n=this.RangeVar(e.relation,r);t.push(n);}else if(e.query){let n=this.visit(e.query,r);t.push(`(${n})`);}if(e.attlist&&e.attlist.length>0){let n=h.unwrapList(e.attlist).map(i=>this.visit(i,r)).join(", ");t.push(`(${n})`);}if(e.is_from?t.push("FROM"):t.push("TO"),e.is_program&&t.push("PROGRAM"),e.filename?t.push(`'${e.filename}'`):t.push("STDIN"),e.options&&e.options.length>0){t.push("WITH");let n=h.unwrapList(e.options).map(i=>this.visit(i,r.spawn("CopyStmt"))).join(", ");t.push(`(${n})`);}if(e.whereClause){t.push("WHERE");let n=this.visit(e.whereClause,r);t.push(n);}return t.join(" ")}AlterTableStmt(e,r){let t=["ALTER"];if(e.objtype)switch(e.objtype){case "OBJECT_TABLE":t.push("TABLE");break;case "OBJECT_INDEX":t.push("INDEX");break;case "OBJECT_SEQUENCE":t.push("SEQUENCE");break;case "OBJECT_VIEW":t.push("VIEW");break;case "OBJECT_MATVIEW":t.push("MATERIALIZED VIEW");break;case "OBJECT_FOREIGN_TABLE":t.push("FOREIGN TABLE");break;case "OBJECT_TYPE":t.push("TYPE");break;default:t.push("TABLE");}else t.push("TABLE");e.missing_ok&&t.push("IF EXISTS");let n=r.spawn("AlterTableStmt",{objtype:e.objtype});if(e.relation){let i=this.RangeVar(e.relation,n);t.push(i);}if(e.cmds&&e.cmds.length>0){let i=h.unwrapList(e.cmds);if(r.isPretty()){let a=i.map(o=>{let l=this.visit(o,n);return r.newline()+r.indent(l)}).join(",");t.push(a);}else {let a=i.map(o=>this.visit(o,n)).join(", ");t.push(a);}}return t.join(" ")}AlterTableCmd(e,r){let t=[];if(e.subtype)switch(e.subtype){case "AT_AddColumn":if(r.objtype==="OBJECT_TYPE"?t.push("ADD ATTRIBUTE"):t.push("ADD COLUMN"),e.missing_ok&&t.push("IF NOT EXISTS"),e.def){let n=this.getNodeData(e.def);if(r.isPretty()){let i=[],a=[];if(n.colname&&i.push(S.quoteIdentifier(n.colname)),n.typeName&&i.push(this.TypeName(n.typeName,r)),n.is_not_null&&a.push("NOT NULL"),n.collClause&&a.push(this.CollateClause(n.collClause,r)),n.constraints&&h.unwrapList(n.constraints).forEach(u=>{let p=r.spawn("ColumnDef",{isColumnConstraint:true}),c=this.visit(u,p);if(c.includes("REFERENCES")&&c.includes("ON DELETE")){let f=c.match(/^(.*REFERENCES[^)]*\([^)]*\))\s*(ON\s+DELETE\s+CASCADE.*)$/);f?(a.push(f[1]),a.push(f[2])):a.push(c);}else if(c==="UNIQUE"&&n.raw_default){let f="DEFAULT "+this.visit(n.raw_default,r);a.push("UNIQUE "+f);}else a.push(c);}),n.raw_default&&!n.constraints?.some(l=>this.visit(l,r.spawn("ColumnDef",{isColumnConstraint:true}))==="UNIQUE")){let l="DEFAULT "+this.visit(n.raw_default,r);a.push(l);}if(n.fdwoptions&&n.fdwoptions.length>0){a.push("OPTIONS");let l=r.spawn("ColumnDef"),u=h.unwrapList(n.fdwoptions).map(p=>this.visit(p,l));a.push(`(${u.join(", ")})`);}let o=i.join(" ");if(a.length>0){let l=a.map(u=>r.indent(u)).join(r.newline());o+=r.newline()+l;}t.push(o);}else {let i=[];if(n.colname&&i.push(S.quoteIdentifier(n.colname)),n.typeName&&i.push(this.TypeName(n.typeName,r)),n.collClause&&i.push(this.CollateClause(n.collClause,r)),n.fdwoptions&&n.fdwoptions.length>0){i.push("OPTIONS");let a=r.spawn("ColumnDef"),o=h.unwrapList(n.fdwoptions).map(l=>this.visit(l,a));i.push(`(${o.join(", ")})`);}if(n.constraints){let o=h.unwrapList(n.constraints).map(l=>{let u=r.spawn("ColumnDef",{isColumnConstraint:true});return this.visit(l,u)});i.push(...o);}n.raw_default&&(i.push("DEFAULT"),i.push(this.visit(n.raw_default,r))),n.is_not_null&&i.push("NOT NULL"),t.push(i.join(" "));}}e.behavior==="DROP_CASCADE"&&t.push("CASCADE");break;case "AT_DropColumn":e.missing_ok?r.objtype==="OBJECT_TYPE"?t.push("DROP ATTRIBUTE IF EXISTS"):t.push("DROP COLUMN IF EXISTS"):r.objtype==="OBJECT_TYPE"?t.push("DROP ATTRIBUTE"):t.push("DROP COLUMN"),e.name&&t.push(S.quoteIdentifier(e.name)),e.behavior==="DROP_CASCADE"?t.push("CASCADE"):e.behavior==="DROP_RESTRICT"&&t.push("RESTRICT");break;case "AT_AlterColumnType":if(r.objtype==="OBJECT_TYPE"?t.push("ALTER ATTRIBUTE"):t.push("ALTER COLUMN"),e.name&&t.push(S.quoteIdentifier(e.name)),t.push("TYPE"),e.def){let n=this.getNodeData(e.def);if(n&&n.typeName)t.push(this.TypeName(n.typeName,r)),n.raw_default&&(t.push("USING"),t.push(this.visit(n.raw_default,r)));else {let i=this.visit(e.def,r);t.push(i);}}e.behavior==="DROP_CASCADE"&&t.push("CASCADE");break;case "AT_SetTableSpace":t.push("SET TABLESPACE"),e.name&&t.push(S.quoteIdentifier(e.name));break;case "AT_AddConstraint":if(t.push("ADD"),e.def){let n=this.visit(e.def,r);t.push(n);}break;case "AT_DropConstraint":e.missing_ok?t.push("DROP CONSTRAINT IF EXISTS"):t.push("DROP CONSTRAINT"),e.name&&t.push(S.quoteIdentifier(e.name)),e.behavior==="DROP_CASCADE"?t.push("CASCADE"):e.behavior==="DROP_RESTRICT"&&t.push("RESTRICT");break;case "AT_SetRelOptions":if(t.push("SET"),e.def){let n=r.spawn("AlterTableCmd",{subtype:"AT_SetRelOptions"}),i=h.unwrapList(e.def).map(a=>this.visit(a,n)).join(", ");t.push(`(${i})`);}else t.push("()");break;case "AT_ResetRelOptions":if(t.push("RESET"),e.def){let n=r.spawn("AlterTableCmd",{subtype:"AT_ResetRelOptions"}),i=h.unwrapList(e.def).map(a=>this.visit(a,n)).join(", ");t.push(`(${i})`);}else t.push("()");break;case "AT_ColumnDefault":t.push("ALTER COLUMN"),e.name&&t.push(S.quoteIdentifier(e.name)),e.def?(t.push("SET DEFAULT"),t.push(this.visit(e.def,r))):t.push("DROP DEFAULT");break;case "AT_SetStorage":if(t.push("ALTER COLUMN"),e.name&&t.push(S.quoteIdentifier(e.name)),t.push("SET STORAGE"),e.def){let n=this.visit(e.def,r);t.push(n);}break;case "AT_ClusterOn":t.push("CLUSTER ON"),e.name&&t.push(S.quoteIdentifier(e.name));break;case "AT_DropCluster":t.push("SET WITHOUT CLUSTER");break;case "AT_ChangeOwner":t.push("OWNER TO"),e.newowner&&t.push(this.RoleSpec(e.newowner,r));break;case "AT_AddInherit":t.push("INHERIT"),e.def&&t.push(this.visit(e.def,r));break;case "AT_DropInherit":t.push("NO INHERIT"),e.def&&t.push(this.visit(e.def,r));break;case "AT_SetNotNull":t.push("ALTER COLUMN"),e.name&&t.push(S.quoteIdentifier(e.name)),t.push("SET NOT NULL");break;case "AT_DropNotNull":t.push("ALTER COLUMN"),e.name&&t.push(S.quoteIdentifier(e.name)),t.push("DROP NOT NULL");break;case "AT_SetStatistics":t.push("ALTER COLUMN"),e.name?t.push(S.quoteIdentifier(e.name)):e.num!==void 0&&e.num!==null&&t.push(e.num.toString()),t.push("SET STATISTICS"),e.def&&t.push(this.visit(e.def,r));break;case "AT_SetOptions":if(t.push("ALTER COLUMN"),e.name&&t.push(S.quoteIdentifier(e.name)),t.push("SET"),e.def){let n=r.spawn("AlterTableCmd",{subtype:"AT_SetOptions"}),i=h.unwrapList(e.def).map(a=>this.visit(a,n)).join(", ");t.push(`(${i})`);}else t.push("()");break;case "AT_ResetOptions":if(t.push("ALTER COLUMN"),e.name&&t.push(S.quoteIdentifier(e.name)),t.push("RESET"),e.def){let n=r.spawn("AlterTableCmd",{subtype:"AT_ResetOptions"}),i=h.unwrapList(e.def).map(a=>this.visit(a,n)).join(", ");t.push(`(${i})`);}else t.push("()");break;case "AT_SetCompression":t.push("ALTER COLUMN"),e.name&&t.push(S.quoteIdentifier(e.name)),t.push("SET COMPRESSION"),e.def&&t.push(this.visit(e.def,r));break;case "AT_ValidateConstraint":t.push("VALIDATE CONSTRAINT"),e.name&&t.push(S.quoteIdentifier(e.name));break;case "AT_EnableTrig":t.push("ENABLE TRIGGER"),e.name&&t.push(S.quoteIdentifier(e.name));break;case "AT_EnableAlwaysTrig":t.push("ENABLE ALWAYS TRIGGER"),e.name&&t.push(S.quoteIdentifier(e.name));break;case "AT_EnableReplicaTrig":t.push("ENABLE REPLICA TRIGGER"),e.name&&t.push(S.quoteIdentifier(e.name));break;case "AT_DisableTrig":t.push("DISABLE TRIGGER"),e.name&&t.push(S.quoteIdentifier(e.name));break;case "AT_EnableTrigAll":t.push("ENABLE TRIGGER ALL");break;case "AT_DisableTrigAll":t.push("DISABLE TRIGGER ALL");break;case "AT_EnableTrigUser":t.push("ENABLE TRIGGER USER");break;case "AT_DisableTrigUser":t.push("DISABLE TRIGGER USER");break;case "AT_EnableRule":t.push("ENABLE RULE"),e.name&&t.push(S.quoteIdentifier(e.name));break;case "AT_EnableAlwaysRule":t.push("ENABLE ALWAYS RULE"),e.name&&t.push(S.quoteIdentifier(e.name));break;case "AT_EnableReplicaRule":t.push("ENABLE REPLICA RULE"),e.name&&t.push(S.quoteIdentifier(e.name));break;case "AT_DisableRule":t.push("DISABLE RULE"),e.name&&t.push(S.quoteIdentifier(e.name));break;case "AT_SetAccessMethod":t.push("SET ACCESS METHOD"),e.name?t.push(S.quoteIdentifier(e.name)):t.push("DEFAULT");break;case "AT_EnableRowSecurity":t.push("ENABLE ROW LEVEL SECURITY");break;case "AT_DisableRowSecurity":t.push("DISABLE ROW LEVEL SECURITY");break;case "AT_ForceRowSecurity":t.push("FORCE ROW LEVEL SECURITY");break;case "AT_NoForceRowSecurity":t.push("NO FORCE ROW LEVEL SECURITY");break;case "AT_AttachPartition":t.push("ATTACH PARTITION"),e.def&&t.push(this.visit(e.def,r));break;case "AT_DetachPartition":t.push("DETACH PARTITION"),e.def&&t.push(this.visit(e.def,r));break;case "AT_DetachPartitionFinalize":t.push("DETACH PARTITION"),e.def&&t.push(this.visit(e.def,r)),t.push("FINALIZE");break;case "AT_SetLogged":t.push("SET LOGGED");break;case "AT_SetUnLogged":t.push("SET UNLOGGED");break;case "AT_AddColumnToView":if(t.push("ADD COLUMN"),e.def){let n=this.visit(e.def,r);t.push(n);}break;case "AT_CookedColumnDefault":t.push("ALTER COLUMN"),e.name&&t.push(S.quoteIdentifier(e.name)),e.def?(t.push("SET DEFAULT"),t.push(this.visit(e.def,r))):t.push("DROP DEFAULT");break;case "AT_SetExpression":t.push("ALTER COLUMN"),e.name&&t.push(S.quoteIdentifier(e.name)),t.push("SET EXPRESSION"),e.def&&t.push(this.visit(e.def,r));break;case "AT_DropExpression":t.push("ALTER COLUMN"),e.name&&t.push(S.quoteIdentifier(e.name)),t.push("DROP EXPRESSION");break;case "AT_CheckNotNull":t.push("ALTER COLUMN"),e.name&&t.push(S.quoteIdentifier(e.name)),t.push("SET NOT NULL");break;case "AT_AddIndex":t.push("ADD"),e.def&&t.push(this.visit(e.def,r));break;case "AT_ReAddIndex":t.push("ADD"),e.def&&t.push(this.visit(e.def,r));break;case "AT_ReAddConstraint":t.push("ADD"),e.def&&t.push(this.visit(e.def,r));break;case "AT_ReAddDomainConstraint":t.push("ADD"),e.def&&t.push(this.visit(e.def,r));break;case "AT_AlterConstraint":if(t.push("ALTER CONSTRAINT"),e.def&&this.getNodeType(e.def)==="Constraint"){let n=this.getNodeData(e.def);n.conname&&(t.push(S.quoteIdentifier(n.conname)),n.deferrable!==void 0&&t.push(n.deferrable?"DEFERRABLE":"NOT DEFERRABLE"),n.initdeferred!==void 0&&t.push(n.initdeferred?"INITIALLY DEFERRED":"INITIALLY IMMEDIATE"));}else e.name&&(t.push(S.quoteIdentifier(e.name)),e.def&&t.push(this.visit(e.def,r)));break;case "AT_AddIndexConstraint":t.push("ADD"),e.def&&t.push(this.visit(e.def,r));break;case "AT_ReAddComment":t.push("COMMENT"),e.def&&t.push(this.visit(e.def,r));break;case "AT_AlterColumnGenericOptions":if(t.push("ALTER COLUMN"),e.name&&t.push(S.quoteIdentifier(e.name)),t.push("OPTIONS"),e.def){let n=r.spawn("AlterTableCmd",{alterColumnOptions:true}),i=h.unwrapList(e.def).map(a=>this.visit(a,n)).join(", ");t.push(`(${i})`);}break;case "AT_DropOids":t.push("SET WITHOUT OIDS");break;case "AT_ReplaceRelOptions":if(t.push("REPLACE"),e.def&&Array.isArray(e.def)){let n=h.unwrapList(e.def).map(i=>this.visit(i,r)).join(", ");t.push(`(${n})`);}else t.push("()");break;case "AT_AddOf":t.push("OF"),e.def&&t.push(this.visit(e.def,r));break;case "AT_DropOf":t.push("NOT OF");break;case "AT_ReplicaIdentity":t.push("REPLICA IDENTITY"),e.def&&t.push(this.visit(e.def,r));break;case "AT_GenericOptions":if(t.push("OPTIONS"),e.def){let n=r.spawn("AlterTableCmd",{alterTableOptions:true}),i=h.unwrapList(e.def).map(a=>this.visit(a,n)).join(", ");t.push(`(${i})`);}break;case "AT_AddIdentity":t.push("ALTER COLUMN"),e.name&&t.push(S.quoteIdentifier(e.name)),t.push("ADD"),e.def&&t.push(this.visit(e.def,r));break;case "AT_SetIdentity":t.push("ALTER COLUMN"),e.name&&t.push(S.quoteIdentifier(e.name)),t.push("SET"),e.def&&t.push(this.visit(e.def,r));break;case "AT_DropIdentity":t.push("ALTER COLUMN"),e.name&&t.push(S.quoteIdentifier(e.name)),t.push("DROP IDENTITY"),e.behavior==="DROP_CASCADE"?t.push("CASCADE"):e.behavior==="DROP_RESTRICT"&&t.push("RESTRICT");break;case "AT_ReAddStatistics":t.push("ADD"),e.def&&t.push(this.visit(e.def,r));break;default:throw new Error(`Unsupported AlterTableCmd subtype: ${e.subtype}`)}return t.join(" ")}CreateFunctionStmt(e,r){let t=["CREATE"];if(e.replace&&t.push("OR REPLACE"),e.is_procedure?t.push("PROCEDURE"):t.push("FUNCTION"),e.funcname&&e.funcname.length>0){let i=e.funcname.map(o=>o.String?.sval||o.String?.str||"").filter(o=>o),a=S.quoteDottedName(i);if(e.parameters&&e.parameters.length>0){let o=e.parameters.filter(l=>this.getNodeData(l).mode!=="FUNC_PARAM_TABLE").map(l=>this.visit(l,r));if(o.length>0)if(r.isPretty()){let l=o.map(u=>r.indent(u)).join(","+r.newline());t.push(a+"("+r.newline()+l+r.newline()+")");}else t.push(a+"("+o.join(", ")+")");else t.push(a+"()");}else t.push(a+"()");}if(e.parameters&&e.parameters.some(i=>this.getNodeData(i).mode==="FUNC_PARAM_TABLE")){let i=e.parameters.filter(a=>this.getNodeData(a).mode==="FUNC_PARAM_TABLE").map(a=>this.visit(a,r));if(r.isPretty()){let a=i.map(o=>r.indent(o)).join(","+r.newline());t.push("RETURNS TABLE ("+r.newline()+a+r.newline()+")");}else t.push("RETURNS TABLE ("),t.push(i.join(", ")),t.push(")");}else e.returnType&&(t.push("RETURNS"),t.push(this.TypeName(e.returnType,r)));if(e.options&&e.options.length>0){let i=r.spawn("CreateFunctionStmt"),a=e.options.map(o=>this.visit(o,i));t.push(...a);}if(e.sql_body){let i=this.getNodeType(e.sql_body);if(i==="ReturnStmt")t.push(this.visit(e.sql_body,r));else {if(t.push("BEGIN ATOMIC"),i==="List"){let a=h.unwrapList(e.sql_body);if(!(a.length===0||a.length===1&&Object.keys(a[0]).length===0)){let o=a;a.length===1&&a[0].List&&(o=h.unwrapList(a[0]));let l=o.filter(u=>u&&Object.keys(u).length>0).map(u=>{let p=this.visit(u,r);return p.endsWith(";")?p:p+";"});l.length>0&&t.push(l.join(" "));}}else {let a=this.visit(e.sql_body,r);a&&!a.endsWith(";")?t.push(a+";"):t.push(a);}t.push("END");}}return t.join(" ")}FunctionParameter(e,r){let t=[];if(e.mode)switch(e.mode){case "FUNC_PARAM_IN":t.push("IN");break;case "FUNC_PARAM_OUT":t.push("OUT");break;case "FUNC_PARAM_INOUT":t.push("INOUT");break;case "FUNC_PARAM_VARIADIC":t.push("VARIADIC");break}return e.name&&t.push(S.quoteIdentifier(e.name)),e.argType&&t.push(this.TypeName(e.argType,r)),e.defexpr&&(t.push("DEFAULT"),t.push(this.visit(e.defexpr,r))),t.join(" ")}CreateEnumStmt(e,r){let t=["CREATE","TYPE"];if(e.typeName){let n=h.unwrapList(e.typeName).map(i=>this.visit(i,r)).join(".");t.push(n);}if(t.push("AS","ENUM"),e.vals&&e.vals.length>0){let n=r.spawn("CreateEnumStmt",{isEnumValue:true}),i=h.unwrapList(e.vals).map(a=>this.visit(a,n)).join(", ");t.push(`(${i})`);}else t.push("()");return t.join(" ")}CreateDomainStmt(e,r){let t=["CREATE","DOMAIN"];if(e.domainname){let n=h.unwrapList(e.domainname).map(i=>this.visit(i,r)).join(".");t.push(n);}if(e.typeName&&(t.push("AS"),t.push(this.TypeName(e.typeName,r))),e.collClause&&t.push(this.CollateClause(e.collClause,r)),e.constraints){let n=h.unwrapList(e.constraints).map(i=>this.visit(i,r)).join(" ");n&&t.push(n);}return t.join(" ")}CreateRoleStmt(e,r){let t=["CREATE"];if(e.stmt_type==="ROLESTMT_ROLE"?t.push("ROLE"):e.stmt_type==="ROLESTMT_USER"?t.push("USER"):e.stmt_type==="ROLESTMT_GROUP"?t.push("GROUP"):t.push("ROLE"),e.role){let n=S.quoteIdentifier(e.role);t.push(n);}if(e.options){let n=h.unwrapList(e.options).map(i=>this.visit(i,r.spawn("CreateRoleStmt"))).join(" ");n&&(t.push("WITH"),t.push(n));}return t.join(" ")}DefElem(e,r){if(!e.defname)return "";if(r.parentNodeTypes.includes("DefineStmt")&&["commutator","negator"].includes(e.defname.toLowerCase())&&e.arg&&this.getNodeType(e.arg)==="List"){let t=this.getNodeData(e.arg),n=h.unwrapList(t.items);if(n.length===1&&n[0].String)return `${this.preserveOperatorDefElemCase(e.defname)} = ${n[0].String.sval}`}if(r.parentNodeTypes.includes("IndexElem")){if(e.arg&&this.getNodeType(e.arg)==="String"){let t=this.getNodeData(e.arg);return `${e.defname}='${t.sval}'`}return `${e.defname}=${this.visit(e.arg,r.spawn("DefElem"))}`}if(r.parentNodeTypes.includes("DefineStmt")&&["hashes","merges"].includes(e.defname.toLowerCase())&&!e.arg)return e.defname!==e.defname.toLowerCase()&&e.defname!==e.defname.toUpperCase()?S.quoteIdentifier(e.defname):e.defname.charAt(0).toUpperCase()+e.defname.slice(1).toLowerCase();if(r.parentNodeTypes.includes("AlterFdwStmt")||r.parentNodeTypes.includes("CreateFdwStmt")||r.parentNodeTypes.includes("CreateForeignServerStmt")||r.parentNodeTypes.includes("AlterForeignServerStmt")||r.parentNodeTypes.includes("CreateUserMappingStmt")||r.parentNodeTypes.includes("AlterUserMappingStmt")||r.parentNodeTypes.includes("ColumnDef")||r.parentNodeTypes.includes("CreateForeignTableStmt")||r.parentNodeTypes.includes("ImportForeignSchemaStmt")||r.alterColumnOptions||r.alterTableOptions){if(["handler","validator"].includes(e.defname)){if(!e.arg)return `NO ${e.defname.toUpperCase()}`;let t=r.spawn("DefElem"),n=this.visit(e.arg,t);return `${e.defname.toUpperCase()} ${n}`}if(e.arg){let t=r.spawn("DefElem"),n=this.visit(e.arg,t);if(r.parentNodeTypes.includes("CreateFdwStmt")||r.parentNodeTypes.includes("AlterFdwStmt")){let o=typeof n=="string"&&!n.startsWith("'")?`'${n}'`:n,l=S.quoteIdentifier(e.defname);return e.defaction==="DEFELEM_ADD"?`ADD ${l} ${o}`:e.defaction==="DEFELEM_DROP"?`DROP ${l}`:e.defaction==="DEFELEM_SET"?`SET ${l} ${o}`:`${l} ${o}`}let i=typeof n=="string"&&!n.startsWith("'")?`'${n}'`:n;return e.defaction==="DEFELEM_ADD"?`ADD ${e.defname} ${i}`:e.defaction==="DEFELEM_DROP"?`DROP ${e.defname}`:e.defaction==="DEFELEM_SET"?`SET ${e.defname} ${i}`:`${S.quoteIdentifier(e.defname)} ${i}`}else if(e.defaction==="DEFELEM_DROP")return `DROP ${e.defname}`}if((r.parentNodeTypes.includes("CreateSeqStmt")||r.parentNodeTypes.includes("AlterSeqStmt"))&&(e.defname==="minvalue"||e.defname==="maxvalue")&&!e.arg)return `NO ${e.defname.toUpperCase()}`;if((r.parentNodeTypes.includes("CreateRoleStmt")||r.parentNodeTypes.includes("AlterRoleStmt"))&&e.defname==="password"){if(!e.arg)return "PASSWORD NULL";let t=r.spawn("DefElem"),n=this.visit(e.arg,t);return `PASSWORD ${typeof n=="string"&&!n.startsWith("'")?`'${n}'`:n}`}if(e.arg){let t=r.spawn("DefElem"),n=this.visit(e.arg,t);if(r.parentNodeTypes.includes("AlterOperatorStmt")){if(e.arg&&this.getNodeType(e.arg)==="TypeName"){let a=this.getNodeData(e.arg);if(a.names){let o=h.unwrapList(a.names);if(o.length===1&&o[0].String)return `${e.defname} = ${o[0].String.sval}`}}if(e.arg&&this.getNodeType(e.arg)==="List"){let a=this.getNodeData(e.arg),o=h.unwrapList(a.items);if(o.length===1&&o[0].String)return `${e.defname} = ${o[0].String.sval}`}}if(r.parentNodeTypes.includes("CreatedbStmt")||r.parentNodeTypes.includes("DropdbStmt")){let a=typeof n=="string"?S.escape(n):n;return `${e.defname} = ${a}`}if(r.parentNodeTypes.includes("CreateForeignServerStmt")||r.parentNodeTypes.includes("AlterForeignServerStmt")){let a=typeof n=="string"?S.escape(n):n;return `${S.quoteIdentifier(e.defname)} ${a}`}if(r.parentNodeTypes.includes("CreateRoleStmt")||r.parentNodeTypes.includes("AlterRoleStmt")){if(e.defname==="rolemembers"&&e.arg&&this.getNodeType(e.arg)==="List"){let a=this.getNodeData(e.arg),l=h.unwrapList(a.items).map(u=>this.visit(u,r));return r.parentNodeTypes.includes("CreateRoleStmt")?`ROLE ${l.join(", ")}`:`ADD USER ${l.join(", ")}`}if(e.defname==="addroleto"&&e.arg&&this.getNodeType(e.arg)==="List"){let a=this.getNodeData(e.arg);return `IN ROLE ${h.unwrapList(a.items).map(u=>this.visit(u,r)).join(", ")}`}if(e.defname==="validUntil")return `VALID UNTIL ${typeof n=="string"&&!n.startsWith("'")?`'${n}'`:n}`;if(e.defname==="adminmembers")return `ADMIN ${n}`;if(e.defname==="connectionlimit")return `CONNECTION LIMIT ${n}`;if(e.defname==="sysid")return `SYSID ${n}`;if(String(n)==="true")return e.defname==="isreplication"?"REPLICATION":e.defname==="canlogin"?"LOGIN":e.defname.toUpperCase();if(String(n)==="false")return e.defname==="canlogin"?"NOLOGIN":e.defname==="isreplication"?"NOREPLICATION":`NO${e.defname.toUpperCase()}`}if(r.parentNodeTypes.includes("CreateSeqStmt")||r.parentNodeTypes.includes("AlterSeqStmt")){if(e.defname==="owned_by")if(e.arg&&this.getNodeType(e.arg)==="List"){let a=this.getNodeData(e.arg);return `OWNED BY ${h.unwrapList(a.items).map(u=>{let p=this.getNodeData(u);if(this.getNodeType(u)==="String"){let c=p.sval;return S.quoteIdentifier(c)}return this.visit(u,r)}).join(".")}`}else return `OWNED BY ${n}`;if(e.defname==="cycle"){let a=String(n).toLowerCase();if(a==="true"||a==="1")return "CYCLE";if(a==="false"||a==="0")return "NO CYCLE"}return (e.defname==="minvalue"||e.defname==="maxvalue")&&!e.arg?`NO ${e.defname.toUpperCase()}`:`${e.defname.toUpperCase()} ${n}`}if(r.parentNodeTypes.includes("CreateTableSpaceStmt")||r.parentNodeTypes.includes("AlterTableSpaceOptionsStmt"))return `${e.defname.toUpperCase()} ${n}`;if(r.parentNodeTypes.includes("ExplainStmt"))return n?`${e.defname.toUpperCase()} ${n.toUpperCase()}`:e.defname.toUpperCase();if(r.parentNodeTypes.includes("DoStmt")){if(e.defname==="as"){let a=r.spawn("DefElem"),o=e.arg?this.visit(e.arg,a):"";if(Array.isArray(o)){let u=o.join(""),p=this.getFunctionDelimiter(u);return `${p}${u}${p}`}else {let l=this.getFunctionDelimiter(o);return `${l}${o}${l}`}}return ""}if(r.parentNodeTypes.includes("CreateFunctionStmt")||r.parentNodeTypes.includes("AlterFunctionStmt")){if(e.defname==="as")if(e.arg&&e.arg.List){let l=(e.arg.List.items||[]).map(u=>u.String?u.String.sval:this.visit(u,r));if(l.length===1){let u=l[0],p=this.getFunctionDelimiter(u);return `AS ${p}${u}${p}`}else return `AS ${l.map(u=>{let p=this.getFunctionDelimiter(u);return `${p}${u}${p}`}).join(", ")}`}else if(Array.isArray(n)){let a=n;if(a.length===1){let o=a[0],l=this.getFunctionDelimiter(o);return `AS ${l}${o}${l}`}else return `AS ${a.map(o=>{let l=this.getFunctionDelimiter(o);return `${l}${o}${l}`}).join(", ")}`}else {let a=this.getFunctionDelimiter(n);return `AS ${a}${n}${a}`}return e.defname==="language"?`LANGUAGE ${n}`:e.defname==="volatility"?n.toUpperCase():e.defname==="strict"?n==="true"?"STRICT":"CALLED ON NULL INPUT":e.defname==="security"?n==="true"?"SECURITY DEFINER":"SECURITY INVOKER":e.defname==="leakproof"?n==="true"?"LEAKPROOF":"NOT LEAKPROOF":e.defname==="cost"?`COST ${n}`:e.defname==="rows"?`ROWS ${n}`:e.defname==="window"?n==="true"?"WINDOW":"":e.defname==="set"?this.visit(e.arg,r):`${e.defname.toUpperCase()} ${n}`}if(r.parentNodeTypes.includes("CreateExtensionStmt")||r.parentNodeTypes.includes("AlterExtensionStmt")||r.parentNodeTypes.includes("CreateFdwStmt")||r.parentNodeTypes.includes("AlterFdwStmt")){if(r.parentNodeTypes.includes("AlterExtensionStmt")){if(e.defname==="new_version")return `UPDATE TO ${typeof n=="string"&&!n.startsWith("'")?`'${n}'`:n}`;if(e.defname==="schema")return `SET SCHEMA ${n}`}if(r.parentNodeTypes.includes("CreateFdwStmt")){if(["handler","validator"].includes(e.defname))return `${e.defname.toUpperCase()} ${n}`;let a=typeof n=="string"?S.escape(n):n;return `${e.defname} ${a}`}return e.defname==="cascade"?n==="true"?"CASCADE":"":`${e.defname.toUpperCase()} ${n}`}if(r.parentNodeTypes.includes("IndexStmt"))return `${e.defname}=${n}`;if(r.parentNodeTypes.includes("IndexElem")){if(e.arg&&this.getNodeType(e.arg)==="String"){let a=this.getNodeData(e.arg);return `${e.defname}='${a.sval}'`}return `${e.defname}=${n}`}if(r.parentNodeTypes.includes("CreateStmt")){if(e.arg&&this.getNodeType(e.arg)==="Integer"){let a=this.getNodeData(e.arg);return `${e.defname}=${a.ival}`}return `${e.defname}=${n}`}if(r.parentNodeTypes.includes("CreateEventTrigStmt")){if(e.arg&&this.getNodeType(e.arg)==="List"){let a=this.getNodeData(e.arg),l=h.unwrapList(a.items).map(u=>this.getNodeType(u)==="String"?`'${this.getNodeData(u).sval||""}'`:this.visit(u,r));return `${e.defname} IN (${l.join(", ")})`}return `${e.defname} = ${n}`}if((r.parentNodeTypes.includes("AlterTableCmd")||r.parentNodeTypes.includes("AlterTableStmt"))&&!r.parentNodeTypes.includes("ColumnDef")){let a=e.defnamespace?`${e.defnamespace}.${e.defname}`:e.defname;return e.arg&&this.getNodeType(e.arg)==="TypeName"?`${a} = ${n}`:`${a} = ${n}`}if(r.parentNodeTypes.includes("ViewStmt")){if(typeof n=="string"&&/^\d+$/.test(n))return `${e.defname}=${n}`;let a=typeof n=="string"?S.escape(n):n;return `${e.defname} = ${a}`}if(r.parentNodeTypes.includes("CopyStmt"))return e.defname==="format"&&e.arg&&this.getNodeType(e.arg)==="String"?`FORMAT ${this.getNodeData(e.arg).sval.toUpperCase()}`:e.arg?`${e.defname.toUpperCase()} ${n}`:e.defname.toUpperCase();if(r.parentNodeTypes.includes("DefineStmt")){let a=this.preserveOperatorDefElemCase(e.defname);if(["commutator","negator"].includes(e.defname.toLowerCase())){if(e.arg){if(e.arg&&this.getNodeType(e.arg)==="List"){let u=this.getNodeData(e.arg),p=h.unwrapList(u.items);if(p.length===1&&p[0].String)return `${a} = ${p[0].String.sval}`}let l=n.replace(/^"(.*)"$/,"$1");return `${a} = ${l}`}return a}if(["hashes","merges"].includes(e.defname.toLowerCase()))return e.defname!==e.defname.toLowerCase()&&e.defname!==e.defname.toUpperCase()?S.quoteIdentifier(e.defname):a.toUpperCase();let o=S.quoteIdentifier(e.defname);if(o!==e.defname){if(e.arg){if(this.getNodeType(e.arg)==="String"){let l=this.getNodeData(e.arg);return l.sval==="true"||l.sval==="false"?`${o} = ${l.sval}`:`${o} = '${l.sval}'`}return `${o} = ${n}`}return o}if(a!==e.defname)return e.arg?`${a} = ${n}`:a;if(e.arg&&this.getNodeType(e.arg)==="String"){let l=this.getNodeData(e.arg);return l.sval==="true"||l.sval==="false"?`${e.defname} = ${l.sval}`:`${e.defname} = '${l.sval}'`}if(e.arg&&this.getNodeType(e.arg)==="Boolean"){let l=this.getNodeData(e.arg);return `${e.defname} = ${l.boolval?"true":"false"}`}if(e.arg&&this.getNodeType(e.arg)==="Integer"){let l=this.getNodeData(e.arg);return `${e.defname} = ${l.ival}`}if(e.arg&&this.getNodeType(e.arg)==="TypeName"){let l=this.getNodeData(e.arg);if(l.names){let u=h.unwrapList(l.names);if(u.length===1&&u[0].String)return `${e.defname} = ${u[0].String.sval}`}return `${e.defname} = ${n}`}}let i=typeof n=="string"?S.escape(n):n;return `${e.defname} = ${i}`}return r.parentNodeTypes.includes("DefineStmt")&&!e.arg&&e.defname!==e.defname.toLowerCase()&&e.defname!==e.defname.toUpperCase()?S.quoteIdentifier(e.defname):e.defname.toUpperCase()}CreateTableSpaceStmt(e,r){let t=["CREATE","TABLESPACE"];if(e.tablespacename&&t.push(e.tablespacename),e.owner&&(t.push("OWNER"),t.push(this.RoleSpec(e.owner,r))),e.location&&(t.push("LOCATION"),t.push(`'${e.location}'`)),e.options&&e.options.length>0){t.push("WITH");let n=r.spawn("CreateTableSpaceStmt"),i=h.unwrapList(e.options).map(a=>this.visit(a,n)).join(", ");t.push(`(${i})`);}return t.join(" ")}DropTableSpaceStmt(e,r){let t=["DROP","TABLESPACE"];return e.missing_ok&&t.push("IF","EXISTS"),e.tablespacename&&t.push(e.tablespacename),t.join(" ")}AlterTableSpaceOptionsStmt(e,r){let t=["ALTER","TABLESPACE"];if(e.tablespacename&&t.push(e.tablespacename),e.isReset?t.push("RESET"):t.push("SET"),e.options&&e.options.length>0){let n=r.spawn("AlterTableSpaceOptionsStmt"),i=h.unwrapList(e.options).map(a=>this.visit(a,n)).join(", ");t.push(`(${i})`);}return t.join(" ")}CreateExtensionStmt(e,r){let t=["CREATE","EXTENSION"];if(e.if_not_exists&&t.push("IF","NOT","EXISTS"),e.extname&&t.push(this.quoteIfNeeded(e.extname)),e.options&&e.options.length>0){let n=r.spawn("CreateExtensionStmt"),i=h.unwrapList(e.options).map(a=>this.visit(a,n)).join(" ");t.push(i);}return t.join(" ")}AlterExtensionStmt(e,r){let t=["ALTER","EXTENSION"];if(e.extname&&t.push(this.quoteIfNeeded(e.extname)),e.options&&e.options.length>0){let n=r.spawn("AlterExtensionStmt"),i=h.unwrapList(e.options).map(a=>this.visit(a,n)).join(" ");t.push(i);}return t.join(" ")}AlterExtensionContentsStmt(e,r){let t=["ALTER","EXTENSION"];if(e.extname&&t.push(this.quoteIfNeeded(e.extname)),e.action===1?t.push("ADD"):e.action===-1&&t.push("DROP"),e.objtype)try{t.push(this.getObjectTypeKeyword(e.objtype));}catch{t.push(e.objtype.toString());}return e.object&&t.push(this.visit(e.object,r)),t.join(" ")}CreateFdwStmt(e,r){let t=["CREATE","FOREIGN","DATA","WRAPPER"];if(e.fdwname&&t.push(e.fdwname),e.func_options&&e.func_options.length>0){let n=r.spawn("CreateFdwStmt"),i=h.unwrapList(e.func_options).map(a=>this.visit(a,n)).join(" ");t.push(i);}if(e.options&&e.options.length>0){t.push("OPTIONS");let n=r.spawn("CreateFdwStmt"),i=h.unwrapList(e.options).map(a=>this.visit(a,n)).join(", ");t.push(`(${i})`);}return t.join(" ")}SetOperationStmt(e,r){let t=[];if(e.larg&&t.push(this.visit(e.larg,r)),e.op)switch(e.op){case "SETOP_UNION":t.push(e.all?"UNION ALL":"UNION");break;case "SETOP_INTERSECT":t.push(e.all?"INTERSECT ALL":"INTERSECT");break;case "SETOP_EXCEPT":t.push(e.all?"EXCEPT ALL":"EXCEPT");break;default:throw new Error(`Unsupported SetOperation: ${e.op}`)}return e.rarg&&t.push(this.visit(e.rarg,r)),t.join(" ")}ReplicaIdentityStmt(e,r){let t=[];if(e.identity_type)switch(e.identity_type){case "d":case "REPLICA_IDENTITY_DEFAULT":t.push("DEFAULT");break;case "f":case "REPLICA_IDENTITY_FULL":t.push("FULL");break;case "n":case "REPLICA_IDENTITY_NOTHING":t.push("NOTHING");break;case "i":case "REPLICA_IDENTITY_INDEX":t.push("USING","INDEX"),e.name&&t.push(S.quoteIdentifier(e.name));break;default:throw new Error(`Unsupported replica identity type: ${e.identity_type}`)}return t.join(" ")}AlterCollationStmt(e,r){let t=["ALTER","COLLATION"];if(e.collname&&e.collname.length>0){let n=h.unwrapList(e.collname).map(i=>this.visit(i,r)).join(".");t.push(n);}return t.push("REFRESH","VERSION"),t.join(" ")}AlterDomainStmt(e,r){let t=["ALTER","DOMAIN"];if(e.typeName&&e.typeName.length>0){let n=h.unwrapList(e.typeName).map(i=>this.visit(i,r)).join(".");t.push(n);}if(e.subtype)switch(e.subtype){case "AT_SetNotNull":t.push("SET","NOT","NULL");break;case "AT_DropNotNull":t.push("DROP","NOT","NULL");break;case "AT_SetDefault":t.push("SET","DEFAULT"),e.def&&t.push(this.visit(e.def,r));break;case "AT_DropDefault":t.push("DROP","DEFAULT");break;case "AT_AddConstraint":if(t.push("ADD"),e.def){let n=r.spawn("CreateDomainStmt",{isDomainConstraint:true});t.push(this.visit(e.def,n));}break;case "AT_DropConstraint":t.push("DROP","CONSTRAINT"),e.missing_ok&&t.push("IF","EXISTS"),e.name&&t.push(S.quoteIdentifier(e.name)),e.behavior==="DROP_CASCADE"&&t.push("CASCADE");break;case "AT_ValidateConstraint":t.push("VALIDATE","CONSTRAINT"),e.name&&t.push(S.quoteIdentifier(e.name));break;case "C":if(t.push("ADD"),e.def){let n=r.spawn("CreateDomainStmt",{isDomainConstraint:true});t.push(this.visit(e.def,n));}break;case "X":t.push("DROP","CONSTRAINT"),e.missing_ok&&t.push("IF","EXISTS"),e.name&&t.push(S.quoteIdentifier(e.name)),e.behavior==="DROP_CASCADE"&&t.push("CASCADE");break;case "V":t.push("VALIDATE","CONSTRAINT"),e.name&&t.push(S.quoteIdentifier(e.name));break;case "O":t.push("SET","NOT","NULL");break;case "N":t.push("DROP","NOT","NULL");break;case "T":e.def?(t.push("SET","DEFAULT"),t.push(this.visit(e.def,r))):t.push("DROP","DEFAULT");break;default:throw new Error(`Unsupported AlterDomainStmt subtype: ${e.subtype}`)}return t.join(" ")}PrepareStmt(e,r){let t=["PREPARE"];if(e.name&&t.push(e.name),e.argtypes&&e.argtypes.length>0){let n=h.unwrapList(e.argtypes).map(i=>this.visit(i,r)).join(", ");t.push(`(${n})`);}return t.push("AS"),e.query&&t.push(this.visit(e.query,r)),t.join(" ")}ExecuteStmt(e,r){let t=["EXECUTE"];if(e.name&&t.push(e.name),e.params&&e.params.length>0){let n=h.unwrapList(e.params).map(i=>this.visit(i,r)).join(", ");t.push(`(${n})`);}return t.join(" ")}DeallocateStmt(e,r){let t=["DEALLOCATE"];return e.isall?t.push("ALL"):e.name&&t.push(e.name),t.join(" ")}NotifyStmt(e,r){let t=["NOTIFY"];return e.conditionname&&t.push(e.conditionname),e.payload!==null&&e.payload!==void 0&&(t.push(","),t.push(`'${e.payload}'`)),t.join(" ")}ListenStmt(e,r){let t=["LISTEN"];return e.conditionname&&t.push(e.conditionname),t.join(" ")}UnlistenStmt(e,r){let t=["UNLISTEN"];return e.conditionname?t.push(e.conditionname):t.push("*"),t.join(" ")}CheckPointStmt(e,r){return "CHECKPOINT"}LoadStmt(e,r){if(!e.filename)throw new Error("LoadStmt requires filename");return `LOAD '${e.filename}'`}DiscardStmt(e,r){switch(e.target){case "DISCARD_ALL":return "DISCARD ALL";case "DISCARD_PLANS":return "DISCARD PLANS";case "DISCARD_SEQUENCES":return "DISCARD SEQUENCES";case "DISCARD_TEMP":return "DISCARD TEMP";default:throw new Error(`Unsupported DiscardStmt target: ${e.target}`)}}CommentStmt(e,r){let t=["COMMENT ON"];if(e.objtype)switch(e.objtype){case "OBJECT_TABLE":t.push("TABLE");break;case "OBJECT_COLUMN":t.push("COLUMN");break;case "OBJECT_INDEX":t.push("INDEX");break;case "OBJECT_FUNCTION":t.push("FUNCTION");break;case "OBJECT_VIEW":t.push("VIEW");break;case "OBJECT_SCHEMA":t.push("SCHEMA");break;case "OBJECT_DATABASE":t.push("DATABASE");break;case "OBJECT_MATVIEW":t.push("MATERIALIZED VIEW");break;case "OBJECT_TABCONSTRAINT":t.push("CONSTRAINT");break;case "OBJECT_TRIGGER":t.push("TRIGGER");break;case "OBJECT_FDW":t.push("FOREIGN DATA WRAPPER");break;case "OBJECT_EVENT_TRIGGER":t.push("EVENT TRIGGER");break;case "OBJECT_FOREIGN_SERVER":t.push("SERVER");break;case "OBJECT_FOREIGN_TABLE":t.push("FOREIGN TABLE");break;case "OBJECT_STATISTIC_EXT":t.push("STATISTICS");break;case "OBJECT_LARGEOBJECT":t.push("LARGE OBJECT");break;case "OBJECT_OPERATOR":t.push("OPERATOR");break;case "OBJECT_OPCLASS":t.push("OPERATOR CLASS");break;case "OBJECT_OPFAMILY":t.push("OPERATOR FAMILY");break;case "OBJECT_POLICY":t.push("POLICY");break;case "OBJECT_TSPARSER":t.push("TEXT SEARCH PARSER");break;case "OBJECT_TSDICTIONARY":t.push("TEXT SEARCH DICTIONARY");break;case "OBJECT_TSTEMPLATE":t.push("TEXT SEARCH TEMPLATE");break;case "OBJECT_TSCONFIGURATION":t.push("TEXT SEARCH CONFIGURATION");break;case "OBJECT_TRANSFORM":t.push("TRANSFORM");break;default:t.push(e.objtype.replace("OBJECT_",""));}if(e.object)if(e.object&&typeof e.object=="object"&&"List"in e.object){let n=e.object.List;if(n.items&&n.items.length>0){let i=h.unwrapList(n.items).map(a=>this.visit(a,r));if(e.objtype==="OBJECT_TABCONSTRAINT")if(i.length===3){let[a,o,l]=i;t.push(l),t.push("ON"),t.push(`${a}.${o}`);}else if(i.length===2){let[a,o]=i;t.push(o),t.push("ON"),t.push(a);}else t.push(i.join("."));else if(e.objtype==="OBJECT_TRIGGER")if(i.length===2){let[a,o]=i;t.push(o),t.push("ON"),t.push(a);}else t.push(i.join("."));else if(e.objtype==="OBJECT_RULE")if(i.length===2){let[a,o]=i;t.push(o),t.push("ON"),t.push(a);}else t.push(i.join("."));else if(e.objtype==="OBJECT_OPERATOR")if(e.object&&e.object.ObjectWithArgs){let a=e.object.ObjectWithArgs,o=a.objname&&a.objname[0]&&a.objname[0].String?a.objname[0].String.sval:"unknown";o.startsWith('"')&&o.endsWith('"')&&(o=o.slice(1,-1));let l=[];a.objargs&&a.objargs.forEach(u=>{if(!u||Object.keys(u).length===0)l.push("NONE");else if(u.TypeName){let p=this.visit(u,r);l.push(p);}else l.push("unknown");}),t.push(`${o} (${l.join(", ")})`);}else t.push(i.join("."));else if(e.objtype==="OBJECT_OPCLASS"||e.objtype==="OBJECT_OPFAMILY")if(i.length>=2){let a=i[i.length-1],o=i[i.length-2];t.push(`${a} USING ${o}`);}else t.push(i.join(" USING "));else if(e.objtype==="OBJECT_POLICY")if(i.length===2){let[a,o]=i;t.push(o),t.push("ON"),t.push(a);}else t.push(i.join("."));else if(e.objtype==="OBJECT_TRANSFORM")if(i.length===2){let[a,o]=i;t.push("FOR"),t.push(a),t.push("LANGUAGE"),t.push(o);}else t.push(i.join("."));else t.push(i.join("."));}}else if(e.objtype==="OBJECT_OPERATOR"&&e.object&&e.object.ObjectWithArgs){let n=e.object.ObjectWithArgs,i=n.objname&&n.objname[0]&&n.objname[0].String?n.objname[0].String.sval:"unknown";i.startsWith('"')&&i.endsWith('"')&&(i=i.slice(1,-1));let a=[];n.objargs&&n.objargs.forEach(o=>{if(!o||Object.keys(o).length===0)a.push("NONE");else if(o.TypeName){let l=this.visit(o,r);a.push(l);}else a.push("unknown");}),t.push(`${i}(${a.join(", ")})`);}else {let n=r.spawn("CommentStmt",{objtype:e.objtype});t.push(this.visit(e.object,n));}return t.push("IS"),e.comment===null||e.comment===void 0?t.push("NULL"):e.comment&&t.push(S.formatEString(e.comment)),t.join(" ")}LockStmt(e,r){let t=["LOCK","TABLE"];if(e.relations&&e.relations.length>0){let n=h.unwrapList(e.relations).map(i=>this.visit(i,r)).join(", ");t.push(n);}if(e.mode!==void 0){let n=["","ACCESS SHARE","ROW SHARE","ROW EXCLUSIVE","SHARE UPDATE EXCLUSIVE","SHARE","SHARE ROW EXCLUSIVE","EXCLUSIVE","ACCESS EXCLUSIVE"];e.mode>=1&&e.mode<n.length&&t.push("IN",n[e.mode],"MODE");}return e.nowait&&t.push("NOWAIT"),t.join(" ")}CreatePolicyStmt(e,r){let t=[],n=["CREATE","POLICY"];if(e.policy_name&&n.push(S.quoteIdentifier(e.policy_name)),t.push(n.join(" ")),e.table&&(r.isPretty()?t.push(r.newline()+r.indent(`ON ${this.RangeVar(e.table,r)}`)):(t.push("ON"),t.push(this.RangeVar(e.table,r)))),e.permissive===void 0?r.isPretty()?t.push(r.newline()+r.indent("AS RESTRICTIVE")):t.push("AS","RESTRICTIVE"):e.permissive===true&&(r.isPretty()?t.push(r.newline()+r.indent("AS PERMISSIVE")):t.push("AS","PERMISSIVE")),e.cmd_name&&(r.isPretty()?t.push(r.newline()+r.indent(`FOR ${e.cmd_name.toUpperCase()}`)):t.push("FOR",e.cmd_name.toUpperCase())),e.roles&&e.roles.length>0){let i=h.unwrapList(e.roles).map(a=>this.visit(a,r));r.isPretty()?t.push(r.newline()+r.indent(`TO ${i.join(", ")}`)):(t.push("TO"),t.push(i.join(", ")));}if(e.qual)if(r.isPretty()){let i=this.visit(e.qual,r);t.push(r.newline()+r.indent("USING (")),t.push(r.newline()+r.indent(r.indent(i))),t.push(r.newline()+r.indent(")"));}else t.push("USING"),t.push(`(${this.visit(e.qual,r)})`);if(e.with_check)if(r.isPretty()){let i=this.visit(e.with_check,r);t.push(r.newline()+r.indent("WITH CHECK (")),t.push(r.newline()+r.indent(r.indent(i))),t.push(r.newline()+r.indent(")"));}else t.push("WITH CHECK"),t.push(`(${this.visit(e.with_check,r)})`);return r.isPretty()?t.join(""):t.join(" ")}AlterPolicyStmt(e,r){let t=["ALTER","POLICY"];if(e.policy_name&&t.push(S.quoteIdentifier(e.policy_name)),e.table&&(t.push("ON"),t.push(this.RangeVar(e.table,r))),e.roles&&e.roles.length>0){t.push("TO");let n=h.unwrapList(e.roles).map(i=>this.visit(i,r));t.push(n.join(", "));}return e.qual&&(t.push("USING"),t.push(`(${this.visit(e.qual,r)})`)),e.with_check&&(t.push("WITH CHECK"),t.push(`(${this.visit(e.with_check,r)})`)),t.join(" ")}CreateUserMappingStmt(e,r){let t=["CREATE"];if(e.if_not_exists&&t.push("IF","NOT","EXISTS"),t.push("USER","MAPPING"),t.push("FOR"),e.user?t.push(this.RoleSpec(e.user,r)):t.push("CURRENT_USER"),t.push("SERVER"),e.servername&&t.push(S.quoteIdentifier(e.servername)),e.options&&e.options.length>0){t.push("OPTIONS");let n=r.spawn("CreateUserMappingStmt"),i=h.unwrapList(e.options).map(a=>this.visit(a,n));t.push(`(${i.join(", ")})`);}return t.join(" ")}CreateStatsStmt(e,r){let t=["CREATE"];if(e.if_not_exists&&t.push("IF","NOT","EXISTS"),t.push("STATISTICS"),e.defnames&&e.defnames.length>0){let n=h.unwrapList(e.defnames).map(i=>this.visit(i,r));t.push(n.join("."));}if(e.stat_types&&e.stat_types.length>0){let n=h.unwrapList(e.stat_types).map(i=>this.visit(i,r));t.push(`(${n.join(", ")})`);}if(t.push("ON"),e.exprs&&e.exprs.length>0){let n=h.unwrapList(e.exprs).map(i=>this.visit(i,r));t.push(n.join(", "));}if(e.relations&&e.relations.length>0){t.push("FROM");let n=h.unwrapList(e.relations).map(i=>this.visit(i,r));t.push(n.join(", "));}return t.join(" ")}StatsElem(e,r){return e.name?this.quoteIfNeeded(e.name):e.expr?`(${this.visit(e.expr,r)})`:""}CreatePublicationStmt(e,r){let t=["CREATE","PUBLICATION"];if(e.pubname&&t.push(S.quoteIdentifier(e.pubname)),e.pubobjects&&e.pubobjects.length>0){t.push("FOR","TABLE");let n=h.unwrapList(e.pubobjects).map(i=>this.visit(i,r));t.push(n.join(", "));}else e.for_all_tables&&t.push("FOR","ALL","TABLES");if(e.options&&e.options.length>0){t.push("WITH");let n=h.unwrapList(e.options).map(i=>this.visit(i,r));t.push(`(${n.join(", ")})`);}return t.join(" ")}CreateSubscriptionStmt(e,r){let t=["CREATE","SUBSCRIPTION"];if(e.subname&&t.push(S.quoteIdentifier(e.subname)),t.push("CONNECTION"),e.conninfo&&t.push(`'${e.conninfo}'`),t.push("PUBLICATION"),e.publication&&e.publication.length>0){let n=h.unwrapList(e.publication).map(i=>this.visit(i,r));t.push(n.join(", "));}if(e.options&&e.options.length>0){t.push("WITH");let n=h.unwrapList(e.options).map(i=>this.visit(i,r));t.push(`(${n.join(", ")})`);}return t.join(" ")}AlterPublicationStmt(e,r){let t=["ALTER","PUBLICATION"];if(e.pubname&&t.push(S.quoteIdentifier(e.pubname)),e.action)switch(e.action){case "AP_AddObjects":t.push("ADD");break;case "AP_DropObjects":t.push("DROP");break;case "AP_SetObjects":t.push("SET");break;default:throw new Error(`Unsupported AlterPublicationStmt action: ${e.action}`)}if(e.for_all_tables)t.push("FOR ALL TABLES");else if(e.pubobjects&&e.pubobjects.length>0){t.push("FOR TABLE");let n=h.unwrapList(e.pubobjects).map(i=>this.visit(i,r));t.push(n.join(", "));}if(e.options&&e.options.length>0){t.push("WITH");let n=h.unwrapList(e.options).map(i=>this.visit(i,r));t.push(`(${n.join(", ")})`);}return t.join(" ")}AlterSubscriptionStmt(e,r){let t=["ALTER","SUBSCRIPTION"];if(e.subname&&t.push(S.quoteIdentifier(e.subname)),e.kind)switch(e.kind){case "ALTER_SUBSCRIPTION_OPTIONS":t.push("SET");break;case "ALTER_SUBSCRIPTION_CONNECTION":t.push("CONNECTION"),e.conninfo&&t.push(`'${e.conninfo}'`);break;case "ALTER_SUBSCRIPTION_SET_PUBLICATION":if(t.push("SET PUBLICATION"),e.publication&&e.publication.length>0){let n=h.unwrapList(e.publication).map(i=>this.visit(i,r));t.push(n.join(", "));}break;case "ALTER_SUBSCRIPTION_REFRESH":t.push("REFRESH PUBLICATION");break;case "ALTER_SUBSCRIPTION_ENABLED":t.push("ENABLE");break;case "ALTER_SUBSCRIPTION_SKIP":t.push("SKIP");break;default:throw new Error(`Unsupported AlterSubscriptionStmt kind: ${e.kind}`)}if(e.options&&e.options.length>0){t.push("WITH");let n=h.unwrapList(e.options).map(i=>this.visit(i,r));t.push(`(${n.join(", ")})`);}return t.join(" ")}DropSubscriptionStmt(e,r){let t=["DROP","SUBSCRIPTION"];if(e.missing_ok&&t.push("IF EXISTS"),e.subname&&t.push(S.quoteIdentifier(e.subname)),e.behavior)switch(e.behavior){case "DROP_CASCADE":t.push("CASCADE");break;case "DROP_RESTRICT":t.push("RESTRICT");break}return t.join(" ")}DoStmt(e,r){let t=["DO"];if(e.args&&e.args.length>0){let n=r.spawn("DoStmt"),i=h.unwrapList(e.args),a=[];for(let o of i)if(this.getNodeType(o)==="DefElem"){let u=this.getNodeData(o);if(u.defname==="language"){let p=this.visit(u.arg,n);a.push(`LANGUAGE ${p}`);}else if(u.defname==="as")if(this.getNodeType(u.arg)==="String"){let c=this.getNodeData(u.arg),f=this.getFunctionDelimiter(c.sval);a.push(`${f}${c.sval}${f}`);}else a.push(this.visit(u.arg,n));}t.push(...a);}return t.join(" ")}generateUniqueDollarTag(e){let r=/\$[a-zA-Z0-9_]*\$/g,t=e.match(r)||[];if(t.length===0)return "$$";let n=new Set(t);if(n.has("$$")){let i=1,a=`$do${i}$`;for(;n.has(a);)i++,a=`$do${i}$`;return a}return "$$"}InlineCodeBlock(e,r){if(e.source_text){let n=this.getFunctionDelimiter(e.source_text);return `${n}${e.source_text}${n}`}let t=this.options.functionDelimiter||"$$";return `${t}${t}`}CallContext(e,r){return e.atomic!==void 0?e.atomic?"ATOMIC":"NOT ATOMIC":""}ConstraintsSetStmt(e,r){let t=["SET","CONSTRAINTS"];if(e.constraints&&e.constraints.length>0){let n=h.unwrapList(e.constraints).map(i=>this.visit(i,r));t.push(n.join(", "));}else t.push("ALL");return t.push(e.deferred?"DEFERRED":"IMMEDIATE"),t.join(" ")}AlterSystemStmt(e,r){let t=["ALTER","SYSTEM"];if(e.setstmt){let i=this.VariableSetStmt(e.setstmt,r).replace(/^SET\s+/,"");t.push("SET",i);}return t.join(" ")}VacuumRelation(e,r){let t=[];if(e.relation&&t.push(this.RangeVar(e.relation,r)),e.va_cols&&e.va_cols.length>0){t.push("(");let n=h.unwrapList(e.va_cols).map(i=>this.visit(i,r));t.push(n.join(", ")),t.push(")");}return t.join(" ")}DropOwnedStmt(e,r){let t=["DROP","OWNED","BY"];if(e.roles&&e.roles.length>0){let n=h.unwrapList(e.roles).map(i=>this.visit(i,r));t.push(n.join(", "));}if(e.behavior)switch(e.behavior){case "DROP_CASCADE":t.push("CASCADE");break;case "DROP_RESTRICT":t.push("RESTRICT");break}return t.join(" ")}ReassignOwnedStmt(e,r){let t=["REASSIGN","OWNED","BY"];if(e.roles&&e.roles.length>0){let n=h.unwrapList(e.roles).map(i=>this.visit(i,r));t.push(n.join(", "));}return t.push("TO"),e.newrole&&t.push(this.RoleSpec(e.newrole,r)),t.join(" ")}AlterTSDictionaryStmt(e,r){let t=["ALTER","TEXT","SEARCH","DICTIONARY"];if(e.dictname&&e.dictname.length>0){let n=h.unwrapList(e.dictname).map(i=>this.visit(i,r));t.push(n.join("."));}if(e.options&&e.options.length>0){t.push("(");let n=h.unwrapList(e.options).map(i=>this.visit(i,r));t.push(n.join(", ")),t.push(")");}return t.join(" ")}AlterTSConfigurationStmt(e,r){let t=["ALTER","TEXT","SEARCH","CONFIGURATION"];if(e.cfgname&&e.cfgname.length>0){let n=h.unwrapList(e.cfgname).map(i=>this.visit(i,r));t.push(n.join("."));}if(e.kind)switch(e.kind){case "ALTER_TSCONFIG_ADD_MAPPING":if(t.push("ADD","MAPPING","FOR"),e.tokentype&&e.tokentype.length>0){let n=h.unwrapList(e.tokentype).map(i=>this.visit(i,r));t.push(n.join(", "));}if(e.dicts&&e.dicts.length>0){t.push("WITH");let n=h.unwrapList(e.dicts).map(i=>i.List&&i.List.items?h.unwrapList(i.List.items).map(a=>this.visit(a,r)).join("."):this.visit(i,r));t.push(n.join(", "));}break;case "ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN":if(t.push("ALTER","MAPPING","FOR"),e.tokentype&&e.tokentype.length>0){let n=h.unwrapList(e.tokentype).map(i=>this.visit(i,r));t.push(n.join(", "));}if(e.dicts&&e.dicts.length>0){t.push("WITH");let n=h.unwrapList(e.dicts).map(i=>i.List&&i.List.items?h.unwrapList(i.List.items).map(a=>this.visit(a,r)).join("."):this.visit(i,r));t.push(n.join(", "));}break;case "ALTER_TSCONFIG_REPLACE_DICT":if(t.push("ALTER","MAPPING","REPLACE"),e.dicts&&e.dicts.length>=2){let n=h.unwrapList(e.dicts).map(i=>i.List&&i.List.items?h.unwrapList(i.List.items).map(a=>this.visit(a,r)).join("."):this.visit(i,r));t.push(n[0],"WITH",n.slice(1).join(", "));}break;case "ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN":if(t.push("ALTER","MAPPING","FOR"),e.tokentype&&e.tokentype.length>0){let n=h.unwrapList(e.tokentype).map(i=>this.visit(i,r));t.push(n.join(", "));}if(e.dicts&&e.dicts.length>=2){t.push("REPLACE");let n=h.unwrapList(e.dicts).map(i=>i.List&&i.List.items?h.unwrapList(i.List.items).map(a=>this.visit(a,r)).join("."):this.visit(i,r));t.push(n[0],"WITH",n.slice(1).join(", "));}break;case "ALTER_TSCONFIG_DROP_MAPPING":if(t.push("DROP","MAPPING","FOR"),e.tokentype&&e.tokentype.length>0){let n=h.unwrapList(e.tokentype).map(i=>this.visit(i,r));t.push(n.join(", "));}break;default:throw new Error(`Unsupported AlterTSConfigurationStmt kind: ${e.kind}`)}return t.join(" ")}ClosePortalStmt(e,r){let t=["CLOSE"];return e.portalname?t.push(S.quoteIdentifier(e.portalname)):t.push("ALL"),t.join(" ")}FetchStmt(e,r){let t=[e.ismove?"MOVE":"FETCH"],n=e.howMany===9223372036854776e3;if(e.direction)switch(e.direction){case "FETCH_FORWARD":n?t.push("FORWARD","ALL"):e.howMany!==void 0&&e.howMany!==null?t.push("FORWARD",e.howMany.toString()):t.push("FORWARD");break;case "FETCH_BACKWARD":n?t.push("BACKWARD","ALL"):e.howMany!==void 0&&e.howMany!==null?t.push("BACKWARD",e.howMany.toString()):t.push("BACKWARD");break;case "FETCH_ABSOLUTE":e.howMany!==void 0&&e.howMany!==null&&t.push("ABSOLUTE",e.howMany.toString());break;case "FETCH_RELATIVE":e.howMany!==void 0&&e.howMany!==null?t.push("RELATIVE",e.howMany.toString()):t.push("RELATIVE","0");break;default:throw new Error(`Unsupported FetchStmt direction: ${e.direction}`)}else n&&t.push("ALL");return e.portalname&&t.push(S.quoteIdentifier(e.portalname)),t.join(" ")}AlterStatsStmt(e,r){let t=["ALTER","STATISTICS"];if(e.defnames&&e.defnames.length>0){let n=h.unwrapList(e.defnames).map(i=>this.visit(i,r));t.push(n.join("."));}return t.push("SET","STATISTICS"),e.stxstattarget&&t.push(this.visit(e.stxstattarget,r)),t.join(" ")}ObjectWithArgs(e,r){let t="";if(e.objname&&e.objname.length>0){let n=r.spawn("ObjectWithArgs");t=h.unwrapList(e.objname).map(a=>this.visit(a,n)).join(".");}if(e.objfuncargs&&e.objfuncargs.length>0){let n=h.unwrapList(e.objfuncargs).map(i=>this.visit(i,r));t+=`(${n.join(", ")})`;}else if(e.objargs&&e.objargs.length>0){let n=h.unwrapList(e.objargs).map(i=>!i||Object.keys(i).length===0?"NONE":this.visit(i,r));t+=`(${n.join(", ")})`;}else e.args_unspecified||((r.parentNodeTypes.includes("CommentStmt")||r.parentNodeTypes.includes("DropStmt"))&&r.objtype==="OBJECT_AGGREGATE"?t+="(*)":r.parentNodeTypes.includes("CreateOpClassItem")||(t+="()"));return t}AlterOperatorStmt(e,r){let t=["ALTER","OPERATOR"];if(e.opername&&t.push(this.ObjectWithArgs(e.opername,r)),t.push("SET"),e.options&&e.options.length>0){let n=r.spawn("AlterOperatorStmt"),i=h.unwrapList(e.options).map(a=>this.visit(a,n));t.push(`(${i.join(", ")})`);}return t.join(" ")}AlterFdwStmt(e,r){let t=["ALTER","FOREIGN","DATA","WRAPPER"];if(e.fdwname&&t.push(S.quoteIdentifier(e.fdwname)),e.func_options&&e.func_options.length>0){let n=r.spawn("AlterFdwStmt"),i=h.unwrapList(e.func_options).map(a=>this.visit(a,n));t.push(i.join(" "));}if(e.options&&e.options.length>0){t.push("OPTIONS");let n=r.spawn("AlterFdwStmt"),i=h.unwrapList(e.options).map(a=>this.visit(a,n));t.push(`(${i.join(", ")})`);}return t.join(" ")}CreateForeignServerStmt(e,r){let t=["CREATE","SERVER"];if(e.if_not_exists&&t.push("IF","NOT","EXISTS"),e.servername&&t.push(S.quoteIdentifier(e.servername)),e.servertype&&t.push("TYPE",S.escape(e.servertype)),e.version&&t.push("VERSION",S.escape(e.version)),e.fdwname&&t.push("FOREIGN","DATA","WRAPPER",S.quoteIdentifier(e.fdwname)),e.options&&e.options.length>0){t.push("OPTIONS"),t.push("(");let n=r.spawn("CreateForeignServerStmt"),i=h.unwrapList(e.options).map(a=>this.visit(a,n));t.push(i.join(", ")),t.push(")");}return t.join(" ")}AlterForeignServerStmt(e,r){let t=["ALTER","SERVER"];if(e.servername&&t.push(S.quoteIdentifier(e.servername)),e.version&&t.push("VERSION",S.escape(e.version)),e.options&&e.options.length>0){t.push("OPTIONS"),t.push("(");let n=r.spawn("AlterForeignServerStmt"),i=h.unwrapList(e.options).map(a=>this.visit(a,n));t.push(i.join(", ")),t.push(")");}return t.join(" ")}AlterUserMappingStmt(e,r){let t=["ALTER","USER","MAPPING","FOR"];if(e.user?t.push(this.RoleSpec(e.user,r)):t.push("CURRENT_USER"),t.push("SERVER"),e.servername&&t.push(S.quoteIdentifier(e.servername)),e.options&&e.options.length>0){t.push("OPTIONS");let n=r.spawn("AlterUserMappingStmt"),i=h.unwrapList(e.options).map(a=>this.visit(a,n));t.push(`(${i.join(", ")})`);}return t.join(" ")}DropUserMappingStmt(e,r){let t=["DROP","USER","MAPPING"];return e.missing_ok&&t.push("IF","EXISTS"),t.push("FOR"),e.user?t.push(this.RoleSpec(e.user,r)):t.push("CURRENT_USER"),t.push("SERVER"),e.servername&&t.push(S.quoteIdentifier(e.servername)),t.join(" ")}ImportForeignSchemaStmt(e,r){let t=["IMPORT","FOREIGN","SCHEMA"];if(e.remote_schema&&t.push(S.quoteIdentifier(e.remote_schema)),e.list_type)switch(e.list_type){case "FDW_IMPORT_SCHEMA_ALL":break;case "FDW_IMPORT_SCHEMA_LIMIT_TO":if(t.push("LIMIT","TO"),e.table_list&&e.table_list.length>0){let n=h.unwrapList(e.table_list).map(i=>this.visit(i,r));t.push(`(${n.join(", ")})`);}break;case "FDW_IMPORT_SCHEMA_EXCEPT":if(t.push("EXCEPT"),e.table_list&&e.table_list.length>0){let n=h.unwrapList(e.table_list).map(i=>this.visit(i,r));t.push(`(${n.join(", ")})`);}break;default:throw new Error(`Unsupported ImportForeignSchemaStmt list_type: ${e.list_type}`)}if(t.push("FROM","SERVER"),e.server_name&&t.push(S.quoteIdentifier(e.server_name)),t.push("INTO"),e.local_schema&&t.push(S.quoteIdentifier(e.local_schema)),e.options&&e.options.length>0){let n=r.spawn("ImportForeignSchemaStmt"),i=h.unwrapList(e.options).map(a=>this.visit(a,n));t.push(`OPTIONS (${i.join(", ")})`);}return t.join(" ")}ClusterStmt(e,r){let t=["CLUSTER"];if(e.relation&&(t.push(this.RangeVar(e.relation,r)),e.indexname&&t.push("USING",S.quoteIdentifier(e.indexname))),e.params&&e.params.length>0){let n=h.unwrapList(e.params).map(i=>this.visit(i,r));t.push(`(${n.join(", ")})`);}return t.join(" ")}VacuumStmt(e,r){let t=[e.is_vacuumcmd?"VACUUM":"ANALYZE"];if(e.options&&e.options.length>0){let n=h.unwrapList(e.options).map(i=>this.visit(i,r));t.push(`(${n.join(", ")})`);}if(e.rels&&e.rels.length>0){let n=h.unwrapList(e.rels).map(i=>this.visit(i,r));t.push(n.join(", "));}return t.join(" ")}ExplainStmt(e,r){let t=["EXPLAIN"];if(e.options&&e.options.length>0){let n=r.spawn("ExplainStmt"),i=h.unwrapList(e.options).map(a=>this.visit(a,n));t.push(`(${i.join(", ")})`);}return e.query&&t.push(this.visit(e.query,r)),t.join(" ")}ReindexStmt(e,r){let t=["REINDEX"];if(e.params&&e.params.length>0){let n=h.unwrapList(e.params).map(i=>this.visit(i,r));t.push(`(${n.join(", ")})`);}if(e.kind)switch(e.kind){case "REINDEX_OBJECT_INDEX":t.push("INDEX");break;case "REINDEX_OBJECT_TABLE":t.push("TABLE");break;case "REINDEX_OBJECT_SCHEMA":t.push("SCHEMA");break;case "REINDEX_OBJECT_SYSTEM":t.push("SYSTEM");break;case "REINDEX_OBJECT_DATABASE":t.push("DATABASE");break;default:throw new Error(`Unsupported ReindexStmt kind: ${e.kind}`)}return e.relation&&t.push(this.RangeVar(e.relation,r)),e.name&&t.push(S.quoteIdentifier(e.name)),t.join(" ")}CallStmt(e,r){let t=["CALL"];if(e.funccall){let n=e.funccall;if(n.funcname&&n.funcname.length>0){let a=n.funcname.map(l=>l.String?l.String.sval:this.visit(l,r)).join("."),o="";n.args&&n.args.length>0?o=`(${n.args.map(u=>this.visit(u,r)).join(", ")})`:o="()",t.push(`${a}${o}`);}}else if(e.funcexpr)t.push(this.FuncExpr(e.funcexpr,r));else throw new Error("CallStmt requires either funccall or funcexpr");return t.join(" ")}CreatedbStmt(e,r){let t=["CREATE DATABASE"];if(!e.dbname)throw new Error("CreatedbStmt requires dbname");if(t.push(S.quoteIdentifier(e.dbname)),e.options&&e.options.length>0){let n=h.unwrapList(e.options).map(i=>this.visit(i,r)).join(" ");t.push("WITH",n);}return t.join(" ")}DropdbStmt(e,r){let t=["DROP DATABASE"];if(e.missing_ok&&t.push("IF EXISTS"),!e.dbname)throw new Error("DropdbStmt requires dbname");if(t.push(S.quoteIdentifier(e.dbname)),e.options&&e.options.length>0){let n=h.unwrapList(e.options).map(i=>this.visit(i,r)).join(" ");t.push("WITH",n);}return t.join(" ")}RenameStmt(e,r){let t=["ALTER"];if(!e.renameType)throw new Error("RenameStmt requires renameType");switch(e.renameType){case "OBJECT_TABLE":t.push("TABLE");break;case "OBJECT_VIEW":t.push("VIEW");break;case "OBJECT_INDEX":t.push("INDEX");break;case "OBJECT_SEQUENCE":t.push("SEQUENCE");break;case "OBJECT_FUNCTION":t.push("FUNCTION");break;case "OBJECT_PROCEDURE":t.push("PROCEDURE");break;case "OBJECT_SCHEMA":t.push("SCHEMA");break;case "OBJECT_DATABASE":t.push("DATABASE");break;case "OBJECT_COLUMN":e.relationType==="OBJECT_FOREIGN_TABLE"?t.push("FOREIGN TABLE"):e.relationType==="OBJECT_VIEW"?t.push("VIEW"):t.push("TABLE");break;case "OBJECT_DOMAIN":t.push("DOMAIN");break;case "OBJECT_TYPE":t.push("TYPE");break;case "OBJECT_DOMCONSTRAINT":t.push("DOMAIN");break;case "OBJECT_TABCONSTRAINT":t.push("TABLE");break;case "OBJECT_AGGREGATE":t.push("AGGREGATE");break;case "OBJECT_COLLATION":t.push("COLLATION");break;case "OBJECT_CONVERSION":t.push("CONVERSION");break;case "OBJECT_EXTENSION":t.push("EXTENSION");break;case "OBJECT_FOREIGN_SERVER":t.push("SERVER");break;case "OBJECT_FOREIGN_TABLE":t.push("FOREIGN TABLE");break;case "OBJECT_LANGUAGE":t.push("LANGUAGE");break;case "OBJECT_MATVIEW":t.push("MATERIALIZED VIEW");break;case "OBJECT_OPCLASS":t.push("OPERATOR CLASS");break;case "OBJECT_OPERATOR":t.push("OPERATOR");break;case "OBJECT_OPFAMILY":t.push("OPERATOR FAMILY");break;case "OBJECT_POLICY":t.push("POLICY"),e.subname&&t.push(S.quoteIdentifier(e.subname));break;case "OBJECT_PUBLICATION":t.push("PUBLICATION");break;case "OBJECT_ROLE":t.push("ROLE");break;case "OBJECT_RULE":t.push("RULE");break;case "OBJECT_SUBSCRIPTION":t.push("SUBSCRIPTION");break;case "OBJECT_TABLESPACE":t.push("TABLESPACE");break;case "OBJECT_TRIGGER":t.push("TRIGGER");break;case "OBJECT_TSCONFIGURATION":t.push("TEXT SEARCH CONFIGURATION");break;case "OBJECT_TSDICTIONARY":t.push("TEXT SEARCH DICTIONARY");break;case "OBJECT_TSPARSER":t.push("TEXT SEARCH PARSER");break;case "OBJECT_TSTEMPLATE":t.push("TEXT SEARCH TEMPLATE");break;case "OBJECT_FDW":t.push("FOREIGN DATA WRAPPER");break;case "OBJECT_EVENT_TRIGGER":t.push("EVENT TRIGGER");break;case "OBJECT_ATTRIBUTE":e.relationType==="OBJECT_TYPE"?t.push("TYPE"):t.push("TABLE");break;case "OBJECT_ROUTINE":t.push("ROUTINE");break;default:throw new Error(`Unsupported RenameStmt renameType: ${e.renameType}`)}if(e.missing_ok&&t.push("IF EXISTS"),e.renameType==="OBJECT_RULE"&&e.subname&&e.relation)t.push(S.quoteIdentifier(e.subname)),t.push("ON"),t.push(this.RangeVar(e.relation,r));else if(e.relation){let n=r.spawn("RenameStmt",{objtype:e.relationType});e.renameType==="OBJECT_POLICY"&&t.push("ON"),t.push(this.RangeVar(e.relation,n));}else if(e.object)if((e.renameType==="OBJECT_OPFAMILY"||e.renameType==="OBJECT_OPCLASS")&&e.object.List){let n=h.unwrapList(e.object);if(n.length===2){let i=n[0].String?.sval||"",a=n[1].String?.sval||"";t.push(`${S.quoteIdentifier(a)} USING ${i}`);}else t.push(this.visit(e.object,r));}else if(e.renameType==="OBJECT_SCHEMA"&&e.object.List){let n=h.unwrapList(e.object);n.length>0&&n[0].String?t.push(this.quoteIfNeeded(n[0].String.sval)):t.push(this.visit(e.object,r));}else t.push(this.visit(e.object,r));if(e.renameType==="OBJECT_COLUMN"&&e.subname?t.push("RENAME COLUMN",S.quoteIdentifier(e.subname),"TO"):e.renameType==="OBJECT_DOMCONSTRAINT"&&e.subname?t.push("RENAME CONSTRAINT",S.quoteIdentifier(e.subname),"TO"):e.renameType==="OBJECT_TABCONSTRAINT"&&e.subname?t.push("RENAME CONSTRAINT",S.quoteIdentifier(e.subname),"TO"):e.renameType==="OBJECT_ATTRIBUTE"&&e.subname?t.push("RENAME ATTRIBUTE",S.quoteIdentifier(e.subname),"TO"):e.renameType==="OBJECT_ROLE"&&e.subname?t.push(S.quoteIdentifier(e.subname),"RENAME TO"):e.renameType==="OBJECT_SCHEMA"&&e.subname?t.push(this.quoteIfNeeded(e.subname),"RENAME TO"):(e.renameType,t.push("RENAME TO")),!e.newname)throw new Error("RenameStmt requires newname");return t.push(S.quoteIdentifier(e.newname)),e.behavior==="DROP_CASCADE"&&t.push("CASCADE"),t.join(" ")}AlterOwnerStmt(e,r){let t=["ALTER"];if(!e.objectType)throw new Error("AlterOwnerStmt requires objectType");if(t.push(this.getObjectTypeKeyword(e.objectType)),e.relation)t.push(this.RangeVar(e.relation,r));else if(e.object)if((e.objectType==="OBJECT_OPFAMILY"||e.objectType==="OBJECT_OPCLASS")&&e.object.List){let n=h.unwrapList(e.object);if(n.length===2){let i=n[0].String?.sval||"",a=n[1].String?.sval||"";t.push(`${S.quoteIdentifier(a)} USING ${i}`);}else t.push(this.visit(e.object,r));}else t.push(this.visit(e.object,r));if(t.push("OWNER TO"),!e.newowner)throw new Error("AlterOwnerStmt requires newowner");return t.push(this.RoleSpec(e.newowner,r)),t.join(" ")}GrantStmt(e,r){let t=[];if(e.is_grant?t.push("GRANT"):(t.push("REVOKE"),e.grant_option&&t.push("GRANT OPTION FOR")),e.privileges&&e.privileges.length>0){let n=r.spawn("GrantStmt"),i=h.unwrapList(e.privileges).map(a=>this.visit(a,n)).join(", ");t.push(i);}else t.push("ALL");if(t.push("ON"),e.objtype&&e.targtype==="ACL_TARGET_DEFAULTS")switch(e.objtype){case "OBJECT_TABLE":t.push("TABLES");break;case "OBJECT_SEQUENCE":t.push("SEQUENCES");break;case "OBJECT_FUNCTION":t.push("FUNCTIONS");break;case "OBJECT_PROCEDURE":t.push("PROCEDURES");break;case "OBJECT_ROUTINE":t.push("ROUTINES");break;case "OBJECT_TYPE":t.push("TYPES");break;case "OBJECT_SCHEMA":t.push("SCHEMAS");break;}switch(e.targtype){case "ACL_TARGET_OBJECT":if(e.objtype==="OBJECT_SCHEMA"?t.push("SCHEMA"):e.objtype==="OBJECT_LANGUAGE"?t.push("LANGUAGE"):e.objtype==="OBJECT_FUNCTION"?t.push("FUNCTION"):e.objtype==="OBJECT_PROCEDURE"?t.push("PROCEDURE"):e.objtype==="OBJECT_TYPE"?t.push("TYPE"):e.objtype==="OBJECT_DOMAIN"?t.push("DOMAIN"):e.objtype==="OBJECT_LARGEOBJECT"?t.push("LARGE OBJECT"):e.objtype==="OBJECT_FDW"?t.push("FOREIGN","DATA","WRAPPER"):e.objtype==="OBJECT_FOREIGN_SERVER"?t.push("FOREIGN","SERVER"):e.objtype==="OBJECT_DATABASE"&&t.push("DATABASE"),e.objects&&e.objects.length>0){let n=h.unwrapList(e.objects).map(i=>this.visit(i,r)).join(", ");t.push(n);}break;case "ACL_TARGET_ALL_IN_SCHEMA":switch(e.objtype){case "OBJECT_TABLE":t.push("ALL TABLES IN SCHEMA");break;case "OBJECT_SEQUENCE":t.push("ALL SEQUENCES IN SCHEMA");break;case "OBJECT_FUNCTION":t.push("ALL FUNCTIONS IN SCHEMA");break;case "OBJECT_PROCEDURE":t.push("ALL PROCEDURES IN SCHEMA");break;case "OBJECT_ROUTINE":t.push("ALL ROUTINES IN SCHEMA");break;case "OBJECT_TYPE":t.push("ALL TYPES IN SCHEMA");break;default:t.push("ALL TABLES IN SCHEMA");break}if(e.objects&&e.objects.length>0){let n=h.unwrapList(e.objects).map(i=>this.visit(i,r)).join(", ");t.push(n);}break;default:if(e.objects&&e.objects.length>0){let n=h.unwrapList(e.objects).map(i=>this.visit(i,r)).join(", ");t.push(n);}}if(e.is_grant?t.push("TO"):t.push("FROM"),e.grantees&&e.grantees.length>0){let n=h.unwrapList(e.grantees).map(i=>this.visit(i,r)).join(", ");t.push(n);}return e.grant_option&&e.is_grant&&t.push("WITH GRANT OPTION"),e.is_grant||(e.behavior==="DROP_CASCADE"?t.push("CASCADE"):e.behavior==="DROP_RESTRICT"&&t.push("RESTRICT")),t.join(" ")}GrantRoleStmt(e,r){let t=[],n=false,i=false,a=false,o,l,u;if(e.opt&&e.opt.length>0){let p=h.unwrapList(e.opt),c=p.find(d=>d.DefElem&&d.DefElem.defname==="inherit"),f=p.find(d=>d.String&&d.String.sval==="admin"||d.DefElem&&d.DefElem.defname==="admin"),m=p.find(d=>d.DefElem&&d.DefElem.defname==="set");c&&c.DefElem&&(n=true,o=c.DefElem.arg?.Boolean?.boolval),f&&(i=true,f.DefElem&&f.DefElem.arg&&(l=f.DefElem.arg.Boolean?.boolval)),m&&m.DefElem&&(a=true,u=m.DefElem.arg?.Boolean?.boolval);}if(e.is_grant?t.push("GRANT"):(t.push("REVOKE"),n?t.push("INHERIT OPTION FOR"):i&&t.push("ADMIN OPTION FOR")),e.granted_roles&&e.granted_roles.length>0){let p=h.unwrapList(e.granted_roles).map(c=>this.visit(c,r)).join(", ");t.push(p);}if(e.is_grant?t.push("TO"):t.push("FROM"),e.grantee_roles&&e.grantee_roles.length>0){let p=h.unwrapList(e.grantee_roles).map(c=>this.visit(c,r)).join(", ");t.push(p);}if(e.is_grant){let p=[];i&&(l===true?p.push("ADMIN OPTION"):l===false?p.push("ADMIN FALSE"):p.push("ADMIN OPTION")),n&&(o===true?p.push("INHERIT OPTION"):o===false&&p.push("INHERIT FALSE")),a&&(u===true?p.push("SET TRUE"):u===false&&p.push("SET FALSE")),p.length>0&&t.push("WITH",p.join(", "));}return t.join(" ")}SecLabelStmt(e,r){let t=["SECURITY LABEL"];if(e.provider&&t.push("FOR",S.quoteIdentifier(e.provider)),t.push("ON"),e.objtype)switch(e.objtype){case "OBJECT_TABLE":t.push("TABLE");break;case "OBJECT_COLUMN":t.push("COLUMN");break;case "OBJECT_FUNCTION":t.push("FUNCTION");break;case "OBJECT_SCHEMA":t.push("SCHEMA");break;case "OBJECT_DATABASE":t.push("DATABASE");break;case "OBJECT_ROLE":t.push("ROLE");break;default:t.push(e.objtype.replace("OBJECT_",""));}return e.object&&t.push(this.visit(e.object,r)),t.push("IS"),e.label?t.push(`'${e.label}'`):t.push("NULL"),t.join(" ")}AlterDefaultPrivilegesStmt(e,r){let t=["ALTER DEFAULT PRIVILEGES"];if(e.options&&e.options.length>0){let n=h.unwrapList(e.options);for(let i of n){let a=this.getNodeData(i);if(a.defname==="schemas"){if(t.push("IN SCHEMA"),a.arg){let o=h.unwrapList(a.arg).map(l=>this.visit(l,r)).join(", ");t.push(o);}}else if(a.defname==="roles"&&(t.push("FOR ROLE"),a.arg)){let o=h.unwrapList(a.arg).map(l=>this.visit(l,r)).join(", ");t.push(o);}}}if(e.action){let n=this.GrantStmt(e.action,r);if(r.isPretty())return t.join(" ")+r.newline()+r.indent(n);t.push(n);}return t.join(" ")}CreateConversionStmt(e,r){let t=["CREATE"];if(e.def&&t.push("DEFAULT"),t.push("CONVERSION"),e.conversion_name&&e.conversion_name.length>0){let n=h.unwrapList(e.conversion_name).map(i=>this.visit(i,r)).join(".");t.push(n);}if(e.for_encoding_name&&t.push("FOR",`'${e.for_encoding_name}'`),e.to_encoding_name&&t.push("TO",`'${e.to_encoding_name}'`),e.func_name&&e.func_name.length>0){t.push("FROM");let n=h.unwrapList(e.func_name).map(i=>this.visit(i,r)).join(".");t.push(n);}return t.join(" ")}CreateCastStmt(e,r){let t=["CREATE CAST"];if(t.push("("),e.sourcetype&&t.push(this.TypeName(e.sourcetype,r)),t.push("AS"),e.targettype&&t.push(this.TypeName(e.targettype,r)),t.push(")"),e.func?(t.push("WITH FUNCTION"),t.push(this.ObjectWithArgs(e.func,r))):e.inout?t.push("WITH INOUT"):t.push("WITHOUT FUNCTION"),e.context)switch(e.context){case "COERCION_IMPLICIT":t.push("AS IMPLICIT");break;case "COERCION_ASSIGNMENT":t.push("AS ASSIGNMENT");break;case "COERCION_EXPLICIT":break;default:throw new Error(`Unsupported CreateCastStmt context: ${e.context}`)}else e.context==="COERCION_ASSIGNMENT"&&t.push("AS ASSIGNMENT");return t.join(" ")}CreatePLangStmt(e,r){let t=["CREATE"];if(e.replace&&t.push("OR REPLACE"),e.pltrusted&&t.push("TRUSTED"),t.push("LANGUAGE"),e.plname&&t.push(S.quoteIdentifier(e.plname)),e.plhandler&&e.plhandler.length>0){t.push("HANDLER");let n=h.unwrapList(e.plhandler).map(i=>this.visit(i,r)).join(".");t.push(n);}if(e.plinline&&e.plinline.length>0){t.push("INLINE");let n=h.unwrapList(e.plinline).map(i=>this.visit(i,r)).join(".");t.push(n);}if(e.plvalidator&&e.plvalidator.length>0){t.push("VALIDATOR");let n=h.unwrapList(e.plvalidator).map(i=>this.visit(i,r)).join(".");t.push(n);}return t.join(" ")}CreateTransformStmt(e,r){let t=["CREATE"];e.replace&&t.push("OR REPLACE"),t.push("TRANSFORM FOR"),e.type_name&&t.push(this.TypeName(e.type_name,r)),t.push("LANGUAGE"),e.lang&&t.push(S.quoteIdentifier(e.lang)),t.push("(");let n=[];if(e.fromsql){let i=this.ObjectWithArgs(e.fromsql,r);n.push(`FROM SQL WITH FUNCTION ${i}`);}if(e.tosql){let i=this.ObjectWithArgs(e.tosql,r);n.push(`TO SQL WITH FUNCTION ${i}`);}return t.push(n.join(", ")),t.push(")"),t.join(" ")}CreateTrigStmt(e,r){let t=["CREATE"];if(e.replace&&t.push("OR REPLACE"),e.isconstraint&&t.push("CONSTRAINT"),t.push("TRIGGER"),e.trigname&&t.push(S.quoteIdentifier(e.trigname)),r.isPretty()){let n=[],i=[];e.timing&2?i.push("BEFORE"):e.timing&64?i.push("INSTEAD OF"):i.push("AFTER");let a=[];if(e.events&4&&a.push("INSERT"),e.events&8&&a.push("DELETE"),e.events&16){let l="UPDATE";if(e.columns&&e.columns.length>0){let u=h.unwrapList(e.columns).map(p=>this.visit(p,r)).join(", ");l+=" OF "+u;}a.push(l);}if(e.events&32&&a.push("TRUNCATE"),n.push(r.indent(i.join(" ")+" "+a.join(" OR "))),e.relation&&n.push(r.indent("ON "+this.RangeVar(e.relation,r))),e.transitionRels&&e.transitionRels.length>0){let l=h.unwrapList(e.transitionRels).map(u=>this.visit(u,r)).join(" ");n.push(r.indent("REFERENCING "+l));}if(e.deferrable&&n.push(r.indent("DEFERRABLE")),e.initdeferred&&n.push(r.indent("INITIALLY DEFERRED")),e.row?n.push(r.indent("FOR EACH ROW")):n.push(r.indent("FOR EACH STATEMENT")),e.whenClause){let l="WHEN ("+this.visit(e.whenClause,r)+")";n.push(r.indent(l));}let o="EXECUTE";if(e.funcname&&e.funcname.length>0){let l=h.unwrapList(e.funcname).map(u=>this.visit(u,r)).join(".");o+=" PROCEDURE "+l;}if(e.args&&e.args.length>0){let l=r.spawn("CreateTrigStmt",{isStringLiteral:true}),u=h.unwrapList(e.args).map(p=>this.visit(p,l)).join(", ");o+="("+u+")";}else o+="()";return n.push(r.indent(o)),t.join(" ")+r.newline()+n.join(r.newline())}else {let n=[];e.timing&2?n.push("BEFORE"):e.timing&64?n.push("INSTEAD OF"):n.push("AFTER"),t.push(n.join(" "));let i=[];if(e.events&4&&i.push("INSERT"),e.events&8&&i.push("DELETE"),e.events&16&&i.push("UPDATE"),e.events&32&&i.push("TRUNCATE"),t.push(i.join(" OR ")),e.columns&&e.columns.length>0){t.push("OF");let a=h.unwrapList(e.columns).map(o=>this.visit(o,r)).join(", ");t.push(a);}if(t.push("ON"),e.relation&&t.push(this.RangeVar(e.relation,r)),e.constrrel&&(t.push("FROM"),t.push(this.RangeVar(e.constrrel,r))),e.deferrable&&t.push("DEFERRABLE"),e.initdeferred&&t.push("INITIALLY DEFERRED"),e.transitionRels&&e.transitionRels.length>0){t.push("REFERENCING");let a=h.unwrapList(e.transitionRels).map(o=>this.visit(o,r)).join(" ");t.push(a);}if(e.row?t.push("FOR EACH ROW"):t.push("FOR EACH STATEMENT"),e.whenClause&&(t.push("WHEN"),t.push("("),t.push(this.visit(e.whenClause,r)),t.push(")")),t.push("EXECUTE"),e.funcname&&e.funcname.length>0){let a=h.unwrapList(e.funcname).map(o=>this.visit(o,r)).join(".");t.push("FUNCTION",a);}if(e.args&&e.args.length>0){t.push("(");let a=r.spawn("CreateTrigStmt",{isStringLiteral:true}),o=h.unwrapList(e.args).map(l=>this.visit(l,a)).join(", ");t.push(o),t.push(")");}else t.push("()");return t.join(" ")}}TriggerTransition(e,r){let t=[];return e.isNew?t.push("NEW TABLE AS"):t.push("OLD TABLE AS"),e.name&&t.push(S.quoteIdentifier(e.name)),t.join(" ")}CreateEventTrigStmt(e,r){let t=["CREATE EVENT TRIGGER"];if(e.trigname&&t.push(S.quoteIdentifier(e.trigname)),t.push("ON"),e.eventname&&t.push(e.eventname),e.whenclause&&e.whenclause.length>0){t.push("WHEN");let n=r.spawn("CreateEventTrigStmt"),i=h.unwrapList(e.whenclause).map(a=>this.visit(a,n)).join(" AND ");t.push(i);}if(t.push("EXECUTE"),e.funcname&&e.funcname.length>0){let n=h.unwrapList(e.funcname).map(i=>this.visit(i,r)).join(".");t.push("PROCEDURE",n+"()");}return t.join(" ")}AlterEventTrigStmt(e,r){let t=["ALTER EVENT TRIGGER"];if(e.trigname&&t.push(S.quoteIdentifier(e.trigname)),e.tgenabled)switch(e.tgenabled){case "O":t.push("ENABLE");break;case "D":t.push("DISABLE");break;case "R":t.push("ENABLE REPLICA");break;case "A":t.push("ENABLE ALWAYS");break;default:throw new Error(`Unsupported trigger enable state: ${e.tgenabled}`)}return t.join(" ")}CreateOpClassStmt(e,r){let t=["CREATE OPERATOR CLASS"];if(e.opclassname&&e.opclassname.length>0){let n=h.unwrapList(e.opclassname).map(i=>this.visit(i,r)).join(".");t.push(n);}if(e.isDefault&&t.push("DEFAULT"),t.push("FOR TYPE"),e.datatype&&t.push(this.TypeName(e.datatype,r)),t.push("USING"),e.amname&&t.push(e.amname),e.opfamilyname&&e.opfamilyname.length>0){t.push("FAMILY");let n=h.unwrapList(e.opfamilyname).map(i=>this.visit(i,r)).join(".");t.push(n);}if(t.push("AS"),e.items&&e.items.length>0){let n=h.unwrapList(e.items).map(i=>this.visit(i,r)).join(", ");t.push(n);}return t.join(" ")}CreateOpFamilyStmt(e,r){let t=["CREATE OPERATOR FAMILY"];if(e.opfamilyname&&e.opfamilyname.length>0){let n=h.unwrapList(e.opfamilyname).map(i=>this.visit(i,r)).join(".");t.push(n);}return t.push("USING"),e.amname&&t.push(e.amname),t.join(" ")}AlterOpFamilyStmt(e,r){let t=["ALTER OPERATOR FAMILY"];if(e.opfamilyname&&e.opfamilyname.length>0){let n=h.unwrapList(e.opfamilyname).map(i=>this.visit(i,r)).join(".");t.push(n);}if(t.push("USING"),e.amname&&t.push(e.amname),e.isDrop?t.push("DROP"):t.push("ADD"),e.items&&e.items.length>0){let n=h.unwrapList(e.items).map(i=>this.visit(i,r)).join(", ");t.push(n);}return t.join(" ")}MergeStmt(e,r){let t=[];if(e.withClause&&t.push(this.WithClause(e.withClause,r)),t.push("MERGE INTO"),e.relation&&t.push(this.RangeVar(e.relation,r)),e.sourceRelation&&(t.push("USING"),t.push(this.visit(e.sourceRelation,r))),e.joinCondition&&(t.push("ON"),t.push(this.visit(e.joinCondition,r))),e.mergeWhenClauses&&e.mergeWhenClauses.length>0){let n=h.unwrapList(e.mergeWhenClauses).map(i=>this.visit(i,r)).join(" ");t.push(n);}return t.join(" ")}AlterTableMoveAllStmt(e,r){let t=["ALTER"];return e.objtype==="OBJECT_TABLE"?t.push("TABLE"):e.objtype==="OBJECT_INDEX"?t.push("INDEX"):t.push("TABLE"),t.push("ALL","IN","TABLESPACE"),e.orig_tablespacename&&t.push(S.quoteIdentifier(e.orig_tablespacename)),t.push("SET","TABLESPACE"),e.new_tablespacename&&t.push(S.quoteIdentifier(e.new_tablespacename)),e.nowait&&t.push("NOWAIT"),t.join(" ")}CreateSeqStmt(e,r){let t=["CREATE"];if(e.sequence&&e.sequence.relpersistence==="t"&&t.push("TEMPORARY"),t.push("SEQUENCE"),e.if_not_exists&&t.push("IF NOT EXISTS"),e.sequence){let n=[],i=e.sequence;i.schemaname&&n.push(S.quoteIdentifier(i.schemaname)),i.relname&&n.push(S.quoteIdentifier(i.relname)),t.push(n.join("."));}if(e.options&&e.options.length>0){let n=r.spawn("CreateSeqStmt"),i=h.unwrapList(e.options).filter(a=>a!=null&&this.getNodeType(a)!=="undefined").map(a=>{try{return this.visit(a,n)}catch(o){return console.warn(`Error processing option in CreateSeqStmt: ${o instanceof Error?o.message:String(o)}`),""}}).filter(a=>a!=="").join(" ");i&&t.push(i);}return t.join(" ")}AlterSeqStmt(e,r){let t=["ALTER","SEQUENCE"];if(e.missing_ok&&t.push("IF EXISTS"),e.sequence){let n=[],i=e.sequence;i.schemaname&&n.push(S.quoteIdentifier(i.schemaname)),i.relname&&n.push(S.quoteIdentifier(i.relname)),t.push(n.join("."));}if(e.options&&e.options.length>0){let n=r.spawn("AlterSeqStmt"),i=h.unwrapList(e.options).filter(a=>a&&a!==void 0).map(a=>{try{return !a||this.getNodeType(a)==="undefined"?"":this.visit(a,n)}catch(o){return console.warn(`Error processing option in AlterSeqStmt: ${o instanceof Error?o.message:String(o)}`),""}}).filter(a=>a&&a.trim().length>0).join(" ");i&&t.push(i);}return e.for_identity&&t.push("FOR IDENTITY"),t.join(" ")}CompositeTypeStmt(e,r){let t=["CREATE","TYPE"];if(e.typevar){let n=r.spawn("CompositeTypeStmt");t.push(this.RangeVar(e.typevar,n));}if(t.push("AS"),e.coldeflist&&e.coldeflist.length>0){let n=h.unwrapList(e.coldeflist).map(i=>this.visit(i,r)).join(", ");t.push(`(${n})`);}else t.push("()");return t.join(" ")}CreateRangeStmt(e,r){let t=["CREATE","TYPE"];if(e.typeName&&e.typeName.length>0){let n=h.unwrapList(e.typeName).map(i=>this.visit(i,r)).join(".");t.push(n);}if(t.push("AS","RANGE"),e.params&&e.params.length>0){let n=h.unwrapList(e.params).map(i=>{let a=this.getNodeData(i);if(a.defname&&a.arg){let o=this.visit(a.arg,r);return `${a.defname} = ${o}`}return this.visit(i,r)});t.push(`(${n.join(", ")})`);}return t.join(" ")}AlterEnumStmt(e,r){let t=["ALTER","TYPE"];if(e.typeName&&e.typeName.length>0){let n=h.unwrapList(e.typeName).map(i=>this.visit(i,r)).join(".");t.push(n);}if(e.oldVal&&e.newVal){let n=e.oldVal.replace(/'/g,"''"),i=e.newVal.replace(/'/g,"''");t.push("RENAME","VALUE",`'${n}'`,"TO",`'${i}'`);}else if(e.newVal){t.push("ADD","VALUE"),e.skipIfNewValExists&&t.push("IF NOT EXISTS");let n=e.newVal.replace(/'/g,"''");if(t.push(`'${n}'`),e.newValNeighbor){let i=e.newValNeighbor.replace(/'/g,"''");e.newValIsAfter?t.push("AFTER",`'${i}'`):t.push("BEFORE",`'${i}'`);}}return t.join(" ")}AlterTypeStmt(e,r){let t=["ALTER","TYPE"];if(e.typeName&&e.typeName.length>0){let n=h.unwrapList(e.typeName).map(i=>this.visit(i,r)).join(".");t.push(n);}if(t.push("SET"),e.options&&e.options.length>0){let n=h.unwrapList(e.options).map(i=>{let a=this.getNodeData(i);if(a.defname&&a.arg){let o=this.visit(a.arg,r);return `${a.defname} = ${o}`}return this.visit(i,r)});t.push(`(${n.join(", ")})`);}return t.join(" ")}AlterRoleStmt(e,r){let t=e.options&&h.unwrapList(e.options).some(i=>i.DefElem&&i.DefElem.defname==="rolemembers"),n=["ALTER",t?"GROUP":"ROLE"];if(e.role&&n.push(this.RoleSpec(e.role,r)),e.options){let i=r.spawn("AlterRoleStmt");if(t){let a=h.unwrapList(e.options).find(o=>o.DefElem&&o.DefElem.defname==="rolemembers");if(a&&a.DefElem){let o=e.action===1?"ADD":"DROP";if(n.push(o,"USER"),a.DefElem.arg&&a.DefElem.arg.List){let l=h.unwrapList(a.DefElem.arg.List.items).map(u=>this.visit(u,i)).join(", ");n.push(l);}}}else {let a=h.unwrapList(e.options).map(o=>this.visit(o,i)).join(" ");a&&n.push(a);}}return n.join(" ")}DropRoleStmt(e,r){let t=["DROP","ROLE"];if(e.missing_ok&&t.push("IF EXISTS"),e.roles){let n=h.unwrapList(e.roles).map(i=>this.visit(i,r)).join(", ");t.push(n);}return t.join(" ")}targetList(e,r){return !e||!Array.isArray(e)?"":e.map(t=>this.visit(t,r)).join(", ")}CreateAggregateStmt(e,r){let t=["CREATE"];if(e.replace&&t.push("OR REPLACE"),t.push("AGGREGATE"),e.defnames&&e.defnames.length>0){let i=h.unwrapList(e.defnames).map(a=>this.visit(a,r)).join(".");t.push(i);}if(t.push("("),e.args&&e.args.length>0){let i=h.unwrapList(e.args).map(a=>this.visit(a,r)).join(", ");t.push(i);}else t.push("*");t.push(")"),t.push("(");let n=[];if(e.definition&&e.definition.length>0){let i=h.unwrapList(e.definition).map(a=>{let o=this.getNodeData(a);return o.defname==="sfunc"||o.defname==="sfunc1"?`SFUNC = ${this.visit(o.arg,r)}`:o.defname==="stype"||o.defname==="stype1"?`STYPE = ${this.visit(o.arg,r)}`:o.defname==="basetype"?`BASETYPE = ${this.visit(o.arg,r)}`:o.defname==="finalfunc"?`FINALFUNC = ${this.visit(o.arg,r)}`:o.defname==="initcond"||o.defname==="initcond1"?`INITCOND = ${this.visit(o.arg,r)}`:o.defname==="combinefunc"?`COMBINEFUNC = ${this.visit(o.arg,r)}`:o.defname==="serialfunc"?`SERIALFUNC = ${this.visit(o.arg,r)}`:o.defname==="deserialfunc"?`DESERIALFUNC = ${this.visit(o.arg,r)}`:o.defname==="parallel"?`PARALLEL = ${this.visit(o.arg,r)}`:this.visit(a,r)});n.push(...i);}return t.push(n.join(", ")),t.push(")"),t.join(" ")}CreateTableAsStmt(e,r){let t=["CREATE"];if(e.objtype==="OBJECT_MATVIEW"?t.push("MATERIALIZED VIEW"):e.into&&e.into.rel&&e.into.rel.relpersistence==="t"?t.push("TEMPORARY TABLE"):t.push("TABLE"),e.if_not_exists&&t.push("IF NOT EXISTS"),e.into&&e.into.rel&&t.push(this.RangeVar(e.into.rel,r)),e.into&&e.into.colNames&&e.into.colNames.length>0){t.push("(");let n=h.unwrapList(e.into.colNames).map(i=>this.visit(i,r)).join(", ");t.push(n),t.push(")");}if(e.into&&e.into.accessMethod&&(t.push("USING"),t.push(e.into.accessMethod)),e.into&&e.into.onCommit&&e.into.onCommit!=="ONCOMMIT_NOOP")switch(t.push("ON COMMIT"),e.into.onCommit){case "ONCOMMIT_PRESERVE_ROWS":t.push("PRESERVE ROWS");break;case "ONCOMMIT_DELETE_ROWS":t.push("DELETE ROWS");break;case "ONCOMMIT_DROP":t.push("DROP");break}if(t.push("AS"),e.query&&t.push(this.visit(e.query,r)),e.into&&e.into.options&&e.into.options.length>0){t.push("WITH");let n=h.unwrapList(e.into.options).map(i=>this.visit(i,r)).join(", ");t.push(`(${n})`);}return e.into&&e.into.skipData&&t.push("WITH NO DATA"),t.join(" ")}RefreshMatViewStmt(e,r){let t=["REFRESH","MATERIALIZED","VIEW"];return e.concurrent&&t.push("CONCURRENTLY"),e.relation&&t.push(this.visit(e.relation,r)),e.skipData&&t.push("WITH NO DATA"),t.join(" ")}AccessPriv(e,r){let t=[];if(e.priv_name?t.push(e.priv_name.toUpperCase()):t.push("ALL"),e.cols&&e.cols.length>0){t.push("(");let n=r.spawn("AccessPriv"),i=h.unwrapList(e.cols).map(a=>this.visit(a,n));t.push(i.join(", ")),t.push(")");}return t.join(" ")}aliasname(e,r){return typeof e=="string"?S.quoteIdentifier(e):this.visit(e,r)}DefineStmt(e,r){let t=[];if(!e.kind)throw new Error("DefineStmt requires kind property");switch(e.kind){case "OBJECT_OPERATOR":if(t.push("CREATE OPERATOR"),e.defnames&&e.defnames.length>0){let n=h.unwrapList(e.defnames).map((i,a)=>{if(a===e.defnames.length-1){let o=this.getNodeData(i);if(o&&o.sval)return o.sval}return this.visit(i,r)});t.push(n.join("."));}if(e.definition&&e.definition.length>0){t.push("(");let n=h.unwrapList(e.definition).map(i=>{if(i.DefElem){let a=i.DefElem,o=a.defname,l=a.arg;if(o&&l){let u=S.quoteIdentifier(o),p=u!==o?u:this.preserveOperatorDefElemCase(o);if((o.toLowerCase()==="commutator"||o.toLowerCase()==="negator")&&l.List){let c=h.unwrapList(l.List.items);if(c.length===1&&c[0].String)return `${p} = ${c[0].String.sval}`}return o.toLowerCase()==="commutator"||o.toLowerCase()==="negator"?`${p} = ${this.visit(l,r)}`:`${p} = ${this.visit(l,r)}`}else if(o&&!l)return o==="Hashes"||o==="Merges"?S.quoteIdentifier(o):this.preserveOperatorDefElemCase(o).toUpperCase()}return this.visit(i,r)});t.push(n.join(", ")),t.push(")");}break;case "OBJECT_TYPE":if(t.push("CREATE TYPE"),e.defnames&&e.defnames.length>0&&t.push(h.unwrapList(e.defnames).map(n=>this.visit(n,r)).join(".")),e.definition&&e.definition.length>0){let n=r.spawn("DefineStmt"),i=h.unwrapList(e.definition).map(a=>this.visit(a,n));t.push(`(${i.join(", ")})`);}break;case "OBJECT_AGGREGATE":if(t.push("CREATE"),e.replace&&t.push("OR REPLACE"),t.push("AGGREGATE"),e.defnames&&e.defnames.length>0){let n=h.unwrapList(e.defnames).map(i=>this.visit(i,r));t.push(n.join("."));}if(e.args&&e.args.length>0){let n=h.unwrapList(e.args),i=n.some(l=>l.Integer&&l.Integer.ival===1),a=n.length>=2&&n[0].List&&n[0].List.items&&n[0].List.items.length===1&&n[0].List.items[0].FunctionParameter&&n[0].List.items[0].FunctionParameter.mode==="FUNC_PARAM_DEFAULT"&&n[1].Integer&&Object.keys(n[1].Integer).length===0,o=n.filter(l=>!(l.Integer&&(l.Integer.ival===-1||l.Integer.ival===1)||l.Integer&&Object.keys(l.Integer).length===0&&a));if(o.length>0)if(a){let l=o[0];if(l.List&&l.List.items&&l.List.items[0].FunctionParameter){let u=l.List.items[0].FunctionParameter,p;if(u.argType&&u.argType.names){let c=u.argType.names;c.length>=2&&c[0].String&&c[0].String.sval==="pg_catalog"?p=c[1].String.sval:c.length>=1&&c[0].String?p=c[0].String.sval:p="unknown";}else p=this.visit({TypeName:u.argType},r);t.push(`(ORDER BY ${p})`);}else {let u=this.visit(l,r);t.push(`(ORDER BY ${u})`);}}else if(i&&o.length===1&&o[0].List){let l=o[0].List;if(l.items&&l.items.length>=2){let u=h.unwrapList(l.items),p=this.visit(u[0],r),c=u.slice(1).map(f=>this.visit(f,r));t.push(`(${p} ORDER BY ${c.join(", ")})`);}else if(l.items&&l.items.length===1){let u=l.items[0];if(u.FunctionParameter&&u.FunctionParameter.mode==="FUNC_PARAM_VARIADIC"){let p=this.visit(u,r);t.push(`(${p} ORDER BY ${p})`);}else {let p=this.visit(u,r);t.push(`(${p})`);}}else {let u=o.map(p=>Object.keys(p).length===0?"*":this.visit(p,r));t.push(`(${u.join(", ")})`);}}else {let l=o.map(u=>Object.keys(u).length===0?"*":this.visit(u,r));t.push(`(${l.join(", ")})`);}}if(e.definition&&e.definition.length>0){let n=h.unwrapList(e.definition).map(i=>{if(i.DefElem){let a=i.DefElem,o=a.defname,l=a.arg;if(o&&l){let u=S.quoteIdentifier(o),p=u!==o?u:o;return l.String?`${p} = '${l.String.sval}'`:`${p} = ${this.visit(l,r)}`}}return this.visit(i,r)});t.push(`(${n.join(", ")})`);}break;case "OBJECT_TSDICTIONARY":if(t.push("CREATE TEXT SEARCH DICTIONARY"),e.defnames&&e.defnames.length>0&&t.push(h.unwrapList(e.defnames).map(n=>this.visit(n,r)).join(".")),e.definition&&e.definition.length>0){t.push("(");let n=h.unwrapList(e.definition).map(i=>{if(i.DefElem){let a=i.DefElem,o=a.defname,l=a.arg;if(o&&l)return `${o} = ${this.visit(l,r)}`}return this.visit(i,r)});t.push(n.join(", ")),t.push(")");}break;case "OBJECT_TSCONFIGURATION":if(t.push("CREATE TEXT SEARCH CONFIGURATION"),e.defnames&&e.defnames.length>0&&t.push(h.unwrapList(e.defnames).map(n=>this.visit(n,r)).join(".")),e.definition&&e.definition.length>0){t.push("(");let n=h.unwrapList(e.definition).map(i=>{if(i.DefElem){let a=i.DefElem,o=a.defname,l=a.arg;if(o&&l)return `${o} = ${this.visit(l,r)}`}return this.visit(i,r)});t.push(n.join(", ")),t.push(")");}break;case "OBJECT_TSPARSER":if(t.push("CREATE TEXT SEARCH PARSER"),e.defnames&&e.defnames.length>0){let n=h.unwrapList(e.defnames).map(i=>this.visit(i,r)).join(".");t.push(n);}if(e.definition&&e.definition.length>0){t.push("(");let n=h.unwrapList(e.definition).map(i=>{if(i.DefElem){let a=i.DefElem,o=a.defname,l=a.arg;if(o&&l)return `${o} = ${this.visit(l,r)}`}return this.visit(i,r)});t.push(n.join(", ")),t.push(")");}break;case "OBJECT_TSTEMPLATE":if(t.push("CREATE TEXT SEARCH TEMPLATE"),e.defnames&&e.defnames.length>0){let n=h.unwrapList(e.defnames).map(i=>this.visit(i,r)).join(".");t.push(n);}if(e.definition&&e.definition.length>0){t.push("(");let n=h.unwrapList(e.definition).map(i=>{if(i.DefElem){let a=i.DefElem,o=a.defname,l=a.arg;if(o&&l)return `${o} = ${this.visit(l,r)}`}return this.visit(i,r)});t.push(n.join(", ")),t.push(")");}break;case "OBJECT_COLLATION":if(t.push("CREATE COLLATION"),e.defnames&&e.defnames.length>0&&t.push(h.unwrapList(e.defnames).map(n=>this.visit(n,r)).join(".")),e.definition&&e.definition.length>0){let n=h.unwrapList(e.definition).map(a=>{if(a.DefElem){let o=a.DefElem,l=o.defname,u=o.arg;if(l&&u){if(l==="from")return `FROM ${this.visit(u,r)}`;let p;return u.String?p=`'${u.String.sval}'`:p=this.visit(u,r),`${l} = ${p}`}}return this.visit(a,r)});n.some(a=>a.startsWith("FROM "))?t.push(n.join(" ")):t.push(`(${n.join(", ")})`);}break;default:throw new Error(`Unsupported DefineStmt kind: ${e.kind}`)}return t.join(" ")}AlterDatabaseStmt(e,r){let t=["ALTER","DATABASE"];if(e.dbname&&t.push(S.quoteIdentifier(e.dbname)),e.options&&e.options.length>0){let n=h.unwrapList(e.options).map(i=>this.visit(i,r));t.push(n.join(" "));}return t.join(" ")}AlterDatabaseRefreshCollStmt(e,r){let t=["ALTER","DATABASE"];return e.dbname&&t.push(S.quoteIdentifier(e.dbname)),t.push("REFRESH","COLLATION","VERSION"),t.join(" ")}AlterDatabaseSetStmt(e,r){let t=["ALTER","DATABASE"];if(e.dbname&&t.push(S.quoteIdentifier(e.dbname)),e.setstmt){let n=this.VariableSetStmt(e.setstmt,r);t.push(n);}return t.join(" ")}DeclareCursorStmt(e,r){let t=["DECLARE"];e.portalname&&t.push(S.quoteIdentifier(e.portalname));let n=[];return e.options&&(e.options&2?n.push("SCROLL"):e.options&4&&n.push("NO SCROLL"),e.options&1&&n.push("BINARY"),e.options&8&&n.push("INSENSITIVE")),n.length>0&&t.push(...n),t.push("CURSOR"),e.options&&e.options&32&&t.push("WITH HOLD"),t.push("FOR"),e.query&&t.push(this.visit(e.query,r)),t.join(" ")}PublicationObjSpec(e,r){let t=[];return e.pubobjtype==="PUBLICATIONOBJ_TABLE"?(t.push("TABLE"),e.pubtable&&t.push(this.PublicationTable(e.pubtable,r))):e.pubobjtype==="PUBLICATIONOBJ_TABLES_IN_SCHEMA"?(t.push("TABLES IN SCHEMA"),e.name&&t.push(S.quoteIdentifier(e.name))):e.pubobjtype==="PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA"&&t.push("TABLES IN SCHEMA CURRENT_SCHEMA"),t.join(" ")}PublicationTable(e,r){let t=[];if(e.relation&&t.push(this.RangeVar(e.relation,r)),e.columns&&e.columns.length>0){let n=h.unwrapList(e.columns).map(i=>this.visit(i,r));t.push(`(${n.join(", ")})`);}return e.whereClause&&(t.push("WHERE"),t.push(this.visit(e.whereClause,r))),t.join(" ")}CreateAmStmt(e,r){let t=["CREATE","ACCESS","METHOD"];switch(e.amname&&t.push(S.quoteIdentifier(e.amname)),t.push("TYPE"),e.amtype){case "i":t.push("INDEX");break;case "t":t.push("TABLE");break;default:t.push(e.amtype||"");break}if(e.handler_name&&e.handler_name.length>0){t.push("HANDLER");let n=h.unwrapList(e.handler_name).map(i=>this.visit(i,r)).join(".");t.push(n);}return t.join(" ")}IntoClause(e,r){let t=[];if(e.rel&&t.push(this.RangeVar(e.rel,r)),e.colNames&&e.colNames.length>0){let n=h.unwrapList(e.colNames).map(i=>this.visit(i,r)).join(", ");t.push(`(${n})`);}if(e.accessMethod&&t.push("USING",e.accessMethod),e.options&&e.options.length>0){t.push("WITH");let n=h.unwrapList(e.options).map(i=>this.visit(i,r)).join(", ");t.push(`(${n})`);}if(e.onCommit&&e.onCommit!=="ONCOMMIT_NOOP")switch(t.push("ON COMMIT"),e.onCommit){case "ONCOMMIT_PRESERVE_ROWS":t.push("PRESERVE ROWS");break;case "ONCOMMIT_DELETE_ROWS":t.push("DELETE ROWS");break;case "ONCOMMIT_DROP":t.push("DROP");break}return e.tableSpaceName&&t.push("TABLESPACE",S.quoteIdentifier(e.tableSpaceName)),t.join(" ")}OnConflictExpr(e,r){let t=["ON CONFLICT"];if(e.arbiterElems&&e.arbiterElems.length>0){let n=h.unwrapList(e.arbiterElems).map(i=>this.visit(i,r)).join(", ");t.push(`(${n})`);}if(e.arbiterWhere&&(t.push("WHERE"),t.push(this.visit(e.arbiterWhere,r))),e.action==="ONCONFLICT_NOTHING")t.push("DO NOTHING");else if(e.action==="ONCONFLICT_UPDATE"){if(t.push("DO UPDATE SET"),e.onConflictSet&&e.onConflictSet.length>0){let n=h.unwrapList(e.onConflictSet).map(i=>this.visit(i,r)).join(", ");t.push(n);}e.onConflictWhere&&(t.push("WHERE"),t.push(this.visit(e.onConflictWhere,r)));}return t.join(" ")}ScanToken(e,r){return ""}CreateOpClassItem(e,r){let t=[];if(e.itemtype===1){t.push("OPERATOR");let n=e.number!==void 0?e.number:0;if(t.push(n.toString()),e.name){let i=r.spawn("CreateOpClassItem");t.push(this.ObjectWithArgs(e.name,i));}}else if(e.itemtype===2){t.push("FUNCTION");let n=e.number!==void 0?e.number:0;if(t.push(n.toString()),e.name){let i=r.spawn("CreateOpClassItem");t.push(this.ObjectWithArgs(e.name,i));}}else e.itemtype===3&&(t.push("STORAGE"),e.storedtype&&t.push(this.TypeName(e.storedtype,r)));if(e.order_family&&e.order_family.length>0){t.push("FOR ORDER BY");let n=h.unwrapList(e.order_family).map(i=>this.visit(i,r)).join(".");t.push(n);}if(e.class_args&&e.class_args.length>0){let n=h.unwrapList(e.class_args).map(i=>this.visit(i,r)).join(", ");t.push(`(${n})`);}return t.join(" ")}Var(e,r){return e.varno&&e.varattno?`$${e.varno}.${e.varattno}`:"$var"}TableFunc(e,r){let t=[];if(e.functype==="TFT_XMLTABLE"){if(t.push("XMLTABLE"),e.ns_names&&e.ns_names.length>0){t.push("XMLNAMESPACES");let n=h.unwrapList(e.ns_names).map(i=>this.visit(i,r)).join(", ");t.push(`(${n})`);}if(e.rowexpr&&t.push(`(${this.visit(e.rowexpr,r)})`),e.docexpr&&(t.push("PASSING"),t.push(this.visit(e.docexpr,r))),e.colexprs&&e.colexprs.length>0){t.push("COLUMNS");let n=h.unwrapList(e.colexprs).map(i=>this.visit(i,r)).join(", ");t.push(n);}}else if(e.functype==="TFT_JSON_TABLE"&&(t.push("JSON_TABLE"),e.docexpr&&t.push(`(${this.visit(e.docexpr,r)})`),e.rowexpr&&(t.push(","),t.push(`'${this.visit(e.rowexpr,r)}'`)),e.colexprs&&e.colexprs.length>0)){t.push("COLUMNS");let n=h.unwrapList(e.colexprs).map(i=>this.visit(i,r)).join(", ");t.push(`(${n})`);}return t.join(" ")}RangeTableFunc(e,r){let t=[];if(e.lateral&&t.push("LATERAL"),e.docexpr&&t.push(this.visit(e.docexpr,r)),e.rowexpr&&(t.push("PASSING"),t.push(this.visit(e.rowexpr,r))),e.columns&&e.columns.length>0){t.push("COLUMNS");let n=h.unwrapList(e.columns).map(i=>this.visit(i,r)).join(", ");t.push(`(${n})`);}return e.alias&&t.push(this.Alias(e.alias,r)),t.join(" ")}RangeTableFuncCol(e,r){let t=[];return e.colname&&t.push(S.quoteIdentifier(e.colname)),e.for_ordinality?t.push("FOR ORDINALITY"):e.typeName&&t.push(this.TypeName(e.typeName,r)),e.colexpr&&(t.push("PATH"),t.push(`'${this.visit(e.colexpr,r)}'`)),e.coldefexpr&&(t.push("DEFAULT"),t.push(this.visit(e.coldefexpr,r))),t.join(" ")}JsonArrayQueryConstructor(e,r){let t=["JSON_ARRAYAGG"];return e.query&&t.push(`(${this.visit(e.query,r)})`),e.format&&t.push("FORMAT JSON"),e.output&&t.push("RETURNING TEXT"),e.absent_on_null?t.push("ABSENT ON NULL"):t.push("NULL ON NULL"),t.join(" ")}RangeFunction(e,r){let t=[];if(e.lateral&&t.push("LATERAL"),e.is_rowsfrom){if(t.push("ROWS FROM"),e.functions&&e.functions.length>0){let n=h.unwrapList(e.functions).filter(i=>i!=null).map(i=>{try{if(this.getNodeType(i)==="List"){let o=this.getNodeData(i);if(o&&o.items&&Array.isArray(o.items)){let l=o.items;if(l.length>=2){let u=this.visit(l[0],r),p=this.getNodeData(l[1]);if(p&&p.items&&Array.isArray(p.items)){let c=p.items.map(f=>this.visit(f,r)).filter(f=>f&&f.trim());if(c.length>0)return `${u} AS (${c.join(", ")})`}return u}else if(l.length===1)return this.visit(l[0],r)}}return this.visit(i,r)}catch(a){return console.warn(`Error processing function in RangeFunction: ${a instanceof Error?a.message:String(a)}`),""}}).filter(i=>i&&i.trim());n.length>0&&t.push(`(${n.join(", ")})`);}}else if(e.functions&&e.functions.length>0){let n=h.unwrapList(e.functions).filter(i=>i!=null).map(i=>{try{if(this.getNodeType(i)==="List"){let o=this.getNodeData(i);if(o&&o.items&&Array.isArray(o.items)){let l=o.items;if(l.length>=1)return this.visit(l[0],r)}}return this.visit(i,r)}catch(a){return console.warn(`Error processing function in RangeFunction: ${a instanceof Error?a.message:String(a)}`),""}}).filter(i=>i&&i.trim());n.length>0&&t.push(n.join(", "));}if(e.ordinality&&t.push("WITH ORDINALITY"),e.alias)if(e.coldeflist&&e.coldeflist.length>0){let n=e.alias.aliasname,i=h.unwrapList(e.coldeflist).map(a=>this.visit(a,r)).filter(a=>a&&a.trim());t.push(`${n} (${i.join(", ")})`);}else t.push(this.Alias(e.alias,r));else if(e.coldeflist&&e.coldeflist.length>0){let n=h.unwrapList(e.coldeflist).map(i=>this.visit(i,r)).filter(i=>i&&i.trim());t.push(`AS (${n.join(", ")})`);}return t.join(" ")}XmlExpr(e,r){if(e.op==="IS_XMLPI")if(e.name&&e.args&&e.args.length>0){let n=h.unwrapList(e.args).map(i=>this.visit(i,r));return `xmlpi(name ${S.quoteIdentifier(e.name)}, ${n.join(", ")})`}else return e.name?`xmlpi(name ${S.quoteIdentifier(e.name)})`:"XMLPI()";let t=[];switch(e.op){case "IS_XMLCONCAT":t.push("XMLCONCAT");break;case "IS_XMLELEMENT":t.push("XMLELEMENT");let n=[];if(e.name&&n.push(`NAME ${S.quoteIdentifier(e.name)}`),e.named_args&&e.named_args.length>0){let a=h.unwrapList(e.named_args).map(o=>this.visit(o,r));n.push(`XMLATTRIBUTES(${a.join(", ")})`);}if(e.args&&e.args.length>0){let a=h.unwrapList(e.args).map(o=>this.visit(o,r));n.push(...a);}n.length>0&&t.push(`(${n.join(", ")})`);break;case "IS_XMLFOREST":t.push("XMLFOREST");break;case "IS_XMLPARSE":t.push("XMLPARSE");let i=[];if(e.xmloption&&(e.xmloption==="XMLOPTION_DOCUMENT"?i.push("DOCUMENT"):e.xmloption==="XMLOPTION_CONTENT"&&i.push("CONTENT")),e.args&&e.args.length>0){let a=h.unwrapList(e.args).map(o=>this.visit(o,r));a.length>0&&i.push(a[0]);}i.length>0&&t.push(`(${i.join(" ")})`);break;case "IS_XMLROOT":if(t.push("XMLROOT"),e.args&&e.args.length>0){let a=h.unwrapList(e.args),o=[];if(a[0]&&o.push(this.visit(a[0],r)),a[1]){let l=a[1];l.A_Const&&l.A_Const.isnull?o.push("version NO VALUE"):o.push(`version ${this.visit(l,r)}`);}if(a[2]){let l=a[2];l.A_Const&&l.A_Const.ival!==void 0?l.A_Const.ival.ival===1?o.push("STANDALONE NO"):l.A_Const.ival.ival===2?o.push("STANDALONE NO VALUE"):l.A_Const.ival.ival===3||(Object.keys(l.A_Const.ival).length===0?o.push("STANDALONE YES"):o.push(`STANDALONE ${this.visit(l,r)}`)):o.push(`STANDALONE ${this.visit(l,r)}`);}o.length>0&&t.push(`(${o.join(", ")})`);}break;case "IS_XMLSERIALIZE":t.push("XMLSERIALIZE");break;case "IS_DOCUMENT":if(e.args&&e.args.length>0){let a=h.unwrapList(e.args).map(o=>this.visit(o,r));t.push(`${a[0]} IS DOCUMENT`);}else t.push("IS DOCUMENT");break;default:throw new Error(`Unsupported XmlExpr op: ${e.op}`)}if(e.op!=="IS_XMLELEMENT"&&e.op!=="IS_XMLPARSE"&&e.op!=="IS_XMLROOT"&&e.op!=="IS_DOCUMENT"){if(e.name){let n=S.quoteIdentifier(e.name);t.push(`NAME ${n}`);}if(e.args&&e.args.length>0){let n=h.unwrapList(e.args).map(i=>this.visit(i,r));t.push(`(${n.join(", ")})`);}}if(e.named_args&&e.named_args.length>0&&e.op!=="IS_XMLELEMENT"){let n=h.unwrapList(e.named_args).map(i=>this.visit(i,r));e.op==="IS_XMLFOREST"?t.push(`(${n.join(", ")})`):t.push(`XMLATTRIBUTES(${n.join(", ")})`);}return t.join(" ")}schemaname(e,r){if(typeof e=="string")return S.quoteIdentifier(e);if(e&&e.String&&e.String.sval)return S.quoteIdentifier(e.String.sval);if(e&&typeof e=="object"){if(e.sval!==void 0)return S.quoteIdentifier(e.sval);if(e.List&&Array.isArray(e.List.items)){let t=e.List.items;if(t.length>0&&t[0].String&&t[0].String.sval)return S.quoteIdentifier(t[0].String.sval)}return e.val!==void 0?S.quoteIdentifier(e.val):""}return ""}RangeTableSample(e,r){let t=[];if(e.relation&&t.push(this.visit(e.relation,r)),t.push("TABLESAMPLE"),e.method&&e.method.length>0){let n=e.method.map(i=>this.visit(i,r));t.push(n.join("."));}if(e.args&&e.args.length>0){let n=e.args.map(i=>this.visit(i,r));t.push(`(${n.join(", ")})`);}return e.repeatable&&(t.push("REPEATABLE"),t.push(`(${this.visit(e.repeatable,r)})`)),t.join(" ")}XmlSerialize(e,r){let t=["XMLSERIALIZE"];return t.push("("),e.typeName&&(e.xmloption==="XMLOPTION_DOCUMENT"?t.push("DOCUMENT"):t.push("CONTENT"),t.push(this.visit(e.expr,r)),t.push("AS"),t.push(this.TypeName(e.typeName,r))),t.push(")"),t.join(" ")}ctes(e,r){if(!e||!Array.isArray(e))return "";let t=["WITH"];e.length>0&&e[0]&&e[0].CommonTableExpr&&e[0].CommonTableExpr.recursive&&t.push("RECURSIVE");let n=e.map(i=>this.visit(i,r));return t.push(n.join(", ")),t.join(" ")}RuleStmt(e,r){let t=["CREATE"];if(e.replace&&t.push("OR REPLACE"),t.push("RULE"),e.rulename&&t.push(S.quoteIdentifier(e.rulename)),t.push("AS ON"),e.event)switch(e.event){case "CMD_SELECT":t.push("SELECT");break;case "CMD_INSERT":t.push("INSERT");break;case "CMD_UPDATE":t.push("UPDATE");break;case "CMD_DELETE":t.push("DELETE");break;default:t.push(e.event.toString());}if(t.push("TO"),e.relation&&t.push(this.RangeVar(e.relation,r)),e.whereClause&&(t.push("WHERE"),t.push(this.visit(e.whereClause,r))),t.push("DO"),e.instead&&t.push("INSTEAD"),e.actions&&e.actions.length>0)if(e.actions.length===1)t.push(this.visit(e.actions[0],r));else {t.push("(");let n=h.unwrapList(e.actions).map(i=>this.visit(i,r));t.push(n.join("; ")),t.push(")");}else t.push("NOTHING");return t.join(" ")}RangeSubselect(e,r){let t=[];return e.lateral&&t.push("LATERAL"),e.subquery&&(t.push("("),t.push(this.visit(e.subquery,r)),t.push(")")),e.alias&&t.push(this.Alias(e.alias,r)),t.join(" ")}relname(e,r){return typeof e=="string"?S.quoteIdentifier(e):e&&e.String&&e.String.sval?S.quoteIdentifier(e.String.sval):e&&typeof e=="object"&&e.relname?S.quoteIdentifier(e.relname):this.visit(e,r)}rel(e,r){return typeof e=="string"?S.quoteIdentifier(e):e&&e.String&&e.String.sval?S.quoteIdentifier(e.String.sval):e&&e.RangeVar?this.RangeVar(e.RangeVar,r):e&&typeof e=="object"&&e.relname?S.quoteIdentifier(e.relname):this.visit(e,r)}objname(e,r){return typeof e=="string"?S.quoteIdentifier(e):e&&e.String&&e.String.sval?S.quoteIdentifier(e.String.sval):Array.isArray(e)?e.map(n=>n&&n.String&&n.String.sval?S.quoteIdentifier(n.String.sval):this.visit(n,r)).join("."):this.visit(e,r)}SQLValueFunction(e,r){switch(e.op){case "SVFOP_CURRENT_DATE":return "CURRENT_DATE";case "SVFOP_CURRENT_TIME":return "CURRENT_TIME";case "SVFOP_CURRENT_TIME_N":return `CURRENT_TIME(${e.typmod||0})`;case "SVFOP_CURRENT_TIMESTAMP":return "CURRENT_TIMESTAMP";case "SVFOP_CURRENT_TIMESTAMP_N":return `CURRENT_TIMESTAMP(${e.typmod||0})`;case "SVFOP_LOCALTIME":return "LOCALTIME";case "SVFOP_LOCALTIME_N":return `LOCALTIME(${e.typmod||0})`;case "SVFOP_LOCALTIMESTAMP":return "LOCALTIMESTAMP";case "SVFOP_LOCALTIMESTAMP_N":return `LOCALTIMESTAMP(${e.typmod||0})`;case "SVFOP_CURRENT_ROLE":return "CURRENT_ROLE";case "SVFOP_CURRENT_USER":return "CURRENT_USER";case "SVFOP_USER":return "USER";case "SVFOP_SESSION_USER":return "SESSION_USER";case "SVFOP_CURRENT_CATALOG":return "CURRENT_CATALOG";case "SVFOP_CURRENT_SCHEMA":return "CURRENT_SCHEMA";default:throw new Error(`Unsupported SQLValueFunction op: ${e.op}`)}}GroupingFunc(e,r){let t=["GROUPING"];if(e.args&&e.args.length>0){let n=h.unwrapList(e.args).map(i=>this.visit(i,r));t.push(`(${n.join(", ")})`);}else t.push("()");return t.join("")}MultiAssignRef(e,r){let t=[];return e.source&&t.push(this.visit(e.source,r)),e.colno>0&&t.push(`[${e.colno}]`),t.join("")}SetToDefault(e,r){return "DEFAULT"}CurrentOfExpr(e,r){let t=["CURRENT OF"];return e.cursor_name&&t.push(S.quoteIdentifier(e.cursor_name)),e.cursor_param>0&&t.push(`$${e.cursor_param}`),t.join(" ")}TableLikeClause(e,r){let t=["LIKE"];if(e.relation&&t.push(this.visit(e.relation,r)),e.options&&typeof e.options=="number")if(e.options===2147483647||e.options===2147483647)t.push("INCLUDING ALL");else {let n=[];e.options&1&&n.push("INCLUDING COMMENTS"),e.options&4&&n.push("INCLUDING CONSTRAINTS"),e.options&8&&n.push("INCLUDING DEFAULTS"),e.options&16&&n.push("INCLUDING GENERATED"),e.options&32&&n.push("INCLUDING IDENTITY"),e.options&64&&n.push("INCLUDING INDEXES"),e.options&128&&n.push("INCLUDING STATISTICS"),e.options&256&&n.push("INCLUDING STORAGE"),n.length>0&&t.push(n.join(" "));}return t.join(" ")}AlterFunctionStmt(e,r){let t=["ALTER"];if(e.objtype==="OBJECT_PROCEDURE"?t.push("PROCEDURE"):t.push("FUNCTION"),e.func&&t.push(this.ObjectWithArgs(e.func,r)),e.actions&&e.actions.length>0){let n=r.spawn("AlterFunctionStmt"),i=h.unwrapList(e.actions).map(a=>this.visit(a,n));t.push(i.join(" "));}return t.join(" ")}AlterObjectSchemaStmt(e,r){let t=["ALTER"];try{t.push(this.getObjectTypeKeyword(e.objectType));}catch{t.push(e.objectType.toString());}if(e.missing_ok&&t.push("IF EXISTS"),e.relation&&(e.objectType==="OBJECT_TABLE"||e.objectType==="OBJECT_FOREIGN_TABLE"||e.objectType==="OBJECT_MATVIEW"))t.push(this.RangeVar(e.relation,r));else if(e.object)if(e.objectType==="OBJECT_DOMAIN"&&e.object.List){let n=h.unwrapList(e.object);if(n.length===2){let i=n[0].String?.sval||"",a=n[1].String?.sval||"";t.push(S.quoteQualifiedIdentifier(i,a));}else t.push(this.visit(e.object,r));}else if(e.objectType==="OBJECT_TYPE"&&e.object.List){let n=h.unwrapList(e.object);if(n.length===2){let i=n[0].String?.sval||"",a=n[1].String?.sval||"";t.push(S.quoteQualifiedIdentifier(i,a));}else t.push(this.visit(e.object,r));}else if(e.objectType==="OBJECT_CONVERSION"&&e.object.List){let n=h.unwrapList(e.object);if(n.length===2){let i=n[0].String?.sval||"",a=n[1].String?.sval||"";t.push(S.quoteQualifiedIdentifier(i,a));}else t.push(this.visit(e.object,r));}else if(e.objectType==="OBJECT_TSPARSER"&&e.object.List){let n=h.unwrapList(e.object);if(n.length===2){let i=n[0].String?.sval||"",a=n[1].String?.sval||"";t.push(S.quoteQualifiedIdentifier(i,a));}else t.push(this.visit(e.object,r));}else if(e.objectType==="OBJECT_TSCONFIGURATION"&&e.object.List){let n=h.unwrapList(e.object);if(n.length===2){let i=n[0].String?.sval||"",a=n[1].String?.sval||"";t.push(S.quoteQualifiedIdentifier(i,a));}else t.push(this.visit(e.object,r));}else if(e.objectType==="OBJECT_TSTEMPLATE"&&e.object.List){let n=h.unwrapList(e.object);if(n.length===2){let i=n[0].String?.sval||"",a=n[1].String?.sval||"";t.push(S.quoteQualifiedIdentifier(i,a));}else t.push(this.visit(e.object,r));}else if(e.objectType==="OBJECT_TSDICTIONARY"&&e.object.List){let n=h.unwrapList(e.object);if(n.length===2){let i=n[0].String?.sval||"",a=n[1].String?.sval||"";t.push(S.quoteQualifiedIdentifier(i,a));}else t.push(this.visit(e.object,r));}else if(e.objectType==="OBJECT_OPCLASS"&&e.object.List){let n=h.unwrapList(e.object);if(n.length===2){let i=n[0].String?.sval||"",a=n[1].String?.sval||"";t.push(`${S.quoteIdentifier(a)} USING ${i}`);}else if(n.length===3){let i=n[0].String?.sval||"",a=n[1].String?.sval||"",o=n[2].String?.sval||"";t.push(`${S.quoteQualifiedIdentifier(a,o)} USING ${i}`);}else t.push(this.visit(e.object,r));}else if(e.objectType==="OBJECT_OPFAMILY"&&e.object.List){let n=h.unwrapList(e.object);if(n.length===2){let i=n[0].String?.sval||"",a=n[1].String?.sval||"";t.push(`${S.quoteIdentifier(a)} USING ${i}`);}else if(n.length===3){let i=n[0].String?.sval||"",a=n[1].String?.sval||"",o=n[2].String?.sval||"";t.push(`${S.quoteQualifiedIdentifier(a,o)} USING ${i}`);}else t.push(this.visit(e.object,r));}else t.push(this.visit(e.object,r));return t.push("SET SCHEMA"),e.newschema&&t.push(S.quoteIdentifier(e.newschema)),t.join(" ")}AlterRoleSetStmt(e,r){let t=["ALTER","ROLE"];if(e.role?t.push(this.RoleSpec(e.role,r)):t.push("ALL"),e.database&&(t.push("IN DATABASE"),t.push(this.quoteIfNeeded(e.database))),e.setstmt){if(e.setstmt.kind==="VAR_RESET")t.push("RESET"),e.setstmt.name&&t.push(e.setstmt.name);else if(t.push("SET"),e.setstmt.name&&t.push(e.setstmt.name),e.setstmt.args&&e.setstmt.args.length>0){t.push("TO");let n=h.unwrapList(e.setstmt.args).map(i=>this.visit(i,r)).join(", ");t.push(n);}}return t.join(" ")}CreateForeignTableStmt(e,r){let t=["CREATE FOREIGN TABLE"];if(e.base&&e.base.relation){let n=r.spawn("CreateForeignTableStmt");t.push(this.RangeVar(e.base.relation,n));}if(e.base&&e.base.tableElts){let n=h.unwrapList(e.base.tableElts).map(i=>this.visit(i,r));t.push(`(${n.join(", ")})`);}else e.base?.partbound||t.push("()");if(e.base&&e.base.inhRelations&&e.base.inhRelations.length>0)if(e.base.partbound){let n=h.unwrapList(e.base.inhRelations).map(i=>this.visit(i,r));t.push(`PARTITION OF ${n.join(", ")}`),e.base.partbound.is_default&&t.push("DEFAULT");}else {let n=h.unwrapList(e.base.inhRelations).map(i=>this.visit(i,r));t.push(`INHERITS (${n.join(", ")})`);}if(e.servername&&(t.push("SERVER"),t.push(S.quoteIdentifier(e.servername))),e.options&&e.options.length>0){let n=r.spawn("CreateForeignTableStmt"),i=h.unwrapList(e.options).map(a=>this.visit(a,n));t.push(`OPTIONS (${i.join(", ")})`);}return t.join(" ")}containsMultilineStringLiteral(e){return /'[^']*\n[^']*'/g.test(e)}};function Sn(s){if("String"in s)return s.String.sval}function Rr(s){return s.map(Sn).filter(e=>e!=null)}function _r(s){return s==null?[]:s.List!==void 0?s.List.items||[]:Array.isArray(s)?s:[s]}function Ta(s){return S.quoteIdentifier(s)}function is(s){return Object.keys(s)[0]}function fh(s){if("A_Const"in s){if(s.A_Const.ival)return s.A_Const.ival.ival;if(s.A_Const.fval)return s.A_Const.fval.fval;if(s.A_Const.sval)return s.A_Const.sval.sval;if(s.A_Const.boolval)return s.A_Const.boolval.boolval;if(s.A_Const.isnull)return null}}var vr=class extends Error{},P=class extends vr{constructor(r,t){super(t??`Unsupported node type: ${is(r)}`);this.node=r;}},Bb={int2:"INTEGER",smallint:"INTEGER",int4:"INTEGER",integer:"INTEGER",int:"INTEGER",int8:"INTEGER",bigint:"INTEGER",serial:"INTEGER",serial4:"INTEGER",bigserial:"INTEGER",serial8:"INTEGER",smallserial:"INTEGER",serial2:"INTEGER",float4:"REAL",real:"REAL",float8:"REAL","double precision":"REAL",numeric:"REAL",decimal:"REAL",text:"TEXT",varchar:"TEXT","character varying":"TEXT",char:"TEXT",character:"TEXT",bpchar:"TEXT",name:"TEXT",bytea:"BLOB",bool:"INTEGER",boolean:"INTEGER",date:"TEXT",time:"TEXT","time without time zone":"TEXT",timetz:"TEXT","time with time zone":"TEXT",timestamp:"TEXT","timestamp without time zone":"TEXT",timestamptz:"TEXT","timestamp with time zone":"TEXT",interval:"TEXT",json:"TEXT",jsonb:"TEXT",uuid:"TEXT",inet:"TEXT"},mh=["<",">","<=",">=","=","<>","!=","+","-","*","/","%","&","|","<<",">>","||","BETWEEN","NOT BETWEEN","IN","NOT IN","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS TRUE","IS NOT TRUE","IS FALSE","IS NOT FALSE","IS UNKNOWN","IS NOT UNKNOWN","AND","OR","NOT","->>"];function hh(s){let e=s.toLowerCase().trim();if(e.startsWith("_")||e.endsWith("[]"))return "TEXT";let r=Bb[e];if(!r)throw new vr(`Unsupported PostgreSQL type: "${s}"`);return r}function wa(s){let e=s.toLowerCase();return ["serial","serial4","bigserial","serial8","smallserial","serial2"].includes(e)}function Ca(s){let e=s.toLowerCase();return ["varchar","character varying","char","character","bpchar"].includes(e)}function Aa(s){let e=s.toLowerCase();return ["numeric","decimal"].includes(e)}var Mb={CreateEnumStmt:{react:"ignore"},CreateDomainStmt:{react:"warn"},CreateSeqStmt:{react:"error"},AlterSeqStmt:{react:"error"},CreateSchemaStmt:{react:"warn"},CreatePolicyStmt:{react:"ignore"},PartitionElem:{react:"error"},PartitionCmd:{react:"error"},VariableSetStmt:{react:"ignore"},CompositeTypeStmt:{react:"error"},AlterEnumStmt:{react:"error"},AlterObjectSchemaStmt:{react:"error"},AlterOwnerStmt:{react:"error"},AlterTypeStmt:{react:"error"},AlterFunctionStmt:{react:"error"},AlterDefaultPrivilegesStmt:{react:"error"},GrantStmt:{react:"error"},GrantRoleStmt:{react:"error"},CopyStmt:{react:"error"},CreateCastStmt:{react:"error"},AlterOpFamilyStmt:{react:"error"},AlterOperatorStmt:{react:"error"},TruncateStmt:{react:"error"},A_Indirection:{react:"error"},XmlExpr:{react:"error"},XmlSerialize:{react:"error"},RangeTableSample:{react:"error"},GroupingSet:{react:"error"}},Ra=new Map(Object.entries(Mb));var Th=qn(dh());var wh=qn(Su());var va=class{constructor(e){this.ast=e;this.result=[...this.walk(this.ast,[],{trackPaths:["returningList"]})];}result=[];*walk(e=this.ast,r=[],t={}){if(!e||typeof e!="object")return;let{trackPaths:n=[]}=t;if(Array.isArray(e)){for(let a=0;a<e.length;a++)yield*this.walk(e[a],r,t);return}let i=Object.keys(e);if(i.length===1&&i[0][0]>="A"&&i[0][0]<="Z"){let a=i[0];yield {node:e,path:r},yield*this.walk(e[a],[...r,a],t);}else for(let[a,o]of Object.entries(e))if(o&&typeof o=="object"){let l=n.includes(a)?[...r,a]:r;yield*this.walk(o,l,t);}}containsUnsupportedNode(){for(let{node:e}of this.result){let r=is(e),t=Ra.get(r);if(t&&t.react==="error")return true}}hasFuncCall(){for(let{node:e}of this.result)if("FuncCall"in e)return true;return false}getFuncCalls(){return Array.from(this.result).map(({node:e})=>e).filter(e=>"FuncCall"in e).map(e=>e.FuncCall)}getFuncCallNames(){return this.getFuncCalls().flatMap(e=>e.funcname?.map(r=>r.String?.sval||r.String?.str))}hasSqlValueFunction(){for(let{node:e}of this.result)if("SQLValueFunction"in e)return true;return false}getSqlValueFunctions(){return Array.from(this.result).map(({node:e})=>e).filter(e=>"SQLValueFunction"in e).map(e=>e.SQLValueFunction)}getSqlValueFunctionNames(){return this.getSqlValueFunctions().map(e=>e.op)}hasUnsafeStar(){let e=this.result.filter(({node:r})=>"A_Star"in r);if(e.length===0)return false;for(let{path:r}of e)if(!r.includes("SelectStmt")&&!r.includes("returningList"))return true;return false}getRelationDefinitions(){return this.result.filter(({node:r})=>"CreateStmt"in r).map(({node:r})=>r.CreateStmt).map(r=>({relation:{relname:r.relation?.relname??"",inh:r.relation?.inh,relpersistence:r.relation?.relpersistence},columns:r.tableElts?.map(t=>{let n=t.ColumnDef?.typeName?.names?.map(a=>"String"in a?a.String.sval:""),i=n?.some(a=>a.toLowerCase().includes("pg_catalog"));return {name:t.ColumnDef?.colname??"",is_local:t.ColumnDef?.is_local,pg_catalog:i,type:n?.filter(a=>!a.toLowerCase().includes("pg_catalog"))[0]??"",types:n,constraints:t.ColumnDef?.constraints}})}))}getRelationColumnTypes(){return {has_non_pg_catalog_types:this.getRelationDefinitions().some(e=>e.columns?.some(r=>!r.pg_catalog)),types:Array.from(new Set(this.getRelationDefinitions().flatMap(e=>e.columns?.map(r=>r.type))))}}};var qb=["DECLARE","IF","ELSIF","ELSE","LOOP","WHILE","FOR","FOREACH","EXCEPTION","RAISE","PERFORM","EXECUTE","SELECT"],Jb=/^NEW\.(\w+)\s*(?::=|=)\s*(.+)$/is,Wb=/^RETURN\s+(NEW|OLD)$/i,Hb=/^(INSERT|UPDATE|DELETE)\b/i,os=class extends vr{constructor(r,t,n){super(n??`Unsupported PL/pgSQL: ${r}`);this.hint=r;this.body=t;}},Oa=class{parse(e){let r=this.extractBlock(e),t=this.splitStatements(r),n=[],i=null;for(let a of t){let o=a.trim();if(!o)continue;this.rejectUnsupported(o);let l=o.match(Wb);if(l){i=l[1].toUpperCase(),n.push({type:"return",value:i});continue}let u=o.match(Jb);if(u){n.push({type:"assignment",column:u[1],expression:u[2].trim()});continue}if(Hb.test(o)){n.push({type:"dml",sql:o});continue}throw new os(`"${o.substring(0,80)}" is not translatable to SQLite`,r)}if(!i)throw new vr("Trigger function body must end with RETURN NEW or RETURN OLD");return {statements:n,returnValue:i}}extractBlock(e){let r=e.trim(),t=r.toUpperCase();if(/^\s*DECLARE\b/i.test(r))throw new os('"DECLARE" is not translatable to SQLite',e);let n=t.indexOf("BEGIN"),i=t.lastIndexOf("END");if(n===-1||i===-1||i<=n)throw new os("Expected BEGIN ... END block in trigger function body",e);return r.slice(n+5,i).trim()}splitStatements(e){let r=[],t="",n=0,i=false,a="";for(let l=0;l<e.length;l++){let u=e[l];if(i){t+=u,u===a&&(l+1<e.length&&e[l+1]===a?t+=e[++l]:i=false);continue}if(u==="'"||u==='"'){i=true,a=u,t+=u;continue}if(u==="("){n++,t+=u;continue}if(u===")"){n--,t+=u;continue}if(u===";"&&n===0){r.push(t.trim()),t="";continue}t+=u;}let o=t.trim();return o&&r.push(o),r}rejectUnsupported(e){let r=e.match(/^(\w+)/)?.[1]?.toUpperCase();if(r&&qb.includes(r))throw new os(`"${r}" is not translatable to SQLite`,e)}};var Na=class{makeIndexKey(e){return `${e.table}:${e.name}:${e.unique}:${e.columns.join(",")}`}makeForeignKeyKey(e){return `${e.table}:${e.column}:${e.ref_table}:${e.ref_column}`}diff(e,r){let t=[],n=[],i=[],a=[],o=new Set(e.tables.map(g=>g.name)),l=new Set(r.tables.map(g=>g.name));for(let g of r.tables)o.has(g.name)||t.push({type:"added",name:g.name,sql:g.sql});for(let g of e.tables)l.has(g.name)||t.push({type:"removed",name:g.name});for(let g of e.tables){let b=r.tables.find(C=>C.name===g.name);if(!b)continue;let y=Wo(g.sql),T=Wo(b.sql);y!==T&&t.push({type:"modified",name:g.name,sql:b.sql});}let u=e.tables.filter(g=>l.has(g.name));for(let g of u){let b=e.columns.filter(w=>w.table===g.name),y=r.columns.filter(w=>w.table===g.name),T=new Map(b.map(w=>[w.name,w])),C=new Map(y.map(w=>[w.name,w]));for(let[w,A]of C)T.has(w)||n.push({type:"added",table:g.name,name:w,column:A});for(let[w]of T)C.has(w)||n.push({type:"removed",table:g.name,name:w});for(let[w,A]of T){let v=C.get(w);if(!v)continue;let R={};Jo(A.type)!==Jo(v.type)&&(R.type={from:A.type,to:v.type}),A.nullable!==v.nullable&&(R.nullable={from:A.nullable,to:v.nullable}),Ho(A.default_value)!==Ho(v.default_value)&&(R.default_value={from:A.default_value,to:v.default_value}),Object.keys(R).length>0&&n.push({type:"modified",table:g.name,name:w,changes:R});}}let p=new Map(e.indexes.map(g=>[this.makeIndexKey(g),g])),c=new Map(r.indexes.map(g=>[this.makeIndexKey(g),g]));for(let[g,b]of c)p.has(g)||i.push({type:"added",...b});for(let[g,b]of p)c.has(g)||i.push({type:"removed",...b});let f=new Map(e.foreign_keys.map(g=>[this.makeForeignKeyKey(g),g])),m=new Map(r.foreign_keys.map(g=>[this.makeForeignKeyKey(g),g]));for(let[g,b]of m)f.has(g)||a.push({type:"added",...b});for(let[g,b]of f)m.has(g)||a.push({type:"removed",...b});let d=t.length>0||n.length>0||i.length>0||a.length>0;return {tables:t,columns:n,indexes:i,foreign_keys:a,has_changes:d}}};var Gb=["CURRENT_TIMESTAMP","CURRENT_TIME","CURRENT_DATE"],Ia=class{plan(e,r,t,n){if(!e.has_changes)return {steps:[],warnings:[],unsafe:false};let i=[],a=[];i.push({sql:"PRAGMA foreign_keys=OFF;",description:"Disable foreign key checks",type:"disable_foreign_keys"}),i.push({sql:"BEGIN;",description:"Begin transaction",type:"begin_transaction"});for(let c of e.tables.filter(f=>f.type==="added")){i.push({sql:`${c.sql};`,description:`CREATE TABLE ${$(c.name)}`,type:"create_table"});let f=t.indexes.filter(m=>m.table===c.name);for(let m of f){let d=m.unique?"UNIQUE ":"",g=m.columns.map(b=>$(b)).join(", ");i.push({sql:`CREATE ${d}INDEX ${$(m.name)} ON ${$(c.name)} (${g});`,description:`Create index ${$(m.name)} on ${$(c.name)}`,type:"add_index"});}}let o=new Set(r.tables.map(c=>c.name)),l=new Set(t.tables.map(c=>c.name)),u=new Set(e.tables.filter(c=>c.type==="modified").map(c=>c.name)),p=[...o].filter(c=>l.has(c));for(let c of p){if(!(u.has(c)||e.columns.some(g=>g.table===c)||e.indexes.some(g=>g.table===c)||e.foreign_keys.some(g=>g.table===c)))continue;let{canAlter:m,addedCols:d}=this.canSimpleAlter(c,e,t);if(m){for(let y of d)i.push({sql:`ALTER TABLE ${$(c)} ADD COLUMN ${this.columnDef(y)};`,description:`Add column ${$(y.name)} to ${$(c)}`,type:"add_column"});let g=e.indexes.filter(y=>y.table===c&&y.type==="added"),b=e.indexes.filter(y=>y.table===c&&y.type==="removed");for(let y of b)i.push({sql:`DROP INDEX IF EXISTS ${$(y.name)};`,description:`Drop index ${$(y.name)}`,type:"drop_index"});for(let y of g){let T=y.unique?"UNIQUE ":"",C=y.columns.map(w=>$(w)).join(", ");i.push({sql:`CREATE ${T}INDEX ${$(y.name)} ON ${$(c)} (${C});`,description:`Create index ${$(y.name)} on ${$(c)}`,type:"add_index"});}}else {let g=this.rebuildTable(c,r,t,e);i.push(...g.steps),a.push(...g.warnings);}}for(let c of e.tables.filter(f=>f.type==="removed"))i.push({sql:`DROP TABLE ${$(c.name)};`,description:`Drop table ${$(c.name)}`,type:"drop_table"}),a.push({table:c.name,reason:"table will be dropped"});return i.push({sql:"COMMIT;",description:"Commit transaction",type:"commit_transaction"}),i.push({sql:"PRAGMA foreign_keys=ON;",description:"Re-enable foreign key checks",type:"enable_foreign_keys"}),{steps:i,warnings:a,unsafe:a.length>0}}rebuildTable(e,r,t,n){let i=[],a=[],o=t.tables.find(y=>y.name===e);if(!o)return {steps:i,warnings:a};let l=`_${e}_migrate_new`,u=o.sql.replace(new RegExp(`(CREATE\\s+TABLE\\s+)(?:"${e}"|${e})`,"i"),`$1${$(l)}`);i.push({sql:`${u};`,description:`Create temporary table ${$(l)}`,type:"create_table"});let p=r.columns.filter(y=>y.table===e).map(y=>y.name),c=t.columns.filter(y=>y.table===e).map(y=>y.name),f=p.filter(y=>c.includes(y));if(f.length>0){let y=f.map(T=>$(T)).join(", ");i.push({sql:`INSERT INTO ${$(l)} (${y})
339
- SELECT ${y}
340
- FROM ${$(e)};`,description:`Copy data from ${$(e)} to ${$(l)}`,type:"copy_data"});}i.push({sql:`DROP TABLE ${$(e)};`,description:`Drop old table ${$(e)}`,type:"drop_table"}),i.push({sql:`ALTER TABLE ${$(l)} RENAME TO ${$(e)};`,description:`Rename ${$(l)} to ${$(e)}`,type:"rename_table"});let m=t.indexes.filter(y=>y.table===e);for(let y of m){let T=y.unique?"UNIQUE ":"",C=y.columns.map(w=>$(w)).join(", ");i.push({sql:`CREATE ${T}INDEX ${$(y.name)} ON ${$(e)} (${C});`,description:`Recreate index ${$(y.name)} on ${$(e)}`,type:"add_index"});}let d=t.triggers?.filter(y=>y.table===e)??[];for(let y of d)i.push({sql:`${y.sql};`,description:`Recreate trigger ${$(y.name)} on ${$(e)}`,type:"create_trigger"});let g=n.columns.filter(y=>y.table===e&&y.type==="removed");for(let y of g)a.push({table:e,reason:`column "${y.name}" will be dropped`});let b=n.columns.filter(y=>y.table===e&&y.type==="modified");for(let y of b)y.changes?.type&&a.push({table:e,reason:`column "${y.name}" type changes from ${y.changes.type.from} to ${y.changes.type.to}`}),y.changes?.nullable&&!y.changes.nullable.to&&a.push({table:e,reason:`column "${y.name}" becomes NOT NULL`});return {steps:i,warnings:a}}canSimpleAlter(e,r,t){let n=r.columns.filter(c=>c.table===e),i=n.filter(c=>c.type==="added"),a=n.filter(c=>c.type==="removed"),o=n.filter(c=>c.type==="modified"),l=r.foreign_keys.some(c=>c.table===e);if(a.length>0||o.length>0||l)return {canAlter:false,addedCols:i};let u=t.tables.find(c=>c.name===e);return u&&/\bCHECK\s*\(/i.test(u.sql)?{canAlter:false,addedCols:i}:{canAlter:i.every(c=>{let f=c.column;return this.hasNonConstantDefault(f.default_value)?false:f.nullable||f.default_value!=null})&&i.length>0,addedCols:i}}hasNonConstantDefault(e){if(e==null)return false;let r=e.trim().toUpperCase();return Gb.includes(r)}columnDef(e){let r=e.column,t=`${$(r.name)} ${r.type||"TEXT"}`;return r.nullable||(t+=" NOT NULL"),r.default_value!=null&&(t+=` DEFAULT ${r.default_value}`),t}};var Ee=class{context;constructor(e){this.context=e;}get isShimBacked(){return false}checkConstraint(){return null}serialize(e){return e}deserialize(e){return e}validateStorage(e){return {status:"pass",message:null}}validationFail(e,r){return {status:"fail",message:e,action:r}}validationPass(){return {status:"pass",message:null}}isNullish(e){return e==null}toColumnDDL(e){let{includeNullable:r=true}=e??{},t=[],n=this.context.column;t.push(this.quoteIfNeeded(n)),t.push(this.sqliteType),this.context.isPrimaryKey&&t.push("PRIMARY KEY"),this.context.isSerial&&this.context.isPrimaryKey&&t.push("AUTOINCREMENT"),r&&!this.context.nullable&&!this.context.isPrimaryKey&&t.push("NOT NULL"),this.context.isUnique&&!this.context.isPrimaryKey&&t.push("UNIQUE"),this.context.defaultValue!==null&&t.push(`DEFAULT ${this.context.defaultValue}`);let i=this.checkConstraint();return i&&t.push(`CHECK (${i})`),t.join(" ")}checkError(e,r){return new hr(this.context.table,this.context.column,e,r)}quoteIfNeeded(e){return /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)?e:`"${e}"`}};var Or=class extends Ee{get sqliteType(){return "INTEGER"}};var bn=class extends Or{constructor(e){super({...e,isSerial:true});}};function Vb(s,e){let{precision:r,scale:t}=e,n=10**t,i=10**(r-t);return Math.abs(Math.round(s*n)-s*n)<1e-4&&Math.abs(s)<i}var Tn=class extends Ee{numericPrecision;constructor(e,r){super(e),this.numericPrecision=r;}get isShimBacked(){return this.numericPrecision!==void 0}get sqliteType(){return "REAL"}checkConstraint(){if(this.numericPrecision){let{precision:e,scale:r}=this.numericPrecision,t=this.context.column,n=10**r,i=10**(e-r);return `ABS(ROUND(${t} * ${n}) - ${t} * ${n}) < 0.0001 AND ABS(${t}) < ${i}`}return null}validateStorage(e){if(this.isNullish(e))return this.validationPass();if(typeof e!="number"||!Number.isFinite(e))return this.validationFail("Expected finite number.","Patch rows with finite numbers.");if(this.numericPrecision){let{precision:r,scale:t}=this.numericPrecision;if(!Vb(e,this.numericPrecision))return this.validationFail(`Does not fit numeric(${r}, ${t}).`,"Patch rows within numeric precision.")}return this.validationPass()}};var ie=class extends Ee{lengthConstraint;constructor(e,r){super(e),this.lengthConstraint=r;}get isShimBacked(){return this.lengthConstraint!==void 0}get sqliteType(){return "TEXT"}checkConstraint(){return this.lengthConstraint!==void 0?`length(${this.context.column}) <= ${this.lengthConstraint}`:null}validateStorage(e){return this.isNullish(e)?this.validationPass():typeof e!="string"?this.validationFail("Expected text.","Patch rows with text values."):this.lengthConstraint!==void 0&&Array.from(e).length>this.lengthConstraint?this.validationFail(`Exceeds length ${this.lengthConstraint}.`,"Patch rows with shorter text."):this.validationPass()}};var wn=class extends Ee{get sqliteType(){return "BLOB"}};var Cn=class extends Ee{get isShimBacked(){return true}get sqliteType(){return "INTEGER"}checkConstraint(){return `${this.context.column} IN (0, 1)`}serialize(e){if(this.isNullish(e))return e;if(e===true||e===1)return 1;if(e===false||e===0)return 0;throw this.checkError("boolean_range",e)}deserialize(e){return this.isNullish(e)?e:e===1?true:e===0?false:e}validateStorage(e){return this.isNullish(e)?this.validationPass():e===1||e===0?this.validationPass():this.validationFail("Expected 0 or 1.","Patch rows with boolean values.")}};function gh(s){try{return {ok:!0,value:JSON.parse(s)}}catch{return {ok:false}}}var An=class extends Ee{get isShimBacked(){return true}get sqliteType(){return "TEXT"}checkConstraint(){let e=this.context.column;return `${e} IS NULL OR json_valid(${e})`}serialize(e){if(this.isNullish(e))return e;try{return JSON.stringify(e)}catch{throw this.checkError("json_valid",e)}}deserialize(e){if(this.isNullish(e))return e;if(typeof e=="string"){let r=gh(e);return r.ok?r.value:e}return e}validateStorage(e){return this.isNullish(e)?this.validationPass():typeof e!="string"?this.validationFail("Expected JSON text.","Patch rows with JSON values."):gh(e).ok?this.validationPass():this.validationFail("Invalid JSON text.","Patch rows with valid JSON.")}};function Kb(s){if(!/^\d{4}-\d{2}-\d{2}$/.test(s))return false;let e=new Date(`${s}T00:00:00.000Z`);return !Number.isNaN(e.getTime())&&e.toISOString().slice(0,10)===s}var Rn=class extends ie{get isShimBacked(){return true}checkConstraint(){let e=this.context.column;return `${e} IS NULL OR date(${e}) IS NOT NULL`}validateStorage(e){return this.isNullish(e)?this.validationPass():typeof e!="string"||!Kb(e)?this.validationFail("Invalid date.","Patch rows with YYYY-MM-DD dates."):this.validationPass()}};function Yb(s){let e=s.match(/^(\d{2}):(\d{2})(?::(\d{2})(?:\.\d{1,6})?)?([+-](\d{2}):?(\d{2}))?$/);if(!e)return false;let r=Number(e[1]),t=Number(e[2]),n=e[3]===void 0?0:Number(e[3]),i=e[5]===void 0?null:Number(e[5]),a=e[6]===void 0?null:Number(e[6]),o=i===null||a!==null&&i<=15&&a<=59;return r<=24&&t<=59&&n<=59&&(r!==24||t===0&&n===0)&&o}var _n=class extends ie{get isShimBacked(){return true}checkConstraint(){let e=this.context.column;return `${e} IS NULL OR time(${e}) IS NOT NULL`}validateStorage(e){return this.isNullish(e)?this.validationPass():typeof e!="string"||!Yb(e)?this.validationFail("Invalid time.","Patch rows with HH:MM[:SS] times."):this.validationPass()}};function zb(s){let e=s.match(/^(\d{4})-(\d{2})-(\d{2})[ T](\d{2}):(\d{2})(?::(\d{2})(?:\.\d{1,6})?)?(?:Z|([+-](\d{2}):?(\d{2})))?$/);if(!e)return false;let r=Number(e[1]),t=Number(e[2]),n=Number(e[3]),i=Number(e[4]),a=Number(e[5]),o=e[6]===void 0?0:Number(e[6]),l=e[8]===void 0?null:Number(e[8]),u=e[9]===void 0?null:Number(e[9]),p=new Date(Date.UTC(r,t-1,n)),c=p.getUTCFullYear()===r&&p.getUTCMonth()===t-1&&p.getUTCDate()===n,f=i<=24&&a<=59&&o<=59&&(i!==24||a===0&&o===0),m=l===null||u!==null&&l<=15&&u<=59;return c&&f&&m}var vn=class extends ie{get isShimBacked(){return true}checkConstraint(){let e=this.context.column;return `${e} IS NULL OR datetime(${e}) IS NOT NULL`}validateStorage(e){return this.isNullish(e)?this.validationPass():typeof e!="string"||!zb(e)?this.validationFail("Invalid timestamp.","Patch rows with ISO timestamps."):this.validationPass()}};var On=class extends ie{get isShimBacked(){return true}validateStorage(e){return this.isNullish(e)?this.validationPass():typeof e!="string"||e.trim().length===0?this.validationFail("Expected interval text.","Patch rows with interval strings."):/^-?\d+(?:\.\d+)?$/.test(e.trim())?this.validationFail("Ambiguous numeric interval.","Patch rows with explicit interval strings."):this.validationPass()}};var Nn=class extends ie{enumValues;constructor(e,r){super(e),this.enumValues=r;}get isShimBacked(){return true}checkConstraint(){let e=this.context.column,r=this.enumValues.map(t=>`'${t.replace(/'/g,"''")}'`).join(", ");return `${e} IN (${r})`}serialize(e){if(this.isNullish(e))return e;if(typeof e!="string"||!this.enumValues.includes(e))throw this.checkError("enum_membership",e);return e}validateStorage(e){return this.isNullish(e)?this.validationPass():typeof e!="string"||!this.enumValues.includes(e)?this.validationFail("Invalid enum value.","Patch rows with declared enum values."):this.validationPass()}};function yh(s){try{return {ok:!0,value:JSON.parse(s)}}catch{return {ok:false}}}var ls=class extends Ee{elementField;constructor(e,r){super(e),this.elementField=r;}get sqliteType(){return "TEXT"}get isShimBacked(){return true}checkConstraint(){let e=this.context.column;return `${e} IS NULL OR (json_valid(${e}) AND json_type(${e}) = 'array')`}serialize(e){if(this.isNullish(e))return e;if(!Array.isArray(e))throw this.checkError("array_type",e);return this.elementField?JSON.stringify(e.map(r=>this.elementField.serialize(r))):JSON.stringify(e)}deserialize(e){if(this.isNullish(e))return e;if(typeof e=="string"){let r=yh(e);if(r.ok&&Array.isArray(r.value))return this.elementField?r.value.map(t=>this.elementField.deserialize(t)):r.value}return e}validateStorage(e){if(this.isNullish(e))return this.validationPass();if(typeof e!="string")return this.validationFail("Expected JSON array text.","Patch rows with array values.");let r=yh(e);if(!r.ok)return this.validationFail("Invalid JSON array text.","Patch rows with array values.");if(!Array.isArray(r.value))return this.validationFail("Expected JSON array.","Patch rows with array values.");if(this.elementField)for(let t of r.value){let n=this.elementField.validateStorage(t);if(n.status==="fail")return this.validationFail(`Invalid ${this.elementField.context.pgTypeName} array element.`,n.action??"Patch rows with valid array elements.")}return this.validationPass()}};var Xb="????????-????-????-????-????????????",Qb=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;function Eh(s){return Qb.test(s.toLowerCase())}var In=class extends ie{get isShimBacked(){return true}checkConstraint(){let e=this.quoteIfNeeded(this.context.column);return `${e} IS NULL OR ${e} GLOB '${Xb}'`}serialize(e){if(this.isNullish(e))return e;if(typeof e!="string")throw this.checkError("uuid_format",e);let r=e.toLowerCase();if(!Eh(r))throw this.checkError("uuid_format",e);return r}validateStorage(e){return this.isNullish(e)?this.validationPass():typeof e!="string"||!Eh(e)?this.validationFail("Invalid UUID.","Patch rows with valid UUIDs."):this.validationPass()}};function Zb(s){let e=s.split("/");if(e.length>2)return null;let r=e[0];if(!r)return null;if(e.length===1)return {address:r,prefix:null};let t=e[1];return !t||!/^\d+$/.test(t)?null:{address:r,prefix:Number(t)}}function eT(s){let e=s.split(".");return e.length!==4?false:e.every(r=>{if(!/^\d+$/.test(r))return false;let t=Number(r);return t>=0&&t<=255})}function tT(s){if(!s.includes(":"))return false;try{return new URL(`http://[${s}]/`),!0}catch{return false}}function Sh(s){let e=Zb(s);return e?eT(e.address)?e.prefix===null||e.prefix>=0&&e.prefix<=32:tT(e.address)?e.prefix===null||e.prefix>=0&&e.prefix<=128:false:false}var Ln=class extends ie{get isShimBacked(){return true}checkConstraint(){let e=this.quoteIfNeeded(this.context.column);return `${e} IS NULL OR (length(${e}) BETWEEN 3 AND 49 AND (instr(${e}, '.') > 0 OR instr(${e}, ':') > 0))`}serialize(e){if(this.isNullish(e))return e;if(typeof e!="string")throw this.checkError("inet_format",e);let r=e.trim();if(!Sh(r))throw this.checkError("inet_format",e);return r}validateStorage(e){return this.isNullish(e)?this.validationPass():typeof e!="string"||!Sh(e.trim())?this.validationFail("Invalid inet address.","Patch rows with valid inet strings."):this.validationPass()}};var kn=class extends ie{serialize(e){throw new Error(`Unsupported type "${this.context.pgTypeName}" for ${this.context.table}.${this.context.column}`)}deserialize(e){throw new Error(`Unsupported type "${this.context.pgTypeName}" for ${this.context.table}.${this.context.column}`)}toColumnDDL(){throw new Error(`Unsupported type "${this.context.pgTypeName}" for ${this.context.table}.${this.context.column}`)}};var rT=new Set(["int2","smallint","int4","integer","int","int8","bigint"]),sT=new Set(["serial","serial4","bigserial","serial8","smallserial","serial2"]),nT=new Set(["float4","real","float8","double precision","numeric","decimal"]),iT=new Set(["text","varchar","character varying","char","character","bpchar"]),aT=new Set(["bytea"]),oT=new Set(["bool","boolean"]),lT=new Set(["json","jsonb"]),uT=new Set(["uuid"]),cT=new Set(["name"]),pT=new Set(["inet"]),fT=new Set(["date"]),mT=new Set(["time","timetz","time without time zone","time with time zone"]),hT=new Set(["timestamp","timestamptz","timestamp without time zone","timestamp with time zone"]),dT=new Set(["interval"]);function Nr(s,e){if(e?.isArray){let t=Nr(s,{...e,isArray:false});return new ls(s,t)}if(e?.enumValues)return new Nn(s,e.enumValues);let r=s.pgTypeName.toLowerCase().trim();if(r.startsWith("_")||r.endsWith("[]")){let t=r.startsWith("_")?r.slice(1):r.slice(0,-2),n={...s,pgTypeName:t},i=Nr(n);return new ls(s,i)}return sT.has(r)?new bn(s):rT.has(r)?new Or(s):oT.has(r)?new Cn(s):lT.has(r)?new An(s):fT.has(r)?new Rn(s):mT.has(r)?new _n(s):hT.has(r)?new vn(s):dT.has(r)?new On(s):aT.has(r)?new wn(s):nT.has(r)?new Tn(s,e?.numericPrecision):uT.has(r)?new In(s):cT.has(r)?new ie(s,63):pT.has(r)?new Ln(s):iT.has(r)?new ie(s,e?.lengthConstraint):new kn(s)}var bh="lower(hex(randomblob(4))) || '-' || lower(hex(randomblob(2))) || '-4' || substr(lower(hex(randomblob(2))),2) || '-' || substr('89ab',abs(random()) % 4 + 1, 1) || substr(lower(hex(randomblob(2))),2) || '-' || lower(hex(randomblob(6)))",La={gen_random_uuid:{sqlite:()=>bh,js:()=>crypto.randomUUID()},uuid_generate_v4:{sqlite:()=>bh,js:()=>crypto.randomUUID()},now:{sqlite:()=>"datetime('now')",js:()=>new Date().toISOString()},current_timestamp:{sqlite:()=>"datetime('now')",js:()=>new Date().toISOString()},current_date:{sqlite:()=>"date('now')",js:()=>new Date().toISOString().split("T")[0]},current_time:{sqlite:()=>"time('now')",js:()=>new Date().toISOString().split("T")[1].replace("Z","")},random:{sqlite:()=>"random()",js:()=>Math.random()},length:{sqlite:()=>"length",js:null},lower:{sqlite:()=>"lower",js:null},upper:{sqlite:()=>"upper",js:null},substr:{sqlite:()=>"substr",js:null},substring:{sqlite:()=>"substr",js:null},trim:{sqlite:()=>"trim",js:null},ltrim:{sqlite:()=>"ltrim",js:null},rtrim:{sqlite:()=>"rtrim",js:null},replace:{sqlite:()=>"replace",js:null},coalesce:{sqlite:()=>"coalesce",js:null},nullif:{sqlite:()=>"nullif",js:null},count:{sqlite:()=>"count",js:null},sum:{sqlite:()=>"sum",js:null},avg:{sqlite:()=>"avg",js:null},min:{sqlite:()=>"min",js:null},max:{sqlite:()=>"max",js:null},localtime:{sqlite:()=>"time('now', 'localtime')",js:null},localtimestamp:{sqlite:()=>"datetime('now', 'localtime')",js:null}};function wu(s,e="auto"){let r=s.toLowerCase(),t=La[r];if(!t)return null;switch(e){case "translate":{if(!t.sqlite)throw new Error(`No SQLite translation for function "${s}"`);return {sqliteExpr:t.sqlite(),jsFn:null}}case "synthetic":{if(!t.js)throw new Error(`No JS implementation for function "${s}"`);return {sqliteExpr:null,jsFn:t.js}}case "auto":return t.js?{sqliteExpr:null,jsFn:t.js}:t.sqlite?{sqliteExpr:t.sqlite(),jsFn:null}:null}}var ka=class extends ns{enums;schemaHandling;warnings=[];helper;config;triggerFunctions=new Map;plpgsqlParser=new Oa;introspection;functionResolution;constructor(e,{enums:r,schemaHandling:t,introspection:n,...i}={}){super(e,i),this.schemaHandling=t??"default",this.enums=r??new Map,this.helper=new va(e),this.config=i,this.introspection=n,this.functionResolution=i?.functionResolution??"translate";}visit(e,r){let t=is(e),n=Ra.get(t);if(n){if(n.react==="error")throw new P({[t]:e},`Unsupported node type: ${t}`);return n.react==="warn"&&this.warnings.push({type:t,node:e}),""}return super.visit(e,r)}deparse(e,r){if(e==null)return null;if(!r){let t=new wh.SqlFormatter;r=new Th.DeparserContext({formatter:t});}return typeof e=="number"||e instanceof Number?e.toString():this.visit(e,r)}RawStmt(e,r){if(!e.stmt||e.stmt.CommentStmt)return "";let t=this.deparse(e.stmt,r);return !t||t.length===0?"":e.stmt_len?t+";":t}RangeVar(e,r){this.ensureRelation(e);let t=this.effectiveSchema(e.schemaname),n=e.relname,i=this.quoteBareIfNeeded(n);t&&(this.schemaHandling==="prefix"?i=`${t}__${n}`:i=`"${t}.${n}"`);let a=e.alias?" "+this.Alias(e.alias,r):"";return i+a}getRelationName(e){this.ensureRelation(e);let r=this.effectiveSchema(e.schemaname),t=e.relname;return r?this.schemaHandling==="prefix"?`${r}__${t}`:`${r}.${t}`:t}quoteBareIfNeeded(e){return /^[A-Za-z_][A-Za-z0-9_]*$/.test(e)?e:`"${e.replace(/"/g,'""')}"`}effectiveSchema(e){if(e){if(this.config.forceDefaultSchema||this.schemaHandling!=="default")return e;if(e!=="public")return e}}ensureRelation(e){let r=this.config.forceDefaultSchema;r&&(!e||typeof e!="object"||r.length===0||e.schemaname||(e.schemaname=r));}CreateStmt(e,r){if(e.inhRelations&&e.inhRelations.length>0)throw new P({CreateStmt:e},"Inheritance is not supported in SQLite");if(e.ofTypename!==void 0)throw new P({CreateStmt:e},"Typed tables (CREATE TABLE ... OF type_name) are not supported. Define columns directly in the CREATE TABLE statement instead.");if(e.options&&e.options.length>0&&(e.options=void 0),!e.tableElts||e.tableElts.length===0)throw new P({CreateStmt:e},"Empty tables are not supported in SQLite. Define at least one column.");return e.accessMethod&&(e.accessMethod=void 0),super.CreateStmt(e,r)+" STRICT"}TableLikeClause(e,r){throw new P({TableLikeClause:e},"CREATE TABLE ... (LIKE ...) is not supported in SQLite. Define the table columns explicitly instead.")}DefElem(e,r){if(["oids","fillfactor",/^autovacuum_/i,"toast_tuple_target","parallel_workers","user_catalog_table"].some(i=>ki(e.defname??"",i)))return "";let n=super.DefElem(e,r);throw new P({DefElem:e},`DefElem "${e.defname}" (${n}) not supported`)}TypeName(e,r){if(!e.names)return "";let t=e.names.map(i=>i.String?i.String.sval||i.String.str:"").filter(Boolean);if(t.length===0)return "";let n=t.length===2&&t[0]==="pg_catalog"?t[1]:t.join(".");return e.arrayBounds&&e.arrayBounds.length>0||this.enums.has(n.toLowerCase())?"TEXT":hh(n)}ColumnDef(e,r){let t=[],n=e.colname;n&&t.push(this.quoteIfNeeded(n));let i=false,a=false,o=null,l=null,u=null,p=false;if(e.typeName){let c=e.typeName.names?.map(d=>d.String?.sval||d.String?.str).filter(Boolean);u=c&&(c.length===2&&c[0]==="pg_catalog"?c[1]:c[0]),i=!!(u&&wa(u)),p=!!(e.typeName.arrayBounds&&e.typeName.arrayBounds.length>0);let f=Array.isArray(e.typeName.typmods)?e.typeName.typmods:[],m=d=>f[d]?.A_Const?.ival?.ival??f[d]?.A_Const?.val?.ival?.ival;if(u&&Ca(u)&&f.length>0){let d=m(0);typeof d=="number"&&d>0&&(o={maxLen:d});}if(u&&Aa(u)&&f.length>=2){let d=m(0),g=m(1);typeof d=="number"&&typeof g=="number"&&d>0&&g>=0&&(l={precision:d,scale:g});}if(e.constraints){let d=Array.isArray(e.constraints)?e.constraints:[];a=d.some(g=>g.Constraint?.contype==="CONSTR_PRIMARY"),d.some(g=>g.Constraint?.contype==="CONSTR_IDENTITY")&&(i=true);}t.push(this.TypeName(e.typeName,r));}if(e.constraints){let c=Array.isArray(e.constraints)?e.constraints:[],f=c.map(d=>this.visit(d,r));t.push(...f.filter(Boolean));let m=c.some(d=>d.Constraint?.contype==="CONSTR_CHECK");i&&a&&!m&&t.push("AUTOINCREMENT");}if(n&&u){let c={isArray:p};o&&(c.lengthConstraint=o.maxLen),l&&(c.numericPrecision=l);let f=this.enums.get(u.toLowerCase());f&&(c.enumValues=f);let g=Nr({schema:"public",table:"",column:n,pgTypeName:u,nullable:true,defaultValue:null,defaultFn:null,isPrimaryKey:a,isUnique:false,isSerial:i},c).checkConstraint();g&&t.push(`CHECK (${g})`);}return t.join(" ")}Constraint(e,r){let t=e.contype;if(t==="CONSTR_IDENTITY"||t==="CONSTR_ATTR_DEFERRABLE"||t==="CONSTR_ATTR_NOT_DEFERRABLE"||t==="CONSTR_ATTR_DEFERRED"||t==="CONSTR_ATTR_IMMEDIATE")return "";if(t==="CONSTR_NULL")return "NULL";if(t==="CONSTR_NOTNULL")return "NOT NULL";if(t==="CONSTR_DEFAULT"&&e.raw_expr){let n=this.visit(e.raw_expr,r);return n.includes("(")&&!n.startsWith("(")?`DEFAULT (${n})`:`DEFAULT ${n}`}if(t==="CONSTR_CHECK"&&e.raw_expr){let n=[];e.conname&&n.push("CONSTRAINT",Ta(e.conname)),n.push("CHECK");let i=this.visit(e.raw_expr,r);return n.push(`(${i})`),n.join(" ")}if(t==="CONSTR_PRIMARY")return e.keys&&e.keys.length>0?`PRIMARY KEY (${_r(e.keys).map(i=>this.visit(i,r)).join(", ")})`:"PRIMARY KEY";if(t==="CONSTR_UNIQUE")return e.keys&&e.keys.length>0?`UNIQUE (${_r(e.keys).map(i=>this.visit(i,r)).join(", ")})`:"UNIQUE";if(t==="CONSTR_FOREIGN")return super.Constraint(e,r).replace(/FOREIGN\s+KEY\s+REFERENCES/gi,"REFERENCES");if(t==="CONSTR_GENERATED"&&e.raw_expr)return `GENERATED ALWAYS AS (${this.visit(e.raw_expr,r)}) STORED`;if(t==="CONSTR_EXCLUSION")throw new P({Constraint:e},"EXCLUSION constraints are not supported in SQLite");return ""}FuncCall(e,r){let n=(e.funcname||[]).map(u=>u.String?.sval||u.String?.str).filter(Boolean);if(n.length===0)throw new Error("Function call has no name");let i=n[n.length-1].toLowerCase();if(i==="extract"&&e.args&&e.args.length>=2){let u=e.args[0];if((u?.A_Const?.sval?.sval||u?.String?.sval)==="epoch")return `strftime('%s', ${this.visit(e.args[1],r)})`}let o=(e.args??[]).map(u=>this.visit(u,r));if(e.agg_star)return `${i}(*)`;if(e.agg_distinct)return `${i}(DISTINCT ${o.join(", ")})`;let l=wu(i,this.functionResolution);if(l){if(l.sqliteExpr!==null){let u=l.sqliteExpr;return u.includes("(")?u:`${u}(${o.join(", ")})`}if(l.jsFn!==null){let u=La[i];if(u?.sqlite){let p=u.sqlite();return p.includes("(")?p:`${p}(${o.join(", ")})`}}}throw new P({FuncCall:e},`Function call "${i}" not supported`)}SQLValueFunction(e,r){switch(e.op){case "SVFOP_CURRENT_TIMESTAMP":return "datetime('now')";case "SVFOP_CURRENT_DATE":return "date('now')";case "SVFOP_CURRENT_TIME":return "time('now')";default:throw new P({SQLValueFunction:e},`SQLValueFunction "${e.op}" not supported`)}}ResTarget(e,r){if(e.indirection&&e.indirection.length>0)throw new P({ResTarget:e},"Indirections are not supported in SQLite");let t=[];return r.update&&e.name?(t.push(this.quoteIfNeeded(e.name)),t.push("="),e.val&&t.push(this.deparse(e.val,r))):r.insertColumns&&e.name?t.push(this.quoteIfNeeded(e.name)):(e.val&&t.push(this.deparse(e.val,r)),e.name&&t.push(this.Alias({aliasname:e.name},r))),t.join(" ")}A_Expr(e,r){if(["AEXPR_OP_ALL","AEXPR_OP_ANY"].includes(e.kind))throw new P({A_Expr:e},"ALL/ANY/SOME comparison operators are not supported. Use NOT EXISTS or IN instead");if(e.name&&e.name.length>0){if(e.name.length>1)throw new P({A_Expr:e},"Schema-qualified OPERATOR() syntax is not supported in SQLite");let t=e.name[0]?.String?.sval||e.name[0]?.String?.str;if(t){if(!e.lexpr||!e.rexpr)throw new P({A_Expr:e},"A_Expr missing left or right expression");if(!mh.includes(t.toUpperCase()))throw new P({A_Expr:e},`Operator "${t}" is not supported in SQLite`);if(t==="~~"||t==="~~*"){let n=this.visit(e.lexpr,r),i=this.visit(e.rexpr,r);return `${n} LIKE ${i}`}if(t==="!~~"||t==="!~~*"){let n=this.visit(e.lexpr,r),i=this.visit(e.rexpr,r);return `${n} NOT LIKE ${i}`}if(t==="~"||t==="~*"){let n=this.visit(e.lexpr,r),i=this.visit(e.rexpr,r);return `${n} GLOB ${i}`}}}return super.A_Expr(e,r)}IndexStmt(e,r){let t=["CREATE"];e.unique&&t.push("UNIQUE"),t.push("INDEX"),e.if_not_exists&&t.push("IF NOT EXISTS"),e.idxname&&t.push(Ta(e.idxname)),t.push("ON"),e.relation&&t.push(this.RangeVar(e.relation,r));let n=(e.indexParams??[]).map(i=>"IndexElem"in i?this.IndexElem(i.IndexElem,r):this.visit(i,r)).filter(Boolean);return t.push(`(${n.join(", ")})`),t.join(" ")}IndexElem(e,r){let t=[];return e.name?t.push(Ta(e.name)):e.expr&&t.push(`(${this.visit(e.expr,r)})`),e.ordering==="SORTBY_ASC"&&t.push("ASC"),e.ordering==="SORTBY_DESC"&&t.push("DESC"),e.nulls_ordering==="SORTBY_NULLS_FIRST"&&t.push("NULLS FIRST"),e.nulls_ordering==="SORTBY_NULLS_LAST"&&t.push("NULLS LAST"),t.join(" ")}TypeCast(e,r){if(!e.arg||!e.typeName)return super.TypeCast(e,r);if([...this.helper.walk(e)].filter(({node:a})=>"A_Star"in a).length>0)throw new P({TypeCast:e},"A.* in type casts are not supported in SQLite");if(e.typeName.arrayBounds&&e.typeName.arrayBounds.length>0){if("A_Const"in e.arg&&e.arg.A_Const.sval){let a=e.arg.A_Const.sval.sval;if(a.startsWith("{")&&a.endsWith("}")){let o=e.typeName.names?.map(c=>c.String?.sval).filter(Boolean)??[],l=o.length===2&&o[0]==="pg_catalog"?o[1]:o[0],p=["text","varchar","character varying","char","bpchar","name","uuid"].includes(l?.toLowerCase());try{let c=this.parsePgArrayLiteral(a,p);return `'${JSON.stringify(c).replace(/'/g,"''")}'`}catch{}}}return this.visit(e.arg,r)}let n=this.visit(e.arg,r),i=this.TypeName(e.typeName,r);return `CAST(${n} AS ${i})`}A_ArrayExpr(e,r){let t=_r(e.elements),n=this.tryExtractStaticArray(t);return n!==void 0?`'${JSON.stringify(n).replace(/'/g,"''")}'`:`json_array(${t.map(a=>this.visit(a,r)).join(", ")})`}tryExtractStaticArray(e){let r=[];for(let t of e)if("A_ArrayExpr"in t){let n=_r(t.A_ArrayExpr.elements),i=this.tryExtractStaticArray(n);if(i===void 0)return;r.push(i);}else if("A_Const"in t){let n=t.A_Const;if(n.isnull)r.push(null);else if(n.ival)r.push(n.ival.ival);else if(n.fval)r.push(parseFloat(n.fval.fval));else if(n.sval)r.push(n.sval.sval);else if("boolval"in n)r.push(n.boolval.boolval===true);else return}else return;return r}parsePgArrayLiteral(e,r){if(!e.startsWith("{")||!e.endsWith("}"))throw new Error("Not a PG array literal");let t=e.slice(1,-1);if(t.length===0)return [];let n=[],i=0;for(;i<t.length;)if(t[i]==="{"){let a=0,o=i;for(;o<t.length;){if(t[o]==="{")a++;else if(t[o]==="}"&&(a--,a===0))break;o++;}n.push(this.parsePgArrayLiteral(t.slice(i,o+1),r)),i=o+1,t[i]===","&&i++;}else if(t[i]==='"'){let a=i+1,o="";for(;a<t.length&&t[a]!=='"';)t[a]==="\\"&&a++,o+=t[a],a++;n.push(o),i=a+1,t[i]===","&&i++;}else {let a=i;for(;a<t.length&&t[a]!==","&&t[a]!=="}";)a++;if(a===i)throw new Error("Malformed PG array literal");let o=t.slice(i,a);if(o==="NULL")n.push(null);else if(r)n.push(o);else {let l=Number(o);n.push(isNaN(l)?o:l);}i=a,t[i]===","&&i++;}return n}BetweenExpr(e,r){return super.A_Expr(e,r)}AlterTableStmt(e,r){let t=e.cmds??[],n=["AT_EnableRowSecurity","AT_ForceRowSecurity"],i=t.filter(p=>"AlterTableCmd"in p&&!n.includes(p.AlterTableCmd.subtype));if(i.length===0)return "";if(!["OBJECT_TABLE","OBJECT_INDEX","OBJECT_VIEW"].includes(e.objtype))throw new P({AlterTableStmt:e},`AlterTableStmt with objtype ${e.objtype} is not supported`);let a=["AT_AddColumn","AT_DropColumn"],o=["AT_AlterColumnType","AT_SetNotNull","AT_DropNotNull","AT_ColumnDefault","AT_AddConstraint","AT_DropConstraint"],l=[],u=[];for(let p of i){let c=p.AlterTableCmd.subtype;if(a.includes(c)){let f={...e,cmds:[p]};l.push(super.AlterTableStmt(f,r));}else if(o.includes(c))u.push(p.AlterTableCmd);else throw new P({AlterTableStmt:e},`AlterTableCmd with subtype ${c} is not supported in SQLite`)}if(u.length>0){let p=this.getRelationName(e.relation);l.push(this.generateRebuildSql(p,u));}return l.join(`;
341
- `)}AlterTableCmd(e,r){if(!["AT_AddColumn","AT_DropColumn"].includes(e.subtype))throw new P({AlterTableCmd:e},`AlterTableCmd with subtype ${e.subtype} is not supported`);return e.subtype==="AT_DropColumn"&&e.behavior?super.AlterTableCmd({...e,behavior:void 0},r):super.AlterTableCmd(e,r)}DefineStmt(e,r){if(e.kind==="OBJECT_AGGREGATE")throw new Error("AGGREGATE definitions are not supported in SQLite");return super.DefineStmt(e,r)}InsertStmt(e,r){if("selectStmt"in e){let n=(e.selectStmt?.SelectStmt?.valuesLists??[]).map(i=>i.List?.items?.map(a=>"SetToDefault"in a));if(n.length===1&&n[0]?.every(i=>i===true))return super.InsertStmt({...e,selectStmt:void 0,cols:void 0},r);if(n.some(i=>i.some(a=>a===true)))throw new P({InsertStmt:e},"Insert with partial DEFAULT values is not supported")}return super.InsertStmt(e,r)}SelectStmt(e,r){if(this.helper.hasUnsafeStar())throw new P({SelectStmt:e},"Row-wise comparison using .* is not supported in SQLite. Expand to explicit per-column comparisons instead.");if(e.intoClause)throw new P({SelectStmt:e},"SELECT ... INTO clause is not supported in SQLite");if(e.distinctClause){let n=_r(e.distinctClause);if(n.length>0&&Object.keys(n[0]).length>0)throw new P({SelectStmt:e},"DISTINCT ON clause is not supported in SQLite. Use window functions instead.")}if(e.limitOffset&&!e.limitCount)throw new P({SelectStmt:e},"OFFSET without LIMIT is not supported in SQLite");let t=super.SelectStmt(e,r);if(/^SELECT\s+FROM/.test(t))throw new P({SelectStmt:e},"SELECT without a target list is not supported in SQLite");return t}JoinExpr(e,r){return e.alias&&this.Alias(e.alias,r),super.JoinExpr(e,r)}A_Const(e,r){if(e.bsval!==void 0)throw new P({A_Const:e},"Bit string literals are not supported in SQLite");let t=super.A_Const(e,r);return typeof t=="string"&&t.startsWith("E'")?t.substring(2,t.length-1):t}SortBy(e,r){if(e.sortby_dir==="SORTBY_USING"){let t=_r(e.useOp),n=t[0]?.String?.sval;if(t.length>1||!["<",">"].includes(n??""))throw new P({SortBy:e},"Only `USING <` or `USING >` are supported.");e.sortby_dir=n==="<"?"SORTBY_DESC":"SORTBY_ASC",e.useOp=void 0;}return super.SortBy(e,r)}RangeSubselect(e,r){if(e.lateral)throw new P({RangeSubselect:e},"LATERAL subqueries are not supported in SQLite");return super.RangeSubselect(e,r)}SubLink(e,r){if(["ANY_SUBLINK","ALL_SUBLINK"].includes(e.subLinkType))throw new P({SubLink:e},"ANY/ALL/SOME subqueries are not supported. Use NOT EXISTS or IN instead");if(e.subLinkType==="ARRAY_SUBLINK")throw new P({SubLink:e},"ARRAY subqueries are not supported in SQLite");return super.SubLink(e,r)}LockingClause(e,r){return ""}UpdateStmt(e,r){if(r.parentNodeTypes.includes("SelectStmt"))throw new P({UpdateStmt:e},"UPDATE ... FROM (SELECT ...) is not supported in SQLite");return super.UpdateStmt(e,r)}Alias(e,r){if(e.colnames&&e.colnames.length>0)throw new P({Alias:e},"Aliasing with column names is not supported in SQLite");return `AS "${e.aliasname}"`}CreateFunctionStmt(e,r){let t=e.options??[],n=e.returnType?.names?.map(u=>u.String?.sval).filter(Boolean).join("."),i=t.find(u=>u.DefElem?.defname==="language")?.DefElem?.arg?.String?.sval;if(n!=="trigger"||i!=="plpgsql")throw new P({CreateFunctionStmt:e},"Only trigger functions with LANGUAGE plpgsql are supported");let a=e.funcname?.map(u=>u.String?.sval).filter(Boolean).pop();if(!a)throw new Error("Function has no name");let o=t.find(u=>u.DefElem?.defname==="as")?.DefElem?.arg?.List?.items?.[0]?.String?.sval;if(!o)throw new Error("Function has no body");let l=this.plpgsqlParser.parse(o);return this.triggerFunctions.set(a,l),""}CreateTrigStmt(e,r){let t=e.trigname,n=this.RangeVar(e.relation,r),i=e.funcname?.map(c=>c.String?.sval).filter(Boolean).pop();if(!i)throw new Error(`Trigger "${t}" has no function reference`);let a=this.triggerFunctions.get(i);if(!a)throw new P({CreateTrigStmt:e},`Trigger "${t}" references unknown function "${i}"`);let o=e.timing===2?"BEFORE":e.timing===64?"INSTEAD OF":"AFTER",l=[];if(e.events&4&&l.push("INSERT"),e.events&8&&l.push("DELETE"),e.events&16)if(e.columns?.length){let c=e.columns.map(f=>f.String?.sval).filter(Boolean);l.push(`UPDATE OF ${c.join(", ")}`);}else l.push("UPDATE");let u=l.join(" OR "),p=this.buildTriggerBody(a,n,r);return [`CREATE TRIGGER ${t}`,`${o} ${u} ON ${n}`,"FOR EACH ROW","BEGIN",...p.map(c=>` ${c};`),"END"].join(`
342
- `)}buildTriggerBody(e,r,t){let n=[],i=[];for(let a of e.statements)if(a.type!=="return"){if(a.type==="assignment"){i.push(a);continue}i.length>0&&(n.push(this.buildAssignmentUpdate(i,r,t)),i.length=0),a.type==="dml"&&n.push(this.translateDml(a.sql,t));}return i.length>0&&n.push(this.buildAssignmentUpdate(i,r,t)),n}buildAssignmentUpdate(e,r,t){let n=e.map(i=>{let a=this.translateExpression(i.expression,t);return `${i.column} = ${a}`});return `UPDATE ${r} SET ${n.join(", ")} WHERE rowid = NEW.rowid`}translateExpression(e,r){try{let t=`SELECT ${e}`,n=e.trim().toLowerCase();return n==="now()"||n==="current_timestamp"?"datetime('now')":e}catch{return e}}translateDml(e,r){return e.replace(/\bnow\(\)/gi,"datetime('now')").replace(/\bcurrent_timestamp\b/gi,"datetime('now')").replace(/\bgen_random_uuid\(\)/gi,this.uuidExpression()).replace(/\buuid_generate_v4\(\)/gi,this.uuidExpression())}uuidExpression(){return "lower(hex(randomblob(4))) || '-' || lower(hex(randomblob(2))) || '-4' || substr(lower(hex(randomblob(2))),2) || '-' || substr('89ab',abs(random()) % 4 + 1, 1) || substr(lower(hex(randomblob(2))),2) || '-' || lower(hex(randomblob(6)))"}NullTest(e,r){if(e.arg?.ColumnRef?.fields?.length>1)throw new P({NullTest:e},"row-level NULL tests are not supported in SQLite");return super.NullTest(e,r)}RenameStmt(e,r){if(!e.renameType)throw new Error("RenameStmt requires renameType");let t=["OBJECT_TABLE","OBJECT_VIEW","OBJECT_COLUMN"];if(e.renameType==="OBJECT_COLUMN"&&(e.relationType==="OBJECT_FOREIGN_TABLE"||e.relationType==="OBJECT_VIEW"))throw new P({RenameStmt:e},`RenameStmt with relationType ${e.relationType} is not supported`);if(!t.includes(e.renameType))throw new P({RenameStmt:e},`RenameStmt with renameType ${e.renameType} is not supported in SQLite`);return super.RenameStmt(e,r)}DropStmt(e,r){let t=e.removeType;if(["OBJECT_TABLE","OBJECT_VIEW","OBJECT_INDEX","OBJECT_TRIGGER"].includes(t))return super.DropStmt(e,r);if(["OBJECT_POLICY"].includes(t))return "";throw new P({DropStmt:e},`DROP with removeType ${t} is not supported in SQLite`)}generateRebuildSql(e,r){if(!this.introspection)throw new Error(`ALTER TABLE on "${e}" requires 12-step rebuild but no introspection was provided. Pass introspection in DeparseOptions to enable column type changes, NOT NULL, defaults, and constraint modifications.`);let t=this.buildDesiredSchema(this.introspection,e,r),n=new Na,i=new Ia,a=n.diff(this.introspection,t);return a.has_changes?i.plan(a,this.introspection,t).steps.filter(l=>!["disable_foreign_keys","begin_transaction","commit_transaction","enable_foreign_keys"].includes(l.type)).map(l=>l.sql).join(`
343
- `):""}buildDesiredSchema(e,r,t){let n={...e,tables:e.tables.map(i=>({...i})),columns:e.columns.map(i=>({...i})),indexes:e.indexes.map(i=>({...i})),foreign_keys:e.foreign_keys.map(i=>({...i})),primary_keys:e.primary_keys.map(i=>({...i})),views:e.views.map(i=>({...i})),triggers:(e.triggers??[]).map(i=>({...i})),check_constraints:e.check_constraints.map(i=>({...i})),unique_constraints:(e.unique_constraints??[]).map(i=>({...i})),comments:(e.comments??[]).map(i=>({...i})),custom_types:e.custom_types.map(i=>({...i}))};for(let i of t){let a=n.columns.findIndex(o=>o.table===r&&o.name===i.name);switch(i.subtype){case "AT_AlterColumnType":{if(a===-1)break;let o=this.extractTypeName(i);o&&(n.columns[a]={...n.columns[a],type:o.toLowerCase()});break}case "AT_SetNotNull":{if(a===-1)break;n.columns[a]={...n.columns[a],nullable:false};break}case "AT_DropNotNull":{if(a===-1)break;n.columns[a]={...n.columns[a],nullable:true};break}case "AT_ColumnDefault":{if(a===-1)break;if(i.def){let o=this.extractDefaultValue(i);n.columns[a]={...n.columns[a],default_value:o};}else n.columns[a]={...n.columns[a],default_value:null};break}case "AT_AddConstraint":case "AT_DropConstraint":{let o=n.tables.findIndex(l=>l.name===r);o!==-1&&(n.tables[o]={...n.tables[o],sql:n.tables[o].sql+" /* modified */"});break}}}return this.rebuildTableSql(n,r),n}rebuildTableSql(e,r){let t=e.tables.findIndex(c=>c.name===r);if(t===-1)return;let n=e.columns.filter(c=>c.table===r),i=e.foreign_keys.filter(c=>c.table===r),a=e.check_constraints.filter(c=>c.table===r),o=n.map(c=>{let f=`${$(c.name)} ${c.type||"TEXT"}`;return c.is_primary_key&&(f+=" PRIMARY KEY"),c.nullable||(f+=" NOT NULL"),c.default_value!=null&&(f+=` DEFAULT ${c.default_value}`),f}),l=i.map(c=>`FOREIGN KEY (${$(c.column)}) REFERENCES ${$(c.ref_table)}(${$(c.ref_column)}) ON UPDATE ${c.on_update} ON DELETE ${c.on_delete}`),u=a.map(c=>`CHECK (${c.expression})`),p=[...o,...l,...u];e.tables[t]={...e.tables[t],sql:`CREATE TABLE ${$(r)} (${p.join(", ")}) STRICT`};}extractTypeName(e){let r=e.def?.ColumnDef;return r?.typeName?.TypeName?(r.typeName.TypeName.names??[]).map(n=>n.String?.sval).filter(Boolean).pop()??null:null}extractDefaultValue(e){return e.def?"Integer"in e.def?String(e.def.Integer.ival):"Float"in e.def?e.def.Float.fval:"String"in e.def?`'${e.def.String.sval}'`:null:null}};var ze=class extends P{constructor(e,r){super(e,`Unsupported expression: ${r}`);}},$n=class{deparse(e){if("A_Const"in e){let n=e.A_Const;if(n.boolval!==void 0)return n.boolval.boolval?{}:{$always:false}}let r=Object.keys(e)[0],t=this[r];if(!t)throw new ze({[r]:e},`Unsupported expression: ${r}`);return t.call(this,e[r])}deparseValue(e){if("A_Const"in e)return this.A_Const(e.A_Const);if("ColumnRef"in e)return this.ColumnRef(e.ColumnRef);if("FuncCall"in e)return this.FuncCall(e.FuncCall);if("SubLink"in e)return this.SubLink(e.SubLink);if("TypeCast"in e)return this.TypeCast(e.TypeCast);if("A_Expr"in e){let t=this.isJwtAccessor(e.A_Expr);return t||this.A_Expr(e.A_Expr)}if("BoolExpr"in e)return this.BoolExpr(e.BoolExpr);let r=Object.keys(e)[0];throw new ze({[r]:e},`deparseValue: ${r}`)}A_Expr(e){if(e.kind==="AEXPR_OP"){let r=e.name?.[0],t=r?Sn(r):void 0;if(!t)throw new ze({A_Expr:e},"A_Expr missing operator");let n=this.isJwtAccessor(e);if(n)return {[n]:{}};let i=e.lexpr?this.deparseValue(e.lexpr):void 0,a=e.rexpr?this.deparseValue(e.rexpr):void 0,o=this.mapOperator(t);if(!o)throw new ze({A_Expr:e},`Unsupported operator: ${t}`);let l=e.rexpr!=null&&"ColumnRef"in e.rexpr;if(typeof i=="string"&&i.startsWith("{{")&&l)return {[a]:{[o]:i}};let u=l&&typeof a=="string"?{$ref:a}:a;return {[i]:{[o]:u}}}if(e.kind==="AEXPR_LIKE"||e.kind==="AEXPR_ILIKE"){let r=e.lexpr?this.deparseValue(e.lexpr):void 0,t=e.rexpr?this.deparseValue(e.rexpr):void 0,i=(e.name?.[0]?Sn(e.name[0]):"~~")==="!~~"?"$notLike":"$like";return {[r]:{[i]:t}}}if(e.kind==="AEXPR_IN"){let r=e.lexpr?this.deparseValue(e.lexpr):void 0,t=e.rexpr&&"List"in e.rexpr&&e.rexpr.List.items?e.rexpr.List.items.map(n=>this.deparseValue(n)):[];return {[r]:{$in:t}}}throw new ze({A_Expr:e},`A_Expr kind: ${e.kind}`)}BoolExpr(e){let r=e.args??[];switch(e.boolop){case "AND_EXPR":return {$and:r.map(t=>this.deparse(t))};case "OR_EXPR":return {$or:r.map(t=>this.deparse(t))};case "NOT_EXPR":return {$not:this.deparse(r[0])};default:throw new ze({BoolExpr:e},`BoolExpr op: ${e.boolop}`)}}NullTest(e){let r=e.arg?this.deparseValue(e.arg):void 0;return e.nulltesttype==="IS_NULL"?{[r]:{$is:null}}:{[r]:{$isNot:null}}}SubLink(e){if(e.subLinkType==="ANY_SUBLINK"){let r=e.testexpr?this.deparseValue(e.testexpr):void 0,t=e.subselect?this.SelectStmt(e.subselect.SelectStmt):void 0;return {[r]:{$in:t}}}if(e.subLinkType==="EXISTS_SUBLINK")return {$exists:e.subselect?this.SelectStmt(e.subselect.SelectStmt):void 0};if(e.subLinkType==="EXPR_SUBLINK"){let r=e.subselect?e.subselect.SelectStmt:void 0;if(r?.fromClause?.length)return this.SelectStmt(r);if(r?.targetList?.[0]){let t=r.targetList[0],n="ResTarget"in t?t.ResTarget:void 0;if(n?.val){let i=this.deparseValue(n.val);return i}}}throw new ze({SubLink:e},`SubLink type: ${e.subLinkType}`)}SelectStmt(e){let{from:r,schema:t,join:n}=this.deparseFromClause(e.fromClause??[]),i=[];for(let f of e.targetList??[]){let m="ResTarget"in f?f.ResTarget:void 0;if(m?.val){let d=this.deparseValue(m.val);Array.isArray(d)?i.push(...d.map(String)):d!=null&&d!==""&&i.push(String(d));}}let a=e.whereClause?this.deparse(e.whereClause):void 0,o=this.deparseSortClause(e.sortClause),l=this.deparseLimit(e.limitCount),u=this.deparseLimit(e.limitOffset),p=this.deparseGroupClause(e.groupClause),c={type:"query",from:r,select:i};return t&&(c.schema=t),Object.keys(n).length>0&&(c.join=n),a&&(c.where=a),o.length>0&&(c.order=o),l!==void 0&&(c.limit=l),u!==void 0&&(c.offset=u),p.length>0&&(c.group=p),c}FuncCall(e){let r=this.isAuthFunc(e.funcname??[]);if(r)return r;throw new ze({FuncCall:e},`FuncCall: ${Rr(e.funcname??[]).join(".")}`)}ColumnRef(e){let r=Rr(e.fields??[]);return r.length===1?r[0]:r.join(".")}A_Const(e){if(e.boolval!==void 0)return e.boolval.boolval;if(e.ival!==void 0)return e.ival.ival??0;if(e.fval!==void 0)return parseFloat(e.fval.fval??"0");if(e.sval!==void 0)return e.sval.sval??"";if(e.isnull)return null;throw new ze({A_Const:e},"A_Const: unknown variant")}TypeCast(e){if(!e.arg)throw new ze({TypeCast:e},"TypeCast: missing arg");return this.deparseValue(e.arg)}BooleanTest(e){let r=e.arg?this.deparseValue(e.arg):void 0;return e.booltesttype==="IS_TRUE"?{[r]:{$eq:true}}:{[r]:{$eq:false}}}deparseFromClause(e){let r={};if(e.length===0)return {from:"",join:r};let t=e[0];if("RangeVar"in t){let n=t.RangeVar;return {from:n.relname??"",schema:n.schemaname,join:r}}if("JoinExpr"in t){let{from:n,schema:i}=this.walkJoinExpr(t.JoinExpr,r);return {from:n,schema:i,join:r}}return {from:"",join:r}}walkJoinExpr(e,r){let t={from:""};if(e.larg)if("RangeVar"in e.larg){let n=e.larg.RangeVar;t={from:n.relname??"",schema:n.schemaname};}else "JoinExpr"in e.larg&&(t=this.walkJoinExpr(e.larg.JoinExpr,r));if(e.rarg&&"RangeVar"in e.rarg){let n=e.rarg.RangeVar,i=n.relname??"",a=n.alias?.aliasname??i,o=e.jointype==="JOIN_LEFT"?"left":"inner",l={from:i,type:o};e.quals&&(l.on=this.deparse(e.quals));let u=a;if(u in r){let p=2;for(;`${u}_${p}`in r;)p++;u=`${u}_${p}`;}r[u]=l;}return t}deparseSortClause(e){if(!e)return [];let r=[];for(let t of e){if(!("SortBy"in t))continue;let n=t.SortBy;if(!n.node)continue;let i=String(this.deparseValue(n.node)),a=n.sortby_dir==="SORTBY_DESC"?"desc":"asc",o={column:i,direction:a};n.sortby_nulls==="SORTBY_NULLS_FIRST"?o.nullsFirst=true:n.sortby_nulls==="SORTBY_NULLS_LAST"&&(o.nullsFirst=false),r.push(o);}return r}deparseLimit(e){if(!e)return;let r=this.deparseValue(e);return typeof r=="number"?r:Number(r)}deparseGroupClause(e){return e?e.map(r=>String(this.deparseValue(r))):[]}isAuthFunc(e){let r=Rr(e);if(r.length===2&&r[0]==="auth"){if(r[1]==="uid")return "{{auth.uid}}";if(r[1]==="jwt")return "{{auth.jwt}}";if(r[1]==="role")return "{{auth.role}}";throw new Error(`Unsupported auth function: "${r.slice(1).join(".")}"`)}return null}isJwtAccessor(e){if(e.kind!=="AEXPR_OP")return null;let r=e.name?.[0]?Sn(e.name[0]):void 0;if(r!=="->"&&r!=="->>")return null;let t=e.rexpr&&"A_Const"in e.rexpr?e.rexpr.A_Const.sval?.sval:void 0;if(t===void 0)return null;if(e.lexpr&&"FuncCall"in e.lexpr)return this.isAuthFunc(e.lexpr.FuncCall.funcname??[])==="{{auth.jwt}}"?`{{auth.jwt.${t}}}`:null;if(e.lexpr&&"A_Expr"in e.lexpr){let n=this.isJwtAccessor(e.lexpr.A_Expr);if(n)return `${n.slice(0,-2)}.${t}}}`}return null}mapOperator(e){switch(e){case "=":return "$eq";case "<>":case "!=":return "$neq";case ">":return "$gt";case ">=":return "$gte";case "<":return "$lt";case "<=":return "$lte";case "~~":return "$like";case "!~~":return "$notLike";default:return}}};var Pn=class s{constructor(e){this.data=e;}appliesTo(e){return this.data.command==="ALL"||this.data.command===e}appliesToRole(e){return this.data.roles.length===0||this.data.roles.includes(e)}toJSON(){return this.data}static fromJSON(e){return new s(e)}};var Dn=class{table;schema;fields;constructor(e,r="public",t=new Map){this.table=e,this.schema=r,this.fields=t;}get(e){return this.fields.get(e)}has(e){return this.fields.has(e)}set(e,r){this.fields.set(e,r);}columns(){return Array.from(this.fields.keys())}all(){return Array.from(this.fields.values())}serializeRow(e){let r={};for(let[t,n]of Object.entries(e)){let i=this.fields.get(t);r[t]=i?i.serialize(n):n;}return r}deserializeRow(e){let r={};for(let[t,n]of Object.entries(e)){let i=this.fields.get(t);r[t]=i?i.deserialize(n):n;}return r}applyDefaults(e){let r={...e};for(let[t,n]of this.fields)!(t in r)&&n.context.defaultFn&&(r[t]=n.context.defaultFn());return r}};var Ch=new Set;function Ah(s){let e=new Map;for(let r of s.stmts??[]){if(!r.stmt||!("CreateEnumStmt"in r.stmt))continue;let t=r.stmt.CreateEnumStmt,n=Rr(t.typeName??[]).join(".");if(!n||!t.vals)continue;let i=Rr(t.vals);e.set(n.toLowerCase(),i);}return e}function Rh(s){let e=new Map;for(let r of s.stmts??[]){if(!r.stmt||!("VariableSetStmt"in r.stmt))continue;let t=r.stmt.VariableSetStmt,n=t.name,i=fh(t.args?.[0]??{});e.set(n,{value:i,local:t.is_local});}return e}function _h(s){let e=new $n,r=new Set,t=[];for(let n of s.stmts??[])if(n.stmt){if("CreatePolicyStmt"in n.stmt){let i=n.stmt.CreatePolicyStmt,a=i.table?.relname??"",o=i.table?.schemaname,l={select:"SELECT",insert:"INSERT",update:"UPDATE",delete:"DELETE"},u=i.cmd_name?l[i.cmd_name]??"ALL":"ALL",p=i.permissive===true,c=[],f=false;for(let b of i.roles??[])if("RoleSpec"in b){let y=b.RoleSpec;y.roletype==="ROLESPEC_PUBLIC"?y.location===-1&&(f=true):y.roletype==="ROLESPEC_CSTRING"&&y.rolename&&c.push(y.rolename);}if(f){let b=o?`${o}.${a}`:a,y=i.policy_name??"",T=`${b}::${y}`;Ch.has(T)||(Ch.add(T),console.warn(`[supalite] policy "${y}" on "${b}" has no TO clause \u2014 applies to all roles (PUBLIC). For clarity, prefer an explicit \`TO <role>\` clause (e.g. \`TO authenticated\`).`));}let m=i.qual?e.deparse(i.qual):void 0,d=i.with_check?e.deparse(i.with_check):void 0,g=new Pn({name:i.policy_name??"",table:a,schema:o,command:u,permissive:p,roles:c,using:m,withCheck:d});t.push(g);}if("AlterTableStmt"in n.stmt){let i=n.stmt.AlterTableStmt;if((i.cmds??[]).some(l=>"AlterTableCmd"in l&&(l.AlterTableCmd.subtype==="AT_EnableRowSecurity"||l.AlterTableCmd.subtype==="AT_ForceRowSecurity"))){let l=i.relation?.relname??"";r.add(l);}}}return {policies:t,tables:r}}function vh(s,e){let r=new Map;for(let t of s.stmts??[]){if(!t.stmt||!("CreateStmt"in t.stmt))continue;let n=t.stmt.CreateStmt,i=n.relation?.relname??"",a=n.relation?.schemaname??"public";if(!i)continue;let o=new Dn(i,a);for(let l of n.tableElts??[]){if(!("ColumnDef"in l))continue;let u=l.ColumnDef,p=u.colname;if(!p)continue;let c=u.typeName?.names?.map(D=>D.String?.sval||D.String?.str).filter(Boolean),f=c&&(c.length===2&&c[0]==="pg_catalog"?c[1]:c[0]);if(!f)continue;let m=!!u.typeName?.arrayBounds?.length,d=Array.isArray(u.typeName?.typmods)?u.typeName.typmods:[],g=D=>d[D]?.A_Const?.ival?.ival??d[D]?.A_Const?.val?.ival?.ival,b={isArray:m};if(Ca(f)&&d.length>0){let D=g(0);typeof D=="number"&&D>0&&(b.lengthConstraint=D);}if(Aa(f)&&d.length>=2){let D=g(0),ce=g(1);typeof D=="number"&&typeof ce=="number"&&D>0&&ce>=0&&(b.numericPrecision={precision:D,scale:ce});}let y=e.get(f.toLowerCase());y&&(b.enumValues=y);let T=Array.isArray(u.constraints)?u.constraints:[],C=T.some(D=>D.Constraint?.contype==="CONSTR_PRIMARY"),w=wa(f)||T.some(D=>D.Constraint?.contype==="CONSTR_IDENTITY"),A=T.some(D=>D.Constraint?.contype==="CONSTR_NOTNULL"),v=T.find(D=>D.Constraint?.contype==="CONSTR_UNIQUE"),R=T.find(D=>D.Constraint?.contype==="CONSTR_GENERATED"),O=T.find(D=>D.Constraint?.contype==="CONSTR_FOREIGN"),_=T.find(D=>D.Constraint?.contype==="CONSTR_CHECK"),I;if(O){let D=O.Constraint,ce=D.pktable?.relname,Xe=D.pktable?.schemaname,jn=D.pk_attrs?.[0]?.String?.sval;ce&&jn&&(I={refSchema:Xe,refTable:ce,refColumn:jn,constraintName:D.conname||void 0});}let K={schema:a,table:i,column:p,pgTypeName:f,nullable:!A&&!C,defaultValue:null,defaultFn:null,isPrimaryKey:C,isUnique:!!v,isSerial:w,isGenerated:!!R,fkRef:I,hasCheck:!!_,checkConstraintName:_?.Constraint?.conname||void 0,uniqueConstraintName:v?.Constraint?.conname||void 0};o.set(p,Nr(K,b));}r.set(`${a}.${i}`,o);}return r}function Oh(s){let e=[];for(let r of s.stmts??[]){if(!r.stmt||!("CreateStmt"in r.stmt))continue;let t=r.stmt.CreateStmt,n=t.relation?.relname??"",i=t.relation?.schemaname??"public";if(n)for(let a of t.tableElts??[]){if("ColumnDef"in a)continue;let o=a;if(!o.Constraint)continue;let l=o.Constraint,u=l.contype;if(u==="CONSTR_UNIQUE"){let p=(l.keys??[]).map(c=>c.String?.sval??c.String?.str).filter(Boolean);if(p.length===0)continue;e.push({schema:i,table:n,kind:"unique",name:l.conname||void 0,columns:p});}else if(u==="CONSTR_CHECK")e.push({schema:i,table:n,kind:"check",name:l.conname||void 0,columns:[]});else if(u==="CONSTR_FOREIGN"){let p=(l.fk_attrs??[]).map(m=>m.String?.sval??m.String?.str).filter(Boolean),c=(l.pk_attrs??[]).map(m=>m.String?.sval??m.String?.str).filter(Boolean),f=l.pktable?.relname;if(!f)continue;e.push({schema:i,table:n,kind:"foreign_key",name:l.conname||void 0,columns:p,refSchema:l.pktable?.schemaname,refTable:f,refColumns:c});}}}return e}function Nh(s){let e=[];for(let r of s.stmts??[]){if(!r.stmt||!("CommentStmt"in r.stmt))continue;let t=r.stmt.CommentStmt,n=t.comment??"";if(!n)continue;let i=t.objtype,a=(t.object?.List?.items??t.object?.items??[]).map(o=>o.String?.sval??o.String?.str).filter(Boolean);if(a.length!==0){if(i==="OBJECT_TABLE"||i==="OBJECT_VIEW"){let[o,l]=a.length>=2?a:["public",a[0]];e.push({schema:o,table:l,text:n});}else if(i==="OBJECT_COLUMN"){let o="public",l,u;a.length>=3?[o,l,u]=a:[l,u]=a,e.push({schema:o,table:l,column:u,text:n});}}}return e}async function yT(s,e={}){let r=await oh(s);return ET(r,e).ddl}function ET(s,e={}){let r=Ah(s),t=vh(s,r),n=Rh(s),i=Oh(s),a=Nh(s),o=new ka(s,{...e,enums:r}),{policies:l,tables:u}=_h(s);if(e.strict)for(let p of l){if(!t.get(`${p.data.schema??"public"}.${p.data.table}`))throw new Error(`Policy "${p.data.name}" references unknown table "${p.data.table}"`);if(!u.has(p.data.table))throw new Error(`RLS is not enabled on table "${p.data.table}"`)}return {ddl:o.deparseQuery(),enums:r,rls:{tables:u,policies:l},schema:t,vars:n,tableConstraints:i,comments:a}}try{let{emitWarning:s}=process;process.emitWarning=(e,...r)=>{if(!e.includes("SQLite is an experimental feature"))return s(e,...r)};}catch{}/*! Bundled license information:
302
+ `;function sc(t=true){return t?On(nc):nc}var ic=class{_connection;_rls;config;server;drivers;#e=false;_mailer;_storageAdapter;_transformationAdapter;constructor({connection:e,options:r={},rls:n,...s}){this._connection=e,this._rls=n,this.drivers=md(r.drivers),this.config=Jp(Vs,s,{withDefaults:r.defaults??true}),this.server=qp(this,r.server);}get connection(){if(this._connection instanceof Promise)throw new Error("Connection is not available yet");return this._connection}async init(){if(this.#e)return this;Bp(),this.config.auth?.enabled&&Gi(this.config.auth),await this._connection;let e=this.connection;if(e.config.schemaCache??=this.drivers.cache,e.config.baseSchema=[e.config.baseSchema??"",this.config.auth?.enabled&&sc(),this.config.storage?.enabled&&this._storageAdapter&&Zr("storage")&&Il()].filter(Boolean).join(`
303
+
304
+ `),this._rls){let r=e;if(typeof r.updateDeparseInfo=="function"){let n=r.config.translation?.deparse;r.updateDeparseInfo({enums:n?.enums??new Map,schema:n?.schema??new Map,vars:n?.vars??new Map,...n,rls:{tables:new Set(this._rls.tables),policies:this._rls.policies}});}}return this.#e=true,this}isValidConfig(e){if(typeof e=="object"&&e!==null&&("connection"in e||"options"in e)){let{connection:r,options:n,...s}=e;return Vs.validate(s).valid}return Vs.validate(e).valid}getClient(e){return createClient("http://localhost","<nokey>",{...e,global:{...e?.global,fetch:async(r,n)=>{let s=new Request(r,n);return Object.assign(s,{[Ln]:true}),await this.fetch(s)}}})}isLocalRequest(e){return Ln in e}fetch=async e=>(await this.init(),this.server.fetch(e));getInfoJson(){return JSON.parse(jsonStringify({connection:this.connection?.config??{},config:this.config}))}};var Kp=class extends Error{name="UnableToCreateRuntimeConnection";constructor(e){super(`Unable to create runtime connection: ${e}`);}},Wp=class extends Error{constructor(r,n,s){super(`Failed to translate Postgres to SQLite DDL: ${String(s)}`);this.pgSql=r;this.sqliteDdl=n;this.cause=s;}name="InvalidPostgresToSQLiteTranslation"};var oc=(p=>(p.DISABLE_FOREIGN_KEYS="disable_foreign_keys",p.ENABLE_FOREIGN_KEYS="enable_foreign_keys",p.BEGIN_TRANSACTION="begin_transaction",p.COMMIT_TRANSACTION="commit_transaction",p.CREATE_TABLE="create_table",p.ADD_COLUMN="add_column",p.DROP_COLUMN="drop_column",p.ADD_INDEX="add_index",p.DROP_INDEX="drop_index",p.DROP_TABLE="drop_table",p.RENAME_TABLE="rename_table",p.COPY_DATA="copy_data",p.CREATE_TRIGGER="create_trigger",p))(oc||{}),Hp=class extends Error{constructor(r){super(`Migration would cause data loss:
305
+ ${r.map(n=>` - ${n.table}: ${n.reason}`).join(`
306
+ `)}`);this.warnings=r;this.name="DataLossError";}},zp=class extends Error{constructor(r,n,s){super(`Migration failed at step ${r}: ${s.message}
307
+ SQL: ${n}`);this.stepIndex=r;this.sql=n;this.cause=s;this.name="MigrationError";}};async function Gp(t){let{parse:e}=await import('pgsql-parser');return e(t)}function ds(t){if("String"in t)return t.String.sval}function _r(t){return t.map(ds).filter(e=>e!=null)}function xr(t){return t==null?[]:t.List!==void 0?t.List.items||[]:Array.isArray(t)?t:[t]}function fo(t){return QuoteUtils.quoteIdentifier(t)}function en(t){return Object.keys(t)[0]}function Vp(t){if("A_Const"in t){if(t.A_Const.ival)return t.A_Const.ival.ival;if(t.A_Const.fval)return t.A_Const.fval.fval;if(t.A_Const.sval)return t.A_Const.sval.sval;if(t.A_Const.boolval)return t.A_Const.boolval.boolval;if(t.A_Const.isnull)return null}}var vr=class extends Error{},P=class extends vr{constructor(r,n){super(n??`Unsupported node type: ${en(r)}`);this.node=r;}},yS={int2:"INTEGER",smallint:"INTEGER",int4:"INTEGER",integer:"INTEGER",int:"INTEGER",int8:"INTEGER",bigint:"INTEGER",serial:"INTEGER",serial4:"INTEGER",bigserial:"INTEGER",serial8:"INTEGER",smallserial:"INTEGER",serial2:"INTEGER",float4:"REAL",real:"REAL",float8:"REAL","double precision":"REAL",numeric:"REAL",decimal:"REAL",text:"TEXT",varchar:"TEXT","character varying":"TEXT",char:"TEXT",character:"TEXT",bpchar:"TEXT",name:"TEXT",bytea:"BLOB",bool:"INTEGER",boolean:"INTEGER",date:"TEXT",time:"TEXT","time without time zone":"TEXT",timetz:"TEXT","time with time zone":"TEXT",timestamp:"TEXT","timestamp without time zone":"TEXT",timestamptz:"TEXT","timestamp with time zone":"TEXT",interval:"TEXT",json:"TEXT",jsonb:"TEXT",uuid:"TEXT",inet:"TEXT"},Qp=["<",">","<=",">=","=","<>","!=","+","-","*","/","%","&","|","<<",">>","||","BETWEEN","NOT BETWEEN","IN","NOT IN","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS TRUE","IS NOT TRUE","IS FALSE","IS NOT FALSE","IS UNKNOWN","IS NOT UNKNOWN","AND","OR","NOT","->>"];function Xp(t){let e=t.toLowerCase().trim();if(e.startsWith("_")||e.endsWith("[]"))return "TEXT";let r=yS[e];if(!r)throw new vr(`Unsupported PostgreSQL type: "${t}"`);return r}function po(t){let e=t.toLowerCase();return ["serial","serial4","bigserial","serial8","smallserial","serial2"].includes(e)}function mo(t){let e=t.toLowerCase();return ["varchar","character varying","char","character","bpchar"].includes(e)}function ho(t){let e=t.toLowerCase();return ["numeric","decimal"].includes(e)}var bS={CreateEnumStmt:{react:"ignore"},CreateDomainStmt:{react:"warn"},CreateSeqStmt:{react:"error"},AlterSeqStmt:{react:"error"},CreateSchemaStmt:{react:"warn"},CreatePolicyStmt:{react:"ignore"},PartitionElem:{react:"error"},PartitionCmd:{react:"error"},VariableSetStmt:{react:"ignore"},CompositeTypeStmt:{react:"error"},AlterEnumStmt:{react:"error"},AlterObjectSchemaStmt:{react:"error"},AlterOwnerStmt:{react:"error"},AlterTypeStmt:{react:"error"},AlterFunctionStmt:{react:"error"},AlterDefaultPrivilegesStmt:{react:"error"},GrantStmt:{react:"error"},GrantRoleStmt:{react:"error"},CopyStmt:{react:"error"},CreateCastStmt:{react:"error"},AlterOpFamilyStmt:{react:"error"},AlterOperatorStmt:{react:"error"},TruncateStmt:{react:"error"},A_Indirection:{react:"error"},XmlExpr:{react:"error"},XmlSerialize:{react:"error"},RangeTableSample:{react:"error"},GroupingSet:{react:"error"}},go=new Map(Object.entries(bS));var yo=class{constructor(e){this.ast=e;this.result=[...this.walk(this.ast,[],{trackPaths:["returningList"]})];}result=[];*walk(e=this.ast,r=[],n={}){if(!e||typeof e!="object")return;let{trackPaths:s=[]}=n;if(Array.isArray(e)){for(let o=0;o<e.length;o++)yield*this.walk(e[o],r,n);return}let i=Object.keys(e);if(i.length===1&&i[0][0]>="A"&&i[0][0]<="Z"){let o=i[0];yield {node:e,path:r},yield*this.walk(e[o],[...r,o],n);}else for(let[o,a]of Object.entries(e))if(a&&typeof a=="object"){let l=s.includes(o)?[...r,o]:r;yield*this.walk(a,l,n);}}containsUnsupportedNode(){for(let{node:e}of this.result){let r=en(e),n=go.get(r);if(n&&n.react==="error")return true}}hasFuncCall(){for(let{node:e}of this.result)if("FuncCall"in e)return true;return false}getFuncCalls(){return Array.from(this.result).map(({node:e})=>e).filter(e=>"FuncCall"in e).map(e=>e.FuncCall)}getFuncCallNames(){return this.getFuncCalls().flatMap(e=>e.funcname?.map(r=>r.String?.sval||r.String?.str))}hasSqlValueFunction(){for(let{node:e}of this.result)if("SQLValueFunction"in e)return true;return false}getSqlValueFunctions(){return Array.from(this.result).map(({node:e})=>e).filter(e=>"SQLValueFunction"in e).map(e=>e.SQLValueFunction)}getSqlValueFunctionNames(){return this.getSqlValueFunctions().map(e=>e.op)}hasUnsafeStar(){let e=this.result.filter(({node:r})=>"A_Star"in r);if(e.length===0)return false;for(let{path:r}of e)if(!r.includes("SelectStmt")&&!r.includes("returningList"))return true;return false}getRelationDefinitions(){return this.result.filter(({node:r})=>"CreateStmt"in r).map(({node:r})=>r.CreateStmt).map(r=>({relation:{relname:r.relation?.relname??"",inh:r.relation?.inh,relpersistence:r.relation?.relpersistence},columns:r.tableElts?.map(n=>{let s=n.ColumnDef?.typeName?.names?.map(o=>"String"in o?o.String.sval:""),i=s?.some(o=>o.toLowerCase().includes("pg_catalog"));return {name:n.ColumnDef?.colname??"",is_local:n.ColumnDef?.is_local,pg_catalog:i,type:s?.filter(o=>!o.toLowerCase().includes("pg_catalog"))[0]??"",types:s,constraints:n.ColumnDef?.constraints}})}))}getRelationColumnTypes(){return {has_non_pg_catalog_types:this.getRelationDefinitions().some(e=>e.columns?.some(r=>!r.pg_catalog)),types:Array.from(new Set(this.getRelationDefinitions().flatMap(e=>e.columns?.map(r=>r.type))))}}};var wS=["DECLARE","IF","ELSIF","ELSE","LOOP","WHILE","FOR","FOREACH","EXCEPTION","RAISE","PERFORM","EXECUTE","SELECT"],SS=/^NEW\.(\w+)\s*(?::=|=)\s*(.+)$/is,ES=/^RETURN\s+(NEW|OLD)$/i,_S=/^(INSERT|UPDATE|DELETE)\b/i,tn=class extends vr{constructor(r,n,s){super(s??`Unsupported PL/pgSQL: ${r}`);this.hint=r;this.body=n;}},bo=class{parse(e){let r=this.extractBlock(e),n=this.splitStatements(r),s=[],i=null;for(let o of n){let a=o.trim();if(!a)continue;this.rejectUnsupported(a);let l=a.match(ES);if(l){i=l[1].toUpperCase(),s.push({type:"return",value:i});continue}let u=a.match(SS);if(u){s.push({type:"assignment",column:u[1],expression:u[2].trim()});continue}if(_S.test(a)){s.push({type:"dml",sql:a});continue}throw new tn(`"${a.substring(0,80)}" is not translatable to SQLite`,r)}if(!i)throw new vr("Trigger function body must end with RETURN NEW or RETURN OLD");return {statements:s,returnValue:i}}extractBlock(e){let r=e.trim(),n=r.toUpperCase();if(/^\s*DECLARE\b/i.test(r))throw new tn('"DECLARE" is not translatable to SQLite',e);let s=n.indexOf("BEGIN"),i=n.lastIndexOf("END");if(s===-1||i===-1||i<=s)throw new tn("Expected BEGIN ... END block in trigger function body",e);return r.slice(s+5,i).trim()}splitStatements(e){let r=[],n="",s=0,i=false,o="";for(let l=0;l<e.length;l++){let u=e[l];if(i){n+=u,u===o&&(l+1<e.length&&e[l+1]===o?n+=e[++l]:i=false);continue}if(u==="'"||u==='"'){i=true,o=u,n+=u;continue}if(u==="("){s++,n+=u;continue}if(u===")"){s--,n+=u;continue}if(u===";"&&s===0){r.push(n.trim()),n="";continue}n+=u;}let a=n.trim();return a&&r.push(a),r}rejectUnsupported(e){let r=e.match(/^(\w+)/)?.[1]?.toUpperCase();if(r&&wS.includes(r))throw new tn(`"${r}" is not translatable to SQLite`,e)}};var wo=class{makeIndexKey(e){return `${e.table}:${e.name}:${e.unique}:${e.columns.join(",")}`}makeForeignKeyKey(e){return `${e.table}:${e.column}:${e.ref_table}:${e.ref_column}`}diff(e,r){let n=[],s=[],i=[],o=[],a=new Set(e.tables.map(h=>h.name)),l=new Set(r.tables.map(h=>h.name));for(let h of r.tables)a.has(h.name)||n.push({type:"added",name:h.name,sql:h.sql});for(let h of e.tables)l.has(h.name)||n.push({type:"removed",name:h.name});for(let h of e.tables){let b=r.tables.find(_=>_.name===h.name);if(!b)continue;let m=Ia(h.sql),w=Ia(b.sql);m!==w&&n.push({type:"modified",name:h.name,sql:b.sql});}let u=e.tables.filter(h=>l.has(h.name));for(let h of u){let b=e.columns.filter(S=>S.table===h.name),m=r.columns.filter(S=>S.table===h.name),w=new Map(b.map(S=>[S.name,S])),_=new Map(m.map(S=>[S.name,S]));for(let[S,E]of _)w.has(S)||s.push({type:"added",table:h.name,name:S,column:E});for(let[S]of w)_.has(S)||s.push({type:"removed",table:h.name,name:S});for(let[S,E]of w){let C=_.get(S);if(!C)continue;let x={};Pa(E.type)!==Pa(C.type)&&(x.type={from:E.type,to:C.type}),E.nullable!==C.nullable&&(x.nullable={from:E.nullable,to:C.nullable}),Na(E.default_value)!==Na(C.default_value)&&(x.default_value={from:E.default_value,to:C.default_value}),Object.keys(x).length>0&&s.push({type:"modified",table:h.name,name:S,changes:x});}}let f=new Map(e.indexes.map(h=>[this.makeIndexKey(h),h])),c=new Map(r.indexes.map(h=>[this.makeIndexKey(h),h]));for(let[h,b]of c)f.has(h)||i.push({type:"added",...b});for(let[h,b]of f)c.has(h)||i.push({type:"removed",...b});let d=new Map(e.foreign_keys.map(h=>[this.makeForeignKeyKey(h),h])),p=new Map(r.foreign_keys.map(h=>[this.makeForeignKeyKey(h),h]));for(let[h,b]of p)d.has(h)||o.push({type:"added",...b});for(let[h,b]of d)p.has(h)||o.push({type:"removed",...b});let y=n.length>0||s.length>0||i.length>0||o.length>0;return {tables:n,columns:s,indexes:i,foreign_keys:o,has_changes:y}}};var xS=["CURRENT_TIMESTAMP","CURRENT_TIME","CURRENT_DATE"],So=class{plan(e,r,n,s){if(!e.has_changes)return {steps:[],warnings:[],unsafe:false};let i=[],o=[];i.push({sql:"PRAGMA foreign_keys=OFF;",description:"Disable foreign key checks",type:"disable_foreign_keys"}),i.push({sql:"BEGIN;",description:"Begin transaction",type:"begin_transaction"});for(let c of e.tables.filter(d=>d.type==="added")){i.push({sql:`${c.sql};`,description:`CREATE TABLE ${O(c.name)}`,type:"create_table"});let d=n.indexes.filter(p=>p.table===c.name);for(let p of d){let y=p.unique?"UNIQUE ":"",h=p.columns.map(b=>O(b)).join(", ");i.push({sql:`CREATE ${y}INDEX ${O(p.name)} ON ${O(c.name)} (${h});`,description:`Create index ${O(p.name)} on ${O(c.name)}`,type:"add_index"});}}let a=new Set(r.tables.map(c=>c.name)),l=new Set(n.tables.map(c=>c.name)),u=new Set(e.tables.filter(c=>c.type==="modified").map(c=>c.name)),f=[...a].filter(c=>l.has(c));for(let c of f){if(!(u.has(c)||e.columns.some(h=>h.table===c)||e.indexes.some(h=>h.table===c)||e.foreign_keys.some(h=>h.table===c)))continue;let{canAlter:p,addedCols:y}=this.canSimpleAlter(c,e,n);if(p){for(let m of y)i.push({sql:`ALTER TABLE ${O(c)} ADD COLUMN ${this.columnDef(m)};`,description:`Add column ${O(m.name)} to ${O(c)}`,type:"add_column"});let h=e.indexes.filter(m=>m.table===c&&m.type==="added"),b=e.indexes.filter(m=>m.table===c&&m.type==="removed");for(let m of b)i.push({sql:`DROP INDEX IF EXISTS ${O(m.name)};`,description:`Drop index ${O(m.name)}`,type:"drop_index"});for(let m of h){let w=m.unique?"UNIQUE ":"",_=m.columns.map(S=>O(S)).join(", ");i.push({sql:`CREATE ${w}INDEX ${O(m.name)} ON ${O(c)} (${_});`,description:`Create index ${O(m.name)} on ${O(c)}`,type:"add_index"});}}else {let h=this.rebuildTable(c,r,n,e);i.push(...h.steps),o.push(...h.warnings);}}for(let c of e.tables.filter(d=>d.type==="removed"))i.push({sql:`DROP TABLE ${O(c.name)};`,description:`Drop table ${O(c.name)}`,type:"drop_table"}),o.push({table:c.name,reason:"table will be dropped"});return i.push({sql:"COMMIT;",description:"Commit transaction",type:"commit_transaction"}),i.push({sql:"PRAGMA foreign_keys=ON;",description:"Re-enable foreign key checks",type:"enable_foreign_keys"}),{steps:i,warnings:o,unsafe:o.length>0}}rebuildTable(e,r,n,s){let i=[],o=[],a=n.tables.find(m=>m.name===e);if(!a)return {steps:i,warnings:o};let l=`_${e}_migrate_new`,u=a.sql.replace(new RegExp(`(CREATE\\s+TABLE\\s+)(?:"${e}"|${e})`,"i"),`$1${O(l)}`);i.push({sql:`${u};`,description:`Create temporary table ${O(l)}`,type:"create_table"});let f=r.columns.filter(m=>m.table===e).map(m=>m.name),c=n.columns.filter(m=>m.table===e).map(m=>m.name),d=f.filter(m=>c.includes(m));if(d.length>0){let m=d.map(w=>O(w)).join(", ");i.push({sql:`INSERT INTO ${O(l)} (${m})
308
+ SELECT ${m}
309
+ FROM ${O(e)};`,description:`Copy data from ${O(e)} to ${O(l)}`,type:"copy_data"});}i.push({sql:`DROP TABLE ${O(e)};`,description:`Drop old table ${O(e)}`,type:"drop_table"}),i.push({sql:`ALTER TABLE ${O(l)} RENAME TO ${O(e)};`,description:`Rename ${O(l)} to ${O(e)}`,type:"rename_table"});let p=n.indexes.filter(m=>m.table===e);for(let m of p){let w=m.unique?"UNIQUE ":"",_=m.columns.map(S=>O(S)).join(", ");i.push({sql:`CREATE ${w}INDEX ${O(m.name)} ON ${O(e)} (${_});`,description:`Recreate index ${O(m.name)} on ${O(e)}`,type:"add_index"});}let y=n.triggers?.filter(m=>m.table===e)??[];for(let m of y)i.push({sql:`${m.sql};`,description:`Recreate trigger ${O(m.name)} on ${O(e)}`,type:"create_trigger"});let h=s.columns.filter(m=>m.table===e&&m.type==="removed");for(let m of h)o.push({table:e,reason:`column "${m.name}" will be dropped`});let b=s.columns.filter(m=>m.table===e&&m.type==="modified");for(let m of b)m.changes?.type&&o.push({table:e,reason:`column "${m.name}" type changes from ${m.changes.type.from} to ${m.changes.type.to}`}),m.changes?.nullable&&!m.changes.nullable.to&&o.push({table:e,reason:`column "${m.name}" becomes NOT NULL`});return {steps:i,warnings:o}}canSimpleAlter(e,r,n){let s=r.columns.filter(c=>c.table===e),i=s.filter(c=>c.type==="added"),o=s.filter(c=>c.type==="removed"),a=s.filter(c=>c.type==="modified"),l=r.foreign_keys.some(c=>c.table===e);if(o.length>0||a.length>0||l)return {canAlter:false,addedCols:i};let u=n.tables.find(c=>c.name===e);return u&&/\bCHECK\s*\(/i.test(u.sql)?{canAlter:false,addedCols:i}:{canAlter:i.every(c=>{let d=c.column;return this.hasNonConstantDefault(d.default_value)?false:d.nullable||d.default_value!=null})&&i.length>0,addedCols:i}}hasNonConstantDefault(e){if(e==null)return false;let r=e.trim().toUpperCase();return xS.includes(r)}columnDef(e){let r=e.column,n=`${O(r.name)} ${r.type||"TEXT"}`;return r.nullable||(n+=" NOT NULL"),r.default_value!=null&&(n+=` DEFAULT ${r.default_value}`),n}};var ge=class{context;constructor(e){this.context=e;}get isShimBacked(){return false}checkConstraint(){return null}serialize(e){return e}deserialize(e){return e}validateStorage(e){return {status:"pass",message:null}}validationFail(e,r){return {status:"fail",message:e,action:r}}validationPass(){return {status:"pass",message:null}}isNullish(e){return e==null}toColumnDDL(e){let{includeNullable:r=true}=e??{},n=[],s=this.context.column;n.push(this.quoteIfNeeded(s)),n.push(this.sqliteType),this.context.isPrimaryKey&&n.push("PRIMARY KEY"),this.context.isSerial&&this.context.isPrimaryKey&&n.push("AUTOINCREMENT"),r&&!this.context.nullable&&!this.context.isPrimaryKey&&n.push("NOT NULL"),this.context.isUnique&&!this.context.isPrimaryKey&&n.push("UNIQUE"),this.context.defaultValue!==null&&n.push(`DEFAULT ${this.context.defaultValue}`);let i=this.checkConstraint();return i&&n.push(`CHECK (${i})`),n.join(" ")}checkError(e,r){return new fr(this.context.table,this.context.column,e,r)}quoteIfNeeded(e){return /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)?e:`"${e}"`}};var Cr=class extends ge{get sqliteType(){return "INTEGER"}};var ps=class extends Cr{constructor(e){super({...e,isSerial:true});}};function vS(t,e){let{precision:r,scale:n}=e,s=10**n,i=10**(r-n);return Math.abs(Math.round(t*s)-t*s)<1e-4&&Math.abs(t)<i}var ms=class extends ge{numericPrecision;constructor(e,r){super(e),this.numericPrecision=r;}get isShimBacked(){return this.numericPrecision!==void 0}get sqliteType(){return "REAL"}checkConstraint(){if(this.numericPrecision){let{precision:e,scale:r}=this.numericPrecision,n=this.context.column,s=10**r,i=10**(e-r);return `ABS(ROUND(${n} * ${s}) - ${n} * ${s}) < 0.0001 AND ABS(${n}) < ${i}`}return null}validateStorage(e){if(this.isNullish(e))return this.validationPass();if(typeof e!="number"||!Number.isFinite(e))return this.validationFail("Expected finite number.","Patch rows with finite numbers.");if(this.numericPrecision){let{precision:r,scale:n}=this.numericPrecision;if(!vS(e,this.numericPrecision))return this.validationFail(`Does not fit numeric(${r}, ${n}).`,"Patch rows within numeric precision.")}return this.validationPass()}};var ne=class extends ge{lengthConstraint;constructor(e,r){super(e),this.lengthConstraint=r;}get isShimBacked(){return this.lengthConstraint!==void 0}get sqliteType(){return "TEXT"}checkConstraint(){return this.lengthConstraint!==void 0?`length(${this.context.column}) <= ${this.lengthConstraint}`:null}validateStorage(e){return this.isNullish(e)?this.validationPass():typeof e!="string"?this.validationFail("Expected text.","Patch rows with text values."):this.lengthConstraint!==void 0&&Array.from(e).length>this.lengthConstraint?this.validationFail(`Exceeds length ${this.lengthConstraint}.`,"Patch rows with shorter text."):this.validationPass()}};var hs=class extends ge{get sqliteType(){return "BLOB"}};var gs=class extends ge{get isShimBacked(){return true}get sqliteType(){return "INTEGER"}checkConstraint(){return `${this.context.column} IN (0, 1)`}serialize(e){if(this.isNullish(e))return e;if(e===true||e===1)return 1;if(e===false||e===0)return 0;throw this.checkError("boolean_range",e)}deserialize(e){return this.isNullish(e)?e:e===1?true:e===0?false:e}validateStorage(e){return this.isNullish(e)?this.validationPass():e===1||e===0?this.validationPass():this.validationFail("Expected 0 or 1.","Patch rows with boolean values.")}};function Yp(t){try{return {ok:!0,value:JSON.parse(t)}}catch{return {ok:false}}}var ys=class extends ge{get isShimBacked(){return true}get sqliteType(){return "TEXT"}checkConstraint(){let e=this.context.column;return `${e} IS NULL OR json_valid(${e})`}serialize(e){if(this.isNullish(e))return e;try{return JSON.stringify(e)}catch{throw this.checkError("json_valid",e)}}deserialize(e){if(this.isNullish(e))return e;if(typeof e=="string"){let r=Yp(e);return r.ok?r.value:e}return e}validateStorage(e){return this.isNullish(e)?this.validationPass():typeof e!="string"?this.validationFail("Expected JSON text.","Patch rows with JSON values."):Yp(e).ok?this.validationPass():this.validationFail("Invalid JSON text.","Patch rows with valid JSON.")}};function CS(t){if(!/^\d{4}-\d{2}-\d{2}$/.test(t))return false;let e=new Date(`${t}T00:00:00.000Z`);return !Number.isNaN(e.getTime())&&e.toISOString().slice(0,10)===t}var bs=class extends ne{get isShimBacked(){return true}checkConstraint(){let e=this.context.column;return `${e} IS NULL OR date(${e}) IS NOT NULL`}validateStorage(e){return this.isNullish(e)?this.validationPass():typeof e!="string"||!CS(e)?this.validationFail("Invalid date.","Patch rows with YYYY-MM-DD dates."):this.validationPass()}};function AS(t){let e=t.match(/^(\d{2}):(\d{2})(?::(\d{2})(?:\.\d{1,6})?)?([+-](\d{2}):?(\d{2}))?$/);if(!e)return false;let r=Number(e[1]),n=Number(e[2]),s=e[3]===void 0?0:Number(e[3]),i=e[5]===void 0?null:Number(e[5]),o=e[6]===void 0?null:Number(e[6]),a=i===null||o!==null&&i<=15&&o<=59;return r<=24&&n<=59&&s<=59&&(r!==24||n===0&&s===0)&&a}var ws=class extends ne{get isShimBacked(){return true}checkConstraint(){let e=this.context.column;return `${e} IS NULL OR time(${e}) IS NOT NULL`}validateStorage(e){return this.isNullish(e)?this.validationPass():typeof e!="string"||!AS(e)?this.validationFail("Invalid time.","Patch rows with HH:MM[:SS] times."):this.validationPass()}};function TS(t){let e=t.match(/^(\d{4})-(\d{2})-(\d{2})[ T](\d{2}):(\d{2})(?::(\d{2})(?:\.\d{1,6})?)?(?:Z|([+-](\d{2}):?(\d{2})))?$/);if(!e)return false;let r=Number(e[1]),n=Number(e[2]),s=Number(e[3]),i=Number(e[4]),o=Number(e[5]),a=e[6]===void 0?0:Number(e[6]),l=e[8]===void 0?null:Number(e[8]),u=e[9]===void 0?null:Number(e[9]),f=new Date(Date.UTC(r,n-1,s)),c=f.getUTCFullYear()===r&&f.getUTCMonth()===n-1&&f.getUTCDate()===s,d=i<=24&&o<=59&&a<=59&&(i!==24||o===0&&a===0),p=l===null||u!==null&&l<=15&&u<=59;return c&&d&&p}var Ss=class extends ne{get isShimBacked(){return true}checkConstraint(){let e=this.context.column;return `${e} IS NULL OR datetime(${e}) IS NOT NULL`}validateStorage(e){return this.isNullish(e)?this.validationPass():typeof e!="string"||!TS(e)?this.validationFail("Invalid timestamp.","Patch rows with ISO timestamps."):this.validationPass()}};var Es=class extends ne{get isShimBacked(){return true}validateStorage(e){return this.isNullish(e)?this.validationPass():typeof e!="string"||e.trim().length===0?this.validationFail("Expected interval text.","Patch rows with interval strings."):/^-?\d+(?:\.\d+)?$/.test(e.trim())?this.validationFail("Ambiguous numeric interval.","Patch rows with explicit interval strings."):this.validationPass()}};var _s=class extends ne{enumValues;constructor(e,r){super(e),this.enumValues=r;}get isShimBacked(){return true}checkConstraint(){let e=this.context.column,r=this.enumValues.map(n=>`'${n.replace(/'/g,"''")}'`).join(", ");return `${e} IN (${r})`}serialize(e){if(this.isNullish(e))return e;if(typeof e!="string"||!this.enumValues.includes(e))throw this.checkError("enum_membership",e);return e}validateStorage(e){return this.isNullish(e)?this.validationPass():typeof e!="string"||!this.enumValues.includes(e)?this.validationFail("Invalid enum value.","Patch rows with declared enum values."):this.validationPass()}};function Zp(t){try{return {ok:!0,value:JSON.parse(t)}}catch{return {ok:false}}}var rn=class extends ge{elementField;constructor(e,r){super(e),this.elementField=r;}get sqliteType(){return "TEXT"}get isShimBacked(){return true}checkConstraint(){let e=this.context.column;return `${e} IS NULL OR (json_valid(${e}) AND json_type(${e}) = 'array')`}serialize(e){if(this.isNullish(e))return e;if(!Array.isArray(e))throw this.checkError("array_type",e);return this.elementField?JSON.stringify(e.map(r=>this.elementField.serialize(r))):JSON.stringify(e)}deserialize(e){if(this.isNullish(e))return e;if(typeof e=="string"){let r=Zp(e);if(r.ok&&Array.isArray(r.value))return this.elementField?r.value.map(n=>this.elementField.deserialize(n)):r.value}return e}validateStorage(e){if(this.isNullish(e))return this.validationPass();if(typeof e!="string")return this.validationFail("Expected JSON array text.","Patch rows with array values.");let r=Zp(e);if(!r.ok)return this.validationFail("Invalid JSON array text.","Patch rows with array values.");if(!Array.isArray(r.value))return this.validationFail("Expected JSON array.","Patch rows with array values.");if(this.elementField)for(let n of r.value){let s=this.elementField.validateStorage(n);if(s.status==="fail")return this.validationFail(`Invalid ${this.elementField.context.pgTypeName} array element.`,s.action??"Patch rows with valid array elements.")}return this.validationPass()}};var RS="????????-????-????-????-????????????",kS=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;function em(t){return kS.test(t.toLowerCase())}var xs=class extends ne{get isShimBacked(){return true}checkConstraint(){let e=this.quoteIfNeeded(this.context.column);return `${e} IS NULL OR ${e} GLOB '${RS}'`}serialize(e){if(this.isNullish(e))return e;if(typeof e!="string")throw this.checkError("uuid_format",e);let r=e.toLowerCase();if(!em(r))throw this.checkError("uuid_format",e);return r}validateStorage(e){return this.isNullish(e)?this.validationPass():typeof e!="string"||!em(e)?this.validationFail("Invalid UUID.","Patch rows with valid UUIDs."):this.validationPass()}};function $S(t){let e=t.split("/");if(e.length>2)return null;let r=e[0];if(!r)return null;if(e.length===1)return {address:r,prefix:null};let n=e[1];return !n||!/^\d+$/.test(n)?null:{address:r,prefix:Number(n)}}function OS(t){let e=t.split(".");return e.length!==4?false:e.every(r=>{if(!/^\d+$/.test(r))return false;let n=Number(r);return n>=0&&n<=255})}function PS(t){if(!t.includes(":"))return false;try{return new URL(`http://[${t}]/`),!0}catch{return false}}function tm(t){let e=$S(t);return e?OS(e.address)?e.prefix===null||e.prefix>=0&&e.prefix<=32:PS(e.address)?e.prefix===null||e.prefix>=0&&e.prefix<=128:false:false}var vs=class extends ne{get isShimBacked(){return true}checkConstraint(){let e=this.quoteIfNeeded(this.context.column);return `${e} IS NULL OR (length(${e}) BETWEEN 3 AND 49 AND (instr(${e}, '.') > 0 OR instr(${e}, ':') > 0))`}serialize(e){if(this.isNullish(e))return e;if(typeof e!="string")throw this.checkError("inet_format",e);let r=e.trim();if(!tm(r))throw this.checkError("inet_format",e);return r}validateStorage(e){return this.isNullish(e)?this.validationPass():typeof e!="string"||!tm(e.trim())?this.validationFail("Invalid inet address.","Patch rows with valid inet strings."):this.validationPass()}};var Cs=class extends ne{serialize(e){throw new Error(`Unsupported type "${this.context.pgTypeName}" for ${this.context.table}.${this.context.column}`)}deserialize(e){throw new Error(`Unsupported type "${this.context.pgTypeName}" for ${this.context.table}.${this.context.column}`)}toColumnDDL(){throw new Error(`Unsupported type "${this.context.pgTypeName}" for ${this.context.table}.${this.context.column}`)}};var IS=new Set(["int2","smallint","int4","integer","int","int8","bigint"]),NS=new Set(["serial","serial4","bigserial","serial8","smallserial","serial2"]),jS=new Set(["float4","real","float8","double precision","numeric","decimal"]),DS=new Set(["text","varchar","character varying","char","character","bpchar"]),LS=new Set(["bytea"]),US=new Set(["bool","boolean"]),FS=new Set(["json","jsonb"]),MS=new Set(["uuid"]),BS=new Set(["name"]),qS=new Set(["inet"]),JS=new Set(["date"]),KS=new Set(["time","timetz","time without time zone","time with time zone"]),WS=new Set(["timestamp","timestamptz","timestamp without time zone","timestamp with time zone"]),HS=new Set(["interval"]);function Ar(t,e){if(e?.isArray){let n=Ar(t,{...e,isArray:false});return new rn(t,n)}if(e?.enumValues)return new _s(t,e.enumValues);let r=t.pgTypeName.toLowerCase().trim();if(r.startsWith("_")||r.endsWith("[]")){let n=r.startsWith("_")?r.slice(1):r.slice(0,-2),s={...t,pgTypeName:n},i=Ar(s);return new rn(t,i)}return NS.has(r)?new ps(t):IS.has(r)?new Cr(t):US.has(r)?new gs(t):FS.has(r)?new ys(t):JS.has(r)?new bs(t):KS.has(r)?new ws(t):WS.has(r)?new Ss(t):HS.has(r)?new Es(t):LS.has(r)?new hs(t):jS.has(r)?new ms(t,e?.numericPrecision):MS.has(r)?new xs(t):BS.has(r)?new ne(t,63):qS.has(r)?new vs(t):DS.has(r)?new ne(t,e?.lengthConstraint):new Cs(t)}var rm="lower(hex(randomblob(4))) || '-' || lower(hex(randomblob(2))) || '-4' || substr(lower(hex(randomblob(2))),2) || '-' || substr('89ab',abs(random()) % 4 + 1, 1) || substr(lower(hex(randomblob(2))),2) || '-' || lower(hex(randomblob(6)))",Eo={gen_random_uuid:{sqlite:()=>rm,js:()=>crypto.randomUUID()},uuid_generate_v4:{sqlite:()=>rm,js:()=>crypto.randomUUID()},now:{sqlite:()=>"datetime('now')",js:()=>new Date().toISOString()},current_timestamp:{sqlite:()=>"datetime('now')",js:()=>new Date().toISOString()},current_date:{sqlite:()=>"date('now')",js:()=>new Date().toISOString().split("T")[0]},current_time:{sqlite:()=>"time('now')",js:()=>new Date().toISOString().split("T")[1].replace("Z","")},random:{sqlite:()=>"random()",js:()=>Math.random()},length:{sqlite:()=>"length",js:null},lower:{sqlite:()=>"lower",js:null},upper:{sqlite:()=>"upper",js:null},substr:{sqlite:()=>"substr",js:null},substring:{sqlite:()=>"substr",js:null},trim:{sqlite:()=>"trim",js:null},ltrim:{sqlite:()=>"ltrim",js:null},rtrim:{sqlite:()=>"rtrim",js:null},replace:{sqlite:()=>"replace",js:null},coalesce:{sqlite:()=>"coalesce",js:null},nullif:{sqlite:()=>"nullif",js:null},count:{sqlite:()=>"count",js:null},sum:{sqlite:()=>"sum",js:null},avg:{sqlite:()=>"avg",js:null},min:{sqlite:()=>"min",js:null},max:{sqlite:()=>"max",js:null},localtime:{sqlite:()=>"time('now', 'localtime')",js:null},localtimestamp:{sqlite:()=>"datetime('now', 'localtime')",js:null}};function ac(t,e="auto"){let r=t.toLowerCase(),n=Eo[r];if(!n)return null;switch(e){case "translate":{if(!n.sqlite)throw new Error(`No SQLite translation for function "${t}"`);return {sqliteExpr:n.sqlite(),jsFn:null}}case "synthetic":{if(!n.js)throw new Error(`No JS implementation for function "${t}"`);return {sqliteExpr:null,jsFn:n.js}}case "auto":return n.js?{sqliteExpr:null,jsFn:n.js}:n.sqlite?{sqliteExpr:n.sqlite(),jsFn:null}:null}}var _o=class extends Deparser{enums;schemaHandling;warnings=[];helper;config;triggerFunctions=new Map;plpgsqlParser=new bo;introspection;functionResolution;constructor(e,{enums:r,schemaHandling:n,introspection:s,...i}={}){super(e,i),this.schemaHandling=n??"default",this.enums=r??new Map,this.helper=new yo(e),this.config=i,this.introspection=s,this.functionResolution=i?.functionResolution??"translate";}visit(e,r){let n=en(e),s=go.get(n);if(s){if(s.react==="error")throw new P({[n]:e},`Unsupported node type: ${n}`);return s.react==="warn"&&this.warnings.push({type:n,node:e}),""}return super.visit(e,r)}deparse(e,r){if(e==null)return null;if(!r){let n=new SqlFormatter;r=new DeparserContext({formatter:n});}return typeof e=="number"||e instanceof Number?e.toString():this.visit(e,r)}RawStmt(e,r){if(!e.stmt||e.stmt.CommentStmt)return "";let n=this.deparse(e.stmt,r);return !n||n.length===0?"":e.stmt_len?n+";":n}RangeVar(e,r){this.ensureRelation(e);let n=this.effectiveSchema(e.schemaname),s=e.relname,i=this.quoteBareIfNeeded(s);n&&(this.schemaHandling==="prefix"?i=`${n}__${s}`:i=`"${n}.${s}"`);let o=e.alias?" "+this.Alias(e.alias,r):"";return i+o}getRelationName(e){this.ensureRelation(e);let r=this.effectiveSchema(e.schemaname),n=e.relname;return r?this.schemaHandling==="prefix"?`${r}__${n}`:`${r}.${n}`:n}quoteBareIfNeeded(e){return /^[A-Za-z_][A-Za-z0-9_]*$/.test(e)?e:`"${e.replace(/"/g,'""')}"`}effectiveSchema(e){if(e){if(this.config.forceDefaultSchema||this.schemaHandling!=="default")return e;if(e!=="public")return e}}ensureRelation(e){let r=this.config.forceDefaultSchema;r&&(!e||typeof e!="object"||r.length===0||e.schemaname||(e.schemaname=r));}CreateStmt(e,r){if(e.inhRelations&&e.inhRelations.length>0)throw new P({CreateStmt:e},"Inheritance is not supported in SQLite");if(e.ofTypename!==void 0)throw new P({CreateStmt:e},"Typed tables (CREATE TABLE ... OF type_name) are not supported. Define columns directly in the CREATE TABLE statement instead.");if(e.options&&e.options.length>0&&(e.options=void 0),!e.tableElts||e.tableElts.length===0)throw new P({CreateStmt:e},"Empty tables are not supported in SQLite. Define at least one column.");return e.accessMethod&&(e.accessMethod=void 0),super.CreateStmt(e,r)+" STRICT"}TableLikeClause(e,r){throw new P({TableLikeClause:e},"CREATE TABLE ... (LIKE ...) is not supported in SQLite. Define the table columns explicitly instead.")}DefElem(e,r){if(["oids","fillfactor",/^autovacuum_/i,"toast_tuple_target","parallel_workers","user_catalog_table"].some(i=>xi(e.defname??"",i)))return "";let s=super.DefElem(e,r);throw new P({DefElem:e},`DefElem "${e.defname}" (${s}) not supported`)}TypeName(e,r){if(!e.names)return "";let n=e.names.map(i=>i.String?i.String.sval||i.String.str:"").filter(Boolean);if(n.length===0)return "";let s=n.length===2&&n[0]==="pg_catalog"?n[1]:n.join(".");return e.arrayBounds&&e.arrayBounds.length>0||this.enums.has(s.toLowerCase())?"TEXT":Xp(s)}ColumnDef(e,r){let n=[],s=e.colname;s&&n.push(this.quoteIfNeeded(s));let i=false,o=false,a=null,l=null,u=null,f=false;if(e.typeName){let c=e.typeName.names?.map(y=>y.String?.sval||y.String?.str).filter(Boolean);u=c&&(c.length===2&&c[0]==="pg_catalog"?c[1]:c[0]),i=!!(u&&po(u)),f=!!(e.typeName.arrayBounds&&e.typeName.arrayBounds.length>0);let d=Array.isArray(e.typeName.typmods)?e.typeName.typmods:[],p=y=>d[y]?.A_Const?.ival?.ival??d[y]?.A_Const?.val?.ival?.ival;if(u&&mo(u)&&d.length>0){let y=p(0);typeof y=="number"&&y>0&&(a={maxLen:y});}if(u&&ho(u)&&d.length>=2){let y=p(0),h=p(1);typeof y=="number"&&typeof h=="number"&&y>0&&h>=0&&(l={precision:y,scale:h});}if(e.constraints){let y=Array.isArray(e.constraints)?e.constraints:[];o=y.some(h=>h.Constraint?.contype==="CONSTR_PRIMARY"),y.some(h=>h.Constraint?.contype==="CONSTR_IDENTITY")&&(i=true);}n.push(this.TypeName(e.typeName,r));}if(e.constraints){let c=Array.isArray(e.constraints)?e.constraints:[],d=c.map(y=>this.visit(y,r));n.push(...d.filter(Boolean));let p=c.some(y=>y.Constraint?.contype==="CONSTR_CHECK");i&&o&&!p&&n.push("AUTOINCREMENT");}if(s&&u){let c={isArray:f};a&&(c.lengthConstraint=a.maxLen),l&&(c.numericPrecision=l);let d=this.enums.get(u.toLowerCase());d&&(c.enumValues=d);let h=Ar({schema:"public",table:"",column:s,pgTypeName:u,nullable:true,defaultValue:null,defaultFn:null,isPrimaryKey:o,isUnique:false,isSerial:i},c).checkConstraint();h&&n.push(`CHECK (${h})`);}return n.join(" ")}Constraint(e,r){let n=e.contype;if(n==="CONSTR_IDENTITY"||n==="CONSTR_ATTR_DEFERRABLE"||n==="CONSTR_ATTR_NOT_DEFERRABLE"||n==="CONSTR_ATTR_DEFERRED"||n==="CONSTR_ATTR_IMMEDIATE")return "";if(n==="CONSTR_NULL")return "NULL";if(n==="CONSTR_NOTNULL")return "NOT NULL";if(n==="CONSTR_DEFAULT"&&e.raw_expr){let s=this.visit(e.raw_expr,r);return s.includes("(")&&!s.startsWith("(")?`DEFAULT (${s})`:`DEFAULT ${s}`}if(n==="CONSTR_CHECK"&&e.raw_expr){let s=[];e.conname&&s.push("CONSTRAINT",fo(e.conname)),s.push("CHECK");let i=this.visit(e.raw_expr,r);return s.push(`(${i})`),s.join(" ")}if(n==="CONSTR_PRIMARY")return e.keys&&e.keys.length>0?`PRIMARY KEY (${xr(e.keys).map(i=>this.visit(i,r)).join(", ")})`:"PRIMARY KEY";if(n==="CONSTR_UNIQUE")return e.keys&&e.keys.length>0?`UNIQUE (${xr(e.keys).map(i=>this.visit(i,r)).join(", ")})`:"UNIQUE";if(n==="CONSTR_FOREIGN")return super.Constraint(e,r).replace(/FOREIGN\s+KEY\s+REFERENCES/gi,"REFERENCES");if(n==="CONSTR_GENERATED"&&e.raw_expr)return `GENERATED ALWAYS AS (${this.visit(e.raw_expr,r)}) STORED`;if(n==="CONSTR_EXCLUSION")throw new P({Constraint:e},"EXCLUSION constraints are not supported in SQLite");return ""}FuncCall(e,r){let s=(e.funcname||[]).map(u=>u.String?.sval||u.String?.str).filter(Boolean);if(s.length===0)throw new Error("Function call has no name");let i=s[s.length-1].toLowerCase();if(i==="extract"&&e.args&&e.args.length>=2){let u=e.args[0];if((u?.A_Const?.sval?.sval||u?.String?.sval)==="epoch")return `strftime('%s', ${this.visit(e.args[1],r)})`}let a=(e.args??[]).map(u=>this.visit(u,r));if(e.agg_star)return `${i}(*)`;if(e.agg_distinct)return `${i}(DISTINCT ${a.join(", ")})`;let l=ac(i,this.functionResolution);if(l){if(l.sqliteExpr!==null){let u=l.sqliteExpr;return u.includes("(")?u:`${u}(${a.join(", ")})`}if(l.jsFn!==null){let u=Eo[i];if(u?.sqlite){let f=u.sqlite();return f.includes("(")?f:`${f}(${a.join(", ")})`}}}throw new P({FuncCall:e},`Function call "${i}" not supported`)}SQLValueFunction(e,r){switch(e.op){case "SVFOP_CURRENT_TIMESTAMP":return "datetime('now')";case "SVFOP_CURRENT_DATE":return "date('now')";case "SVFOP_CURRENT_TIME":return "time('now')";default:throw new P({SQLValueFunction:e},`SQLValueFunction "${e.op}" not supported`)}}ResTarget(e,r){if(e.indirection&&e.indirection.length>0)throw new P({ResTarget:e},"Indirections are not supported in SQLite");let n=[];return r.update&&e.name?(n.push(this.quoteIfNeeded(e.name)),n.push("="),e.val&&n.push(this.deparse(e.val,r))):r.insertColumns&&e.name?n.push(this.quoteIfNeeded(e.name)):(e.val&&n.push(this.deparse(e.val,r)),e.name&&n.push(this.Alias({aliasname:e.name},r))),n.join(" ")}A_Expr(e,r){if(["AEXPR_OP_ALL","AEXPR_OP_ANY"].includes(e.kind))throw new P({A_Expr:e},"ALL/ANY/SOME comparison operators are not supported. Use NOT EXISTS or IN instead");if(e.name&&e.name.length>0){if(e.name.length>1)throw new P({A_Expr:e},"Schema-qualified OPERATOR() syntax is not supported in SQLite");let n=e.name[0]?.String?.sval||e.name[0]?.String?.str;if(n){if(!e.lexpr||!e.rexpr)throw new P({A_Expr:e},"A_Expr missing left or right expression");if(!Qp.includes(n.toUpperCase()))throw new P({A_Expr:e},`Operator "${n}" is not supported in SQLite`);if(n==="~~"||n==="~~*"){let s=this.visit(e.lexpr,r),i=this.visit(e.rexpr,r);return `${s} LIKE ${i}`}if(n==="!~~"||n==="!~~*"){let s=this.visit(e.lexpr,r),i=this.visit(e.rexpr,r);return `${s} NOT LIKE ${i}`}if(n==="~"||n==="~*"){let s=this.visit(e.lexpr,r),i=this.visit(e.rexpr,r);return `${s} GLOB ${i}`}}}return super.A_Expr(e,r)}IndexStmt(e,r){let n=["CREATE"];e.unique&&n.push("UNIQUE"),n.push("INDEX"),e.if_not_exists&&n.push("IF NOT EXISTS"),e.idxname&&n.push(fo(e.idxname)),n.push("ON"),e.relation&&n.push(this.RangeVar(e.relation,r));let s=(e.indexParams??[]).map(i=>"IndexElem"in i?this.IndexElem(i.IndexElem,r):this.visit(i,r)).filter(Boolean);return n.push(`(${s.join(", ")})`),n.join(" ")}IndexElem(e,r){let n=[];return e.name?n.push(fo(e.name)):e.expr&&n.push(`(${this.visit(e.expr,r)})`),e.ordering==="SORTBY_ASC"&&n.push("ASC"),e.ordering==="SORTBY_DESC"&&n.push("DESC"),e.nulls_ordering==="SORTBY_NULLS_FIRST"&&n.push("NULLS FIRST"),e.nulls_ordering==="SORTBY_NULLS_LAST"&&n.push("NULLS LAST"),n.join(" ")}TypeCast(e,r){if(!e.arg||!e.typeName)return super.TypeCast(e,r);if([...this.helper.walk(e)].filter(({node:o})=>"A_Star"in o).length>0)throw new P({TypeCast:e},"A.* in type casts are not supported in SQLite");if(e.typeName.arrayBounds&&e.typeName.arrayBounds.length>0){if("A_Const"in e.arg&&e.arg.A_Const.sval){let o=e.arg.A_Const.sval.sval;if(o.startsWith("{")&&o.endsWith("}")){let a=e.typeName.names?.map(c=>c.String?.sval).filter(Boolean)??[],l=a.length===2&&a[0]==="pg_catalog"?a[1]:a[0],f=["text","varchar","character varying","char","bpchar","name","uuid"].includes(l?.toLowerCase());try{let c=this.parsePgArrayLiteral(o,f);return `'${JSON.stringify(c).replace(/'/g,"''")}'`}catch{}}}return this.visit(e.arg,r)}let s=this.visit(e.arg,r),i=this.TypeName(e.typeName,r);return `CAST(${s} AS ${i})`}A_ArrayExpr(e,r){let n=xr(e.elements),s=this.tryExtractStaticArray(n);return s!==void 0?`'${JSON.stringify(s).replace(/'/g,"''")}'`:`json_array(${n.map(o=>this.visit(o,r)).join(", ")})`}tryExtractStaticArray(e){let r=[];for(let n of e)if("A_ArrayExpr"in n){let s=xr(n.A_ArrayExpr.elements),i=this.tryExtractStaticArray(s);if(i===void 0)return;r.push(i);}else if("A_Const"in n){let s=n.A_Const;if(s.isnull)r.push(null);else if(s.ival)r.push(s.ival.ival);else if(s.fval)r.push(parseFloat(s.fval.fval));else if(s.sval)r.push(s.sval.sval);else if("boolval"in s)r.push(s.boolval.boolval===true);else return}else return;return r}parsePgArrayLiteral(e,r){if(!e.startsWith("{")||!e.endsWith("}"))throw new Error("Not a PG array literal");let n=e.slice(1,-1);if(n.length===0)return [];let s=[],i=0;for(;i<n.length;)if(n[i]==="{"){let o=0,a=i;for(;a<n.length;){if(n[a]==="{")o++;else if(n[a]==="}"&&(o--,o===0))break;a++;}s.push(this.parsePgArrayLiteral(n.slice(i,a+1),r)),i=a+1,n[i]===","&&i++;}else if(n[i]==='"'){let o=i+1,a="";for(;o<n.length&&n[o]!=='"';)n[o]==="\\"&&o++,a+=n[o],o++;s.push(a),i=o+1,n[i]===","&&i++;}else {let o=i;for(;o<n.length&&n[o]!==","&&n[o]!=="}";)o++;if(o===i)throw new Error("Malformed PG array literal");let a=n.slice(i,o);if(a==="NULL")s.push(null);else if(r)s.push(a);else {let l=Number(a);s.push(isNaN(l)?a:l);}i=o,n[i]===","&&i++;}return s}BetweenExpr(e,r){return super.A_Expr(e,r)}AlterTableStmt(e,r){let n=e.cmds??[],s=["AT_EnableRowSecurity","AT_ForceRowSecurity"],i=n.filter(f=>"AlterTableCmd"in f&&!s.includes(f.AlterTableCmd.subtype));if(i.length===0)return "";if(!["OBJECT_TABLE","OBJECT_INDEX","OBJECT_VIEW"].includes(e.objtype))throw new P({AlterTableStmt:e},`AlterTableStmt with objtype ${e.objtype} is not supported`);let o=["AT_AddColumn","AT_DropColumn"],a=["AT_AlterColumnType","AT_SetNotNull","AT_DropNotNull","AT_ColumnDefault","AT_AddConstraint","AT_DropConstraint"],l=[],u=[];for(let f of i){let c=f.AlterTableCmd.subtype;if(o.includes(c)){let d={...e,cmds:[f]};l.push(super.AlterTableStmt(d,r));}else if(a.includes(c))u.push(f.AlterTableCmd);else throw new P({AlterTableStmt:e},`AlterTableCmd with subtype ${c} is not supported in SQLite`)}if(u.length>0){let f=this.getRelationName(e.relation);l.push(this.generateRebuildSql(f,u));}return l.join(`;
310
+ `)}AlterTableCmd(e,r){if(!["AT_AddColumn","AT_DropColumn"].includes(e.subtype))throw new P({AlterTableCmd:e},`AlterTableCmd with subtype ${e.subtype} is not supported`);return e.subtype==="AT_DropColumn"&&e.behavior?super.AlterTableCmd({...e,behavior:void 0},r):super.AlterTableCmd(e,r)}DefineStmt(e,r){if(e.kind==="OBJECT_AGGREGATE")throw new Error("AGGREGATE definitions are not supported in SQLite");return super.DefineStmt(e,r)}InsertStmt(e,r){if("selectStmt"in e){let s=(e.selectStmt?.SelectStmt?.valuesLists??[]).map(i=>i.List?.items?.map(o=>"SetToDefault"in o));if(s.length===1&&s[0]?.every(i=>i===true))return super.InsertStmt({...e,selectStmt:void 0,cols:void 0},r);if(s.some(i=>i.some(o=>o===true)))throw new P({InsertStmt:e},"Insert with partial DEFAULT values is not supported")}return super.InsertStmt(e,r)}SelectStmt(e,r){if(this.helper.hasUnsafeStar())throw new P({SelectStmt:e},"Row-wise comparison using .* is not supported in SQLite. Expand to explicit per-column comparisons instead.");if(e.intoClause)throw new P({SelectStmt:e},"SELECT ... INTO clause is not supported in SQLite");if(e.distinctClause){let s=xr(e.distinctClause);if(s.length>0&&Object.keys(s[0]).length>0)throw new P({SelectStmt:e},"DISTINCT ON clause is not supported in SQLite. Use window functions instead.")}if(e.limitOffset&&!e.limitCount)throw new P({SelectStmt:e},"OFFSET without LIMIT is not supported in SQLite");let n=super.SelectStmt(e,r);if(/^SELECT\s+FROM/.test(n))throw new P({SelectStmt:e},"SELECT without a target list is not supported in SQLite");return n}JoinExpr(e,r){return e.alias&&this.Alias(e.alias,r),super.JoinExpr(e,r)}A_Const(e,r){if(e.bsval!==void 0)throw new P({A_Const:e},"Bit string literals are not supported in SQLite");let n=super.A_Const(e,r);return typeof n=="string"&&n.startsWith("E'")?n.substring(2,n.length-1):n}SortBy(e,r){if(e.sortby_dir==="SORTBY_USING"){let n=xr(e.useOp),s=n[0]?.String?.sval;if(n.length>1||!["<",">"].includes(s??""))throw new P({SortBy:e},"Only `USING <` or `USING >` are supported.");e.sortby_dir=s==="<"?"SORTBY_DESC":"SORTBY_ASC",e.useOp=void 0;}return super.SortBy(e,r)}RangeSubselect(e,r){if(e.lateral)throw new P({RangeSubselect:e},"LATERAL subqueries are not supported in SQLite");return super.RangeSubselect(e,r)}SubLink(e,r){if(["ANY_SUBLINK","ALL_SUBLINK"].includes(e.subLinkType))throw new P({SubLink:e},"ANY/ALL/SOME subqueries are not supported. Use NOT EXISTS or IN instead");if(e.subLinkType==="ARRAY_SUBLINK")throw new P({SubLink:e},"ARRAY subqueries are not supported in SQLite");return super.SubLink(e,r)}LockingClause(e,r){return ""}UpdateStmt(e,r){if(r.parentNodeTypes.includes("SelectStmt"))throw new P({UpdateStmt:e},"UPDATE ... FROM (SELECT ...) is not supported in SQLite");return super.UpdateStmt(e,r)}Alias(e,r){if(e.colnames&&e.colnames.length>0)throw new P({Alias:e},"Aliasing with column names is not supported in SQLite");return `AS "${e.aliasname}"`}CreateFunctionStmt(e,r){let n=e.options??[],s=e.returnType?.names?.map(u=>u.String?.sval).filter(Boolean).join("."),i=n.find(u=>u.DefElem?.defname==="language")?.DefElem?.arg?.String?.sval;if(s!=="trigger"||i!=="plpgsql")throw new P({CreateFunctionStmt:e},"Only trigger functions with LANGUAGE plpgsql are supported");let o=e.funcname?.map(u=>u.String?.sval).filter(Boolean).pop();if(!o)throw new Error("Function has no name");let a=n.find(u=>u.DefElem?.defname==="as")?.DefElem?.arg?.List?.items?.[0]?.String?.sval;if(!a)throw new Error("Function has no body");let l=this.plpgsqlParser.parse(a);return this.triggerFunctions.set(o,l),""}CreateTrigStmt(e,r){let n=e.trigname,s=this.RangeVar(e.relation,r),i=e.funcname?.map(c=>c.String?.sval).filter(Boolean).pop();if(!i)throw new Error(`Trigger "${n}" has no function reference`);let o=this.triggerFunctions.get(i);if(!o)throw new P({CreateTrigStmt:e},`Trigger "${n}" references unknown function "${i}"`);let a=e.timing===2?"BEFORE":e.timing===64?"INSTEAD OF":"AFTER",l=[];if(e.events&4&&l.push("INSERT"),e.events&8&&l.push("DELETE"),e.events&16)if(e.columns?.length){let c=e.columns.map(d=>d.String?.sval).filter(Boolean);l.push(`UPDATE OF ${c.join(", ")}`);}else l.push("UPDATE");let u=l.join(" OR "),f=this.buildTriggerBody(o,s,r);return [`CREATE TRIGGER ${n}`,`${a} ${u} ON ${s}`,"FOR EACH ROW","BEGIN",...f.map(c=>` ${c};`),"END"].join(`
311
+ `)}buildTriggerBody(e,r,n){let s=[],i=[];for(let o of e.statements)if(o.type!=="return"){if(o.type==="assignment"){i.push(o);continue}i.length>0&&(s.push(this.buildAssignmentUpdate(i,r,n)),i.length=0),o.type==="dml"&&s.push(this.translateDml(o.sql,n));}return i.length>0&&s.push(this.buildAssignmentUpdate(i,r,n)),s}buildAssignmentUpdate(e,r,n){let s=e.map(i=>{let o=this.translateExpression(i.expression,n);return `${i.column} = ${o}`});return `UPDATE ${r} SET ${s.join(", ")} WHERE rowid = NEW.rowid`}translateExpression(e,r){try{let n=`SELECT ${e}`,s=e.trim().toLowerCase();return s==="now()"||s==="current_timestamp"?"datetime('now')":e}catch{return e}}translateDml(e,r){return e.replace(/\bnow\(\)/gi,"datetime('now')").replace(/\bcurrent_timestamp\b/gi,"datetime('now')").replace(/\bgen_random_uuid\(\)/gi,this.uuidExpression()).replace(/\buuid_generate_v4\(\)/gi,this.uuidExpression())}uuidExpression(){return "lower(hex(randomblob(4))) || '-' || lower(hex(randomblob(2))) || '-4' || substr(lower(hex(randomblob(2))),2) || '-' || substr('89ab',abs(random()) % 4 + 1, 1) || substr(lower(hex(randomblob(2))),2) || '-' || lower(hex(randomblob(6)))"}NullTest(e,r){if(e.arg?.ColumnRef?.fields?.length>1)throw new P({NullTest:e},"row-level NULL tests are not supported in SQLite");return super.NullTest(e,r)}RenameStmt(e,r){if(!e.renameType)throw new Error("RenameStmt requires renameType");let n=["OBJECT_TABLE","OBJECT_VIEW","OBJECT_COLUMN"];if(e.renameType==="OBJECT_COLUMN"&&(e.relationType==="OBJECT_FOREIGN_TABLE"||e.relationType==="OBJECT_VIEW"))throw new P({RenameStmt:e},`RenameStmt with relationType ${e.relationType} is not supported`);if(!n.includes(e.renameType))throw new P({RenameStmt:e},`RenameStmt with renameType ${e.renameType} is not supported in SQLite`);return super.RenameStmt(e,r)}DropStmt(e,r){let n=e.removeType;if(["OBJECT_TABLE","OBJECT_VIEW","OBJECT_INDEX","OBJECT_TRIGGER"].includes(n))return super.DropStmt(e,r);if(["OBJECT_POLICY"].includes(n))return "";throw new P({DropStmt:e},`DROP with removeType ${n} is not supported in SQLite`)}generateRebuildSql(e,r){if(!this.introspection)throw new Error(`ALTER TABLE on "${e}" requires 12-step rebuild but no introspection was provided. Pass introspection in DeparseOptions to enable column type changes, NOT NULL, defaults, and constraint modifications.`);let n=this.buildDesiredSchema(this.introspection,e,r),s=new wo,i=new So,o=s.diff(this.introspection,n);return o.has_changes?i.plan(o,this.introspection,n).steps.filter(l=>!["disable_foreign_keys","begin_transaction","commit_transaction","enable_foreign_keys"].includes(l.type)).map(l=>l.sql).join(`
312
+ `):""}buildDesiredSchema(e,r,n){let s={...e,tables:e.tables.map(i=>({...i})),columns:e.columns.map(i=>({...i})),indexes:e.indexes.map(i=>({...i})),foreign_keys:e.foreign_keys.map(i=>({...i})),primary_keys:e.primary_keys.map(i=>({...i})),views:e.views.map(i=>({...i})),triggers:(e.triggers??[]).map(i=>({...i})),check_constraints:e.check_constraints.map(i=>({...i})),unique_constraints:(e.unique_constraints??[]).map(i=>({...i})),comments:(e.comments??[]).map(i=>({...i})),custom_types:e.custom_types.map(i=>({...i}))};for(let i of n){let o=s.columns.findIndex(a=>a.table===r&&a.name===i.name);switch(i.subtype){case "AT_AlterColumnType":{if(o===-1)break;let a=this.extractTypeName(i);a&&(s.columns[o]={...s.columns[o],type:a.toLowerCase()});break}case "AT_SetNotNull":{if(o===-1)break;s.columns[o]={...s.columns[o],nullable:false};break}case "AT_DropNotNull":{if(o===-1)break;s.columns[o]={...s.columns[o],nullable:true};break}case "AT_ColumnDefault":{if(o===-1)break;if(i.def){let a=this.extractDefaultValue(i);s.columns[o]={...s.columns[o],default_value:a};}else s.columns[o]={...s.columns[o],default_value:null};break}case "AT_AddConstraint":case "AT_DropConstraint":{let a=s.tables.findIndex(l=>l.name===r);a!==-1&&(s.tables[a]={...s.tables[a],sql:s.tables[a].sql+" /* modified */"});break}}}return this.rebuildTableSql(s,r),s}rebuildTableSql(e,r){let n=e.tables.findIndex(c=>c.name===r);if(n===-1)return;let s=e.columns.filter(c=>c.table===r),i=e.foreign_keys.filter(c=>c.table===r),o=e.check_constraints.filter(c=>c.table===r),a=s.map(c=>{let d=`${O(c.name)} ${c.type||"TEXT"}`;return c.is_primary_key&&(d+=" PRIMARY KEY"),c.nullable||(d+=" NOT NULL"),c.default_value!=null&&(d+=` DEFAULT ${c.default_value}`),d}),l=i.map(c=>`FOREIGN KEY (${O(c.column)}) REFERENCES ${O(c.ref_table)}(${O(c.ref_column)}) ON UPDATE ${c.on_update} ON DELETE ${c.on_delete}`),u=o.map(c=>`CHECK (${c.expression})`),f=[...a,...l,...u];e.tables[n]={...e.tables[n],sql:`CREATE TABLE ${O(r)} (${f.join(", ")}) STRICT`};}extractTypeName(e){let r=e.def?.ColumnDef;return r?.typeName?.TypeName?(r.typeName.TypeName.names??[]).map(s=>s.String?.sval).filter(Boolean).pop()??null:null}extractDefaultValue(e){return e.def?"Integer"in e.def?String(e.def.Integer.ival):"Float"in e.def?e.def.Float.fval:"String"in e.def?`'${e.def.String.sval}'`:null:null}};var Ge=class extends P{constructor(e,r){super(e,`Unsupported expression: ${r}`);}},As=class{deparse(e){if("A_Const"in e){let s=e.A_Const;if(s.boolval!==void 0)return s.boolval.boolval?{}:{$always:false}}let r=Object.keys(e)[0],n=this[r];if(!n)throw new Ge({[r]:e},`Unsupported expression: ${r}`);return n.call(this,e[r])}deparseValue(e){if("A_Const"in e)return this.A_Const(e.A_Const);if("ColumnRef"in e)return this.ColumnRef(e.ColumnRef);if("FuncCall"in e)return this.FuncCall(e.FuncCall);if("SubLink"in e)return this.SubLink(e.SubLink);if("TypeCast"in e)return this.TypeCast(e.TypeCast);if("A_Expr"in e){let n=this.isJwtAccessor(e.A_Expr);return n||this.A_Expr(e.A_Expr)}if("BoolExpr"in e)return this.BoolExpr(e.BoolExpr);let r=Object.keys(e)[0];throw new Ge({[r]:e},`deparseValue: ${r}`)}A_Expr(e){if(e.kind==="AEXPR_OP"){let r=e.name?.[0],n=r?ds(r):void 0;if(!n)throw new Ge({A_Expr:e},"A_Expr missing operator");let s=this.isJwtAccessor(e);if(s)return {[s]:{}};let i=e.lexpr?this.deparseValue(e.lexpr):void 0,o=e.rexpr?this.deparseValue(e.rexpr):void 0,a=this.mapOperator(n);if(!a)throw new Ge({A_Expr:e},`Unsupported operator: ${n}`);let l=e.rexpr!=null&&"ColumnRef"in e.rexpr;if(typeof i=="string"&&i.startsWith("{{")&&l)return {[o]:{[a]:i}};let u=l&&typeof o=="string"?{$ref:o}:o;return {[i]:{[a]:u}}}if(e.kind==="AEXPR_LIKE"||e.kind==="AEXPR_ILIKE"){let r=e.lexpr?this.deparseValue(e.lexpr):void 0,n=e.rexpr?this.deparseValue(e.rexpr):void 0,i=(e.name?.[0]?ds(e.name[0]):"~~")==="!~~"?"$notLike":"$like";return {[r]:{[i]:n}}}if(e.kind==="AEXPR_IN"){let r=e.lexpr?this.deparseValue(e.lexpr):void 0,n=e.rexpr&&"List"in e.rexpr&&e.rexpr.List.items?e.rexpr.List.items.map(s=>this.deparseValue(s)):[];return {[r]:{$in:n}}}throw new Ge({A_Expr:e},`A_Expr kind: ${e.kind}`)}BoolExpr(e){let r=e.args??[];switch(e.boolop){case "AND_EXPR":return {$and:r.map(n=>this.deparse(n))};case "OR_EXPR":return {$or:r.map(n=>this.deparse(n))};case "NOT_EXPR":return {$not:this.deparse(r[0])};default:throw new Ge({BoolExpr:e},`BoolExpr op: ${e.boolop}`)}}NullTest(e){let r=e.arg?this.deparseValue(e.arg):void 0;return e.nulltesttype==="IS_NULL"?{[r]:{$is:null}}:{[r]:{$isNot:null}}}SubLink(e){if(e.subLinkType==="ANY_SUBLINK"){let r=e.testexpr?this.deparseValue(e.testexpr):void 0,n=e.subselect?this.SelectStmt(e.subselect.SelectStmt):void 0;return {[r]:{$in:n}}}if(e.subLinkType==="EXISTS_SUBLINK")return {$exists:e.subselect?this.SelectStmt(e.subselect.SelectStmt):void 0};if(e.subLinkType==="EXPR_SUBLINK"){let r=e.subselect?e.subselect.SelectStmt:void 0;if(r?.fromClause?.length)return this.SelectStmt(r);if(r?.targetList?.[0]){let n=r.targetList[0],s="ResTarget"in n?n.ResTarget:void 0;if(s?.val){let i=this.deparseValue(s.val);return i}}}throw new Ge({SubLink:e},`SubLink type: ${e.subLinkType}`)}SelectStmt(e){let{from:r,schema:n,join:s}=this.deparseFromClause(e.fromClause??[]),i=[];for(let d of e.targetList??[]){let p="ResTarget"in d?d.ResTarget:void 0;if(p?.val){let y=this.deparseValue(p.val);Array.isArray(y)?i.push(...y.map(String)):y!=null&&y!==""&&i.push(String(y));}}let o=e.whereClause?this.deparse(e.whereClause):void 0,a=this.deparseSortClause(e.sortClause),l=this.deparseLimit(e.limitCount),u=this.deparseLimit(e.limitOffset),f=this.deparseGroupClause(e.groupClause),c={type:"query",from:r,select:i};return n&&(c.schema=n),Object.keys(s).length>0&&(c.join=s),o&&(c.where=o),a.length>0&&(c.order=a),l!==void 0&&(c.limit=l),u!==void 0&&(c.offset=u),f.length>0&&(c.group=f),c}FuncCall(e){let r=this.isAuthFunc(e.funcname??[]);if(r)return r;throw new Ge({FuncCall:e},`FuncCall: ${_r(e.funcname??[]).join(".")}`)}ColumnRef(e){let r=_r(e.fields??[]);return r.length===1?r[0]:r.join(".")}A_Const(e){if(e.boolval!==void 0)return e.boolval.boolval;if(e.ival!==void 0)return e.ival.ival??0;if(e.fval!==void 0)return parseFloat(e.fval.fval??"0");if(e.sval!==void 0)return e.sval.sval??"";if(e.isnull)return null;throw new Ge({A_Const:e},"A_Const: unknown variant")}TypeCast(e){if(!e.arg)throw new Ge({TypeCast:e},"TypeCast: missing arg");return this.deparseValue(e.arg)}BooleanTest(e){let r=e.arg?this.deparseValue(e.arg):void 0;return e.booltesttype==="IS_TRUE"?{[r]:{$eq:true}}:{[r]:{$eq:false}}}deparseFromClause(e){let r={};if(e.length===0)return {from:"",join:r};let n=e[0];if("RangeVar"in n){let s=n.RangeVar;return {from:s.relname??"",schema:s.schemaname,join:r}}if("JoinExpr"in n){let{from:s,schema:i}=this.walkJoinExpr(n.JoinExpr,r);return {from:s,schema:i,join:r}}return {from:"",join:r}}walkJoinExpr(e,r){let n={from:""};if(e.larg)if("RangeVar"in e.larg){let s=e.larg.RangeVar;n={from:s.relname??"",schema:s.schemaname};}else "JoinExpr"in e.larg&&(n=this.walkJoinExpr(e.larg.JoinExpr,r));if(e.rarg&&"RangeVar"in e.rarg){let s=e.rarg.RangeVar,i=s.relname??"",o=s.alias?.aliasname??i,a=e.jointype==="JOIN_LEFT"?"left":"inner",l={from:i,type:a};e.quals&&(l.on=this.deparse(e.quals));let u=o;if(u in r){let f=2;for(;`${u}_${f}`in r;)f++;u=`${u}_${f}`;}r[u]=l;}return n}deparseSortClause(e){if(!e)return [];let r=[];for(let n of e){if(!("SortBy"in n))continue;let s=n.SortBy;if(!s.node)continue;let i=String(this.deparseValue(s.node)),o=s.sortby_dir==="SORTBY_DESC"?"desc":"asc",a={column:i,direction:o};s.sortby_nulls==="SORTBY_NULLS_FIRST"?a.nullsFirst=true:s.sortby_nulls==="SORTBY_NULLS_LAST"&&(a.nullsFirst=false),r.push(a);}return r}deparseLimit(e){if(!e)return;let r=this.deparseValue(e);return typeof r=="number"?r:Number(r)}deparseGroupClause(e){return e?e.map(r=>String(this.deparseValue(r))):[]}isAuthFunc(e){let r=_r(e);if(r.length===2&&r[0]==="auth"){if(r[1]==="uid")return "{{auth.uid}}";if(r[1]==="jwt")return "{{auth.jwt}}";if(r[1]==="role")return "{{auth.role}}";throw new Error(`Unsupported auth function: "${r.slice(1).join(".")}"`)}return null}isJwtAccessor(e){if(e.kind!=="AEXPR_OP")return null;let r=e.name?.[0]?ds(e.name[0]):void 0;if(r!=="->"&&r!=="->>")return null;let n=e.rexpr&&"A_Const"in e.rexpr?e.rexpr.A_Const.sval?.sval:void 0;if(n===void 0)return null;if(e.lexpr&&"FuncCall"in e.lexpr)return this.isAuthFunc(e.lexpr.FuncCall.funcname??[])==="{{auth.jwt}}"?`{{auth.jwt.${n}}}`:null;if(e.lexpr&&"A_Expr"in e.lexpr){let s=this.isJwtAccessor(e.lexpr.A_Expr);if(s)return `${s.slice(0,-2)}.${n}}}`}return null}mapOperator(e){switch(e){case "=":return "$eq";case "<>":case "!=":return "$neq";case ">":return "$gt";case ">=":return "$gte";case "<":return "$lt";case "<=":return "$lte";case "~~":return "$like";case "!~~":return "$notLike";default:return}}};var Ts=class t{constructor(e){this.data=e;}appliesTo(e){return this.data.command==="ALL"||this.data.command===e}appliesToRole(e){return this.data.roles.length===0||this.data.roles.includes(e)}toJSON(){return this.data}static fromJSON(e){return new t(e)}};var Rs=class{table;schema;fields;constructor(e,r="public",n=new Map){this.table=e,this.schema=r,this.fields=n;}get(e){return this.fields.get(e)}has(e){return this.fields.has(e)}set(e,r){this.fields.set(e,r);}columns(){return Array.from(this.fields.keys())}all(){return Array.from(this.fields.values())}serializeRow(e){let r={};for(let[n,s]of Object.entries(e)){let i=this.fields.get(n);r[n]=i?i.serialize(s):s;}return r}deserializeRow(e){let r={};for(let[n,s]of Object.entries(e)){let i=this.fields.get(n);r[n]=i?i.deserialize(s):s;}return r}applyDefaults(e){let r={...e};for(let[n,s]of this.fields)!(n in r)&&s.context.defaultFn&&(r[n]=s.context.defaultFn());return r}};var nm=new Set;function sm(t){let e=new Map;for(let r of t.stmts??[]){if(!r.stmt||!("CreateEnumStmt"in r.stmt))continue;let n=r.stmt.CreateEnumStmt,s=_r(n.typeName??[]).join(".");if(!s||!n.vals)continue;let i=_r(n.vals);e.set(s.toLowerCase(),i);}return e}function im(t){let e=new Map;for(let r of t.stmts??[]){if(!r.stmt||!("VariableSetStmt"in r.stmt))continue;let n=r.stmt.VariableSetStmt,s=n.name,i=Vp(n.args?.[0]??{});e.set(s,{value:i,local:n.is_local});}return e}function om(t){let e=new As,r=new Set,n=[];for(let s of t.stmts??[])if(s.stmt){if("CreatePolicyStmt"in s.stmt){let i=s.stmt.CreatePolicyStmt,o=i.table?.relname??"",a=i.table?.schemaname,l={select:"SELECT",insert:"INSERT",update:"UPDATE",delete:"DELETE"},u=i.cmd_name?l[i.cmd_name]??"ALL":"ALL",f=i.permissive===true,c=[],d=false;for(let b of i.roles??[])if("RoleSpec"in b){let m=b.RoleSpec;m.roletype==="ROLESPEC_PUBLIC"?m.location===-1&&(d=true):m.roletype==="ROLESPEC_CSTRING"&&m.rolename&&c.push(m.rolename);}if(d){let b=a?`${a}.${o}`:o,m=i.policy_name??"",w=`${b}::${m}`;nm.has(w)||(nm.add(w),console.warn(`[supalite] policy "${m}" on "${b}" has no TO clause \u2014 applies to all roles (PUBLIC). For clarity, prefer an explicit \`TO <role>\` clause (e.g. \`TO authenticated\`).`));}let p=i.qual?e.deparse(i.qual):void 0,y=i.with_check?e.deparse(i.with_check):void 0,h=new Ts({name:i.policy_name??"",table:o,schema:a,command:u,permissive:f,roles:c,using:p,withCheck:y});n.push(h);}if("AlterTableStmt"in s.stmt){let i=s.stmt.AlterTableStmt;if((i.cmds??[]).some(l=>"AlterTableCmd"in l&&(l.AlterTableCmd.subtype==="AT_EnableRowSecurity"||l.AlterTableCmd.subtype==="AT_ForceRowSecurity"))){let l=i.relation?.relname??"";r.add(l);}}}return {policies:n,tables:r}}function am(t,e){let r=new Map;for(let n of t.stmts??[]){if(!n.stmt||!("CreateStmt"in n.stmt))continue;let s=n.stmt.CreateStmt,i=s.relation?.relname??"",o=s.relation?.schemaname??"public";if(!i)continue;let a=new Rs(i,o);for(let l of s.tableElts??[]){if(!("ColumnDef"in l))continue;let u=l.ColumnDef,f=u.colname;if(!f)continue;let c=u.typeName?.names?.map(I=>I.String?.sval||I.String?.str).filter(Boolean),d=c&&(c.length===2&&c[0]==="pg_catalog"?c[1]:c[0]);if(!d)continue;let p=!!u.typeName?.arrayBounds?.length,y=Array.isArray(u.typeName?.typmods)?u.typeName.typmods:[],h=I=>y[I]?.A_Const?.ival?.ival??y[I]?.A_Const?.val?.ival?.ival,b={isArray:p};if(mo(d)&&y.length>0){let I=h(0);typeof I=="number"&&I>0&&(b.lengthConstraint=I);}if(ho(d)&&y.length>=2){let I=h(0),le=h(1);typeof I=="number"&&typeof le=="number"&&I>0&&le>=0&&(b.numericPrecision={precision:I,scale:le});}let m=e.get(d.toLowerCase());m&&(b.enumValues=m);let w=Array.isArray(u.constraints)?u.constraints:[],_=w.some(I=>I.Constraint?.contype==="CONSTR_PRIMARY"),S=po(d)||w.some(I=>I.Constraint?.contype==="CONSTR_IDENTITY"),E=w.some(I=>I.Constraint?.contype==="CONSTR_NOTNULL"),C=w.find(I=>I.Constraint?.contype==="CONSTR_UNIQUE"),x=w.find(I=>I.Constraint?.contype==="CONSTR_GENERATED"),A=w.find(I=>I.Constraint?.contype==="CONSTR_FOREIGN"),v=w.find(I=>I.Constraint?.contype==="CONSTR_CHECK"),R;if(A){let I=A.Constraint,le=I.pktable?.relname,Ve=I.pktable?.schemaname,ks=I.pk_attrs?.[0]?.String?.sval;le&&ks&&(R={refSchema:Ve,refTable:le,refColumn:ks,constraintName:I.conname||void 0});}let H={schema:o,table:i,column:f,pgTypeName:d,nullable:!E&&!_,defaultValue:null,defaultFn:null,isPrimaryKey:_,isUnique:!!C,isSerial:S,isGenerated:!!x,fkRef:R,hasCheck:!!v,checkConstraintName:v?.Constraint?.conname||void 0,uniqueConstraintName:C?.Constraint?.conname||void 0};a.set(f,Ar(H,b));}r.set(`${o}.${i}`,a);}return r}function lm(t){let e=[];for(let r of t.stmts??[]){if(!r.stmt||!("CreateStmt"in r.stmt))continue;let n=r.stmt.CreateStmt,s=n.relation?.relname??"",i=n.relation?.schemaname??"public";if(s)for(let o of n.tableElts??[]){if("ColumnDef"in o)continue;let a=o;if(!a.Constraint)continue;let l=a.Constraint,u=l.contype;if(u==="CONSTR_UNIQUE"){let f=(l.keys??[]).map(c=>c.String?.sval??c.String?.str).filter(Boolean);if(f.length===0)continue;e.push({schema:i,table:s,kind:"unique",name:l.conname||void 0,columns:f});}else if(u==="CONSTR_CHECK")e.push({schema:i,table:s,kind:"check",name:l.conname||void 0,columns:[]});else if(u==="CONSTR_FOREIGN"){let f=(l.fk_attrs??[]).map(p=>p.String?.sval??p.String?.str).filter(Boolean),c=(l.pk_attrs??[]).map(p=>p.String?.sval??p.String?.str).filter(Boolean),d=l.pktable?.relname;if(!d)continue;e.push({schema:i,table:s,kind:"foreign_key",name:l.conname||void 0,columns:f,refSchema:l.pktable?.schemaname,refTable:d,refColumns:c});}}}return e}function cm(t){let e=[];for(let r of t.stmts??[]){if(!r.stmt||!("CommentStmt"in r.stmt))continue;let n=r.stmt.CommentStmt,s=n.comment??"";if(!s)continue;let i=n.objtype,o=(n.object?.List?.items??n.object?.items??[]).map(a=>a.String?.sval??a.String?.str).filter(Boolean);if(o.length!==0){if(i==="OBJECT_TABLE"||i==="OBJECT_VIEW"){let[a,l]=o.length>=2?o:["public",o[0]];e.push({schema:a,table:l,text:s});}else if(i==="OBJECT_COLUMN"){let a="public",l,u;o.length>=3?[a,l,u]=o:[l,u]=o,e.push({schema:a,table:l,column:u,text:s});}}}return e}async function XS(t,e={}){let r=await Gp(t);return YS(r,e).ddl}function YS(t,e={}){let r=sm(t),n=am(t,r),s=im(t),i=lm(t),o=cm(t),a=new _o(t,{...e,enums:r}),{policies:l,tables:u}=om(t);if(e.strict)for(let f of l){if(!n.get(`${f.data.schema??"public"}.${f.data.table}`))throw new Error(`Policy "${f.data.name}" references unknown table "${f.data.table}"`);if(!u.has(f.data.table))throw new Error(`RLS is not enabled on table "${f.data.table}"`)}return {ddl:a.deparseQuery(),enums:r,rls:{tables:u,policies:l},schema:n,vars:s,tableConstraints:i,comments:o}}try{let{emitWarning:t}=process;process.emitWarning=(e,...r)=>{if(!e.includes("SQLite is an experimental feature"))return t(e,...r)};}catch{}/*! Bundled license information:
344
313
 
345
314
  aws4fetch/dist/aws4fetch.esm.mjs:
346
315
  (**
347
316
  * @license MIT <https://opensource.org/licenses/MIT>
348
317
  * @copyright Michael Hart 2024
349
318
  *)
350
- */export{gu as App,Zi as AwsSesEmailDriver,Yi as CloudflareKvCacheDriver,Go as Connection,ih as DataLossError,Gs as InMemoryEmailDriver,Jr as InMemoryLruCacheDriver,nh as InvalidPostgresToSQLiteTranslation,ah as MigrationError,Wr as NoopEmailDriver,Vs as NoopSmsDriver,yu as PlanStepType,zi as RedisCacheDriver,xs as RelationNotFoundError,Xi as ResendEmailDriver,ea as SendmailEmailDriver,sh as UnableToCreateRuntimeConnection,D_ as checkPasswordStrength,js as cleanSql,vf as createAppDrivers,v_ as ensureVar,S_ as filterSearchParams,El as formatSendmailMessage,Rp as fuzzyMatch,du as getAuthSchemaSql,Li as getPath,N_ as getStatementsArray,w_ as invariant,o_ as isBooleanLike,SE as isBun,P_ as isEmail,qo as isEqual,rs as isExperimentalEnabled,T_ as isNode,Cp as isObject,wp as isPlainObject,a_ as isPrimitive,l_ as isString,g_ as jsonStringify,Zm as listEnabledExperimentals,__ as measureTime,yE as mergeObject,EE as mergeObjectWith,Ho as normalizeDefault,Wo as normalizeSql,TE as normalizeString,Jo as normalizeType,m_ as objectDiff,d_ as omit,E_ as params,J_ as parseBigInt,ki as patternMatch,h_ as pick,c_ as pipe,p_ as pipeEach,$ as quote,$_ as randomString,F_ as replacePlaceholders,en as requireAuth,Dl as resolveAuth,Nb as setExperimental,gE as setPath,B_ as slugify,U_ as snakeToPascalWithSpaces,I_ as splitSqlStatements,_b as studioRouteHandler,C_ as threw,A_ as threwAsync,yT as translatePostgresDdl,M_ as truncate,R_ as trySync,j_ as ucFirst,x_ as ucFirstAll,H_ as uuid};
319
+ */export{ic as App,Ki as AwsSesEmailDriver,Mi as CloudflareKvCacheDriver,ja as Connection,Hp as DataLossError,Bn as InMemoryEmailDriver,Mr as InMemoryLruCacheDriver,Wp as InvalidPostgresToSQLiteTranslation,zp as MigrationError,Br as NoopEmailDriver,qn as NoopSmsDriver,oc as PlanStepType,Bi as RedisCacheDriver,Pn as RelationNotFoundError,qi as ResendEmailDriver,Wi as SendmailEmailDriver,Kp as UnableToCreateRuntimeConnection,h0 as checkPasswordStrength,On as cleanSql,md as createAppDrivers,a0 as ensureVar,ZC as filterSearchParams,al as formatSendmailMessage,pf as fuzzyMatch,sc as getAuthSchemaSql,_i as getPath,c0 as getStatementsArray,r0 as invariant,BC as isBooleanLike,Zy as isBun,m0 as isEmail,Oa as isEqual,Zr as isExperimentalEnabled,t0 as isNode,ff as isObject,uf as isPlainObject,MC as isPrimitive,qC as isString,QC as jsonStringify,Mp as listEnabledExperimentals,o0 as measureTime,Xy as mergeObject,Yy as mergeObjectWith,Na as normalizeDefault,Ia as normalizeSql,tb as normalizeString,Pa as normalizeType,zC as objectDiff,VC as omit,YC as params,x0 as parseBigInt,xi as patternMatch,GC as pick,KC as pipe,WC as pipeEach,O as quote,p0 as randomString,E0 as replacePlaceholders,Vn as requireAuth,vl as resolveAuth,cS as setExperimental,Qy as setPath,w0 as slugify,b0 as snakeToPascalWithSpaces,u0 as splitSqlStatements,oS as studioRouteHandler,n0 as threw,s0 as threwAsync,XS as translatePostgresDdl,S0 as truncate,i0 as trySync,g0 as ucFirst,y0 as ucFirstAll,C0 as uuid};