@prisma/dev 0.25.0 → 0.25.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/chunk-QDQPFKGQ.js +107 -0
- package/dist/{chunk-MD3K2IUP.js → chunk-T75J7DN5.js} +1 -1
- package/dist/{chunk-J6FIMHSD.js → chunk-VSS2IOVU.js} +1 -1
- package/dist/daemon.cjs +24 -24
- package/dist/daemon.js +1 -1
- package/dist/db.cjs +15 -15
- package/dist/db.js +1 -1
- package/dist/index.cjs +24 -24
- package/dist/index.js +1 -1
- package/dist/vite.cjs +25 -25
- package/dist/vite.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-PP43TGA5.js +0 -107
package/dist/db.cjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var Ye=Object.create;var I=Object.defineProperty;var Je=Object.getOwnPropertyDescriptor;var Xe=Object.getOwnPropertyNames;var Ve=Object.getPrototypeOf,Ze=Object.prototype.hasOwnProperty;var et=(e,t)=>{for(var r in t)I(e,r,{get:t[r],enumerable:!0})},se=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Xe(t))!Ze.call(e,o)&&o!==r&&I(e,o,{get:()=>t[o],enumerable:!(n=Je(t,o))||n.enumerable});return e};var S=(e,t,r)=>(r=e!=null?Ye(Ve(e)):{},se(t||!e||!e.__esModule?I(r,"default",{value:e,enumerable:!0}):r,e)),tt=e=>se(I({},"__esModule",{value:!0}),e);var or={};et(or,{attachWalEventBridge:()=>Q,dumpDB:()=>He,shouldPollWalAfterMessages:()=>F,shouldPollWalAfterResponse:()=>re,startDBServer:()=>Zt,startLazyShadowDBServer:()=>qe});module.exports=tt(or);var rt=()=>typeof document>"u"?new URL(`file:${__filename}`).href:document.currentScript&&document.currentScript.tagName.toUpperCase()==="SCRIPT"?document.currentScript.src:new URL("main.js",document.baseURI).href,b=rt();var q=require("net"),Ue=require("path"),Ce=require("pathe/utils");var B=require("fs"),P=require("fs/promises"),ae=require("util"),ie=require("zlib");var g=S(require("path"),1),W=S(require("os"),1),L=S(require("process"),1),R=W.default.homedir(),z=W.default.tmpdir(),{env:v}=L.default,nt=e=>{let t=g.default.join(R,"Library");return{data:g.default.join(t,"Application Support",e),config:g.default.join(t,"Preferences",e),cache:g.default.join(t,"Caches",e),log:g.default.join(t,"Logs",e),temp:g.default.join(z,e)}},ot=e=>{let t=v.APPDATA||g.default.join(R,"AppData","Roaming"),r=v.LOCALAPPDATA||g.default.join(R,"AppData","Local");return{data:g.default.join(r,e,"Data"),config:g.default.join(t,e,"Config"),cache:g.default.join(r,e,"Cache"),log:g.default.join(r,e,"Log"),temp:g.default.join(z,e)}},st=e=>{let t=g.default.basename(R);return{data:g.default.join(v.XDG_DATA_HOME||g.default.join(R,".local","share"),e),config:g.default.join(v.XDG_CONFIG_HOME||g.default.join(R,".config"),e),cache:g.default.join(v.XDG_CACHE_HOME||g.default.join(R,".cache"),e),log:g.default.join(v.XDG_STATE_HOME||g.default.join(R,".local","state"),e),temp:g.default.join(z,t,e)}};function j(e,{suffix:t="nodejs"}={}){if(typeof e!="string")throw new TypeError(`Expected a string, got ${typeof e}`);return t&&(e+=`-${t}`),L.default.platform==="darwin"?nt(e):L.default.platform==="win32"?ot(e):st(e)}var at=S(require("zeptomatch"),1),lr=j("prisma-dev"),dr=(0,ae.promisify)(ie.unzip);async function ue(e){try{return await(0,P.access)(e,P.constants.F_OK),!0}catch(t){if(it(t))return!1;throw t}}async function ce(e,t){await e.stream().pipeTo(B.WriteStream.toWeb((0,B.createWriteStream)(t,{encoding:"utf8"})))}function it(e){return e!=null&&typeof e=="object"&&"code"in e&&e.code==="ENOENT"}var H=require("get-port-please"),le=require("remeda");var x=class extends Error{constructor(r){super(`Port \`${r}\` is not available.`);this.port=r}name="PortNotAvailableError"};var Y=require("perf_hooks"),Ee=require("@electric-sql/pglite");var pe=require("buffer");var de=/(?:"[^"]+"|`[^`]+`|\[[^\]]+\]|\w+)/,ut=new RegExp(`(?:${de.source}\\.)*${de.source}`),ct=new RegExp(`(?:FROM|JOIN|UPDATE|INTO|TABLE)\\s+(${ut.source})`,"gi"),lt=/"([^"]+)"|`([^`]+)`|\[([^\]]+)\]|(\w+)/g,me=/prismaQuery='([^']+)'/,dt=new Set([T(`
|
|
2
2
|
select b.oid, b.typarray
|
|
3
3
|
from pg_catalog.pg_type a
|
|
4
4
|
left join pg_catalog.pg_type b on b.oid = a.typelem
|
|
5
5
|
where a.typcategory = $1
|
|
6
6
|
group by b.oid, b.typarray
|
|
7
7
|
order by b.oid
|
|
8
|
-
`),T('GRANT "pg_write_all_data" TO "prisma_application"'),T("SELECT SUM(reads)::BIGINT AS reads, SUM(writes)::BIGINT AS writes, SUM(COALESCE(extends, $1))::BIGINT AS extends FROM pg_stat_io"),T("SELECT pg_database_size(current_database())::BIGINT, SUM(pg_total_relation_size(relid))::BIGINT AS pg_total_relation_size FROM pg_stat_user_tables"),T("SELECT COUNT(*) AS cnt FROM pg_stat_activity WHERE pid <> pg_backend_pid() and xact_start notnull")]),lt=[/^BEGIN\b/i,/^COMMIT\b/i,/^ROLLBACK\b/i,/^SAVEPOINT\b/i,/^RELEASE\b/i,/^SET\b/i,/^SHOW\b/i,/^DISCARD\b/i,/^DEALLOCATE\b/i,/^CLOSE\b/i,/^CREATE EXTENSION\b/i,/^WITH state_assign\b/i];function T(e){return e.replace(/\s+/g," ").trim()}function pe(e){return be(T(e))}function ge(e){if(!e?.action||!e.model&&/raw/i.test(e.action))return null;let t=e.payload?be(JSON.stringify(e.payload)):"0";return`${e.model??""}.${e.action}:${t}`}function dt(e){let t=new Set;for(let r of e.matchAll(it)){let n=r[1];if(!n)continue;let s;for(let o of n.matchAll(ut))s=o[1]??o[2]??o[3]??o[4];s&&!s.startsWith("pg_")&&t.add(s)}return Array.from(t)}function mt(e){return ct.has(e)?!0:lt.some(t=>t.test(e))}function fe(e){if(mt(T(e)))return null;let t=dt(e);return t.length===0&&/\bpg_\w+/i.test(e)?null:t}function H(e){if(Array.isArray(e))return e.map(H);if(e!==null&&typeof e=="object"){let t=e;return t.$type==="Param"?"<<redacted>>":Object.fromEntries(Object.entries(t).map(([r,n])=>[r,H(n)]))}return e}function ye(e){let t=e.match(de);if(!t?.[1])return{cleanedSql:T(e),prismaQueryInfo:null};let r=e.replace(de,"");r=r.replace(/,\s*,/g,",").replace(/\/\*\s*,/g,"/*").replace(/,\s*\*\//g,"*/").replace(/\/\*\s*\*\//g,"").replace(/\s+/g," ").trim();let n=decodeURIComponent(t[1]),s=n.indexOf(":");if(s===-1)return{cleanedSql:r,prismaQueryInfo:{action:n,isRaw:!0}};let o=n.slice(0,s),l=n.slice(s+1),c=o.indexOf("."),i=c===-1?void 0:o.slice(0,c),u=c===-1?o:o.slice(c+1);if(!u)return{cleanedSql:r,prismaQueryInfo:null};let p;try{p=H(JSON.parse(me.Buffer.from(l,"base64url").toString("utf8")))}catch{p=void 0}return{cleanedSql:r,prismaQueryInfo:{action:u,isRaw:!1,model:i,payload:p}}}function be(e){let t=5381;for(let r=0;r<e.length;r++)t=(t<<5)+t+e.charCodeAt(r)&4294967295;return(t>>>0).toString(36)}var O=new WeakMap;function Ee(e){let t=O.get(e);if(t&&!t.closed)return t.bridge;let r=pt(e),n={bridge:{close:()=>(n.closed||(n.closed=!0,n.sessions.clear(),n.subscribers.clear(),n.queryQueue.enqueue=n.originalEnqueue,n.queryQueue.clearQueueForHandler=n.originalClearQueueForHandler,O.delete(e)),Promise.resolve()),subscribe:s=>(n.subscribers.add(s),()=>{n.subscribers.delete(s)})},closed:!1,originalClearQueueForHandler:r.clearQueueForHandler.bind(r),originalEnqueue:r.enqueue.bind(r),queryQueue:r,sessions:new Map,subscribers:new Set};return r.clearQueueForHandler=s=>{n.sessions.delete(s),n.originalClearQueueForHandler(s)},r.enqueue=async(s,o,l)=>{let c=gt(n,s),i=bt(o);ft(c,i);let u=yt(c,i);if(!u)return await n.originalEnqueue(s,o,l);let p={commandTags:[],dataRowCount:0},y=new Pe.protocol.Parser,a=K.performance.now(),d=await n.originalEnqueue(s,o,D=>{y.parse(D,je=>{Tt(p,je)}),l(D)}),f=Math.max(0,K.performance.now()-a);return _t(n,{applicationName:u.applicationName,durationMs:f,query:u.query,responseStats:p}),d},O.set(e,n),n.bridge}async function Se(e){await O.get(e)?.bridge.close()}function pt(e){let t=e.queryQueue;if(!t||typeof t.enqueue!="function"||typeof t.clearQueueForHandler!="function")throw new Error("PGLiteSocketServer query queue is unavailable for query insights capture");return t}function gt(e,t){let r=e.sessions.get(t);if(r)return r;let n={applicationName:null,portals:new Map,statements:new Map};return e.sessions.set(t,n),n}function ft(e,t){if(t)switch(t.kind){case"startup":e.applicationName=t.applicationName;return;case"parse":e.statements.set(t.statementName,t.query);return;case"bind":{let r=e.statements.get(t.statementName);r&&e.portals.set(t.portalName,r);return}case"close":t.target==="portal"?e.portals.delete(t.name):e.statements.delete(t.name);return;default:return}}function yt(e,t){if(!t)return null;if(t.kind==="query")return{applicationName:e.applicationName,query:t.query};if(t.kind==="execute"){let r=e.portals.get(t.portalName);return r?{applicationName:e.applicationName,query:r}:null}return null}function bt(e){let t=Buffer.from(e);if(t.length<4)return null;let r=t.readInt32BE(0);if(t.length>=8&&r===t.length){let s=t.readInt32BE(4);if(s===196608||s===196608)return Pt(t)}if(t.length<5)return null;switch(String.fromCharCode(t[0]??0)){case"Q":return Et(t);case"P":return St(t);case"B":return wt(t);case"E":return ht(t);case"C":return Rt(t);default:return null}}function Pt(e){let t=8,r=null;for(;t<e.length-1;){let n=w(e,t);if(!n||n.value==="")break;t=n.nextOffset;let s=w(e,t);if(!s)break;t=s.nextOffset,n.value==="application_name"&&(r=s.value)}return{applicationName:r,kind:"startup"}}function Et(e){let t=w(e,5);return t?{kind:"query",query:t.value}:null}function St(e){let t=w(e,5);if(!t)return null;let r=w(e,t.nextOffset);return r?{kind:"parse",query:r.value,statementName:t.value}:null}function wt(e){let t=w(e,5);if(!t)return null;let r=w(e,t.nextOffset);return r?{kind:"bind",portalName:t.value,statementName:r.value}:null}function ht(e){let t=w(e,5);return t?{kind:"execute",portalName:t.value}:null}function Rt(e){if(e.length<7)return null;let t=e[5];if(t===void 0)return null;let r=w(e,6);return r?{kind:"close",name:r.value,target:t===80?"portal":"statement"}:null}function w(e,t){let r=e.indexOf(0,t);return r===-1?null:{nextOffset:r+1,value:e.toString("utf8",t,r)}}function Tt(e,t){if(t.name==="dataRow"){e.dataRowCount+=1;return}t.name==="commandComplete"&&typeof t.text=="string"&&t.text.length>0&&e.commandTags.push(t.text)}function _t(e,t){let r=ye(t.query),n=fe(r.cleanedSql);if(!n)return;let s=pe(r.cleanedSql),o={applicationName:t.applicationName,durationMs:t.durationMs,groupKey:ge(r.prismaQueryInfo),prismaQueryInfo:r.prismaQueryInfo,query:r.cleanedSql,queryId:s,reads:0,rowsReturned:At(t.responseStats),tables:n,timestamp:new Date().toISOString()};for(let l of e.subscribers)l([o])}function At(e){let t=e.commandTags.reduce((r,n)=>r+vt(n),0);return Math.max(t,e.dataRowCount)}function vt(e){let t=e.trim().split(/\s+/).at(-1);return!t||!/^\d+$/.test(t)?0:Number(t)}var A=require("fs"),_=require("fs/promises"),he=require("module"),Re=require("path"),h=require("url"),Dt=(0,he.createRequire)(b),Nt=["initdb.wasm","pglite.data","pglite.wasm"],Y="pglite-seed.tar.gz",Te={amcheck:"amcheck.tar.gz",bloom:"bloom.tar.gz",btree_gin:"btree_gin.tar.gz",btree_gist:"btree_gist.tar.gz",citext:"citext.tar.gz",cube:"cube.tar.gz",dict_int:"dict_int.tar.gz",dict_xsyn:"dict_xsyn.tar.gz",earthdistance:"earthdistance.tar.gz",file_fdw:"file_fdw.tar.gz",fuzzystrmatch:"fuzzystrmatch.tar.gz",hstore:"hstore.tar.gz",intarray:"intarray.tar.gz",isn:"isn.tar.gz",lo:"lo.tar.gz",ltree:"ltree.tar.gz",pageinspect:"pageinspect.tar.gz",pg_buffercache:"pg_buffercache.tar.gz",pg_freespacemap:"pg_freespacemap.tar.gz",pg_surgery:"pg_surgery.tar.gz",pg_trgm:"pg_trgm.tar.gz",pg_visibility:"pg_visibility.tar.gz",pg_walinspect:"pg_walinspect.tar.gz",seg:"seg.tar.gz",tablefunc:"tablefunc.tar.gz",tcn:"tcn.tar.gz",tsm_system_rows:"tsm_system_rows.tar.gz",tsm_system_time:"tsm_system_time.tar.gz",unaccent:"unaccent.tar.gz",uuid_ossp:"uuid-ossp.tar.gz",vector:"vector.tar.gz"},It=[...Nt.map(e=>({fileName:e,kind:"core",name:e})),{fileName:Y,kind:"core",name:Y},...Object.entries(Te).map(([e,t])=>({fileName:t,kind:"extension",name:e}))],C=new Map,xt=Symbol.for("@prisma/dev/bundled-pglite-runtime-asset-sources"),M=null;async function X(){await kt();let e=_e();if(e)return await Mt(e),await Lt(e);let t=Ct(),r=t.href,n=C.get(r);return n||(n=Bt(t),C.set(r,n)),await n}async function Lt(e){let t=`bundled:${e.wasmModule.href}:${e.fsBundle.href}`,r=C.get(t);return r||(r=Ot(e),C.set(t,r)),await r}async function Bt(e){let t=$(new URL("./runtime-assets/",b)),[r,n,s]=await Promise.all([(0,_.readFile)(U("pglite.data",e,t)),(0,_.readFile)(U(Y,e,t)),(0,_.readFile)(U("pglite.wasm",e,t))]),o=Ae();return{extensions:Object.fromEntries(Object.entries(Te).map(([l,c])=>[l,U(c,e,t)])),fsBundle:new Blob([Uint8Array.from(r)]),loadDataDir:new Blob([Uint8Array.from(n)]),wasmModule:await o.compile(s)}}async function Ot(e){let[t,r,n]=await Promise.all([J(e.fsBundle),J(e.loadDataDir),J(e.wasmModule)]),s=Ae();return{extensions:e.extensions,fsBundle:new Blob([Uint8Array.from(t)]),loadDataDir:new Blob([Uint8Array.from(r)]),wasmModule:await s.compile(n)}}async function Mt(e){if(e.initdbWasm.protocol!=="file:")return;let t=new URL("initdb.wasm",$(new URL("./",e.initdbWasm))),r=(0,h.fileURLToPath)(t);(0,A.existsSync)(r)||await(0,_.copyFile)((0,h.fileURLToPath)(e.initdbWasm),r)}function $(e){return e instanceof URL?we(e):we((0,h.pathToFileURL)(e))}function we(e){return e.href.endsWith("/")?e:new URL(`${e.href}/`)}function Ut(){let e=Dt.resolve("@electric-sql/pglite");return $((0,Re.dirname)(e))}function Ct(){let e=$(new URL("./",b));if($t(e))return e;if(Gt())return Ut();throw new Error("Unable to locate PGlite runtime assets. If you bundled @prisma/dev, copy them next to the bundle with copyPrismaDevRuntimeAssets().")}function $t(e){return It.every(t=>(0,A.existsSync)((0,h.fileURLToPath)(new URL(t.fileName,e))))}function _e(){return globalThis[xt]??null}async function kt(){!Qt()||_e()||(M||(M=import("./runtime-assets-manifest.bun.js").then(()=>{}).catch(e=>{throw M=null,e})),await M)}function Gt(){let e=(0,h.fileURLToPath)(new URL("../package.json",b));if(!(0,A.existsSync)(e))return!1;try{return JSON.parse((0,A.readFileSync)(e,"utf8")).name==="@prisma/dev"}catch{return!1}}function Qt(){return typeof globalThis.Bun<"u"}function Ae(){let e=globalThis.WebAssembly;if(!e)throw new Error("WebAssembly is not available in this runtime.");return e}async function J(e){if(e.protocol==="file:")return await(0,_.readFile)(e);let t=await fetch(e);if(!t.ok)throw new Error(`Failed to fetch runtime asset ${e.href}: ${t.status} ${t.statusText}`);return new Uint8Array(await t.arrayBuffer())}function U(e,t,r){let n=new URL(e,t);if((0,A.existsSync)((0,h.fileURLToPath)(n)))return n;if(r){let s=new URL(e,r);if((0,A.existsSync)((0,h.fileURLToPath)(s)))return s}return n}var ee=require("@electric-sql/pglite"),E="_prisma_dev_wal",Z="events",Ne="install_all_triggers",ve="capture_event",De="prisma_dev_wal_capture",I=new WeakMap,Ft=new Set(["ALTER","COMMIT","COPY","CREATE","DELETE","DROP","INSERT","MERGE","TRUNCATE","UPDATE"]);async function k(e,t){let r=I.get(e);if(r&&!r.closed)return r.bridge;let n=e.execProtocolRaw.bind(e),s=e.execProtocolRawStream.bind(e),o={bridge:{close:async()=>{o.closed||(o.closed=!0,o.subscribers.clear(),e.execProtocolRaw===l&&(e.execProtocolRaw=n),e.execProtocolRawStream===c&&(e.execProtocolRawStream=s),await o.pollPromise,I.delete(e))},poll:async()=>{await V(o,e)},subscribe:i=>(o.subscribers.add(i),()=>{o.subscribers.delete(i)})},closed:!1,ensureInfrastructurePromise:null,pendingPoll:!1,pollPromise:null,subscribers:new Set,suppressDepth:0},l=async(i,u)=>{let p=await n(i,u);return!o.closed&&o.suppressDepth===0&&te(p)&&V(o,e),p},c=async(i,u)=>{let p=[],y=new ee.protocol.Parser,a=u?.onRawData;await s(i,{...u,onRawData:d=>{y.parse(d,f=>{p.push(f)}),a?.(d)}}),!o.closed&&o.suppressDepth===0&&G(p)&&V(o,e)};return e.execProtocolRaw=l,e.execProtocolRawStream=c,I.set(e,o),await xe(o,e),o.bridge}async function Ie(e){let t=I.get(e);t&&await t.bridge.close()}function G(e){for(let t of e){if(t.name!=="commandComplete"||typeof t.text!="string")continue;let r=t.text.split(/\s+/,1)[0]?.toUpperCase();if(r&&Ft.has(r))return!0}return!1}function te(e){if(e.length===0)return!1;let t=[];return new ee.protocol.Parser().parse(e,n=>{t.push(n)}),G(t)}async function xe(e,t){e.ensureInfrastructurePromise??=re(e,t,async()=>{await t.exec(`CREATE SCHEMA IF NOT EXISTS "${E}"`),await t.exec(`
|
|
9
|
-
CREATE TABLE IF NOT EXISTS "${E}"."${
|
|
8
|
+
`),T('GRANT "pg_write_all_data" TO "prisma_application"'),T("SELECT SUM(reads)::BIGINT AS reads, SUM(writes)::BIGINT AS writes, SUM(COALESCE(extends, $1))::BIGINT AS extends FROM pg_stat_io"),T("SELECT pg_database_size(current_database())::BIGINT, SUM(pg_total_relation_size(relid))::BIGINT AS pg_total_relation_size FROM pg_stat_user_tables"),T("SELECT COUNT(*) AS cnt FROM pg_stat_activity WHERE pid <> pg_backend_pid() and xact_start notnull")]),mt=[/^BEGIN\b/i,/^COMMIT\b/i,/^ROLLBACK\b/i,/^SAVEPOINT\b/i,/^RELEASE\b/i,/^SET\b/i,/^SHOW\b/i,/^DISCARD\b/i,/^DEALLOCATE\b/i,/^CLOSE\b/i,/^CREATE EXTENSION\b/i,/^WITH state_assign\b/i];function T(e){return e.replace(/\s+/g," ").trim()}function ge(e){return Pe(T(e))}function fe(e){if(!e?.action||!e.model&&/raw/i.test(e.action))return null;let t=e.payload?Pe(JSON.stringify(e.payload)):"0";return`${e.model??""}.${e.action}:${t}`}function pt(e){let t=new Set;for(let r of e.matchAll(ct)){let n=r[1];if(!n)continue;let o;for(let s of n.matchAll(lt))o=s[1]??s[2]??s[3]??s[4];o&&!o.startsWith("pg_")&&t.add(o)}return Array.from(t)}function gt(e){return dt.has(e)?!0:mt.some(t=>t.test(e))}function ye(e){if(gt(T(e)))return null;let t=pt(e);return t.length===0&&/\bpg_\w+/i.test(e)?null:t}function K(e){if(Array.isArray(e))return e.map(K);if(e!==null&&typeof e=="object"){let t=e;return t.$type==="Param"?"<<redacted>>":Object.fromEntries(Object.entries(t).map(([r,n])=>[r,K(n)]))}return e}function be(e){let t=e.match(me);if(!t?.[1])return{cleanedSql:T(e),prismaQueryInfo:null};let r=e.replace(me,"");r=r.replace(/,\s*,/g,",").replace(/\/\*\s*,/g,"/*").replace(/,\s*\*\//g,"*/").replace(/\/\*\s*\*\//g,"").replace(/\s+/g," ").trim();let n=decodeURIComponent(t[1]),o=n.indexOf(":");if(o===-1)return{cleanedSql:r,prismaQueryInfo:{action:n,isRaw:!0}};let s=n.slice(0,o),u=n.slice(o+1),l=s.indexOf("."),c=l===-1?void 0:s.slice(0,l),i=l===-1?s:s.slice(l+1);if(!i)return{cleanedSql:r,prismaQueryInfo:null};let m;try{m=K(JSON.parse(pe.Buffer.from(u,"base64url").toString("utf8")))}catch{m=void 0}return{cleanedSql:r,prismaQueryInfo:{action:i,isRaw:!1,model:c,payload:m}}}function Pe(e){let t=5381;for(let r=0;r<e.length;r++)t=(t<<5)+t+e.charCodeAt(r)&4294967295;return(t>>>0).toString(36)}function O(e){let t=e.queryQueue;if(!t||typeof t.enqueue!="function"||typeof t.clearQueueForHandler!="function")throw new Error("PGLiteSocketServer query queue is unavailable");return t}var M=new WeakMap;function Se(e){let t=M.get(e);if(t&&!t.closed)return t.bridge;let r=O(e),n={bridge:{close:()=>(n.closed||(n.closed=!0,n.sessions.clear(),n.subscribers.clear(),n.queryQueue.enqueue=n.originalEnqueue,n.queryQueue.clearQueueForHandler=n.originalClearQueueForHandler,M.delete(e)),Promise.resolve()),subscribe:o=>(n.subscribers.add(o),()=>{n.subscribers.delete(o)})},closed:!1,originalClearQueueForHandler:r.clearQueueForHandler.bind(r),originalEnqueue:r.enqueue.bind(r),queryQueue:r,sessions:new Map,subscribers:new Set};return r.clearQueueForHandler=o=>{n.sessions.delete(o),n.originalClearQueueForHandler(o)},r.enqueue=async(o,s,u)=>{let l=ft(n,o),c=Pt(s);yt(l,c);let i=bt(l,c);if(!i)return await n.originalEnqueue(o,s,u);let m={commandTags:[],dataRowCount:0},y=new Ee.protocol.Parser,a=Y.performance.now(),d=await n.originalEnqueue(o,s,D=>{y.parse(D,Ke=>{_t(m,Ke)}),u(D)}),f=Math.max(0,Y.performance.now()-a);return At(n,{applicationName:i.applicationName,durationMs:f,query:i.query,responseStats:m}),d},M.set(e,n),n.bridge}async function we(e){await M.get(e)?.bridge.close()}function ft(e,t){let r=e.sessions.get(t);if(r)return r;let n={applicationName:null,portals:new Map,statements:new Map};return e.sessions.set(t,n),n}function yt(e,t){if(t)switch(t.kind){case"startup":e.applicationName=t.applicationName;return;case"parse":e.statements.set(t.statementName,t.query);return;case"bind":{let r=e.statements.get(t.statementName);r&&e.portals.set(t.portalName,r);return}case"close":t.target==="portal"?e.portals.delete(t.name):e.statements.delete(t.name);return;default:return}}function bt(e,t){if(!t)return null;if(t.kind==="query")return{applicationName:e.applicationName,query:t.query};if(t.kind==="execute"){let r=e.portals.get(t.portalName);return r?{applicationName:e.applicationName,query:r}:null}return null}function Pt(e){let t=Buffer.from(e);if(t.length<4)return null;let r=t.readInt32BE(0);if(t.length>=8&&r===t.length){let o=t.readInt32BE(4);if(o===196608||o===196608)return Et(t)}if(t.length<5)return null;switch(String.fromCharCode(t[0]??0)){case"Q":return St(t);case"P":return wt(t);case"B":return ht(t);case"E":return Rt(t);case"C":return Tt(t);default:return null}}function Et(e){let t=8,r=null;for(;t<e.length-1;){let n=w(e,t);if(!n||n.value==="")break;t=n.nextOffset;let o=w(e,t);if(!o)break;t=o.nextOffset,n.value==="application_name"&&(r=o.value)}return{applicationName:r,kind:"startup"}}function St(e){let t=w(e,5);return t?{kind:"query",query:t.value}:null}function wt(e){let t=w(e,5);if(!t)return null;let r=w(e,t.nextOffset);return r?{kind:"parse",query:r.value,statementName:t.value}:null}function ht(e){let t=w(e,5);if(!t)return null;let r=w(e,t.nextOffset);return r?{kind:"bind",portalName:t.value,statementName:r.value}:null}function Rt(e){let t=w(e,5);return t?{kind:"execute",portalName:t.value}:null}function Tt(e){if(e.length<7)return null;let t=e[5];if(t===void 0)return null;let r=w(e,6);return r?{kind:"close",name:r.value,target:t===80?"portal":"statement"}:null}function w(e,t){let r=e.indexOf(0,t);return r===-1?null:{nextOffset:r+1,value:e.toString("utf8",t,r)}}function _t(e,t){if(t.name==="dataRow"){e.dataRowCount+=1;return}t.name==="commandComplete"&&typeof t.text=="string"&&t.text.length>0&&e.commandTags.push(t.text)}function At(e,t){let r=be(t.query),n=ye(r.cleanedSql);if(!n)return;let o=ge(r.cleanedSql),s={applicationName:t.applicationName,durationMs:t.durationMs,groupKey:fe(r.prismaQueryInfo),prismaQueryInfo:r.prismaQueryInfo,query:r.cleanedSql,queryId:o,reads:0,rowsReturned:vt(t.responseStats),tables:n,timestamp:new Date().toISOString()};for(let u of e.subscribers)u([s])}function vt(e){let t=e.commandTags.reduce((r,n)=>r+Dt(n),0);return Math.max(t,e.dataRowCount)}function Dt(e){let t=e.trim().split(/\s+/).at(-1);return!t||!/^\d+$/.test(t)?0:Number(t)}var xt=new Set([66,67,68,69,72,80,100]),Nt=90;function It(e){let t=e[0];return t!==void 0&&xt.has(t)}function Lt(){let e=Buffer.alloc(0);return{filter(t,r){e=e.length===0?Buffer.from(t):Buffer.concat([e,t]);let n=[],o=0;for(;e.length-o>=5;){let u=1+e.readInt32BE(o+1);if(u<5){n.push(e.subarray(o)),o=e.length;break}if(e.length-o<u)break;r&&e[o]===Nt||n.push(e.subarray(o,o+u)),o+=u}e=e.subarray(o);let s=n[0];return n.length===1&&s?s:Buffer.concat(n)},get holdsPartialFrame(){return e.length>0}}}function he(e){let t=O(e),r=t.enqueue.bind(t),n=t.clearQueueForHandler.bind(t),o=new Map;t.clearQueueForHandler=s=>{o.delete(s),n(s)},t.enqueue=async(s,u,l)=>{let c=It(u),i=o.get(s);if(!c&&!i)return await r(s,u,l);i||(i=Lt(),o.set(s,i));let m=i;try{return await r(s,u,y=>{let a=m.filter(y,c);a.length>0&&l(a)})}finally{m.holdsPartialFrame||o.delete(s)}}}var A=require("fs"),_=require("fs/promises"),Te=require("module"),_e=require("path"),h=require("url"),Bt=(0,Te.createRequire)(b),Ot=["initdb.wasm","pglite.data","pglite.wasm"],X="pglite-seed.tar.gz",Ae={amcheck:"amcheck.tar.gz",bloom:"bloom.tar.gz",btree_gin:"btree_gin.tar.gz",btree_gist:"btree_gist.tar.gz",citext:"citext.tar.gz",cube:"cube.tar.gz",dict_int:"dict_int.tar.gz",dict_xsyn:"dict_xsyn.tar.gz",earthdistance:"earthdistance.tar.gz",file_fdw:"file_fdw.tar.gz",fuzzystrmatch:"fuzzystrmatch.tar.gz",hstore:"hstore.tar.gz",intarray:"intarray.tar.gz",isn:"isn.tar.gz",lo:"lo.tar.gz",ltree:"ltree.tar.gz",pageinspect:"pageinspect.tar.gz",pg_buffercache:"pg_buffercache.tar.gz",pg_freespacemap:"pg_freespacemap.tar.gz",pg_surgery:"pg_surgery.tar.gz",pg_trgm:"pg_trgm.tar.gz",pg_visibility:"pg_visibility.tar.gz",pg_walinspect:"pg_walinspect.tar.gz",seg:"seg.tar.gz",tablefunc:"tablefunc.tar.gz",tcn:"tcn.tar.gz",tsm_system_rows:"tsm_system_rows.tar.gz",tsm_system_time:"tsm_system_time.tar.gz",unaccent:"unaccent.tar.gz",uuid_ossp:"uuid-ossp.tar.gz",vector:"vector.tar.gz"},Mt=[...Ot.map(e=>({fileName:e,kind:"core",name:e})),{fileName:X,kind:"core",name:X},...Object.entries(Ae).map(([e,t])=>({fileName:t,kind:"extension",name:e}))],$=new Map,Ut=Symbol.for("@prisma/dev/bundled-pglite-runtime-asset-sources"),U=null;async function V(){await Wt();let e=ve();if(e)return await Qt(e),await Ct(e);let t=Gt(),r=t.href,n=$.get(r);return n||(n=$t(t),$.set(r,n)),await n}async function Ct(e){let t=`bundled:${e.wasmModule.href}:${e.fsBundle.href}`,r=$.get(t);return r||(r=kt(e),$.set(t,r)),await r}async function $t(e){let t=k(new URL("./runtime-assets/",b)),[r,n,o]=await Promise.all([(0,_.readFile)(C("pglite.data",e,t)),(0,_.readFile)(C(X,e,t)),(0,_.readFile)(C("pglite.wasm",e,t))]),s=De();return{extensions:Object.fromEntries(Object.entries(Ae).map(([u,l])=>[u,C(l,e,t)])),fsBundle:new Blob([Uint8Array.from(r)]),loadDataDir:new Blob([Uint8Array.from(n)]),wasmModule:await s.compile(o)}}async function kt(e){let[t,r,n]=await Promise.all([J(e.fsBundle),J(e.loadDataDir),J(e.wasmModule)]),o=De();return{extensions:e.extensions,fsBundle:new Blob([Uint8Array.from(t)]),loadDataDir:new Blob([Uint8Array.from(r)]),wasmModule:await o.compile(n)}}async function Qt(e){if(e.initdbWasm.protocol!=="file:")return;let t=new URL("initdb.wasm",k(new URL("./",e.initdbWasm))),r=(0,h.fileURLToPath)(t);(0,A.existsSync)(r)||await(0,_.copyFile)((0,h.fileURLToPath)(e.initdbWasm),r)}function k(e){return e instanceof URL?Re(e):Re((0,h.pathToFileURL)(e))}function Re(e){return e.href.endsWith("/")?e:new URL(`${e.href}/`)}function Ft(){let e=Bt.resolve("@electric-sql/pglite");return k((0,_e.dirname)(e))}function Gt(){let e=k(new URL("./",b));if(qt(e))return e;if(zt())return Ft();throw new Error("Unable to locate PGlite runtime assets. If you bundled @prisma/dev, copy them next to the bundle with copyPrismaDevRuntimeAssets().")}function qt(e){return Mt.every(t=>(0,A.existsSync)((0,h.fileURLToPath)(new URL(t.fileName,e))))}function ve(){return globalThis[Ut]??null}async function Wt(){!jt()||ve()||(U||(U=import("./runtime-assets-manifest.bun.js").then(()=>{}).catch(e=>{throw U=null,e})),await U)}function zt(){let e=(0,h.fileURLToPath)(new URL("../package.json",b));if(!(0,A.existsSync)(e))return!1;try{return JSON.parse((0,A.readFileSync)(e,"utf8")).name==="@prisma/dev"}catch{return!1}}function jt(){return typeof globalThis.Bun<"u"}function De(){let e=globalThis.WebAssembly;if(!e)throw new Error("WebAssembly is not available in this runtime.");return e}async function J(e){if(e.protocol==="file:")return await(0,_.readFile)(e);let t=await fetch(e);if(!t.ok)throw new Error(`Failed to fetch runtime asset ${e.href}: ${t.status} ${t.statusText}`);return new Uint8Array(await t.arrayBuffer())}function C(e,t,r){let n=new URL(e,t);if((0,A.existsSync)((0,h.fileURLToPath)(n)))return n;if(r){let o=new URL(e,r);if((0,A.existsSync)((0,h.fileURLToPath)(o)))return o}return n}var te=require("@electric-sql/pglite"),E="_prisma_dev_wal",ee="events",Ie="install_all_triggers",xe="capture_event",Ne="prisma_dev_wal_capture",N=new WeakMap,Ht=new Set(["ALTER","COMMIT","COPY","CREATE","DELETE","DROP","INSERT","MERGE","TRUNCATE","UPDATE"]);async function Q(e,t){let r=N.get(e);if(r&&!r.closed)return r.bridge;let n=e.execProtocolRaw.bind(e),o=e.execProtocolRawStream.bind(e),s={bridge:{close:async()=>{s.closed||(s.closed=!0,s.subscribers.clear(),e.execProtocolRaw===u&&(e.execProtocolRaw=n),e.execProtocolRawStream===l&&(e.execProtocolRawStream=o),await s.pollPromise,N.delete(e))},poll:async()=>{await Z(s,e)},subscribe:c=>(s.subscribers.add(c),()=>{s.subscribers.delete(c)})},closed:!1,ensureInfrastructurePromise:null,pendingPoll:!1,pollPromise:null,subscribers:new Set,suppressDepth:0},u=async(c,i)=>{let m=await n(c,i);return!s.closed&&s.suppressDepth===0&&re(m)&&Z(s,e),m},l=async(c,i)=>{let m=[],y=new te.protocol.Parser,a=i?.onRawData;await o(c,{...i,onRawData:d=>{y.parse(d,f=>{m.push(f)}),a?.(d)}}),!s.closed&&s.suppressDepth===0&&F(m)&&Z(s,e)};return e.execProtocolRaw=u,e.execProtocolRawStream=l,N.set(e,s),await Be(s,e),s.bridge}async function Le(e){let t=N.get(e);t&&await t.bridge.close()}function F(e){for(let t of e){if(t.name!=="commandComplete"||typeof t.text!="string")continue;let r=t.text.split(/\s+/,1)[0]?.toUpperCase();if(r&&Ht.has(r))return!0}return!1}function re(e){if(e.length===0)return!1;let t=[];return new te.protocol.Parser().parse(e,n=>{t.push(n)}),F(t)}async function Be(e,t){e.ensureInfrastructurePromise??=ne(e,t,async()=>{await t.exec(`CREATE SCHEMA IF NOT EXISTS "${E}"`),await t.exec(`
|
|
9
|
+
CREATE TABLE IF NOT EXISTS "${E}"."${ee}" (
|
|
10
10
|
id BIGSERIAL PRIMARY KEY,
|
|
11
11
|
txid BIGINT NOT NULL DEFAULT txid_current(),
|
|
12
12
|
schema_name TEXT NOT NULL,
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
created_at TIMESTAMPTZ NOT NULL DEFAULT clock_timestamp()
|
|
18
18
|
)
|
|
19
19
|
`),await t.exec(`
|
|
20
|
-
CREATE OR REPLACE FUNCTION "${E}"."${
|
|
20
|
+
CREATE OR REPLACE FUNCTION "${E}"."${xe}"()
|
|
21
21
|
RETURNS trigger
|
|
22
22
|
LANGUAGE plpgsql
|
|
23
23
|
AS $$
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
RETURN COALESCE(NEW, OLD);
|
|
27
27
|
END IF;
|
|
28
28
|
|
|
29
|
-
INSERT INTO "${E}"."${
|
|
29
|
+
INSERT INTO "${E}"."${ee}" (
|
|
30
30
|
txid,
|
|
31
31
|
schema_name,
|
|
32
32
|
table_name,
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
END;
|
|
48
48
|
$$;
|
|
49
49
|
`),await t.exec(`
|
|
50
|
-
CREATE OR REPLACE FUNCTION "${E}"."${
|
|
50
|
+
CREATE OR REPLACE FUNCTION "${E}"."${Ie}"()
|
|
51
51
|
RETURNS void
|
|
52
52
|
LANGUAGE plpgsql
|
|
53
53
|
AS $$
|
|
@@ -67,28 +67,28 @@
|
|
|
67
67
|
SELECT 1
|
|
68
68
|
FROM pg_trigger
|
|
69
69
|
WHERE tgrelid = target
|
|
70
|
-
AND tgname = '${
|
|
70
|
+
AND tgname = '${Ne}'
|
|
71
71
|
) THEN
|
|
72
72
|
CONTINUE;
|
|
73
73
|
END IF;
|
|
74
74
|
|
|
75
75
|
EXECUTE format(
|
|
76
|
-
'CREATE TRIGGER %I AFTER INSERT OR UPDATE OR DELETE ON %s FOR EACH ROW EXECUTE FUNCTION "${E}"."${
|
|
77
|
-
'${
|
|
76
|
+
'CREATE TRIGGER %I AFTER INSERT OR UPDATE OR DELETE ON %s FOR EACH ROW EXECUTE FUNCTION "${E}"."${xe}"()',
|
|
77
|
+
'${Ne}',
|
|
78
78
|
target::text
|
|
79
79
|
);
|
|
80
80
|
END LOOP;
|
|
81
81
|
END;
|
|
82
82
|
$$;
|
|
83
|
-
`),await
|
|
83
|
+
`),await Oe(e,t)}),await e.ensureInfrastructurePromise}async function Oe(e,t){await ne(e,t,async()=>{await t.query(`SELECT "${E}"."${Ie}"()`)})}async function Kt(e,t){await Be(e,t),await Oe(e,t);let r=await ne(e,t,async()=>await t.query(`
|
|
84
84
|
WITH drained AS (
|
|
85
|
-
DELETE FROM "${E}"."${
|
|
85
|
+
DELETE FROM "${E}"."${ee}"
|
|
86
86
|
RETURNING txid, schema_name, table_name, op, row_data, old_row_data, id
|
|
87
87
|
)
|
|
88
88
|
SELECT txid, schema_name, table_name, op, row_data, old_row_data
|
|
89
89
|
FROM drained
|
|
90
90
|
ORDER BY id
|
|
91
|
-
`));if(r.rows.length===0||e.subscribers.size===0)return;let n=r.rows.map(
|
|
91
|
+
`));if(r.rows.length===0||e.subscribers.size===0)return;let n=r.rows.map(Yt);for(let o of e.subscribers)queueMicrotask(()=>{if(!e.closed&&e.subscribers.has(o))try{o(n)}catch(s){console.error("[WAL bridge] subscriber failed",s)}})}async function Z(e,t){if(!e.closed){if(e.pollPromise){e.pendingPoll=!0,await e.pollPromise;return}e.pollPromise=(async()=>{do e.pendingPoll=!1,await Kt(e,t);while(e.pendingPoll&&!e.closed)})().finally(()=>{e.pollPromise=null}),await e.pollPromise}}async function ne(e,t,r){e.suppressDepth+=1;try{return await r()}finally{e.suppressDepth-=1,e.suppressDepth===0&&!e.closed&&N.get(t)!==e&&(e.closed=!0)}}function Yt(e){return{oldRecord:e.old_row_data,record:e.row_data,schema:e.schema_name,table:e.table_name,txid:String(e.txid),type:Jt(e.op)}}function Jt(e){switch(e.toLowerCase()){case"delete":return"delete";case"insert":return"insert";case"update":return"update";default:throw new Error(`Unsupported WAL bridge operation: ${e}`)}}var Xt=10,$e="127.0.0.1",ke=128*1024*1024,Qe=["-c","shared_buffers=16MB","-c","temp_buffers=1MB","-c","work_mem=1MB","-c","maintenance_work_mem=16MB","-c","wal_buffers=1MB"],p={connectionLimit:Xt,connectTimeout:0,database:"template1",maxIdleConnectionLifetime:0,password:"postgres",poolTimeout:0,socketTimeout:0,sslMode:"disable",username:"postgres"},Vt=`postgres://${p.username}:${p.password}@localhost`,oe=new URLSearchParams({sslmode:p.sslMode}),Fe=new URLSearchParams({...Object.fromEntries(oe.entries()),connection_limit:String(p.connectionLimit),connect_timeout:String(p.connectTimeout),max_idle_connection_lifetime:String(p.maxIdleConnectionLifetime),pool_timeout:String(p.poolTimeout),socket_timeout:String(p.socketTimeout)});async function Ge(e){let{rows:t}=await e.query("SELECT EXISTS(SELECT 1 FROM pg_roles WHERE rolname = 'postgres') AS exists");t[0]?.exists?await e.exec(`ALTER ROLE ${p.username} WITH LOGIN SUPERUSER PASSWORD '${p.password}'`):await e.exec(`CREATE ROLE ${p.username} WITH LOGIN SUPERUSER PASSWORD '${p.password}'`),await e.exec(`SET ROLE ${p.username}`)}async function Zt(e,t){if(e==="shadow_database"&&!t.dryRun)return await qe(t);let r=e==="database"?t.databasePort:t.shadowDatabasePort;return t.dryRun?ze(e,t,{db:null,port:r,server:null}):await We(e,t,{port:r,updateServerStatePort:!0})}async function qe(e,t=async()=>await We("shadow_database",e,{port:0,updateServerStatePort:!1})){let{debug:r}=e,n=null,o=null,s=!1,u=new Set,l=(0,q.createServer)(i),c=await er(l,e.shadowDatabasePort);return e.shadowDatabasePort=c,r&&console.debug(`[shadow_database] lazy proxy listening on port ${c}`),{...p,attachWalEventBridge:()=>Promise.reject(new Error("WAL bridge is only available for the primary database server")),attachQueryInsightsBridge:()=>Promise.reject(new Error("Query insights are only available for the primary database server")),close:async()=>{s=!0;for(let d of u)d.destroy();u.clear();let a=[];try{await tr(l),r&&console.debug(`[shadow_database] lazy proxy stopped on port ${c}`)}catch(d){console.error("[shadow_database] lazy proxy stop error",d),a.push(d)}try{await o?.catch(()=>null),await n?.close()}catch(d){console.error("[shadow_database] backend close error",d),a.push(d)}if(a.length>0)throw new AggregateError(a,"Failed to close shadow_database properly")},connectionString:G(c,oe),dump:async()=>{},getPrimaryKeyColumns:()=>Promise.reject(new Error("Primary key resolution is only available for the primary database server")),port:c,prismaORMConnectionString:G(c,Fe),terminalCommand:`PGPASSWORD=${p.password} PGSSLMODE=${p.sslMode} psql -h localhost -p ${c} -U ${p.username} -d ${p.database}`};function i(a){u.add(a);let d=()=>{u.delete(a)};a.once("close",d),a.once("error",d),a.pause(),m(a)}async function m(a){try{let d=await y();if(s){a.destroy();return}let f=(0,q.createConnection)({host:$e,port:d.port});u.add(f);let D=()=>{u.delete(f)};f.once("close",D),f.once("error",D),a.once("close",()=>f.destroy()),a.once("error",()=>f.destroy()),f.once("error",()=>a.destroy()),f.once("connect",()=>{r&&console.debug(`[shadow_database] proxying connection to lazy backend on port ${d.port}`),a.resume(),a.pipe(f),f.pipe(a)})}catch(d){r&&console.error("[shadow_database] failed to start lazy backend",d),a.destroy(d instanceof Error?d:void 0)}}async function y(){if(n)return n;if(s)throw new Error("shadow_database is closed");return o||(r&&console.debug("[shadow_database] starting lazy backend..."),o=t().then(a=>(n=a,r&&console.debug(`[shadow_database] lazy backend started on port ${a.port}`),a)).catch(a=>{throw o=null,a})),await o}}async function We(e,t,r){let{debug:n}=t,{port:o,updateServerStatePort:s}=r,l=await(e==="shadow_database"?rr:je)(t.pgliteDataDirPath,n);n&&l.onNotification((a,d)=>{console.debug(`[${e}][${a}] ${d}`)});let{PGLiteSocketServer:c}=await import("@electric-sql/pglite-socket"),i=e==="shadow_database"?t.shadowDatabaseIdleTimeoutMillis:t.databaseIdleTimeoutMillis,m=new c({db:l,debug:n,idleTimeout:Number.isFinite(i)?i:0,inspect:n,maxConnections:p.connectionLimit,port:o});he(m),n&&(m.addEventListener("listening",a=>{let{detail:d}=a;console.debug(`[${e}] server listening on ${JSON.stringify(d)}`)}),m.addEventListener("connection",a=>{let{clientAddress:d,clientPort:f}=a.detail;console.debug(`[${e}] client connected from ${d}:${f}`)}),m.addEventListener("error",a=>{let{detail:d}=a;console.error(`[${e}] server error:`,d)}));try{await m.start()}catch(a){throw a instanceof Error&&"code"in a&&a.code==="EADDRINUSE"?new x(o):a}let y=Number(m.getServerConn().split(":").at(1));return s&&(t[e==="database"?"databasePort":"shadowDatabasePort"]=y),ze(e,t,{db:l,port:y,server:m})}function ze(e,t,r){let{debug:n}=t,{db:o,port:s,server:u}=r||{},l=new Map;return n&&console.debug(`[${e}] server started on port ${s}`),{...p,attachWalEventBridge:async()=>{if(e!=="database"||!o)throw new Error("WAL bridge is only available for the primary database server");return await Q(o)},attachQueryInsightsBridge:()=>{if(e!=="database"||!u)throw new Error("Query insights are only available for the primary database server");return Promise.resolve(Se(u))},close:async()=>{let c=[];try{await u?.stop(),n&&console.debug(`[${e}] server stopped on port ${s}`)}catch(i){console.error(`[${e}] server stop error`,i),c.push(i)}if(e==="database"){try{u&&await we(u),n&&console.debug(`[${e}] closed query insights bridge`)}catch(i){console.error(`[${e}] query insights bridge close error`,i),c.push(i)}try{o&&await Le(o),n&&console.debug(`[${e}] closed WAL bridge`)}catch(i){console.error(`[${e}] WAL bridge close error`,i),c.push(i)}try{await o?.syncToFs(),n&&console.debug(`[${e}] synced to filesystem`)}catch(i){console.error(`[${e}] sync error`,i),c.push(i)}}try{await o?.close(),n&&console.debug(`[${e}] closed`)}catch(i){console.error(`[${e}] close error`,i),c.push(i)}if(c.length>0)throw new AggregateError(c,`Failed to close ${e} properly`)},connectionString:G(s,oe),dump:async c=>{e==="shadow_database"||!o||await He({db:o,debug:n,destinationPath:c})},getPrimaryKeyColumns:async(c,i)=>{if(e==="shadow_database"||!o)throw new Error("Primary key resolution is only available for the primary database server");let m=`${c}.${i}`,y=l.get(m);return y||(y=nr(o,c,i).catch(a=>{throw l.delete(m),a}),l.set(m,y)),await y},port:s,prismaORMConnectionString:G(s,Fe),terminalCommand:`PGPASSWORD=${p.password} PGSSLMODE=${p.sslMode} psql -h localhost -p ${s} -U ${p.username} -d ${p.database}`}}function G(e,t){return`${Vt}:${e}/${p.database}?${t.toString()}`}async function je(e,t){let{PGlite:r}=await import("@electric-sql/pglite"),n=await V(),o=e==="memory://"||!await ue((0,Ue.join)(e,"PG_VERSION")),s=await r.create({database:p.database,dataDir:e,debug:t?5:void 0,extensions:n.extensions,fsBundle:n.fsBundle,initialMemory:ke,loadDataDir:o?n.loadDataDir:void 0,relaxedDurability:!1,startParams:[...r.defaultStartParams,...Qe],wasmModule:n.wasmModule});return await Ge(s),s}async function er(e,t){return await new Promise((r,n)=>{let o=l=>{if(u(),l.code==="EADDRINUSE"){n(new x(t));return}n(l)},s=()=>{let l=e.address();if(u(),!l||typeof l=="string"){n(new Error("Failed to determine TCP server port"));return}r(l.port)},u=()=>{e.off("error",o),e.off("listening",s)};e.once("error",o),e.once("listening",s),e.listen(t,$e)})}async function tr(e){await new Promise((t,r)=>{e.close(n=>{let o=n;if(o&&o.code!=="ERR_SERVER_NOT_RUNNING"){r(o);return}t()})})}async function rr(e,t){let{PGlite:r}=await import("@electric-sql/pglite"),n=await V(),o=await r.create({database:p.database,dataDir:"memory://",debug:t?5:void 0,extensions:n.extensions,fsBundle:n.fsBundle,initialMemory:ke,loadDataDir:n.loadDataDir,relaxedDurability:!1,startParams:[...r.defaultStartParams,...Qe],wasmModule:n.wasmModule});return await Ge(o),o}async function nr(e,t,r){let{rows:n}=await e.query(`
|
|
92
92
|
SELECT attribute.attname AS column_name
|
|
93
93
|
FROM pg_constraint pk_constraint
|
|
94
94
|
INNER JOIN pg_class relation
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
ON attribute.attrelid = relation.oid
|
|
102
102
|
AND attribute.attnum = keys.attnum
|
|
103
103
|
WHERE pk_constraint.contype = 'p'
|
|
104
|
-
AND namespace.nspname = ${
|
|
105
|
-
AND relation.relname = ${
|
|
104
|
+
AND namespace.nspname = ${Me(t)}
|
|
105
|
+
AND relation.relname = ${Me(r)}
|
|
106
106
|
ORDER BY keys.ordinality
|
|
107
|
-
`);return n.map(
|
|
107
|
+
`);return n.map(o=>o.column_name)}function Me(e){return`'${e.replaceAll("'","''")}'`}async function He(e){let{dataDir:t,db:r,debug:n,destinationPath:o}=e,s=r||await je(t,n),{pgDump:u}=await import("@electric-sql/pglite-tools/pg_dump"),l=await u({args:["--schema-only","--no-owner"],fileName:o?(0,Ce.filename)(o):void 0,pg:await s.clone()});return o?(n&&console.debug(`[DB] Dumping database to ${o}`),await ce(l,o)):(n&&console.debug("[DB] Dumping database to memory"),await l.text())}0&&(module.exports={attachWalEventBridge,dumpDB,shouldPollWalAfterMessages,shouldPollWalAfterResponse,startDBServer,startLazyShadowDBServer});
|
package/dist/db.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as a,d as b,e as c,f as d,g as e,h as f}from"./chunk-
|
|
1
|
+
import{c as a,d as b,e as c,f as d,g as e,h as f}from"./chunk-QDQPFKGQ.js";import"./chunk-KWCQYPJI.js";import"./chunk-EDFHV3AK.js";import"./chunk-DWY47FQV.js";export{a as attachWalEventBridge,f as dumpDB,b as shouldPollWalAfterMessages,c as shouldPollWalAfterResponse,d as startDBServer,e as startLazyShadowDBServer};
|