@prisma/dev 0.25.1 → 0.25.2
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/{accelerate-TRR43YJ5.js → accelerate-KNP4MGMV.js} +1 -1
- package/dist/{chunk-VSS2IOVU.js → chunk-AVDGCP6B.js} +1 -1
- package/dist/chunk-GK3XD2W4.js +3 -0
- package/dist/{chunk-QDQPFKGQ.js → chunk-MGHBCHO2.js} +1 -1
- package/dist/{chunk-T75J7DN5.js → chunk-S2WDC6AE.js} +1 -1
- package/dist/{chunk-DWY47FQV.js → chunk-ZEM5OLPM.js} +1 -1
- package/dist/daemon.cjs +24 -24
- package/dist/daemon.js +1 -1
- package/dist/db.js +1 -1
- package/dist/{engine-YTEOPVUP.js → engine-XTNCE4RM.js} +1 -1
- package/dist/index.cjs +24 -24
- package/dist/index.js +1 -1
- package/dist/state.cjs +3 -3
- package/dist/state.js +1 -1
- package/dist/vite.cjs +24 -24
- package/dist/vite.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-HFONW2ZS.js +0 -3
package/dist/state.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";var xe=Object.create;var M=Object.defineProperty;var Te=Object.getOwnPropertyDescriptor;var _e=Object.getOwnPropertyNames;var Ee=Object.getPrototypeOf,$e=Object.prototype.hasOwnProperty;var Me=(t,e)=>{for(var r in e)M(t,r,{get:e[r],enumerable:!0})},te=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of _e(e))!$e.call(t,n)&&n!==r&&M(t,n,{get:()=>e[n],enumerable:!(o=Te(e,n))||o.enumerable});return t};var O=(t,e,r)=>(r=t!=null?xe(Ee(t)):{},te(e||!t||!t.__esModule?M(r,"default",{value:t,enumerable:!0}):r,t)),Oe=t=>te(M({},"__esModule",{value:!0}),t);var He={};Me(He,{ServerAlreadyRunningError:()=>U,ServerState:()=>f,ServerStateAlreadyExistsError:()=>N,deleteServer:()=>Ke,getServerStatus:()=>ee,isServerRunning:()=>Se,killServer:()=>we});module.exports=Oe(He);var ve=require("fs/promises"),S=require("pathe"),x=require("proper-lockfile"),Q=require("std-env"),s=require("valibot");var re=require("fs"),m=require("fs/promises"),se=require("util"),oe=require("zlib");var d=O(require("path"),1),L=O(require("os"),1),k=O(require("process"),1),g=L.default.homedir(),q=L.default.tmpdir(),{env:w}=k.default,ke=t=>{let e=d.default.join(g,"Library");return{data:d.default.join(e,"Application Support",t),config:d.default.join(e,"Preferences",t),cache:d.default.join(e,"Caches",t),log:d.default.join(e,"Logs",t),temp:d.default.join(q,t)}},Ae=t=>{let e=w.APPDATA||d.default.join(g,"AppData","Roaming"),r=w.LOCALAPPDATA||d.default.join(g,"AppData","Local");return{data:d.default.join(r,t,"Data"),config:d.default.join(e,t,"Config"),cache:d.default.join(r,t,"Cache"),log:d.default.join(r,t,"Log"),temp:d.default.join(q,t)}},Re=t=>{let e=d.default.basename(g);return{data:d.default.join(w.XDG_DATA_HOME||d.default.join(g,".local","share"),t),config:d.default.join(w.XDG_CONFIG_HOME||d.default.join(g,".config"),t),cache:d.default.join(w.XDG_CACHE_HOME||d.default.join(g,".cache"),t),log:d.default.join(w.XDG_STATE_HOME||d.default.join(g,".local","state"),t),temp:d.default.join(q,e,t)}};function B(t,{suffix:e="nodejs"}={}){if(typeof t!="string")throw new TypeError(`Expected a string, got ${typeof t}`);return e&&(t+=`-${e}`),k.default.platform==="darwin"?ke(t):k.default.platform==="win32"?Ae(t):Re(t)}var ae=O(require("zeptomatch"),1),C=B("prisma-dev"),ze=(0,se.promisify)(oe.unzip);function D(t){return`${C.data}/${t}`}function ne(t){return t!=null&&typeof t=="object"&&"code"in t&&t.code==="ENOENT"}async function ie(t){try{return await(0,m.readFile)(t,{encoding:"utf-8"})}catch(e){if(ne(e))return null;throw e}}async function ue(t){await(0,m.mkdir)(t,{recursive:!0})}async function ce(t,e){try{return(await(0,m.readdir)(t,{withFileTypes:!0})).reduce((o,n)=>(n.isDirectory()&&!n.name.startsWith(".")&&(!e||(0,ae.default)(e,n.name))&&o.push(n.name),o),[])}catch(r){if(ne(r))return[];throw r}}async function V(t){await(0,m.rm)(t,{force:!0,recursive:!0})}var de=require("timers/promises"),_=require("std-env");function F(t,e){if(t==null)return!1;try{return _.process.kill?.(t,0)??!0}catch(r){return e&&console.error(`Error checking if process with PID ${t} exists:`,r),!1}}async function le(t,e){if(!_.process.kill)return!1;try{_.process.kill(t,"SIGTERM")}catch(o){return e&&console.error(`Error killing process with PID ${t}:`,o),!1}let r=0;do{if(!F(t,e))return!0;await(0,de.setTimeout)(100)}while(++r<50);try{return _.process.kill(t,"SIGKILL")}catch(o){return e&&console.error(`Error forcefully killing process with PID ${t}:`,o),!1}}var y=require("get-port-please"),I=require("remeda"),pe=51214,me=51213,he=51215,fe=51216,A=65535,v=0,p=-1/0;async function J(t){let{debug:e,name:r,requestedPorts:o,servers:n}=t,{portsUsedByOtherServers:a,portsUsedByThisServerLastTime:i}=Ue(r,n);e&&(console.debug(`ports used by other servers: ${Object.keys(a).join(", ")}`),console.debug(`ports used by "${r}" server last time: ${JSON.stringify(i)}`));let u={databasePort:p,port:p,shadowDatabasePort:p,streamsPort:p},c=["port","databasePort","shadowDatabasePort","streamsPort"];for(let l of c){let h=await Ie({debug:e,portKey:l,portsUsedByOtherServers:a,portsUsedByThisServerLastTime:i,requestedPorts:o})??await Ne({debug:e,pickedPorts:u,portKey:l,portsUsedByOtherServers:a,portsUsedByThisServerLastTime:i});e&&console.debug(`Got port for "${l}": ${h}`),u[l]=h}return e&&console.debug(`Picked ports: ${JSON.stringify(u)}`),u}async function Ie(t){let{debug:e,portKey:r,portsUsedByOtherServers:o,portsUsedByThisServerLastTime:n,requestedPorts:a}=t,{[r]:i,...u}=a;if(G(i))return await qe({debug:e,otherRequestedPorts:u,portKey:r,portsUsedByOtherServers:o,requestedPort:i}),i;let c=n?.[r]??p;if(!G(c))return e&&console.debug(`No port specified for "${r}". Trying to pick a new port.`),null;let l=c in o;return l||Object.values(u).includes(c)?(e&&console.debug(`Port ${c} that was used last time for this server, ${l?"is also used by another server":"has been requested for another service"}. Trying to pick a new port.`),null):await(0,y.checkPort)(c)===!1?(e&&console.debug(`Port ${c}, that was used last time for this server, is not available. Trying to pick a new port.`),null):(e&&console.debug(`Using port ${c} for "${r}" as it was used last time and is available.`),c)}async function Ne(t){let{debug:e,pickedPorts:r,portKey:o,portsUsedByOtherServers:n,portsUsedByThisServerLastTime:a}=t,i=Math.max(pe,me,he,fe)+1,u=Object.values(r).filter(P=>P!==void 0),c=a?Le(a):[],l=[...u,...Object.keys(n).map(Number),...c],h=Math.min(Math.max(i,...l)+100,A),j=(0,I.difference)((0,I.range)(i,h),l),b={port:me,databasePort:pe,shadowDatabasePort:he,streamsPort:fe}[o];try{return await(0,y.getPort)({port:b in n||u.includes(b)||c.includes(b)?void 0:b,ports:j})}catch(P){if(P instanceof Error&&P.name==="GetPortError"&&h+1<=A)return e&&console.debug(`Expanding port lookup to range [${h+1}, ${A}].`),await(0,y.getPort)({portRange:[h+1,A]});throw P}}function G(t){return Number.isFinite(t)&&t>=0}function Ue(t,e){let r={},o;for(let n of e){let{databasePort:a,port:i,shadowDatabasePort:u}=n,c=je(n);if(n.name===t){o={databasePort:a,port:i,shadowDatabasePort:u,streamsPort:c};continue}r[a]=!0,r[i]=!0,r[u]=!0,G(c)&&(r[c]=!0)}return{portsUsedByOtherServers:r,portsUsedByThisServerLastTime:o}}function je(t){let e=t.experimental?.streams?.serverUrl;if(!e)return p;try{let r=Number(new URL(e).port);return Number.isInteger(r)&&r>0?r:p}catch{return p}}function Le(t){return[t.port,t.databasePort,t.shadowDatabasePort,t.streamsPort]}async function qe(t){let{debug:e,otherRequestedPorts:r,portKey:o,portsUsedByOtherServers:n,requestedPort:a}=t;if(a!==v){if(a in n)throw e&&console.error(`Port ${a} was requested for "${o}", but is already used by another server.`),new H(a);if(Object.values(r).includes(a))throw e&&console.error(`Port ${a} was requested for "${o}", but also for another key.`),new K(a);if((0,y.isUnsafePort)(a))throw e&&console.error(`Port ${a} was requested for "${o}", but is unsafe.`),new R(a);if(await(0,y.checkPort)(a)===!1)throw e&&console.error(`Port ${a} was requested for "${o}", but is not available.`),new R(a)}}var R=class extends Error{constructor(r){super(`Port \`${r}\` is not available.`);this.port=r}name="PortNotAvailableError"},K=class extends Error{constructor(r){super(`Port number \`${r}\` was requested twice. Please choose a different port for each service.`);this.port=r}name="PortRequestedTwiceError"},H=class extends Error{constructor(r){super(`Port number \`${r}\` belongs to another Prisma Dev server. Please choose a different port.`);this.port=r}name="PortBelongsToAnotherServerError"};var W=require("pathe");function Be(){return(0,W.join)(C.data,"durable-streams")}function Pe(t){return(0,W.join)(Be(),t)}var $=(0,s.pipe)((0,s.string)(),(0,s.url)()),be=(0,s.object)({connectionString:$,prismaORMConnectionString:(0,s.optional)($),terminalCommand:(0,s.optional)((0,s.string)())}),ge=(0,s.object)({url:$}),ye=(0,s.object)({serverUrl:$,sqlitePath:(0,s.pipe)((0,s.string)(),(0,s.minLength)(1)),streamName:(0,s.pipe)((0,s.string)(),(0,s.minLength)(1)),url:$}),Ce=(0,s.object)({queryInsights:(0,s.optional)(ye),streams:(0,s.optional)(ye)}),X=(0,s.pipe)((0,s.number)(),(0,s.integer)(),(0,s.minValue)(1)),Ve=(0,s.object)({database:be,http:ge,ppg:ge,shadowDatabase:be}),Fe=(0,s.object)({databasePort:X,experimental:(0,s.optional)(Ce),exports:(0,s.optional)(Ve),name:(0,s.pipe)((0,s.string)(),(0,s.minLength)(1)),pid:(0,s.optional)((0,s.pipe)((0,s.number)(),(0,s.integer)(),(0,s.minValue)(0))),port:X,shadowDatabasePort:X,version:(0,s.literal)("1")}),Z=Symbol("initialize"),Y="default",Ge=new Set(["durable-streams"]),f=class{_databasePort;databaseConnectTimeoutMillis;databaseIdleTimeoutMillis;debug;dryRun;name;persistenceMode;pid;shadowDatabaseConnectTimeoutMillis;shadowDatabaseIdleTimeoutMillis;_port;_shadowDatabasePort;_streamsPort;constructor(e){this._databasePort=e.databasePort??p,this.databaseConnectTimeoutMillis=e.databaseConnectTimeoutMillis??6e4,this.databaseIdleTimeoutMillis=e.databaseIdleTimeoutMillis??1/0,this.debug=e.debug??!1,this.dryRun=e.dryRun??!1,this.name=e.name??Y,this.persistenceMode=e.persistenceMode,this.pid=e.pid??Q.process.pid,this.shadowDatabaseConnectTimeoutMillis=e.shadowDatabaseConnectTimeoutMillis??this.databaseConnectTimeoutMillis,this.shadowDatabaseIdleTimeoutMillis=e.shadowDatabaseIdleTimeoutMillis??this.databaseIdleTimeoutMillis,this._port=e.port??p,this._shadowDatabasePort=e.shadowDatabasePort??p,this._streamsPort=e.streamsPort??p}static async createExclusively(e){let r=e?.dryRun!==!0&&e?.persistenceMode==="stateful"?new E(e):new z(e);return await r[Z](),r}static async fromServerDump(e){let{debug:r,name:o=Y}=e??{},n=D(o),a=E.getServerDumpPath(n),i=await ie(a);if(i==null)return r&&console.debug(`[State] No server dump file found at: ${a}`),null;r&&(console.debug(`[State] server dump file found at "${a}":`),console.debug(i));let{issues:u,output:c,success:l}=(0,s.safeParse)((0,s.pipe)((0,s.string)(),(0,s.parseJson)(),Fe),i);if(!l)throw r&&console.debug(`[State] Invalid server dump file at "${a}":
|
|
2
|
-
${JSON.stringify(u,null,2)}`),new Error(`Invalid Prisma Dev state for "${
|
|
3
|
-
`,{encoding:"utf-8"})}};async function
|
|
1
|
+
"use strict";var Te=Object.create;var O=Object.defineProperty;var Ee=Object.getOwnPropertyDescriptor;var ke=Object.getOwnPropertyNames;var Me=Object.getPrototypeOf,$e=Object.prototype.hasOwnProperty;var Oe=(t,e)=>{for(var r in e)O(t,r,{get:e[r],enumerable:!0})},ae=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of ke(e))!$e.call(t,n)&&n!==r&&O(t,n,{get:()=>e[n],enumerable:!(s=Ee(e,n))||s.enumerable});return t};var A=(t,e,r)=>(r=t!=null?Te(Me(t)):{},ae(e||!t||!t.__esModule?O(r,"default",{value:t,enumerable:!0}):r,t)),Ae=t=>ae(O({},"__esModule",{value:!0}),t);var We={};Oe(We,{ServerAlreadyRunningError:()=>q,ServerState:()=>f,ServerStateAlreadyExistsError:()=>j,deleteServer:()=>Xe,getServerStatus:()=>B,isServerRunning:()=>oe,killServer:()=>xe});module.exports=Ae(We);var T=require("fs/promises"),w=require("pathe"),S=require("proper-lockfile"),re=require("std-env"),o=require("valibot");var ne=require("fs"),p=require("fs/promises"),ie=require("util"),ue=require("zlib");var d=A(require("path"),1),V=A(require("os"),1),R=A(require("process"),1),g=V.default.homedir(),F=V.default.tmpdir(),{env:D}=R.default,Re=t=>{let e=d.default.join(g,"Library");return{data:d.default.join(e,"Application Support",t),config:d.default.join(e,"Preferences",t),cache:d.default.join(e,"Caches",t),log:d.default.join(e,"Logs",t),temp:d.default.join(F,t)}},Ie=t=>{let e=D.APPDATA||d.default.join(g,"AppData","Roaming"),r=D.LOCALAPPDATA||d.default.join(g,"AppData","Local");return{data:d.default.join(r,t,"Data"),config:d.default.join(e,t,"Config"),cache:d.default.join(r,t,"Cache"),log:d.default.join(r,t,"Log"),temp:d.default.join(F,t)}},Le=t=>{let e=d.default.basename(g);return{data:d.default.join(D.XDG_DATA_HOME||d.default.join(g,".local","share"),t),config:d.default.join(D.XDG_CONFIG_HOME||d.default.join(g,".config"),t),cache:d.default.join(D.XDG_CACHE_HOME||d.default.join(g,".cache"),t),log:d.default.join(D.XDG_STATE_HOME||d.default.join(g,".local","state"),t),temp:d.default.join(F,e,t)}};function K(t,{suffix:e="nodejs"}={}){if(typeof t!="string")throw new TypeError(`Expected a string, got ${typeof t}`);return e&&(t+=`-${e}`),R.default.platform==="darwin"?Re(t):R.default.platform==="win32"?Ie(t):Le(t)}var ce=A(require("zeptomatch"),1),G=K("prisma-dev"),et=(0,ie.promisify)(ue.unzip);function x(t){return`${G.data}/${t}`}function I(t){return t!=null&&typeof t=="object"&&"code"in t&&t.code==="ENOENT"}async function de(t){try{return await(0,p.readFile)(t,{encoding:"utf-8"})}catch(e){if(I(e))return null;throw e}}async function le(t){await(0,p.mkdir)(t,{recursive:!0})}async function me(t,e){try{return(await(0,p.readdir)(t,{withFileTypes:!0})).reduce((s,n)=>(n.isDirectory()&&!n.name.startsWith(".")&&(!e||(0,ce.default)(e,n.name))&&s.push(n.name),s),[])}catch(r){if(I(r))return[];throw r}}async function _(t){await(0,p.rm)(t,{force:!0,recursive:!0})}var pe=require("timers/promises"),k=require("std-env");function H(t,e){if(t==null)return!1;try{return k.process.kill?.(t,0)??!0}catch(r){return e&&console.error(`Error checking if process with PID ${t} exists:`,r),!1}}async function he(t,e){if(!k.process.kill)return!1;try{k.process.kill(t,"SIGTERM")}catch(s){return e&&console.error(`Error killing process with PID ${t}:`,s),!1}let r=0;do{if(!H(t,e))return!0;await(0,pe.setTimeout)(100)}while(++r<50);try{return k.process.kill(t,"SIGKILL")}catch(s){return e&&console.error(`Error forcefully killing process with PID ${t}:`,s),!1}}var y=require("get-port-please"),U=require("remeda"),fe=51214,be=51213,Pe=51215,ge=51216,L=65535,v=0,m=-1/0;async function Y(t){let{debug:e,name:r,requestedPorts:s,servers:n}=t,{portsUsedByOtherServers:a,portsUsedByThisServerLastTime:i}=je(r,n);e&&(console.debug(`ports used by other servers: ${Object.keys(a).join(", ")}`),console.debug(`ports used by "${r}" server last time: ${JSON.stringify(i)}`));let u={databasePort:m,port:m,shadowDatabasePort:m,streamsPort:m},c=["port","databasePort","shadowDatabasePort","streamsPort"];for(let l of c){let h=await Ne({debug:e,portKey:l,portsUsedByOtherServers:a,portsUsedByThisServerLastTime:i,requestedPorts:s})??await Ue({debug:e,pickedPorts:u,portKey:l,portsUsedByOtherServers:a,portsUsedByThisServerLastTime:i});e&&console.debug(`Got port for "${l}": ${h}`),u[l]=h}return e&&console.debug(`Picked ports: ${JSON.stringify(u)}`),u}async function Ne(t){let{debug:e,portKey:r,portsUsedByOtherServers:s,portsUsedByThisServerLastTime:n,requestedPorts:a}=t,{[r]:i,...u}=a;if(J(i))return await Ce({debug:e,otherRequestedPorts:u,portKey:r,portsUsedByOtherServers:s,requestedPort:i}),i;let c=n?.[r]??m;if(!J(c))return e&&console.debug(`No port specified for "${r}". Trying to pick a new port.`),null;let l=c in s;return l||Object.values(u).includes(c)?(e&&console.debug(`Port ${c} that was used last time for this server, ${l?"is also used by another server":"has been requested for another service"}. Trying to pick a new port.`),null):await(0,y.checkPort)(c)===!1?(e&&console.debug(`Port ${c}, that was used last time for this server, is not available. Trying to pick a new port.`),null):(e&&console.debug(`Using port ${c} for "${r}" as it was used last time and is available.`),c)}async function Ue(t){let{debug:e,pickedPorts:r,portKey:s,portsUsedByOtherServers:n,portsUsedByThisServerLastTime:a}=t,i=Math.max(fe,be,Pe,ge)+1,u=Object.values(r).filter(b=>b!==void 0),c=a?Be(a):[],l=[...u,...Object.keys(n).map(Number),...c],h=Math.min(Math.max(i,...l)+100,L),C=(0,U.difference)((0,U.range)(i,h),l),P={port:be,databasePort:fe,shadowDatabasePort:Pe,streamsPort:ge}[s];try{return await(0,y.getPort)({port:P in n||u.includes(P)||c.includes(P)?void 0:P,ports:C})}catch(b){if(b instanceof Error&&b.name==="GetPortError"&&h+1<=L)return e&&console.debug(`Expanding port lookup to range [${h+1}, ${L}].`),await(0,y.getPort)({portRange:[h+1,L]});throw b}}function J(t){return Number.isFinite(t)&&t>=0}function je(t,e){let r={},s;for(let n of e){let{databasePort:a,port:i,shadowDatabasePort:u}=n,c=qe(n);if(n.name===t){s={databasePort:a,port:i,shadowDatabasePort:u,streamsPort:c};continue}r[a]=!0,r[i]=!0,r[u]=!0,J(c)&&(r[c]=!0)}return{portsUsedByOtherServers:r,portsUsedByThisServerLastTime:s}}function qe(t){let e=t.experimental?.streams?.serverUrl;if(!e)return m;try{let r=Number(new URL(e).port);return Number.isInteger(r)&&r>0?r:m}catch{return m}}function Be(t){return[t.port,t.databasePort,t.shadowDatabasePort,t.streamsPort]}async function Ce(t){let{debug:e,otherRequestedPorts:r,portKey:s,portsUsedByOtherServers:n,requestedPort:a}=t;if(a!==v){if(a in n)throw e&&console.error(`Port ${a} was requested for "${s}", but is already used by another server.`),new W(a);if(Object.values(r).includes(a))throw e&&console.error(`Port ${a} was requested for "${s}", but also for another key.`),new X(a);if((0,y.isUnsafePort)(a))throw e&&console.error(`Port ${a} was requested for "${s}", but is unsafe.`),new N(a);if(await(0,y.checkPort)(a)===!1)throw e&&console.error(`Port ${a} was requested for "${s}", but is not available.`),new N(a)}}var N=class extends Error{constructor(r){super(`Port \`${r}\` is not available.`);this.port=r}name="PortNotAvailableError"},X=class extends Error{constructor(r){super(`Port number \`${r}\` was requested twice. Please choose a different port for each service.`);this.port=r}name="PortRequestedTwiceError"},W=class extends Error{constructor(r){super(`Port number \`${r}\` belongs to another Prisma Dev server. Please choose a different port.`);this.port=r}name="PortBelongsToAnotherServerError"};var z=require("pathe");function Ve(){return(0,z.join)(G.data,"durable-streams")}function ye(t){return(0,z.join)(Ve(),t)}var $=(0,o.pipe)((0,o.string)(),(0,o.url)()),we=(0,o.object)({connectionString:$,prismaORMConnectionString:(0,o.optional)($),terminalCommand:(0,o.optional)((0,o.string)())}),ve=(0,o.object)({url:$}),Se=(0,o.object)({serverUrl:$,sqlitePath:(0,o.pipe)((0,o.string)(),(0,o.minLength)(1)),streamName:(0,o.pipe)((0,o.string)(),(0,o.minLength)(1)),url:$}),Fe=(0,o.object)({queryInsights:(0,o.optional)(Se),streams:(0,o.optional)(Se)}),Q=(0,o.pipe)((0,o.number)(),(0,o.integer)(),(0,o.minValue)(1)),Ke=(0,o.object)({database:we,http:ve,ppg:ve,shadowDatabase:we}),Ge=(0,o.object)({databasePort:Q,experimental:(0,o.optional)(Fe),exports:(0,o.optional)(Ke),name:(0,o.pipe)((0,o.string)(),(0,o.minLength)(1)),pid:(0,o.optional)((0,o.pipe)((0,o.number)(),(0,o.integer)(),(0,o.minValue)(0))),port:Q,shadowDatabasePort:Q,version:(0,o.literal)("1")}),se=Symbol("initialize"),He=1e4,Z="default",Je=new Set(["durable-streams"]);function De(t){return t instanceof Error&&"code"in t&&t.code==="ELOCKED"}async function ee(t){try{return await(0,T.stat)(t)}catch(e){if(I(e))return null;throw e}}var f=class{_databasePort;databaseConnectTimeoutMillis;databaseIdleTimeoutMillis;debug;dryRun;name;persistenceMode;pid;shadowDatabaseConnectTimeoutMillis;shadowDatabaseIdleTimeoutMillis;_port;_shadowDatabasePort;_streamsPort;constructor(e){this._databasePort=e.databasePort??m,this.databaseConnectTimeoutMillis=e.databaseConnectTimeoutMillis??6e4,this.databaseIdleTimeoutMillis=e.databaseIdleTimeoutMillis??1/0,this.debug=e.debug??!1,this.dryRun=e.dryRun??!1,this.name=e.name??Z,this.persistenceMode=e.persistenceMode,this.pid=e.pid??re.process.pid,this.shadowDatabaseConnectTimeoutMillis=e.shadowDatabaseConnectTimeoutMillis??this.databaseConnectTimeoutMillis,this.shadowDatabaseIdleTimeoutMillis=e.shadowDatabaseIdleTimeoutMillis??this.databaseIdleTimeoutMillis,this._port=e.port??m,this._shadowDatabasePort=e.shadowDatabasePort??m,this._streamsPort=e.streamsPort??m}static async createExclusively(e){let r=e?.dryRun!==!0&&e?.persistenceMode==="stateful"?new M(e):new te(e);return await r[se](),r}static async fromServerDump(e){let{debug:r,name:s=Z}=e??{},n=x(s),a=M.getServerDumpPath(n),i=await de(a);if(i==null)return r&&console.debug(`[State] No server dump file found at: ${a}`),null;r&&(console.debug(`[State] server dump file found at "${a}":`),console.debug(i));let{issues:u,output:c,success:l}=(0,o.safeParse)((0,o.pipe)((0,o.string)(),(0,o.parseJson)(),Ge),i);if(!l)throw r&&console.debug(`[State] Invalid server dump file at "${a}":
|
|
2
|
+
${JSON.stringify(u,null,2)}`),new Error(`Invalid Prisma Dev state for "${s}".`);return new M({databasePort:c.databasePort,debug:r,dryRun:!1,name:s,pid:c.pid,port:c.port,serverDump:c,shadowDatabasePort:c.shadowDatabasePort})}static async scan(e){let{debug:r,globs:s}=e??{},n=(0,w.join)(x(Z),"..");r&&console.debug(`[State] scanning for server states in: ${n}`);let a=(await me(n,s)).filter(i=>!Je.has(i));return r&&console.debug(`[State] found server names: ${JSON.stringify(a)}`),await Promise.all(a.map(i=>B(i,e)))}get databasePort(){return this._databasePort}set databasePort(e){this.#t("databasePort",e)}get port(){return this._port}set port(e){this.#t("port",e)}get shadowDatabasePort(){return this._shadowDatabasePort}get streamsPort(){return this._streamsPort}set shadowDatabasePort(e){this.#t("shadowDatabasePort",e)}#t(e,r){if(r<0||!Number.isInteger(r))throw new Error(`Invalid port number: ${r}`);let s=`_${e}`;if(this[s]!==v&&this[s]!==r)throw new Error(`\`${e}\` is already set to ${this[s]}, cannot change it to ${r}`);this[s]=r}},te=class extends f{constructor(e){super({...e,databasePort:e?.databasePort||v,persistenceMode:"stateless",port:e?.port||v,shadowDatabasePort:e?.shadowDatabasePort||v,streamsPort:e?.streamsPort||v})}get databaseDumpPath(){return"<DUMP_PATH>"}get pgliteDataDirPath(){return"memory://"}async[se](){let e;try{e=await f.scan({debug:this.debug,onlyMetadata:!0})}catch(s){this.debug&&console.warn("[State] failed to scan for existing servers, assuming filesystem does not exist or other reasons.",s),e=[]}let r=await Y({debug:this.debug,name:this.dryRun?this.name:"",requestedPorts:{databasePort:this.databasePort,port:this.port,shadowDatabasePort:this.shadowDatabasePort,streamsPort:this.streamsPort},servers:e});this._databasePort=r.databasePort,this._port=r.port,this._shadowDatabasePort=r.shadowDatabasePort,this._streamsPort=r.streamsPort}async close(){}async writeServerDump(){}},M=class t extends f{#t;#a;#e;#r;#n;#i;#o;#s;constructor(e){super({...e,persistenceMode:"stateful"}),this.#o=!1,this.#e=x(this.name),this.#t=(0,w.join)(this.#e,".lock-break"),this.#a=(0,w.join)(this.#e,"db_dump.bak"),this.#r=(0,w.join)(this.#e,".lock"),this.#n=(0,w.join)(this.#e,".pglite"),this.#s=e?.serverDump??null,this.#i=t.getServerDumpPath(this.#e)}static getServerDumpPath(e){return(0,w.join)(e,"server.json")}get databaseDumpPath(){return this.#a}get exports(){return this.#s?.exports}get experimental(){return this.#s?.experimental}get pgliteDataDirPath(){return this.#n}async[se](){await le(this.#e),this.debug&&console.debug(`[State] using data directory: ${this.#e}`);try{await this.#u(),this.debug&&console.debug(`[State] obtained lock on: ${this.#e}`);let e=await f.scan({debug:this.debug,onlyMetadata:!0}),r=await Y({debug:this.debug,name:this.name,requestedPorts:{databasePort:this.databasePort,port:this.port,shadowDatabasePort:this.shadowDatabasePort,streamsPort:this.streamsPort},servers:e});this._databasePort=r.databasePort,this._port=r.port,this._shadowDatabasePort=r.shadowDatabasePort,this._streamsPort=r.streamsPort,await this.writeServerDump()}catch(e){throw De(e)?new q(this):e}}async#u(){try{await(0,S.lock)(this.#e,{lockfilePath:this.#r});return}catch(e){if(!De(e)||!await this.#c())throw e}await(0,S.lock)(this.#e,{lockfilePath:this.#r})}async#c(){let e=await ee(this.#r);if(e==null)return!0;let r=await B(this.name,{debug:this.debug});if(oe(r)||r.status==="unknown"||!await this.#d())return!1;try{let s=await ee(this.#r);return s==null?!0:s.ino!==e.ino||s.mtimeMs!==e.mtimeMs?!1:(this.debug&&console.debug(`[State] breaking lock left behind by dead server "${this.name}" (status: ${r.status})`),await _(this.#r),!0)}finally{await _(this.#t)}}async#d(){for(let e=0;e<2;e++){try{return await(0,T.mkdir)(this.#t),!0}catch(s){if(!(s instanceof Error&&"code"in s&&s.code==="EEXIST"))throw s}let r=await ee(this.#t);if(r!=null&&Date.now()-r.mtimeMs<He)return!1;await _(this.#t)}return!1}async close(){if(!this.#o)try{await(0,S.unlock)(this.#e,{lockfilePath:this.#r}),this.#o=!0,this.debug&&console.debug(`[State] released lock on: ${this.#e}`)}catch(e){throw this.debug&&console.error(`[State] failed to release lock on: ${this.#e}`,e),e}}async writeServerDump(e,r){this.#s={name:this.name,version:"1",pid:re.process.pid,port:this.port,databasePort:this.databasePort,experimental:r,shadowDatabasePort:this.shadowDatabasePort,exports:e},await(0,T.writeFile)(this.#i,`${JSON.stringify(this.#s,null,2)}
|
|
3
|
+
`,{encoding:"utf-8"})}};async function Xe(t,e){await xe(t,e);let r=typeof t=="string"?t:t.name,s=x(r);await _(s),await _(ye(r))}async function B(t,e){let{debug:r,onlyMetadata:s}=e||{},n=typeof t=="string"?t:t.name,a=typeof t!="string"?t:void 0,i={databasePort:a?.databasePort??-1,experimental:a?.experimental,exports:a?.exports,name:n,pid:a?.pid,port:a?.port??-1,shadowDatabasePort:a?.shadowDatabasePort??-1,version:"1"};try{let u=a||await f.fromServerDump({debug:r,name:n});if(!u)return r&&console.debug(`[State] no server state found for name: ${n}`),{...i,status:"no_such_server"};i.databasePort=u.databasePort,i.experimental=u.experimental,i.exports=u.exports,i.pid=u.pid,i.port=u.port,i.shadowDatabasePort=u.shadowDatabasePort;let{exports:c,pid:l}=u;if(s)return{...i,status:"unknown"};if(!H(l,r))return r&&console.debug(`[State] server state for "${n}" has no running process with PID: ${l}`),{...i,status:"not_running"};let h=x(n);try{if(!await(0,S.check)(h,{lockfilePath:(0,w.join)(h,".lock")}))return r&&console.debug(`[State] server state for "${n}" is not locked, indicating it is not running.`),{...i,status:"not_running"}}catch(_e){r&&console.error(`[State] server state for "${n}" failed to check lock:`,_e)}if(!c)return{...i,status:"starting_up"};let{http:C}=c,P=await fetch(`${C.url}/health`,{headers:{connection:"close"}});if(!P.ok)return r&&console.debug(`[State] server state for "${n}" is not live: ${JSON.stringify(P)}`),{...i,status:"not_running"};let b=await P.json();return b.name!==t?(r&&console.debug(`[State] server state for "${n}" has mismatched health response: ${JSON.stringify(b)}`),{...i,status:"unknown"}):(r&&console.debug(`[State] server state for "${t}" is live: ${JSON.stringify(b)}`),{...i,status:"running"})}catch(u){return r&&console.error(`[State] failed to get server status for "${n}":`,u),{...i,status:"error"}}}function oe(t){let{status:e}=t;return e==="running"||e==="starting_up"}async function xe(t,e){let{pid:r,...s}=typeof t=="string"?await B(t,{debug:e}):t;if(!oe(s))return!1;let n=await f.fromServerDump({debug:e,name:s.name});if(r==null){e&&console.debug(`[State] No PID found for server "${s.name}" to kill.`);try{await n?.close()}catch{}return!1}let a=await he(r,e);try{await n?.close()}catch{}return a}var j=class extends Error{name="ServerStateAlreadyExistsError";constructor(e){super(`A Prisma Dev server with the name "${e}" is already running.`)}},q=class extends j{#t;name="ServerAlreadyRunningError";constructor(e){super(e.name),this.#t=e}get server(){return f.fromServerDump({debug:this.#t.debug,name:this.#t.name})}};0&&(module.exports={ServerAlreadyRunningError,ServerState,ServerStateAlreadyExistsError,deleteServer,getServerStatus,isServerRunning,killServer});
|
package/dist/state.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{f as a,g as b,h as c,i as d,j as e,k as f,l as g}from"./chunk-
|
|
1
|
+
import{f as a,g as b,h as c,i as d,j as e,k as f,l as g}from"./chunk-GK3XD2W4.js";import"./chunk-EDFHV3AK.js";import"./chunk-ZEM5OLPM.js";export{g as ServerAlreadyRunningError,a as ServerState,f as ServerStateAlreadyExistsError,b as deleteServer,c as getServerStatus,d as isServerRunning,e as killServer};
|