@supabase/lite 0.4.0 → 0.4.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.
@@ -14,7 +14,7 @@ async function se(n){let t;if(typeof n=="string"&&(t=n),typeof n=="object"&&n.da
14
14
  END IF;`).join("")}
15
15
  END $$;
16
16
  `}var B=S(new Set(E));function d(n,t){return n?n.quoted?n.value===t:n.value.toLowerCase()===t:false}function p(n){return n?.quoted?n.value:n?.value.toLowerCase()}function oe(n,t){let e="",s=t+1;for(;s<n.length;){if(n[s]==='"'&&n[s+1]==='"'){e+='"',s+=2;continue}if(n[s]==='"')return {token:{value:e,quoted:true},end:s+1};e+=n[s],s++;}return {token:{value:e,quoted:true},end:s}}function re(n,t){let e=t+1;for(;e<n.length;){if(n[e]==="'"&&n[e+1]==="'"){e+=2;continue}if(n[e]==="'")return e+1;e++;}return e}function ie(n,t){let e=/^\$[A-Za-z_][A-Za-z0-9_]*\$|^\$\$/.exec(n.slice(t))?.[0];if(!e)return;let s=t+e.length,a=n.indexOf(e,s);return a===-1?n.length:a+e.length}function O(n){let t=[],e=0;for(;e<n.length;){let s=n[e],a=n[e+1];if(/\s/.test(s)){e++;continue}if(s==="-"&&a==="-"){for(e+=2;e<n.length&&n[e]!==`
17
- `;)e++;continue}if(s==="/"&&a==="*"){for(e+=2;e<n.length&&!(n[e]==="*"&&n[e+1]==="/");)e++;e=e<n.length?e+2:e;continue}if(s==="'"){e=re(n,e);continue}if(s==="$"){let r=ie(n,e);if(r!==void 0){e=r;continue}}if(s==='"'){let{token:r,end:c}=oe(n,e);t.push(r),e=c;continue}if(s===","||s===";"){t.push({value:s,quoted:false}),e++;continue}if(/[A-Za-z_]/.test(s)){let r=e;for(e++;e<n.length&&/[A-Za-z0-9_$]/.test(n[e]);)e++;t.push({value:n.slice(r,e).toLowerCase(),quoted:false});continue}e++;}return t}function $(n,t){let e=p(n[t]),s=p(n[t+1]);if((e==="create"||e==="alter")&&(s==="role"||s==="user"||s==="group"))return n[t+2]}function h(n){let t=new Set,e=O(n);for(let s=0;s<e.length;s++){if(p(e[s])!=="create")continue;let a=$(e,s);for(let r of E)d(a,r)&&t.add(r);}return t}function L(n,t,e){let s=new Set([";","as","by","check","for","granted","in","on","option","using","where","with"]);for(let a=t;a<n.length;a++){let r=p(n[a]);if(!r||s.has(r))return;for(let c of E)d(n[a],c)&&e.add(c);}}function ce(n){let t=[],e=[];for(let s of n){if(p(s)===";"){e.length>0&&t.push(e),e=[];continue}e.push(s);}return e.length>0&&t.push(e),t}function D(n,t){return n.some(e=>p(e)===t)}function le(n){let t=new Set,e=ce(O(n));for(let s of e){let a=p(s[0]);for(let i=0;i<s.length;i++){let u=p(s[i]);u==="to"&&(D(s,"grant")||D(s,"policy")||p(s[i-1])==="owner")&&L(s,i+1,t),u==="from"&&a==="revoke"&&L(s,i+1,t);}let r=s.findIndex(i=>p(i)==="to"),c=s.findIndex(i=>p(i)==="on");a==="grant"&&r>1&&(c===-1||r<c)&&L(s,1,t);}return t}function b(n){let t=h(n);return new Set([...le(n)].filter(e=>!t.has(e)))}function v(n){let t=h(n);return new Set(E.filter(e=>!t.has(e)))}function U(n,t){let e=O(n);if(e.length===0)return false;let s=$(e,0);if(s){for(let c of t)if(d(s,c))return true;return false}let a=p(e[0]),r=p(e[1]);if(a==="drop"&&(r==="role"||r==="user"||r==="group")){for(let c of e.slice(2))for(let i of t)if(d(c,i))return true}if(a==="comment"&&p(e[1])==="on"&&p(e[2])==="role"){for(let c of t)if(d(e[3],c))return true}return false}var y="anon, authenticated, service_role",pe=new Set(["anon","authenticated","service_role"]);function F(n){return `"${n.replace(/"/g,'""')}"`}var N=class extends Error{constructor(e){super("Force rollback");this.result=e;}},_=class extends Connection{dialect="postgres";harnessHoldingOuterTx=false;constructor(t){super({...t,baseSchema:`
17
+ `;)e++;continue}if(s==="/"&&a==="*"){for(e+=2;e<n.length&&!(n[e]==="*"&&n[e+1]==="/");)e++;e=e<n.length?e+2:e;continue}if(s==="'"){e=re(n,e);continue}if(s==="$"){let r=ie(n,e);if(r!==void 0){e=r;continue}}if(s==='"'){let{token:r,end:c}=oe(n,e);t.push(r),e=c;continue}if(s===","||s===";"){t.push({value:s,quoted:false}),e++;continue}if(/[A-Za-z_]/.test(s)){let r=e;for(e++;e<n.length&&/[A-Za-z0-9_$]/.test(n[e]);)e++;t.push({value:n.slice(r,e).toLowerCase(),quoted:false});continue}e++;}return t}function $(n,t){let e=p(n[t]),s=p(n[t+1]);if((e==="create"||e==="alter")&&(s==="role"||s==="user"||s==="group"))return n[t+2]}function h(n){let t=new Set,e=O(n);for(let s=0;s<e.length;s++){if(p(e[s])!=="create")continue;let a=$(e,s);for(let r of E)d(a,r)&&t.add(r);}return t}function L(n,t,e){let s=new Set([";","as","by","check","for","granted","in","on","option","using","where","with"]);for(let a=t;a<n.length;a++){let r=p(n[a]);if(!r||s.has(r))return;for(let c of E)d(n[a],c)&&e.add(c);}}function ce(n){let t=[],e=[];for(let s of n){if(p(s)===";"){e.length>0&&t.push(e),e=[];continue}e.push(s);}return e.length>0&&t.push(e),t}function D(n,t){return n.some(e=>p(e)===t)}function le(n){let t=new Set,e=ce(O(n));for(let s of e){let a=p(s[0]);for(let i=0;i<s.length;i++){let u=p(s[i]);u==="to"&&(D(s,"grant")||D(s,"policy")||p(s[i-1])==="owner")&&L(s,i+1,t),u==="from"&&a==="revoke"&&L(s,i+1,t);}let r=s.findIndex(i=>p(i)==="to"),c=s.findIndex(i=>p(i)==="on");a==="grant"&&r>1&&(c===-1||r<c)&&L(s,1,t);}return t}function b(n){let t=h(n);return new Set([...le(n)].filter(e=>!t.has(e)))}function v(n){let t=h(n);return new Set(E.filter(e=>!t.has(e)))}function H(n,t){let e=O(n);if(e.length===0)return false;let s=$(e,0);if(s){for(let c of t)if(d(s,c))return true;return false}let a=p(e[0]),r=p(e[1]);if(a==="drop"&&(r==="role"||r==="user"||r==="group")){for(let c of e.slice(2))for(let i of t)if(d(c,i))return true}if(a==="comment"&&p(e[1])==="on"&&p(e[2])==="role"){for(let c of t)if(d(e[3],c))return true}return false}var y="anon, authenticated, service_role",pe=new Set(["anon","authenticated","service_role"]);function F(n){return `"${n.replace(/"/g,'""')}"`}var N=class extends Error{constructor(e){super("Force rollback");this.result=e;}},_=class extends Connection{dialect="postgres";harnessHoldingOuterTx=false;constructor(t){super({...t,baseSchema:`
18
18
  ${t.baseSchema??""}
19
19
 
20
20
  CREATE SCHEMA IF NOT EXISTS auth;
@@ -149,7 +149,7 @@ END $$;
149
149
  'information_schema'
150
150
  , 'pg_catalog')
151
151
  GROUP BY ns.nspname, cl.relname, con.oid
152
- `.execute(this.kysely)).rows.map(o=>({table:o.table,columns:o.columns,schema:o.schema,field_count:o.columns.length})),q=new Set(x.flatMap(o=>o.columns.map(Z=>`${o.schema}.${o.table}.${Z}`)));for(let o of i)o.is_primary_key=q.has(`${o.schema}.${o.table}.${o.name}`);let W=(await sql`
152
+ `.execute(this.kysely)).rows.map(o=>({table:o.table,columns:o.columns,schema:o.schema,field_count:o.columns.length})),q=new Set(x.flatMap(o=>o.columns.map(Z=>`${o.schema}.${o.table}.${Z}`)));for(let o of i)o.is_primary_key=q.has(`${o.schema}.${o.table}.${o.name}`);let M=(await sql`
153
153
  SELECT
154
154
  tnsp.nspname AS "schema",
155
155
  cl.relname AS "table",
@@ -170,7 +170,7 @@ END $$;
170
170
  'information_schema'
171
171
  , 'pg_catalog')
172
172
  GROUP BY tnsp.nspname, cl.relname, ic.relname, idx.indisunique
173
- `.execute(this.kysely)).rows.map(o=>({table:o.table,name:o.name,unique:o.unique,columns:o.columns,schema:o.schema})),M=(await sql`
173
+ `.execute(this.kysely)).rows.map(o=>({table:o.table,name:o.name,unique:o.unique,columns:o.columns,schema:o.schema})),W=(await sql`
174
174
  SELECT
175
175
  views.schemaname AS "schema",
176
176
  views.viewname AS "name",
@@ -253,15 +253,15 @@ END $$;
253
253
  AND NOT a.attisdropped
254
254
  AND n.nspname NOT IN ('pg_catalog', 'information_schema')
255
255
  GROUP BY n.nspname, t.typname
256
- `.execute(this.kysely),z=[...K.rows.map(o=>({schema:o.schema,type:o.type,kind:"enum",values:o.values})),...V.rows.map(o=>({schema:o.schema,type:o.type,kind:"composite",fields:o.fields}))],X=(await sql`SELECT current_database() AS "name"`.execute(this.kysely)).rows[0]?.name??"postgres",k={tables:r,columns:i,indexes:W,foreign_keys:m,primary_keys:x,views:M,triggers:[],check_constraints:j,unique_constraints:Q,comments:Y,custom_types:z,database_name:X,version:""};return await this.writeCachedIntrospection(k,{useDriver:e}),k}catch(a){return console.error("Introspection failed:",a),{tables:[],columns:[],indexes:[],foreign_keys:[],primary_keys:[],views:[],triggers:[],check_constraints:[],unique_constraints:[],comments:[],custom_types:[],database_name:"postgres",version:""}}}rlsState="unknown";async ensureRlsContext(){if(this.rlsState!=="unknown")return this.rlsState==="active";let t=await sql`
256
+ `.execute(this.kysely),z=[...K.rows.map(o=>({schema:o.schema,type:o.type,kind:"enum",values:o.values})),...V.rows.map(o=>({schema:o.schema,type:o.type,kind:"composite",fields:o.fields}))],X=(await sql`SELECT current_database() AS "name"`.execute(this.kysely)).rows[0]?.name??"postgres",k={tables:r,columns:i,indexes:M,foreign_keys:m,primary_keys:x,views:W,triggers:[],check_constraints:j,unique_constraints:Q,comments:Y,custom_types:z,database_name:X,version:""};return await this.writeCachedIntrospection(k,{useDriver:e}),k}catch(a){return console.error("Introspection failed:",a),{tables:[],columns:[],indexes:[],foreign_keys:[],primary_keys:[],views:[],triggers:[],check_constraints:[],unique_constraints:[],comments:[],custom_types:[],database_name:"postgres",version:""}}}rlsState="unknown";async ensureRlsContext(){if(this.rlsState!=="unknown")return this.rlsState==="active";let t=await sql`
257
257
  SELECT count(*) ::text as count FROM pg_class WHERE relrowsecurity = true
258
258
  `.execute(this.kysely);if(!(Number(t.rows[0]?.count??0)>0))return this.rlsState="inactive",false;this.rlsState="active",await sql.raw(B).execute(this.kysely);let s=await sql`
259
259
  SELECT DISTINCT n.nspname FROM pg_class c
260
260
  JOIN pg_namespace n ON n.oid = c.relnamespace
261
261
  WHERE c.relrowsecurity = true
262
- `.execute(this.kysely);for(let{nspname:a}of s.rows){let r=F(a);await sql.raw(`GRANT USAGE ON SCHEMA ${r} TO ${y}`).execute(this.kysely),await sql.raw(`GRANT ALL ON ALL TABLES IN SCHEMA ${r} TO ${y}`).execute(this.kysely),await sql.raw(`GRANT ALL ON ALL SEQUENCES IN SCHEMA ${r} TO ${y}`).execute(this.kysely),await sql.raw(`ALTER DEFAULT PRIVILEGES IN SCHEMA ${r} GRANT ALL ON TABLES TO ${y}`).execute(this.kysely),await sql.raw(`ALTER DEFAULT PRIVILEGES IN SCHEMA ${r} GRANT ALL ON SEQUENCES TO ${y}`).execute(this.kysely);}return true}async postgresTransactionActive(t){try{return await sql`SAVEPOINT __supalite_outer_tx_check`.execute(t),await sql`RELEASE SAVEPOINT __supalite_outer_tx_check`.execute(t),!0}catch{return false}}async applyJwtSessionContext(t,e,s){let a=e.auth,r=a?.role||"anon",c=String(a?.uid??""),i=a?.jwt;await sql`SELECT set_config('role', ${r}, true)`.execute(t),await sql`SELECT set_config('request.jwt.claim.sub', ${c}, true)`.execute(t),await sql`SELECT set_config('request.jwt.claim.role', ${r}, true)`.execute(t),s&&await sql.raw(`SET LOCAL ROLE ${F(r)}`).execute(t),i&&typeof i=="object"&&await sql`SELECT set_config('request.jwt.claims', ${JSON.stringify(i)}, true)`.execute(t);}async withContext(t,e,s){let a=s?.forceRollback===true;if(!a&&!t)return e(this.kysely);let r=t?await this.ensureRlsContext():false,i=t?.auth?.role||"anon",u=typeof i=="string"&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i)&&!pe.has(i);if(!a&&!r&&!u)return e(this.kysely);if(!a&&u)return this.harnessHoldingOuterTx?(invariant(await this.postgresTransactionActive(this.kysely),"harnessHoldingOuterTx is set but the connection has no open PostgreSQL transaction; wrap REST requests in BEGIN/ROLLBACK in the spec harness"),await this.applyJwtSessionContext(this.kysely,t,true),e(this.kysely)):this.kysely.transaction().execute(async m=>(await this.applyJwtSessionContext(m,t,true),e(m)));if(!a&&r&&!u)return this.kysely.transaction().execute(async m=>(await this.applyJwtSessionContext(m,t,true),e(m)));try{return await this.kysely.transaction().execute(async m=>{t&&(r||u)&&await this.applyJwtSessionContext(m,t,u);let f=await e(m);if(a)throw new N(f);return f})}catch(m){if(m instanceof N)return m.result;throw m}}async onPostgrestAST(t){if(!t.from)return t;let e=t.schema??"public",s=t.from,a=await this.introspect({useCache:true});if(!a.tables.some(r=>r.name===s&&r.schema===e)&&!a.views.some(r=>r.name===s&&r.schema===e))throw new RelationNotFoundError(e,s);return t}async transaction(t,e){await this.exec("BEGIN");try{for(let s of t)await this.exec(s);await this.exec("COMMIT");}catch(s){throw await this.exec("ROLLBACK"),s}finally{e?.intent==="migration"&&await this.clearSchemaCache();}}};var G=(n,t=e=>e)=>{if(!n||n==="{}")return [];let e=n.slice(1,-1);if(e==="")return [];let s=[],a="",r=false,c=0;for(let i=0;i<e.length;i++){let u=e[i];u==='"'&&e[i-1]!=="\\"?(r=!r,a+=u):u==="{"&&!r?(c++,a+=u):u==="}"&&!r?(c--,a+=u):u===","&&!r&&c===0?(s.push(t(a)),a=""):a+=u;}return a!==""&&s.push(t(a)),s},fe=n=>n==="NULL"?null:n.startsWith('"')&&n.endsWith('"')?n.slice(1,-1).replace(/\\(.)/g,"$1"):n,de=n=>n==="NULL"?null:Number.parseInt(n,10);function J(n){return typeof n=="object"&&n!==null&&"text"in n&&"values"in n}function ye(n,t){if(n==null)return n;switch(t){case 20:return typeof n=="bigint"?n:BigInt(n);case 22:return Array.isArray(n)?n:typeof n=="string"?n.split(" ").map(Number).filter(e=>!Number.isNaN(e)):n;case 1002:case 1009:case 1015:return typeof n=="string"?G(n,fe):n;case 1005:case 1007:case 1016:return typeof n=="string"?G(n,de):n;default:return n}}function C(n){return {async query(t,e){let s=J(t)?t.text:t,a=J(t)?t.values:e??[],r=await n.driver.query(s,[...a]);return {rows:r.rows.map(i=>Object.fromEntries(r.fields.map(u=>[u.name,ye(i[u.name],u.dataTypeID)])))}}}}async function Ee(){try{return await import('@supabase/pg-delta')}catch(n){throw new Error("Postgres/PGlite schema diffing now requires a Bun/Node-compatible runtime with pg-delta available.",{cause:n})}}function Se(n){let t=/^drop table (.+)$/.exec(n);if(t)return {table:t[1],reason:"drop table"};let e=/^drop column (.+) on (.+)$/.exec(n);if(e)return {table:e[2],reason:`drop column ${e[1]}`};let s=/^drop sequence (.+)$/.exec(n);return s?{table:s[1],reason:"drop sequence"}:{table:"unknown",reason:n}}var A=class{constructor(t,e){this.from=t;this.desiredSchema=e;}#e;async#t(t){if(this.#e)return this.#e;let e=new this.from.constructor;try{let s=S(b(this.desiredSchema));return s&&await e.exec(s),await e.exec(this.desiredSchema),this.#e=await t(C(e)),this.#e}finally{await e.close();}}async diff(){let{createPlan:t,extractCatalog:e}=await Ee(),s=C(this.from),a=await this.#t(e),r=await e(s),c=await t(r,a);if(!c)return {diff:"",plan:{steps:[],warnings:[],unsafe:false}};let i=c.plan.risk?.level==="data_loss"?c.plan.risk.statements.map(Se):[],u=v(this.desiredSchema),m=c.plan.statements.filter(f=>!U(f,u));return {diff:m.join(`
262
+ `.execute(this.kysely);for(let{nspname:a}of s.rows){let r=F(a);await sql.raw(`GRANT USAGE ON SCHEMA ${r} TO ${y}`).execute(this.kysely),await sql.raw(`GRANT ALL ON ALL TABLES IN SCHEMA ${r} TO ${y}`).execute(this.kysely),await sql.raw(`GRANT ALL ON ALL SEQUENCES IN SCHEMA ${r} TO ${y}`).execute(this.kysely),await sql.raw(`ALTER DEFAULT PRIVILEGES IN SCHEMA ${r} GRANT ALL ON TABLES TO ${y}`).execute(this.kysely),await sql.raw(`ALTER DEFAULT PRIVILEGES IN SCHEMA ${r} GRANT ALL ON SEQUENCES TO ${y}`).execute(this.kysely);}return true}async postgresTransactionActive(t){try{return await sql`SAVEPOINT __supalite_outer_tx_check`.execute(t),await sql`RELEASE SAVEPOINT __supalite_outer_tx_check`.execute(t),!0}catch{return false}}async applyJwtSessionContext(t,e,s){let a=e.auth,r=a?.role||"anon",c=String(a?.uid??""),i=a?.jwt;await sql`SELECT set_config('role', ${r}, true)`.execute(t),await sql`SELECT set_config('request.jwt.claim.sub', ${c}, true)`.execute(t),await sql`SELECT set_config('request.jwt.claim.role', ${r}, true)`.execute(t),s&&await sql.raw(`SET LOCAL ROLE ${F(r)}`).execute(t),i&&typeof i=="object"&&await sql`SELECT set_config('request.jwt.claims', ${JSON.stringify(i)}, true)`.execute(t);}async withContext(t,e,s){let a=s?.forceRollback===true;if(!a&&!t)return e(this.kysely);let r=t?await this.ensureRlsContext():false,i=t?.auth?.role||"anon",u=typeof i=="string"&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i)&&!pe.has(i);if(!a&&!r&&!u)return e(this.kysely);if(!a&&u)return this.harnessHoldingOuterTx?(invariant(await this.postgresTransactionActive(this.kysely),"harnessHoldingOuterTx is set but the connection has no open PostgreSQL transaction; wrap REST requests in BEGIN/ROLLBACK in the spec harness"),await this.applyJwtSessionContext(this.kysely,t,true),e(this.kysely)):this.kysely.transaction().execute(async m=>(await this.applyJwtSessionContext(m,t,true),e(m)));if(!a&&r&&!u)return this.kysely.transaction().execute(async m=>(await this.applyJwtSessionContext(m,t,true),e(m)));try{return await this.kysely.transaction().execute(async m=>{t&&(r||u)&&await this.applyJwtSessionContext(m,t,u);let f=await e(m);if(a)throw new N(f);return f})}catch(m){if(m instanceof N)return m.result;throw m}}async onPostgrestAST(t){if(!t.from)return t;let e=t.schema??"public",s=t.from,a=await this.introspect({useCache:true});if(!a.tables.some(r=>r.name===s&&r.schema===e)&&!a.views.some(r=>r.name===s&&r.schema===e))throw new RelationNotFoundError(e,s);return t}async transaction(t,e){await this.exec("BEGIN");try{for(let s of t)await this.exec(s);await this.exec("COMMIT");}catch(s){throw await this.exec("ROLLBACK"),s}finally{e?.intent==="migration"&&await this.clearSchemaCache();}}};var G=(n,t=e=>e)=>{if(!n||n==="{}")return [];let e=n.slice(1,-1);if(e==="")return [];let s=[],a="",r=false,c=0;for(let i=0;i<e.length;i++){let u=e[i];u==='"'&&e[i-1]!=="\\"?(r=!r,a+=u):u==="{"&&!r?(c++,a+=u):u==="}"&&!r?(c--,a+=u):u===","&&!r&&c===0?(s.push(t(a)),a=""):a+=u;}return a!==""&&s.push(t(a)),s},fe=n=>n==="NULL"?null:n.startsWith('"')&&n.endsWith('"')?n.slice(1,-1).replace(/\\(.)/g,"$1"):n,de=n=>n==="NULL"?null:Number.parseInt(n,10);function J(n){return typeof n=="object"&&n!==null&&"text"in n&&"values"in n}function ye(n,t){if(n==null)return n;switch(t){case 20:return typeof n=="bigint"?n:BigInt(n);case 22:return Array.isArray(n)?n:typeof n=="string"?n.split(" ").map(Number).filter(e=>!Number.isNaN(e)):n;case 1002:case 1009:case 1015:return typeof n=="string"?G(n,fe):n;case 1005:case 1007:case 1016:return typeof n=="string"?G(n,de):n;default:return n}}function C(n){return {async query(t,e){let s=J(t)?t.text:t,a=J(t)?t.values:e??[],r=await n.driver.query(s,[...a]);return {rows:r.rows.map(i=>Object.fromEntries(r.fields.map(u=>[u.name,ye(i[u.name],u.dataTypeID)])))}}}}async function Ee(){try{return await import('@supabase/pg-delta')}catch(n){throw new Error("Postgres/PGlite schema diffing now requires a Bun/Node-compatible runtime with pg-delta available.",{cause:n})}}var Se=["supabase_migrations"];function he(n){let t=/^drop table (.+)$/.exec(n);if(t)return {table:t[1],reason:"drop table"};let e=/^drop column (.+) on (.+)$/.exec(n);if(e)return {table:e[2],reason:`drop column ${e[1]}`};let s=/^drop sequence (.+)$/.exec(n);return s?{table:s[1],reason:"drop sequence"}:{table:"unknown",reason:n}}var A=class{constructor(t,e){this.from=t;this.desiredSchema=e;}#e;async#t(t){if(this.#e)return this.#e;let e=new this.from.constructor;try{let s=S(b(this.desiredSchema));return s&&await e.exec(s),await e.exec(this.desiredSchema),this.#e=await t(C(e)),this.#e}finally{await e.close();}}async diff(){let{createPlan:t,extractCatalog:e}=await Ee(),s=C(this.from),a=await this.#t(e),r=await e(s),c=await t(r,a,{filter:{not:{schema:Se}}});if(!c)return {diff:"",plan:{steps:[],warnings:[],unsafe:false}};let i=c.plan.risk?.level==="data_loss"?c.plan.risk.statements.map(he):[],u=v(this.desiredSchema),m=c.plan.statements.filter(f=>!H(f,u));return {diff:m.join(`
263
263
 
264
264
  `),plan:{steps:m.map(f=>({sql:f})),warnings:i,unsafe:c.plan.risk?.level==="data_loss"}}}async migratePlan(t,e){if(t.steps.length===0)return;if(t.unsafe&&!e?.force)throw new DataLossError(t.warnings??[]);let s=t.steps.map(i=>i.sql).join(`
265
265
  `),a=h(s),r=new Set(t.steps.flatMap(i=>[...b(i.sql)]).filter(i=>!a.has(i))),c=S(r);c&&await this.from.exec(c),await this.from.transaction(t.steps.map(i=>i.sql),{intent:"migration"});}async migrate(t){let e=await this.diff();return await this.migratePlan(e.plan,t),e}safeSortPlanSteps(t){return t}};var I=class extends _{driver;dialect="postgres";#e=false;constructor(t={}){let e=new PGlite({...t.pgliteOptions,dataDir:t.url??void 0,extensions:{...t.pgliteOptions?.extensions,isn:isn,ltree:ltree,file_fdw:file_fdw,pgcrypto:pgcrypto},parsers:{20:a=>{let r=Number(a);return Number.isSafeInteger(r)?r:BigInt(a)},114:a=>JSON.parse(a),3802:a=>JSON.parse(a),1700:a=>{let r=Number(a);return Number.isFinite(r)&&String(r)===a?r:a},1082:a=>a,1083:a=>a,1114:a=>a,1184:a=>a,1266:a=>a,...t.pgliteOptions?.parsers}}),{dialect:s}=new g(e);super(t),this.driver=e,this.kysely=new Kysely({dialect:s});}async exec(t,...e){try{if(e.length>0){let{rows:a}=await sql(t,...e??[]).execute(this.kysely);return {rows:a}}return {rows:(await this.driver.exec(t))[0].rows}}catch(s){throw console.error(s),new Error(`Failed to execute query: ${t}`)}}async close(){this.#e||(this.#e=true,await this.clearSchemaCache(),await this.kysely.destroy(),await this.driver.close());}createMigrator(t){let e=[this.config.baseSchema,t].filter(Boolean).join(`
266
266
 
267
- `);return new A(this,e)}};async function tt(n={}){return new I(n)}export{I as PgliteConnection,tt as createPgliteConnection};
267
+ `);return new A(this,e)}};async function nt(n={}){return new I(n)}export{I as PgliteConnection,nt as createPgliteConnection};