simplecloud 0.0.1-beta.44 → 0.0.1-beta.45
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/cli.js +26 -26
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -178,7 +178,7 @@ ${q.comment}`:q.comment}this.doc.range[2]=q.offset;break}default:this.errors.pus
|
|
|
178
178
|
`)}catch{return""}}async attach(A,q){let F=NL(A);if((await this.status(A,q)).status!=="running")throw new Error(`Component ${A} is not running`);return new Promise((E,Z)=>{let g=UBA("screen",["-r",F],{stdio:"inherit"});g.on("error",Z),g.on("close",()=>E())})}}var UqA;var QBA=NA(()=>{dY();_x();UqA=_Hq(OHq)});var OBA={};RZ(OBA,{DockerRunner:()=>XBA});import{exec as HHq,spawn as jHq}from"child_process";import*as JBA from"path";import{promisify as VHq}from"util";class XBA{type="docker";async isAvailable(){if(!await QU("docker"))return!1;try{return await I0("docker info"),!0}catch{return!1}}async start(A){let{componentId:q,installationDir:F,jarPath:K,javaArgs:E=[],env:Z={}}=A,g=r2(q),$=await this.status(q,F);if($.status==="running")return{success:!1,message:`Component ${q} is already running in container "${g}"`,containerId:$.containerId};await I0(`docker rm -f ${g} 2>/dev/null || true`).catch(()=>{});let U=JBA.basename(K),G="/app",Y=["run","-d","--name",g,"--restart","unless-stopped","-v",`${F}:${G}`,"-w",G];for(let[Q,J]of Object.entries(Z))Y.push("-e",`${Q}=${J}`);Y.push(NHq),Y.push("java"),Y.push(...E),Y.push("-jar"),Y.push(U);try{let{stdout:Q}=await I0(`docker ${Y.join(" ")}`),J=Q.trim().slice(0,12);if(await new Promise((_)=>setTimeout(_,1000)),(await this.status(q,F)).status==="running")return{success:!0,message:`Started ${q} in container "${g}"`,containerId:J};return{success:!1,message:`Container started but exited immediately. Logs:
|
|
179
179
|
${await this.logs(q,F,20)}`}}catch(Q){let J=Q instanceof Error?Q.message:String(Q);return{success:!1,message:`Failed to start ${q}: ${J}`}}}async stop(A,q){let F=r2(A);try{return await I0(`docker stop ${F}`),await I0(`docker rm ${F}`),{success:!0,message:`Stopped and removed container "${F}"`}}catch(K){let E=K instanceof Error?K.message:String(K);if(E.includes("No such container"))return{success:!0,message:`Container "${F}" was not running`};return{success:!1,message:`Failed to stop ${A}: ${E}`}}}async status(A,q){let F=r2(A);try{let{stdout:K}=await I0(`docker inspect --format '{{.State.Running}} {{.Id}} {{.State.StartedAt}}' ${F}`),[E,Z,g]=K.trim().split(" ");if(E==="true"){let $=new Date(g??Date.now()),U=Math.floor((Date.now()-$.getTime())/1000);return{status:"running",containerId:Z?.slice(0,12),uptime:U}}return{status:"stopped"}}catch{return{status:"stopped"}}}async logs(A,q,F=100){let K=r2(A);try{let{stdout:E}=await I0(`docker logs --tail ${F} ${K}`);return E}catch{return""}}async attach(A,q){let F=r2(A);if((await this.status(A,q)).status!=="running")throw new Error(`Component ${A} is not running`);return new Promise((E,Z)=>{let g=jHq("docker",["attach",F],{stdio:"inherit"});g.on("error",Z),g.on("close",()=>E())})}}var I0,NHq="eclipse-temurin:21-jre";var _BA=NA(()=>{dY();_x();I0=VHq(HHq)});var VBA={};RZ(VBA,{NativeRunner:()=>jBA});import{spawn as WHq}from"child_process";import*as JU from"fs/promises";import*as GX from"path";class jBA{type="native";async isAvailable(){return!0}async start(A){let{componentId:q,installationDir:F,jarPath:K,javaArgs:E=[],env:Z={}}=A,g=await this.status(q,F);if(g.status==="running")return{success:!1,message:`Component ${q} is already running (PID: ${g.pid})`,pid:g.pid};let $=GX.join(F,"logs");await JU.mkdir($,{recursive:!0});let U=GX.join($,`${q}.log`),G=GX.join($,`${q}.error.log`),Q=bE()==="windows"?"java.exe":"java",J=[...E,"-jar",K],X={...process.env,...Z};try{let O=await JU.open(U,"a"),_=await JU.open(G,"a"),V=WHq(Q,J,{cwd:F,env:X,detached:!0,stdio:["ignore",O.fd,_.fd]}),D=V.pid;if(!D)return await O.close(),await _.close(),{success:!1,message:`Failed to start ${q}: No PID returned`};if(V.unref(),await O.close(),await _.close(),await LHq(F,q,{pid:D,startedAt:new Date().toISOString()}),await new Promise((T)=>setTimeout(T,500)),(await this.status(q,F)).status==="running")return{success:!0,message:`Started ${q} (PID: ${D})`,pid:D};return await t2(F,q),{success:!1,message:`Process started but exited immediately. Check logs at ${U}`}}catch(O){let _=O instanceof Error?O.message:String(O);return{success:!1,message:`Failed to start ${q}: ${_}`}}}async stop(A,q){let F=await HBA(q,A);if(!F)return{success:!0,message:`Component ${A} is not running (no PID file)`};if(!await GqA(F.pid))return await t2(q,A),{success:!0,message:`Component ${A} was not running (stale PID file removed)`};try{process.kill(F.pid,"SIGTERM");for(let E=0;E<10;E++)if(await new Promise((g)=>setTimeout(g,500)),!await GqA(F.pid))return await t2(q,A),{success:!0,message:`Stopped ${A} (PID: ${F.pid})`};return process.kill(F.pid,"SIGKILL"),await new Promise((E)=>setTimeout(E,500)),await t2(q,A),{success:!0,message:`Force stopped ${A} (PID: ${F.pid})`}}catch(E){let Z=E instanceof Error?E.message:String(E);return await t2(q,A),{success:!1,message:`Failed to stop ${A}: ${Z}`}}}async status(A,q){let F=await HBA(q,A);if(!F)return{status:"stopped"};if(!await GqA(F.pid))return await t2(q,A),{status:"stopped"};let E=new Date(F.startedAt),Z=Math.floor((Date.now()-E.getTime())/1000);return{status:"running",pid:F.pid,uptime:Z}}async logs(A,q,F=100){let K=GX.join(q,"logs",`${A}.log`);try{return(await JU.readFile(K,"utf-8")).split(`
|
|
180
180
|
`).slice(-F).join(`
|
|
181
|
-
`)}catch{return""}}async attach(A,q){throw new Error("Attach is not supported for native runner. Use 'logs' command instead.")}}var YqA=(A,q)=>{return GX.join(A,".pids",`${q}.json`)},HBA=async(A,q)=>{let F=YqA(A,q);try{let K=await JU.readFile(F,"utf-8");return JSON.parse(K)}catch{return null}},LHq=async(A,q,F)=>{let K=YqA(A,q),E=GX.dirname(K);await JU.mkdir(E,{recursive:!0}),await JU.writeFile(K,JSON.stringify(F,null,2),"utf-8")},t2=async(A,q)=>{let F=YqA(A,q);await JU.unlink(F).catch(()=>{})},GqA=async(A)=>{try{return process.kill(A,0),!0}catch{return!1}};var NBA=NA(()=>{dY()});var QqA=(A)=>{switch(A){case"linux":case"darwin":return"screen";case"windows":return"native"}},R0=async(A)=>{switch(A){case"screen":return QU("screen");case"docker":return QU("docker");case"native":return!0}},s2=async(A)=>{let q=bE();if(A){if(await R0(A))return A}let F=QqA(q);if(await R0(F))return F;if(q!=="windows"){if(await R0("docker"))return"docker"}if(q==="windows")return"native";throw new Error(`No runner available. Please install screen or docker for ${q}.`)},WBA,e2=async(A)=>{let q=WBA.get(A);if(q)return q;let F;switch(A){case"screen":{let{ScreenRunner:K}=await Promise.resolve().then(() => (QBA(),YBA));F=new K;break}case"docker":{let{DockerRunner:K}=await Promise.resolve().then(() => (_BA(),OBA));F=new K;break}case"native":{let{NativeRunner:K}=await Promise.resolve().then(() => (NBA(),VBA));F=new K;break}}return WBA.set(A,F),F},NL=(A)=>{return`simplecloud-${A}`},r2=(A)=>{return`simplecloud-${A}`};var _x=NA(()=>{dY();WBA=new Map});var Zk="0.0.1-beta.
|
|
181
|
+
`)}catch{return""}}async attach(A,q){throw new Error("Attach is not supported for native runner. Use 'logs' command instead.")}}var YqA=(A,q)=>{return GX.join(A,".pids",`${q}.json`)},HBA=async(A,q)=>{let F=YqA(A,q);try{let K=await JU.readFile(F,"utf-8");return JSON.parse(K)}catch{return null}},LHq=async(A,q,F)=>{let K=YqA(A,q),E=GX.dirname(K);await JU.mkdir(E,{recursive:!0}),await JU.writeFile(K,JSON.stringify(F,null,2),"utf-8")},t2=async(A,q)=>{let F=YqA(A,q);await JU.unlink(F).catch(()=>{})},GqA=async(A)=>{try{return process.kill(A,0),!0}catch{return!1}};var NBA=NA(()=>{dY()});var QqA=(A)=>{switch(A){case"linux":case"darwin":return"screen";case"windows":return"native"}},R0=async(A)=>{switch(A){case"screen":return QU("screen");case"docker":return QU("docker");case"native":return!0}},s2=async(A)=>{let q=bE();if(A){if(await R0(A))return A}let F=QqA(q);if(await R0(F))return F;if(q!=="windows"){if(await R0("docker"))return"docker"}if(q==="windows")return"native";throw new Error(`No runner available. Please install screen or docker for ${q}.`)},WBA,e2=async(A)=>{let q=WBA.get(A);if(q)return q;let F;switch(A){case"screen":{let{ScreenRunner:K}=await Promise.resolve().then(() => (QBA(),YBA));F=new K;break}case"docker":{let{DockerRunner:K}=await Promise.resolve().then(() => (_BA(),OBA));F=new K;break}case"native":{let{NativeRunner:K}=await Promise.resolve().then(() => (NBA(),VBA));F=new K;break}}return WBA.set(A,F),F},NL=(A)=>{return`simplecloud-${A}`},r2=(A)=>{return`simplecloud-${A}`};var _x=NA(()=>{dY();WBA=new Map});var Zk="0.0.1-beta.45";var N6A=(A=0)=>(q)=>`\x1B[${q+A}m`,W6A=(A=0)=>(q)=>`\x1B[${38+A};5;${q}m`,L6A=(A=0)=>(q,F,K)=>`\x1B[${38+A};2;${q};${F};${K}m`,eF={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},C2q=Object.keys(eF.modifier),czA=Object.keys(eF.color),uzA=Object.keys(eF.bgColor),S2q=[...czA,...uzA];function fzA(){let A=new Map;for(let[q,F]of Object.entries(eF)){for(let[K,E]of Object.entries(F))eF[K]={open:`\x1B[${E[0]}m`,close:`\x1B[${E[1]}m`},F[K]=eF[K],A.set(E[0],E[1]);Object.defineProperty(eF,q,{value:F,enumerable:!1})}return Object.defineProperty(eF,"codes",{value:A,enumerable:!1}),eF.color.close="\x1B[39m",eF.bgColor.close="\x1B[49m",eF.color.ansi=N6A(),eF.color.ansi256=W6A(),eF.color.ansi16m=L6A(),eF.bgColor.ansi=N6A(10),eF.bgColor.ansi256=W6A(10),eF.bgColor.ansi16m=L6A(10),Object.defineProperties(eF,{rgbToAnsi256:{value(q,F,K){if(q===F&&F===K){if(q<8)return 16;if(q>248)return 231;return Math.round((q-8)/247*24)+232}return 16+36*Math.round(q/255*5)+6*Math.round(F/255*5)+Math.round(K/255*5)},enumerable:!1},hexToRgb:{value(q){let F=/[a-f\d]{6}|[a-f\d]{3}/i.exec(q.toString(16));if(!F)return[0,0,0];let[K]=F;if(K.length===3)K=[...K].map((Z)=>Z+Z).join("");let E=Number.parseInt(K,16);return[E>>16&255,E>>8&255,E&255]},enumerable:!1},hexToAnsi256:{value:(q)=>eF.rgbToAnsi256(...eF.hexToRgb(q)),enumerable:!1},ansi256ToAnsi:{value(q){if(q<8)return 30+q;if(q<16)return 90+(q-8);let F,K,E;if(q>=232)F=((q-232)*10+8)/255,K=F,E=F;else{q-=16;let $=q%36;F=Math.floor(q/36)/5,K=Math.floor($/6)/5,E=$%6/5}let Z=Math.max(F,K,E)*2;if(Z===0)return 30;let g=30+(Math.round(E)<<2|Math.round(K)<<1|Math.round(F));if(Z===2)g+=60;return g},enumerable:!1},rgbToAnsi:{value:(q,F,K)=>eF.ansi256ToAnsi(eF.rgbToAnsi256(q,F,K)),enumerable:!1},hexToAnsi:{value:(q)=>eF.ansi256ToAnsi(eF.hexToAnsi256(q)),enumerable:!1}}),eF}var dzA=fzA(),UG=dzA;import gk from"process";import pzA from"os";import M6A from"tty";function HU(A,q=globalThis.Deno?globalThis.Deno.args:gk.argv){let F=A.startsWith("-")?"":A.length===1?"-":"--",K=q.indexOf(F+A),E=q.indexOf("--");return K!==-1&&(E===-1||K<E)}var{env:AK}=gk,mL;if(HU("no-color")||HU("no-colors")||HU("color=false")||HU("color=never"))mL=0;else if(HU("color")||HU("colors")||HU("color=true")||HU("color=always"))mL=1;function lzA(){if("FORCE_COLOR"in AK){if(AK.FORCE_COLOR==="true")return 1;if(AK.FORCE_COLOR==="false")return 0;return AK.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(AK.FORCE_COLOR,10),3)}}function azA(A){if(A===0)return!1;return{level:A,hasBasic:!0,has256:A>=2,has16m:A>=3}}function nzA(A,{streamIsTTY:q,sniffFlags:F=!0}={}){let K=lzA();if(K!==void 0)mL=K;let E=F?mL:K;if(E===0)return 0;if(F){if(HU("color=16m")||HU("color=full")||HU("color=truecolor"))return 3;if(HU("color=256"))return 2}if("TF_BUILD"in AK&&"AGENT_NAME"in AK)return 1;if(A&&!q&&E===void 0)return 0;let Z=E||0;if(AK.TERM==="dumb")return Z;if(gk.platform==="win32"){let g=pzA.release().split(".");if(Number(g[0])>=10&&Number(g[2])>=10586)return Number(g[2])>=14931?3:2;return 1}if("CI"in AK){if(["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some((g)=>(g in AK)))return 3;if(["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some((g)=>(g in AK))||AK.CI_NAME==="codeship")return 1;return Z}if("TEAMCITY_VERSION"in AK)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(AK.TEAMCITY_VERSION)?1:0;if(AK.COLORTERM==="truecolor")return 3;if(AK.TERM==="xterm-kitty")return 3;if(AK.TERM==="xterm-ghostty")return 3;if(AK.TERM==="wezterm")return 3;if("TERM_PROGRAM"in AK){let g=Number.parseInt((AK.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(AK.TERM_PROGRAM){case"iTerm.app":return g>=3?3:2;case"Apple_Terminal":return 2}}if(/-256(color)?$/i.test(AK.TERM))return 2;if(/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(AK.TERM))return 1;if("COLORTERM"in AK)return 1;return Z}function D6A(A,q={}){let F=nzA(A,{streamIsTTY:A&&A.isTTY,...q});return azA(F)}var izA={stdout:D6A({isTTY:M6A.isatty(1)}),stderr:D6A({isTTY:M6A.isatty(2)})},P6A=izA;function T6A(A,q,F){let K=A.indexOf(q);if(K===-1)return A;let E=q.length,Z=0,g="";do g+=A.slice(Z,K)+q+F,Z=K+E,K=A.indexOf(q,Z);while(K!==-1);return g+=A.slice(Z),g}function B6A(A,q,F,K){let E=0,Z="";do{let g=A[K-1]==="\r";Z+=A.slice(E,g?K-1:K)+q+(g?`\r
|
|
182
182
|
`:`
|
|
183
183
|
`)+F,E=K+1,K=A.indexOf(`
|
|
184
184
|
`,E)}while(K!==-1);return Z+=A.slice(E),Z}var{stdout:I6A,stderr:R6A}=P6A,$k=Symbol("GENERATOR"),c0=Symbol("STYLER"),_3=Symbol("IS_EMPTY"),z6A=["ansi","ansi","ansi256","ansi16m"],u0=Object.create(null),ozA=(A,q={})=>{if(q.level&&!(Number.isInteger(q.level)&&q.level>=0&&q.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let F=I6A?I6A.level:0;A.level=q.level===void 0?F:q.level};var rzA=(A)=>{let q=(...F)=>F.join(" ");return ozA(q,A),Object.setPrototypeOf(q,H3.prototype),q};function H3(A){return rzA(A)}Object.setPrototypeOf(H3.prototype,Function.prototype);for(let[A,q]of Object.entries(UG))u0[A]={get(){let F=cL(this,Gk(q.open,q.close,this[c0]),this[_3]);return Object.defineProperty(this,A,{value:F}),F}};u0.visible={get(){let A=cL(this,this[c0],!0);return Object.defineProperty(this,"visible",{value:A}),A}};var Uk=(A,q,F,...K)=>{if(A==="rgb"){if(q==="ansi16m")return UG[F].ansi16m(...K);if(q==="ansi256")return UG[F].ansi256(UG.rgbToAnsi256(...K));return UG[F].ansi(UG.rgbToAnsi(...K))}if(A==="hex")return Uk("rgb",q,F,...UG.hexToRgb(...K));return UG[F][A](...K)},tzA=["rgb","hex","ansi256"];for(let A of tzA){u0[A]={get(){let{level:F}=this;return function(...K){let E=Gk(Uk(A,z6A[F],"color",...K),UG.color.close,this[c0]);return cL(this,E,this[_3])}}};let q="bg"+A[0].toUpperCase()+A.slice(1);u0[q]={get(){let{level:F}=this;return function(...K){let E=Gk(Uk(A,z6A[F],"bgColor",...K),UG.bgColor.close,this[c0]);return cL(this,E,this[_3])}}}}var szA=Object.defineProperties(()=>{},{...u0,level:{enumerable:!0,get(){return this[$k].level},set(A){this[$k].level=A}}}),Gk=(A,q,F)=>{let K,E;if(F===void 0)K=A,E=q;else K=F.openAll+A,E=q+F.closeAll;return{open:A,close:q,openAll:K,closeAll:E,parent:F}},cL=(A,q,F)=>{let K=(...E)=>ezA(K,E.length===1?""+E[0]:E.join(" "));return Object.setPrototypeOf(K,szA),K[$k]=A,K[c0]=q,K[_3]=F,K},ezA=(A,q)=>{if(A.level<=0||!q)return A[_3]?"":q;let F=A[c0];if(F===void 0)return q;let{openAll:K,closeAll:E}=F;if(q.includes("\x1B"))while(F!==void 0)q=T6A(q,F.close,F.open),F=F.parent;let Z=q.indexOf(`
|