@prisma/cli-dev
Version:
Dev CLI for Prisma
10 lines (7 loc) • 5.78 kB
JavaScript
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
import{a as x,b as N,e as I}from"./chunk-FODIIZRP.js";import{a as l,b as f,f as E}from"./chunk-SZYQ5TDI.js";import{a as C,d,e as P,f as R}from"./chunk-4QNO2WQL.js";import"./chunk-M6TFCQLD.js";import{startPrismaDevServer as B}from"@prisma/dev";function A(e){let t,r,o=new Promise((s,p)=>{t=s,r=p}),n=s=>{n=i=null,r(s),e?.onRejected?.(s),e?.onFulfilled?.()},i=s=>{i=n=null,t(s),e?.onResolved?.(s),e?.onFulfilled?.()};return{isFulfilled:()=>i===n,promise:o,reject:s=>n?.(s),resolve:s=>i?.(s)}}var T="0.14.0";var a={database:"db-port",server:"port",shadow_database:"shadow-db-port"},O={...R,[a.database]:{alias:"P",description:"Port number the database server will listen on.",required:!1,type:"string"},detach:{alias:"d",description:"Run the server in the background.",required:!1,type:"boolean"},name:{alias:"n",default:"default",description:"Name of the server. Helps keep state isolated between different projects. Defaults to `default`.",required:!1,type:"string"},[a.server]:{alias:"p",description:"Main port number the Prisma Dev server will listen on.",required:!1,type:"string"},[a.shadow_database]:{description:"Port number the shadow database server will listen on.",required:!1,type:"string"}},L=/^[a-zA-Z0-9-_]+$/;function k(e){let{[a.server]:t,[a.database]:r,[a.shadow_database]:o,debug:n,detach:i,name:s}=e.args,p=r?Number(r):void 0,c=t?Number(t):void 0,u=o?Number(o):void 0;return t&&Number.isNaN(c)?(console.error(`Invalid server port number provided. Please provide a valid port number in \`--${a.server}\`.`),process.exit(1)):r&&Number.isNaN(p)?(console.error(`Invalid database port number provided. Please provide a valid port number in \`--${a.database}\`.`),process.exit(1)):o&&Number.isNaN(u)?(console.error(`Invalid shadow database port number provided. Please provide a valid port number in \`--${a.shadow_database}\`.`),process.exit(1)):c!=null&&c===p?(console.error(`The server port and database port cannot be the same. Please provide different port numbers in \`--${a.server}\` and/or \`--${a.database}\`.`),process.exit(1)):p!=null&&p===u?(console.error(`The database port and shadow database port cannot be the same. Please provide different port numbers in \`--${a.database}\` and/or \`--${a.shadow_database}\`.`),process.exit(1)):c!=null&&c===u?(console.error(`The server port and shadow database port cannot be the same. Please provide different port numbers in \`--${a.server}\` and/or \`--${a.shadow_database}\`.`),process.exit(1)):L.test(s)?{databasePort:p,debug:n,detach:i,name:s,serverPort:c,shadowDatabasePort:u}:(console.error("Invalid name provided. The name can only contain letters, numbers, dashes, and underscores. Please provide a valid name in `--name`."),process.exit(1))}import{PortNotAvailableError as q,ServerAlreadyRunningError as H}from"@prisma/dev";async function v(e,t,r){if(e instanceof H)try{let n=await e.server;if(!n)return await v("Something went wrong, try again!",t,r);t.warning(` Skipped! \u{1F60C}
Your ${E} server ${f(n.name)} is already running and listening on ports ${I([n.port,n.databasePort,n.shadowDatabasePort])}.
To start a different server, use the ${`${f("-n")}/${f("--name")}`} flag with another name.
`);return}catch(n){return await v(n,t,r)}let{args:o}=r;throw d.error(e instanceof q?`Prisma Dev Error: port number \`${e.port}\` is already in use. Please pass a different port number in the \`--${o.port===String(e.port)?"port":o.databasePort===String(e.port)?"database":"shadow_database"}\` option.`:e),l.exitCode||=1,e}function _(e){l.on?.("uncaughtException",t=>{if("code"in t&&t.code==="ECONNRESET"){e?.debug&&d.error("uncaught ECONNRESET");return}e?.onError?.(t)})}function M(e){let t={shutdownAlreadyStarted:!1};l.once?.("SIGINT",$("SIGINT",e,t)),l.once?.("SIGTERM",$("SIGTERM",e,t))}function $(e,t,r){let{debug:o,onFailure:n,onSuccess:i,server:s}=t;return()=>{if(r.shutdownAlreadyStarted){o&&d.debug(`Received ${e} signal, ignoring.`);return}r.shutdownAlreadyStarted=!0,o&&d.debug(`${e} signal receieved.`),o&&d.log(`
Closing Prisma Dev...
`),l.exitCode=e==="SIGINT"?130:143,s.close().then(()=>{o&&d.debug("Prisma Dev server closed."),e==="SIGINT"&&(l.exitCode=0),i()}).catch(n)}}var U={description:"Create and run a new server",name:"prisma dev",version:T},b="\v",h={args:O,meta:U,run:async e=>{let{subCommands:t}=e.cmd,r=t?e.rawArgs.find(m=>!m.startsWith("-")):void 0;if(r&&r!==b&&r in t)return;let{debug:o,detach:n,name:i,serverPort:s,...p}=k(e);if(n){let m=await x(i);return d.log(m.database.connectionString)}let{renderContent:c,renderIntro:u,renderOutro:G,spinner:g}=N(i);try{let m=await V({...p,debug:o,name:i,port:s,renderIntro:u}),w=new AbortController,{isFulfilled:D,promise:j,reject:S,resolve:y}=A({onFulfilled:()=>w.abort()});M({debug:o,onFailure:S,onSuccess:y,server:m}),_({debug:o,onError:S}),await c({abortSignal:w.signal,debug:o,isClosed:D,onQuit:async()=>{await m.close(),y()},server:m,spinner:g}),await j,await G(),l.exitCode||=0}catch(m){await v(m,g,e)}},setup(e){e.args.debug&&(d.level=C.debug),d.options.formatOptions.date=!1},subCommands:{[b]:{},ls:()=>import("./list-URPVLN6C.js").then(e=>e.ListCommand),rm:()=>import("./remove-LXPTJUNN.js").then(e=>e.RemoveCommand),start:()=>import("./start-5XKEVPIK.js").then(e=>e.StartCommand),stop:()=>import("./stop-LEO7ZSSO.js").then(e=>e.StopCommand)}};async function V(e){let{renderIntro:t,...r}=e,[,o]=await Promise.allSettled([e.renderIntro(),B({...r,persistenceMode:"stateful"})]);if(o.status==="rejected")throw o.reason;return o.value}async function we(e,t){let[r]=e;r==="-v"&&(e[0]="--version"),r&&!(r in h.subCommands)&&r!=="--help"&&r!=="-h"&&r!=="--version"&&r!=="-v"&&e.unshift(b),await P(h,{rawArgs:e})}export{we as run};