simplecloud 0.0.1-beta.26 → 0.0.1-beta.27
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 +4 -5
- package/dist/index.js +4 -5
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -160,7 +160,7 @@ ${H.join(`
|
|
|
160
160
|
`;C.forEach((H)=>{V+=H}),F.fail(V)}};let Q={};J.conflicts=function N(K,C){if(aD("<string|object> [array|string]",[K,C],arguments.length),typeof K==="object")Object.keys(K).forEach((V)=>{J.conflicts(V,K[V])});else{if(D.global(K),!Q[K])Q[K]=[];if(Array.isArray(C))C.forEach((V)=>J.conflicts(K,V));else Q[K].push(C)}},J.getConflicting=()=>Q,J.conflicting=function N(K){if(Object.keys(K).forEach((C)=>{if(Q[C])Q[C].forEach((V)=>{if(V&&K[C]!==void 0&&K[V]!==void 0)F.fail(B("Arguments %s and %s are mutually exclusive",C,V))})}),D.getInternalMethods().getParserConfiguration()["strip-dashed"])Object.keys(Q).forEach((C)=>{Q[C].forEach((V)=>{if(V&&K[$.Parser.camelCase(C)]!==void 0&&K[$.Parser.camelCase(V)]!==void 0)F.fail(B("Arguments %s and %s are mutually exclusive",C,V))})})},J.recommendCommands=function N(K,C){C=C.sort((E,L)=>L.length-E.length);let H=null,W=1/0;for(let E=0,L;(L=C[E])!==void 0;E++){let M=xQD(K,L);if(M<=3&&M<W)W=M,H=L}if(H)F.fail(B("Did you mean %s?",H))},J.reset=function N(K){return G=IJ(G,(C)=>!K[C]),Q=IJ(Q,(C)=>!K[C]),J};let Z=[];return J.freeze=function N(){Z.push({implied:G,conflicting:Q})},J.unfreeze=function N(){let K=Z.pop();z1(K,void 0,$),{implied:G,conflicting:Q}=K},J}var tc=[],uA;function cA(D,F,$,B){uA=B;let X={};if(Object.prototype.hasOwnProperty.call(D,"extends")){if(typeof D.extends!=="string")return X;let J=/\.json|\..*rc$/.test(D.extends),G=null;if(!J)try{G=import.meta.resolve(D.extends)}catch(Y){return D}else G=JpD(F,D.extends);XpD(G),tc.push(G),X=J?JSON.parse(uA.readFileSync(G,"utf8")):B.require(D.extends),delete D.extends,X=cA(X,uA.path.dirname(G),$,uA)}return tc=[],$?gQD(X,D):Object.assign({},X,D)}function XpD(D){if(tc.indexOf(D)>-1)throw new l6(`Circular extended configurations: '${D}'.`)}function JpD(D,F){return uA.path.resolve(D,F)}function gQD(D,F){let $={};function B(X){return X&&typeof X==="object"&&!Array.isArray(X)}Object.assign($,D);for(let X of Object.keys(F))if(B(F[X])&&B($[X]))$[X]=gQD(D[X],F[X]);else $[X]=F[X];return $}var tD=function(D,F,$,B,X){if(B==="m")throw new TypeError("Private method is not writable");if(B==="a"&&!X)throw new TypeError("Private accessor was defined without a setter");if(typeof F==="function"?D!==F||!X:!F.has(D))throw new TypeError("Cannot write private member to an object whose class did not declare it");return B==="a"?X.call(D,$):X?X.value=$:F.set(D,$),$},q=function(D,F,$,B){if($==="a"&&!B)throw new TypeError("Private accessor was defined without a getter");if(typeof F==="function"?D!==F||!B:!F.has(D))throw new TypeError("Cannot read private member from an object whose class did not declare it");return $==="m"?B:$==="a"?B.call(D):B?B.value:F.get(D)},n6,IQ,fA,o1,d4,GT,vJ,SQ,YT,g$,QT,y$,r9,p4,h$,ZT,vQ,r8,C0,NT,KT,l4,xQ,_C,bQ,xJ,CT,S0,kQ,gQ,yQ,p0,VT,a9,R6;function $ZD(D){return(F=[],$=D.process.cwd(),B)=>{let X=new BZD(F,$,B,D);return Object.defineProperty(X,"argv",{get:()=>{return X.parse()},enumerable:!0}),X.help(),X.version(),X}}var yQD=Symbol("copyDoubleDash"),hQD=Symbol("copyDoubleDash"),sc=Symbol("deleteFromParserHintObject"),mQD=Symbol("emitWarning"),uQD=Symbol("freeze"),cQD=Symbol("getDollarZero"),hQ=Symbol("getParserConfiguration"),fQD=Symbol("getUsageConfiguration"),ec=Symbol("guessLocale"),dQD=Symbol("guessVersion"),pQD=Symbol("parsePositionalNumbers"),Df=Symbol("pkgUp"),bJ=Symbol("populateParserHintArray"),wC=Symbol("populateParserHintSingleValueDictionary"),Ff=Symbol("populateParserHintArrayDictionary"),$f=Symbol("populateParserHintDictionary"),Bf=Symbol("sanitizeKey"),Xf=Symbol("setKey"),Jf=Symbol("unfreeze"),lQD=Symbol("validateAsync"),nQD=Symbol("getCommandInstance"),oQD=Symbol("getContext"),iQD=Symbol("getHasOutput"),rQD=Symbol("getLoggerInstance"),aQD=Symbol("getParseContext"),tQD=Symbol("getUsageInstance"),sQD=Symbol("getValidationInstance"),UT=Symbol("hasParseCallback"),eQD=Symbol("isGlobalContext"),mQ=Symbol("postProcess"),DZD=Symbol("rebase"),Gf=Symbol("reset"),dA=Symbol("runYargsParserAndExecuteCommands"),Yf=Symbol("runValidation"),FZD=Symbol("setHasOutput"),uQ=Symbol("kTrackManuallySetKeys"),GpD="en_US";class BZD{constructor(D=[],F,$,B){this.customScriptName=!1,this.parsed=!1,n6.set(this,void 0),IQ.set(this,void 0),fA.set(this,{commands:[],fullCommands:[]}),o1.set(this,null),d4.set(this,null),GT.set(this,"show-hidden"),vJ.set(this,null),SQ.set(this,!0),YT.set(this,{}),g$.set(this,!0),QT.set(this,[]),y$.set(this,void 0),r9.set(this,{}),p4.set(this,!1),h$.set(this,null),ZT.set(this,!0),vQ.set(this,void 0),r8.set(this,""),C0.set(this,void 0),NT.set(this,void 0),KT.set(this,{}),l4.set(this,null),xQ.set(this,null),_C.set(this,{}),bQ.set(this,{}),xJ.set(this,void 0),CT.set(this,!1),S0.set(this,void 0),kQ.set(this,!1),gQ.set(this,!1),yQ.set(this,!1),p0.set(this,void 0),VT.set(this,{}),a9.set(this,null),R6.set(this,void 0),tD(this,S0,B,"f"),tD(this,xJ,D,"f"),tD(this,IQ,F,"f"),tD(this,NT,$,"f"),tD(this,y$,new rc(this),"f"),this.$0=this[cQD](),this[Gf](),tD(this,n6,q(this,n6,"f"),"f"),tD(this,p0,q(this,p0,"f"),"f"),tD(this,R6,q(this,R6,"f"),"f"),tD(this,C0,q(this,C0,"f"),"f"),q(this,C0,"f").showHiddenOpt=q(this,GT,"f"),tD(this,vQ,this[hQD](),"f"),q(this,S0,"f").y18n.setLocale(GpD)}addHelpOpt(D,F){if(aD("[string|boolean] [string]",[D,F],arguments.length),q(this,h$,"f"))this[sc](q(this,h$,"f")),tD(this,h$,null,"f");if(D===!1&&F===void 0)return this;return tD(this,h$,typeof D==="string"?D:"help","f"),this.boolean(q(this,h$,"f")),this.describe(q(this,h$,"f"),F||q(this,p0,"f").deferY18nLookup("Show help")),this}help(D,F){return this.addHelpOpt(D,F)}addShowHiddenOpt(D,F){if(aD("[string|boolean] [string]",[D,F],arguments.length),D===!1&&F===void 0)return this;let $=typeof D==="string"?D:q(this,GT,"f");return this.boolean($),this.describe($,F||q(this,p0,"f").deferY18nLookup("Show hidden options")),q(this,C0,"f").showHiddenOpt=$,this}showHidden(D,F){return this.addShowHiddenOpt(D,F)}alias(D,F){return aD("<object|string|array> [string|array]",[D,F],arguments.length),this[Ff](this.alias.bind(this),"alias",D,F),this}array(D){return aD("<array|string>",[D],arguments.length),this[bJ]("array",D),this[uQ](D),this}boolean(D){return aD("<array|string>",[D],arguments.length),this[bJ]("boolean",D),this[uQ](D),this}check(D,F){return aD("<function> [boolean]",[D,F],arguments.length),this.middleware(($,B)=>{return jQ(()=>{return D($,B.getOptions())},(X)=>{if(!X)q(this,p0,"f").fail(q(this,S0,"f").y18n.__("Argument check failed: %s",D.toString()));else if(typeof X==="string"||X instanceof Error)q(this,p0,"f").fail(X.toString(),X);return $},(X)=>{return q(this,p0,"f").fail(X.message?X.message:X.toString(),X),$})},!1,F),this}choices(D,F){return aD("<object|string|array> [string|array]",[D,F],arguments.length),this[Ff](this.choices.bind(this),"choices",D,F),this}coerce(D,F){if(aD("<object|string|array> [function]",[D,F],arguments.length),Array.isArray(D)){if(!F)throw new l6("coerce callback must be provided");for(let B of D)this.coerce(B,F);return this}else if(typeof D==="object"){for(let B of Object.keys(D))this.coerce(B,D[B]);return this}if(!F)throw new l6("coerce callback must be provided");let $=D;return q(this,C0,"f").key[$]=!0,q(this,y$,"f").addCoerceMiddleware((B,X)=>{var J;let G=(J=X.getAliases()[$])!==null&&J!==void 0?J:[],Y=[$,...G].filter((Q)=>Object.prototype.hasOwnProperty.call(B,Q));if(Y.length===0)return B;return jQ(()=>{return F(B[Y[0]])},(Q)=>{return Y.forEach((Z)=>{B[Z]=Q}),B},(Q)=>{throw new l6(Q.message)})},$),this}conflicts(D,F){return aD("<string|object> [string|array]",[D,F],arguments.length),q(this,R6,"f").conflicts(D,F),this}config(D="config",F,$){if(aD("[object|string] [string|function] [function]",[D,F,$],arguments.length),typeof D==="object"&&!Array.isArray(D))return D=cA(D,q(this,IQ,"f"),this[hQ]()["deep-merge-config"]||!1,q(this,S0,"f")),q(this,C0,"f").configObjects=(q(this,C0,"f").configObjects||[]).concat(D),this;if(typeof F==="function")$=F,F=void 0;return this.describe(D,F||q(this,p0,"f").deferY18nLookup("Path to JSON config file")),(Array.isArray(D)?D:[D]).forEach((B)=>{q(this,C0,"f").config[B]=$||!0}),this}completion(D,F,$){if(aD("[string] [string|boolean|function] [function]",[D,F,$],arguments.length),typeof F==="function")$=F,F=void 0;if(tD(this,d4,D||q(this,d4,"f")||"completion","f"),!F&&F!==!1)F="generate completion script";if(this.command(q(this,d4,"f"),F),$)q(this,o1,"f").registerFunction($);return this}command(D,F,$,B,X,J){return aD("<string|array|object> [string|boolean] [function|object] [function] [array] [boolean|string]",[D,F,$,B,X,J],arguments.length),q(this,n6,"f").addHandler(D,F,$,B,X,J),this}commands(D,F,$,B,X,J){return this.command(D,F,$,B,X,J)}commandDir(D,F){aD("<string> [object]",[D,F],arguments.length);let $=q(this,NT,"f")||q(this,S0,"f").require;return q(this,n6,"f").addDirectory(D,$,q(this,S0,"f").getCallerFile(),F),this}count(D){return aD("<array|string>",[D],arguments.length),this[bJ]("count",D),this[uQ](D),this}default(D,F,$){if(aD("<object|string|array> [*] [string]",[D,F,$],arguments.length),$)ic(D,q(this,S0,"f")),q(this,C0,"f").defaultDescription[D]=$;if(typeof F==="function"){if(ic(D,q(this,S0,"f")),!q(this,C0,"f").defaultDescription[D])q(this,C0,"f").defaultDescription[D]=q(this,p0,"f").functionDescription(F);F=F.call()}return this[wC](this.default.bind(this),"default",D,F),this}defaults(D,F,$){return this.default(D,F,$)}demandCommand(D=1,F,$,B){if(aD("[number] [number|string] [string|null|undefined] [string|null|undefined]",[D,F,$,B],arguments.length),typeof F!=="number")$=F,F=1/0;return this.global("_",!1),q(this,C0,"f").demandedCommands._={min:D,max:F,minMsg:$,maxMsg:B},this}demand(D,F,$){if(Array.isArray(F))F.forEach((B)=>{z1($,!0,q(this,S0,"f")),this.demandOption(B,$)}),F=1/0;else if(typeof F!=="number")$=F,F=1/0;if(typeof D==="number")z1($,!0,q(this,S0,"f")),this.demandCommand(D,F,$,$);else if(Array.isArray(D))D.forEach((B)=>{z1($,!0,q(this,S0,"f")),this.demandOption(B,$)});else if(typeof $==="string")this.demandOption(D,$);else if($===!0||typeof $==="undefined")this.demandOption(D);return this}demandOption(D,F){return aD("<object|string|array> [string]",[D,F],arguments.length),this[wC](this.demandOption.bind(this),"demandedOptions",D,F),this}deprecateOption(D,F){return aD("<string> [string|boolean]",[D,F],arguments.length),q(this,C0,"f").deprecatedOptions[D]=F,this}describe(D,F){return aD("<object|string|array> [string]",[D,F],arguments.length),this[Xf](D,!0),q(this,p0,"f").describe(D,F),this}detectLocale(D){return aD("<boolean>",[D],arguments.length),tD(this,SQ,D,"f"),this}env(D){if(aD("[string|boolean]",[D],arguments.length),D===!1)delete q(this,C0,"f").envPrefix;else q(this,C0,"f").envPrefix=D||"";return this}epilogue(D){return aD("<string>",[D],arguments.length),q(this,p0,"f").epilog(D),this}epilog(D){return this.epilogue(D)}example(D,F){if(aD("<string|array> [string]",[D,F],arguments.length),Array.isArray(D))D.forEach(($)=>this.example(...$));else q(this,p0,"f").example(D,F);return this}exit(D,F){if(tD(this,p4,!0,"f"),tD(this,vJ,F,"f"),q(this,g$,"f"))q(this,S0,"f").process.exit(D)}exitProcess(D=!0){return aD("[boolean]",[D],arguments.length),tD(this,g$,D,"f"),this}fail(D){if(aD("<function|boolean>",[D],arguments.length),typeof D==="boolean"&&D!==!1)throw new l6("Invalid first argument. Expected function or boolean 'false'");return q(this,p0,"f").failFn(D),this}getAliases(){return this.parsed?this.parsed.aliases:{}}async getCompletion(D,F){if(aD("<array> [function]",[D,F],arguments.length),!F)return new Promise(($,B)=>{q(this,o1,"f").getCompletion(D,(X,J)=>{if(X)B(X);else $(J)})});else return q(this,o1,"f").getCompletion(D,F)}getDemandedOptions(){return aD([],0),q(this,C0,"f").demandedOptions}getDemandedCommands(){return aD([],0),q(this,C0,"f").demandedCommands}getDeprecatedOptions(){return aD([],0),q(this,C0,"f").deprecatedOptions}getDetectLocale(){return q(this,SQ,"f")}getExitProcess(){return q(this,g$,"f")}getGroups(){return Object.assign({},q(this,r9,"f"),q(this,bQ,"f"))}getHelp(){if(tD(this,p4,!0,"f"),!q(this,p0,"f").hasCachedHelpMessage()){if(!this.parsed){let F=this[dA](q(this,xJ,"f"),void 0,void 0,0,!0);if(p2(F))return F.then(()=>{return q(this,p0,"f").help()})}let D=q(this,n6,"f").runDefaultBuilderOn(this);if(p2(D))return D.then(()=>{return q(this,p0,"f").help()})}return Promise.resolve(q(this,p0,"f").help())}getOptions(){return q(this,C0,"f")}getStrict(){return q(this,kQ,"f")}getStrictCommands(){return q(this,gQ,"f")}getStrictOptions(){return q(this,yQ,"f")}global(D,F){if(aD("<string|array> [boolean]",[D,F],arguments.length),D=[].concat(D),F!==!1)q(this,C0,"f").local=q(this,C0,"f").local.filter(($)=>D.indexOf($)===-1);else D.forEach(($)=>{if(!q(this,C0,"f").local.includes($))q(this,C0,"f").local.push($)});return this}group(D,F){aD("<string|array> <string>",[D,F],arguments.length);let $=q(this,bQ,"f")[F]||q(this,r9,"f")[F];if(q(this,bQ,"f")[F])delete q(this,bQ,"f")[F];let B={};return q(this,r9,"f")[F]=($||[]).concat(D).filter((X)=>{if(B[X])return!1;return B[X]=!0}),this}hide(D){return aD("<string>",[D],arguments.length),q(this,C0,"f").hiddenOptions.push(D),this}implies(D,F){return aD("<string|object> [number|string|array]",[D,F],arguments.length),q(this,R6,"f").implies(D,F),this}locale(D){if(aD("[string]",[D],arguments.length),D===void 0)return this[ec](),q(this,S0,"f").y18n.getLocale();return tD(this,SQ,!1,"f"),q(this,S0,"f").y18n.setLocale(D),this}middleware(D,F,$){return q(this,y$,"f").addMiddleware(D,!!F,$)}nargs(D,F){return aD("<string|object|array> [number]",[D,F],arguments.length),this[wC](this.nargs.bind(this),"narg",D,F),this}normalize(D){return aD("<array|string>",[D],arguments.length),this[bJ]("normalize",D),this}number(D){return aD("<array|string>",[D],arguments.length),this[bJ]("number",D),this[uQ](D),this}option(D,F){if(aD("<string|object> [object]",[D,F],arguments.length),typeof D==="object")Object.keys(D).forEach(($)=>{this.options($,D[$])});else{if(typeof F!=="object")F={};if(this[uQ](D),q(this,a9,"f")&&(D==="version"||(F===null||F===void 0?void 0:F.alias)==="version"))this[mQD](['"version" is a reserved word.',"Please do one of the following:",'- Disable version with `yargs.version(false)` if using "version" as an option',"- Use the built-in `yargs.version` method instead (if applicable)","- Use a different option key","https://yargs.js.org/docs/#api-reference-version"].join(`
|
|
161
161
|
`),void 0,"versionWarning");if(q(this,C0,"f").key[D]=!0,F.alias)this.alias(D,F.alias);let $=F.deprecate||F.deprecated;if($)this.deprecateOption(D,$);let B=F.demand||F.required||F.require;if(B)this.demand(D,B);if(F.demandOption)this.demandOption(D,typeof F.demandOption==="string"?F.demandOption:void 0);if(F.conflicts)this.conflicts(D,F.conflicts);if("default"in F)this.default(D,F.default);if(F.implies!==void 0)this.implies(D,F.implies);if(F.nargs!==void 0)this.nargs(D,F.nargs);if(F.config)this.config(D,F.configParser);if(F.normalize)this.normalize(D);if(F.choices)this.choices(D,F.choices);if(F.coerce)this.coerce(D,F.coerce);if(F.group)this.group(D,F.group);if(F.boolean||F.type==="boolean"){if(this.boolean(D),F.alias)this.boolean(F.alias)}if(F.array||F.type==="array"){if(this.array(D),F.alias)this.array(F.alias)}if(F.number||F.type==="number"){if(this.number(D),F.alias)this.number(F.alias)}if(F.string||F.type==="string"){if(this.string(D),F.alias)this.string(F.alias)}if(F.count||F.type==="count")this.count(D);if(typeof F.global==="boolean")this.global(D,F.global);if(F.defaultDescription)q(this,C0,"f").defaultDescription[D]=F.defaultDescription;if(F.skipValidation)this.skipValidation(D);let X=F.describe||F.description||F.desc,J=q(this,p0,"f").getDescriptions();if(!Object.prototype.hasOwnProperty.call(J,D)||typeof X==="string")this.describe(D,X);if(F.hidden)this.hide(D);if(F.requiresArg)this.requiresArg(D)}return this}options(D,F){return this.option(D,F)}parse(D,F,$){if(aD("[string|array] [function|boolean|object] [function]",[D,F,$],arguments.length),this[uQD](),typeof D==="undefined")D=q(this,xJ,"f");if(typeof F==="object")tD(this,xQ,F,"f"),F=$;if(typeof F==="function")tD(this,l4,F,"f"),F=!1;if(!F)tD(this,xJ,D,"f");if(q(this,l4,"f"))tD(this,g$,!1,"f");let B=this[dA](D,!!F),X=this.parsed;if(q(this,o1,"f").setParsed(this.parsed),p2(B))return B.then((J)=>{if(q(this,l4,"f"))q(this,l4,"f").call(this,q(this,vJ,"f"),J,q(this,r8,"f"));return J}).catch((J)=>{if(q(this,l4,"f"))q(this,l4,"f")(J,this.parsed.argv,q(this,r8,"f"));throw J}).finally(()=>{this[Jf](),this.parsed=X});else{if(q(this,l4,"f"))q(this,l4,"f").call(this,q(this,vJ,"f"),B,q(this,r8,"f"));this[Jf](),this.parsed=X}return B}parseAsync(D,F,$){let B=this.parse(D,F,$);return!p2(B)?Promise.resolve(B):B}parseSync(D,F,$){let B=this.parse(D,F,$);if(p2(B))throw new l6(".parseSync() must not be used with asynchronous builders, handlers, or middleware");return B}parserConfiguration(D){return aD("<object>",[D],arguments.length),tD(this,KT,D,"f"),this}pkgConf(D,F){aD("<string> [string]",[D,F],arguments.length);let $=null,B=this[Df](F||q(this,IQ,"f"));if(B[D]&&typeof B[D]==="object")$=cA(B[D],F||q(this,IQ,"f"),this[hQ]()["deep-merge-config"]||!1,q(this,S0,"f")),q(this,C0,"f").configObjects=(q(this,C0,"f").configObjects||[]).concat($);return this}positional(D,F){aD("<string> <object>",[D,F],arguments.length);let $=["default","defaultDescription","implies","normalize","choices","conflicts","coerce","type","describe","desc","description","alias"];F=IJ(F,(J,G)=>{if(J==="type"&&!["string","number","boolean"].includes(G))return!1;return $.includes(J)});let B=q(this,fA,"f").fullCommands[q(this,fA,"f").fullCommands.length-1],X=B?q(this,n6,"f").cmdToParseOptions(B):{array:[],alias:{},default:{},demand:{}};return EC(X).forEach((J)=>{let G=X[J];if(Array.isArray(G)){if(G.indexOf(D)!==-1)F[J]=!0}else if(G[D]&&!(J in F))F[J]=G[D]}),this.group(D,q(this,p0,"f").getPositionalGroupName()),this.option(D,F)}recommendCommands(D=!0){return aD("[boolean]",[D],arguments.length),tD(this,CT,D,"f"),this}required(D,F,$){return this.demand(D,F,$)}require(D,F,$){return this.demand(D,F,$)}requiresArg(D){if(aD("<array|string|object> [number]",[D],arguments.length),typeof D==="string"&&q(this,C0,"f").narg[D])return this;else this[wC](this.requiresArg.bind(this),"narg",D,NaN);return this}showCompletionScript(D,F){return aD("[string] [string]",[D,F],arguments.length),D=D||this.$0,q(this,vQ,"f").log(q(this,o1,"f").generateCompletionScript(D,F||q(this,d4,"f")||"completion")),this}showHelp(D){if(aD("[string|function]",[D],arguments.length),tD(this,p4,!0,"f"),!q(this,p0,"f").hasCachedHelpMessage()){if(!this.parsed){let $=this[dA](q(this,xJ,"f"),void 0,void 0,0,!0);if(p2($))return $.then(()=>{q(this,p0,"f").showHelp(D)}),this}let F=q(this,n6,"f").runDefaultBuilderOn(this);if(p2(F))return F.then(()=>{q(this,p0,"f").showHelp(D)}),this}return q(this,p0,"f").showHelp(D),this}scriptName(D){return this.customScriptName=!0,this.$0=D,this}showHelpOnFail(D,F){return aD("[boolean|string] [string]",[D,F],arguments.length),q(this,p0,"f").showHelpOnFail(D,F),this}showVersion(D){return aD("[string|function]",[D],arguments.length),q(this,p0,"f").showVersion(D),this}skipValidation(D){return aD("<array|string>",[D],arguments.length),this[bJ]("skipValidation",D),this}strict(D){return aD("[boolean]",[D],arguments.length),tD(this,kQ,D!==!1,"f"),this}strictCommands(D){return aD("[boolean]",[D],arguments.length),tD(this,gQ,D!==!1,"f"),this}strictOptions(D){return aD("[boolean]",[D],arguments.length),tD(this,yQ,D!==!1,"f"),this}string(D){return aD("<array|string>",[D],arguments.length),this[bJ]("string",D),this[uQ](D),this}terminalWidth(){return aD([],0),q(this,S0,"f").process.stdColumns}updateLocale(D){return this.updateStrings(D)}updateStrings(D){return aD("<object>",[D],arguments.length),tD(this,SQ,!1,"f"),q(this,S0,"f").y18n.updateLocale(D),this}usage(D,F,$,B){if(aD("<string|null|undefined> [string|boolean] [function|object] [function]",[D,F,$,B],arguments.length),F!==void 0)if(z1(D,null,q(this,S0,"f")),(D||"").match(/^\$0( |$)/))return this.command(D,F,$,B);else throw new l6(".usage() description must start with $0 if being used as alias for .command()");else return q(this,p0,"f").usage(D),this}usageConfiguration(D){return aD("<object>",[D],arguments.length),tD(this,VT,D,"f"),this}version(D,F,$){if(aD("[boolean|string] [string] [string]",[D,F,$],arguments.length),q(this,a9,"f"))this[sc](q(this,a9,"f")),q(this,p0,"f").version(void 0),tD(this,a9,null,"f");if(arguments.length===0)$=this[dQD](),D="version";else if(arguments.length===1){if(D===!1)return this;$=D,D="version"}else if(arguments.length===2)$=F,F=void 0;return tD(this,a9,typeof D==="string"?D:"version","f"),F=F||q(this,p0,"f").deferY18nLookup("Show version number"),q(this,p0,"f").version($||void 0),this.boolean(q(this,a9,"f")),this.describe(q(this,a9,"f"),F),this}wrap(D){return aD("<number|null|undefined>",[D],arguments.length),q(this,p0,"f").wrap(D),this}[(n6=new WeakMap,IQ=new WeakMap,fA=new WeakMap,o1=new WeakMap,d4=new WeakMap,GT=new WeakMap,vJ=new WeakMap,SQ=new WeakMap,YT=new WeakMap,g$=new WeakMap,QT=new WeakMap,y$=new WeakMap,r9=new WeakMap,p4=new WeakMap,h$=new WeakMap,ZT=new WeakMap,vQ=new WeakMap,r8=new WeakMap,C0=new WeakMap,NT=new WeakMap,KT=new WeakMap,l4=new WeakMap,xQ=new WeakMap,_C=new WeakMap,bQ=new WeakMap,xJ=new WeakMap,CT=new WeakMap,S0=new WeakMap,kQ=new WeakMap,gQ=new WeakMap,yQ=new WeakMap,p0=new WeakMap,VT=new WeakMap,a9=new WeakMap,R6=new WeakMap,yQD)](D){if(!D._||!D["--"])return D;D._.push.apply(D._,D["--"]);try{delete D["--"]}catch(F){}return D}[hQD](){return{log:(...D)=>{if(!this[UT]())console.log(...D);if(tD(this,p4,!0,"f"),q(this,r8,"f").length)tD(this,r8,q(this,r8,"f")+`
|
|
162
162
|
`,"f");tD(this,r8,q(this,r8,"f")+D.join(" "),"f")},error:(...D)=>{if(!this[UT]())console.error(...D);if(tD(this,p4,!0,"f"),q(this,r8,"f").length)tD(this,r8,q(this,r8,"f")+`
|
|
163
|
-
`,"f");tD(this,r8,q(this,r8,"f")+D.join(" "),"f")}}}[sc](D){EC(q(this,C0,"f")).forEach((F)=>{if(((B)=>B==="configObjects")(F))return;let $=q(this,C0,"f")[F];if(Array.isArray($)){if($.includes(D))$.splice($.indexOf(D),1)}else if(typeof $==="object")delete $[D]}),delete q(this,p0,"f").getDescriptions()[D]}[mQD](D,F,$){if(!q(this,YT,"f")[$])q(this,S0,"f").process.emitWarning(D,F),q(this,YT,"f")[$]=!0}[uQD](){q(this,QT,"f").push({options:q(this,C0,"f"),configObjects:q(this,C0,"f").configObjects.slice(0),exitProcess:q(this,g$,"f"),groups:q(this,r9,"f"),strict:q(this,kQ,"f"),strictCommands:q(this,gQ,"f"),strictOptions:q(this,yQ,"f"),completionCommand:q(this,d4,"f"),output:q(this,r8,"f"),exitError:q(this,vJ,"f"),hasOutput:q(this,p4,"f"),parsed:this.parsed,parseFn:q(this,l4,"f"),parseContext:q(this,xQ,"f")}),q(this,p0,"f").freeze(),q(this,R6,"f").freeze(),q(this,n6,"f").freeze(),q(this,y$,"f").freeze()}[cQD](){let D="",F;if(/\b(node|iojs|electron)(\.exe)?$/.test(q(this,S0,"f").process.argv()[0]))F=q(this,S0,"f").process.argv().slice(1,2);else F=q(this,S0,"f").process.argv().slice(0,1);if(D=F.map(($)=>{let B=this[DZD](q(this,IQ,"f"),$);return $.match(/^(\/|([a-zA-Z]:)?\\)/)&&B.length<$.length?B:$}).join(" ").trim(),q(this,S0,"f").getEnv("_")&&q(this,S0,"f").getProcessArgvBin()===q(this,S0,"f").getEnv("_"))D=q(this,S0,"f").getEnv("_").replace(`${q(this,S0,"f").path.dirname(q(this,S0,"f").process.execPath())}/`,"");return D}[hQ](){return q(this,KT,"f")}[fQD](){return q(this,VT,"f")}[ec](){if(!q(this,SQ,"f"))return;let D=q(this,S0,"f").getEnv("LC_ALL")||q(this,S0,"f").getEnv("LC_MESSAGES")||q(this,S0,"f").getEnv("LANG")||q(this,S0,"f").getEnv("LANGUAGE")||"en_US";this.locale(D.replace(/[.:].*/,""))}[dQD](){return this[Df]().version||"unknown"}[pQD](D){let F=D["--"]?D["--"]:D._;for(let $=0,B;(B=F[$])!==void 0;$++)if(q(this,S0,"f").Parser.looksLikeNumber(B)&&Number.isSafeInteger(Math.floor(parseFloat(`${B}`))))F[$]=Number(B);return D}[Df](D){let F=D||"*";if(q(this,_C,"f")[F])return q(this,_C,"f")[F];let $={};try{let B=D||q(this,S0,"f").mainFilename;if(q(this,S0,"f").path.extname(B))B=q(this,S0,"f").path.dirname(B);let X=q(this,S0,"f").findUp(B,(J,G)=>{if(G.includes("package.json"))return"package.json";else return});z1(X,void 0,q(this,S0,"f")),$=JSON.parse(q(this,S0,"f").readFileSync(X,"utf8"))}catch(B){}return q(this,_C,"f")[F]=$||{},q(this,_C,"f")[F]}[bJ](D,F){F=[].concat(F),F.forEach(($)=>{$=this[Bf]($),q(this,C0,"f")[D].push($)})}[wC](D,F,$,B){this[$f](D,F,$,B,(X,J,G)=>{q(this,C0,"f")[X][J]=G})}[Ff](D,F,$,B){this[$f](D,F,$,B,(X,J,G)=>{q(this,C0,"f")[X][J]=(q(this,C0,"f")[X][J]||[]).concat(G)})}[$f](D,F,$,B,X){if(Array.isArray($))$.forEach((J)=>{D(J,B)});else if(((J)=>typeof J==="object")($))for(let J of EC($))D(J,$[J]);else X(F,this[Bf]($),B)}[Bf](D){if(D==="__proto__")return"___proto___";return D}[Xf](D,F){return this[wC](this[Xf].bind(this),"key",D,F),this}[Jf](){var D,F,$,B,X,J,G,Y,Q,Z,N,K;let C=q(this,QT,"f").pop();z1(C,void 0,q(this,S0,"f"));let V;D=this,F=this,$=this,B=this,X=this,J=this,G=this,Y=this,Q=this,Z=this,N=this,K=this,{options:{set value(H){tD(D,C0,H,"f")}}.value,configObjects:V,exitProcess:{set value(H){tD(F,g$,H,"f")}}.value,groups:{set value(H){tD($,r9,H,"f")}}.value,output:{set value(H){tD(B,r8,H,"f")}}.value,exitError:{set value(H){tD(X,vJ,H,"f")}}.value,hasOutput:{set value(H){tD(J,p4,H,"f")}}.value,parsed:this.parsed,strict:{set value(H){tD(G,kQ,H,"f")}}.value,strictCommands:{set value(H){tD(Y,gQ,H,"f")}}.value,strictOptions:{set value(H){tD(Q,yQ,H,"f")}}.value,completionCommand:{set value(H){tD(Z,d4,H,"f")}}.value,parseFn:{set value(H){tD(N,l4,H,"f")}}.value,parseContext:{set value(H){tD(K,xQ,H,"f")}}.value}=C,q(this,C0,"f").configObjects=V,q(this,p0,"f").unfreeze(),q(this,R6,"f").unfreeze(),q(this,n6,"f").unfreeze(),q(this,y$,"f").unfreeze()}[lQD](D,F){return jQ(F,($)=>{return D($),$})}getInternalMethods(){return{getCommandInstance:this[nQD].bind(this),getContext:this[oQD].bind(this),getHasOutput:this[iQD].bind(this),getLoggerInstance:this[rQD].bind(this),getParseContext:this[aQD].bind(this),getParserConfiguration:this[hQ].bind(this),getUsageConfiguration:this[fQD].bind(this),getUsageInstance:this[tQD].bind(this),getValidationInstance:this[sQD].bind(this),hasParseCallback:this[UT].bind(this),isGlobalContext:this[eQD].bind(this),postProcess:this[mQ].bind(this),reset:this[Gf].bind(this),runValidation:this[Yf].bind(this),runYargsParserAndExecuteCommands:this[dA].bind(this),setHasOutput:this[FZD].bind(this)}}[nQD](){return q(this,n6,"f")}[oQD](){return q(this,fA,"f")}[iQD](){return q(this,p4,"f")}[rQD](){return q(this,vQ,"f")}[aQD](){return q(this,xQ,"f")||{}}[tQD](){return q(this,p0,"f")}[sQD](){return q(this,R6,"f")}[UT](){return!!q(this,l4,"f")}[eQD](){return q(this,ZT,"f")}[mQ](D,F,$,B){if($)return D;if(p2(D))return D;if(!F)D=this[yQD](D);if(this[hQ]()["parse-positional-numbers"]||this[hQ]()["parse-positional-numbers"]===void 0)D=this[pQD](D);if(B)D=RQ(D,this,q(this,y$,"f").getMiddleware(),!1);return D}[Gf](D={}){tD(this,C0,q(this,C0,"f")||{},"f");let F={};F.local=q(this,C0,"f").local||[],F.configObjects=q(this,C0,"f").configObjects||[];let $={};F.local.forEach((J)=>{$[J]=!0,(D[J]||[]).forEach((G)=>{$[G]=!0})}),Object.assign(q(this,bQ,"f"),Object.keys(q(this,r9,"f")).reduce((J,G)=>{let Y=q(this,r9,"f")[G].filter((Q)=>!(Q in $));if(Y.length>0)J[G]=Y;return J},{})),tD(this,r9,{},"f");let B=["array","boolean","string","skipValidation","count","normalize","number","hiddenOptions"],X=["narg","key","alias","default","defaultDescription","config","choices","demandedOptions","demandedCommands","deprecatedOptions"];if(B.forEach((J)=>{F[J]=(q(this,C0,"f")[J]||[]).filter((G)=>!$[G])}),X.forEach((J)=>{F[J]=IJ(q(this,C0,"f")[J],(G)=>!$[G])}),F.envPrefix=q(this,C0,"f").envPrefix,tD(this,C0,F,"f"),tD(this,p0,q(this,p0,"f")?q(this,p0,"f").reset($):RQD(this,q(this,S0,"f")),"f"),tD(this,R6,q(this,R6,"f")?q(this,R6,"f").reset($):kQD(this,q(this,p0,"f"),q(this,S0,"f")),"f"),tD(this,n6,q(this,n6,"f")?q(this,n6,"f").reset():MQD(q(this,p0,"f"),q(this,R6,"f"),q(this,y$,"f"),q(this,S0,"f")),"f"),!q(this,o1,"f"))tD(this,o1,vQD(this,q(this,p0,"f"),q(this,n6,"f"),q(this,S0,"f")),"f");return q(this,y$,"f").reset(),tD(this,d4,null,"f"),tD(this,r8,"","f"),tD(this,vJ,null,"f"),tD(this,p4,!1,"f"),this.parsed=!1,this}[DZD](D,F){return q(this,S0,"f").path.relative(D,F)}[dA](D,F,$,B=0,X=!1){var J,G,Y,Q;let Z=!!$||X;D=D||q(this,xJ,"f"),q(this,C0,"f").__=q(this,S0,"f").y18n.__,q(this,C0,"f").configuration=this[hQ]();let N=!!q(this,C0,"f").configuration["populate--"],K=Object.assign({},q(this,C0,"f").configuration,{"populate--":!0}),C=q(this,S0,"f").Parser.detailed(D,Object.assign({},q(this,C0,"f"),{configuration:{"parse-positional-numbers":!1,...K}})),V=Object.assign(C.argv,q(this,xQ,"f")),H=void 0,W=C.aliases,E=!1,L=!1;if(Object.keys(V).forEach((M)=>{if(M===q(this,h$,"f")&&V[M])E=!0;else if(M===q(this,a9,"f")&&V[M])L=!0}),V.$0=this.$0,this.parsed=C,B===0)q(this,p0,"f").clearCachedHelpMessage();try{if(this[ec](),F)return this[mQ](V,N,!!$,!1);if(q(this,h$,"f")){if([q(this,h$,"f")].concat(W[q(this,h$,"f")]||[]).filter((R)=>R.length>1).includes(""+V._[V._.length-1]))V._.pop(),E=!0}tD(this,ZT,!1,"f");let M=q(this,n6,"f").getCommands(),j=((J=q(this,o1,"f"))===null||J===void 0?void 0:J.completionKey)?[(G=q(this,o1,"f"))===null||G===void 0?void 0:G.completionKey,...(Q=this.getAliases()[(Y=q(this,o1,"f"))===null||Y===void 0?void 0:Y.completionKey])!==null&&Q!==void 0?Q:[]].some((h)=>Object.prototype.hasOwnProperty.call(V,h)):!1,_=E||j||X;if(V._.length){if(M.length){let h;for(let R=B||0,z;V._[R]!==void 0;R++)if(z=String(V._[R]),M.includes(z)&&z!==q(this,d4,"f")){let P=q(this,n6,"f").runCommand(z,this,C,R+1,X,E||L||X);return this[mQ](P,N,!!$,!1)}else if(!h&&z!==q(this,d4,"f")){h=z;break}if(!q(this,n6,"f").hasDefaultCommand()&&q(this,CT,"f")&&h&&!_)q(this,R6,"f").recommendCommands(h,M)}if(q(this,d4,"f")&&V._.includes(q(this,d4,"f"))&&!j){if(q(this,g$,"f"))SJ(!0);this.showCompletionScript(),this.exit(0)}}if(q(this,n6,"f").hasDefaultCommand()&&!_){let h=q(this,n6,"f").runCommand(null,this,C,0,X,E||L||X);return this[mQ](h,N,!!$,!1)}if(j){if(q(this,g$,"f"))SJ(!0);D=[].concat(D);let h=D.slice(D.indexOf(`--${q(this,o1,"f").completionKey}`)+1);return q(this,o1,"f").getCompletion(h,(R,z)=>{if(R)throw new l6(R.message);(z||[]).forEach((P)=>{q(this,vQ,"f").log(P)}),this.exit(0)}),this[mQ](V,!N,!!$,!1)}if(!q(this,p4,"f")){if(E){if(q(this,g$,"f"))SJ(!0);Z=!0,this.showHelp((h)=>{q(this,vQ,"f").log(h),this.exit(0)})}else if(L){if(q(this,g$,"f"))SJ(!0);Z=!0,q(this,p0,"f").showVersion("log"),this.exit(0)}}if(!Z&&q(this,C0,"f").skipValidation.length>0)Z=Object.keys(V).some((h)=>q(this,C0,"f").skipValidation.indexOf(h)>=0&&V[h]===!0);if(!Z){if(C.error)throw new l6(C.error.message);if(!j){let h=this[Yf](W,{},C.error);if(!$)H=RQ(V,this,q(this,y$,"f").getMiddleware(),!0);if(H=this[lQD](h,H!==null&&H!==void 0?H:V),p2(H)&&!$)H=H.then(()=>{return RQ(V,this,q(this,y$,"f").getMiddleware(),!1)})}}}catch(M){if(M instanceof l6)q(this,p0,"f").fail(M.message,M);else throw M}return this[mQ](H!==null&&H!==void 0?H:V,N,!!$,!0)}[Yf](D,F,$,B){let X={...this.getDemandedOptions()};return(J)=>{if($)throw new l6($.message);q(this,R6,"f").nonOptionCount(J),q(this,R6,"f").requiredArguments(J,X);let G=!1;if(q(this,gQ,"f"))G=q(this,R6,"f").unknownCommands(J);if(q(this,kQ,"f")&&!G)q(this,R6,"f").unknownArguments(J,D,F,!!B);else if(q(this,yQ,"f"))q(this,R6,"f").unknownArguments(J,D,{},!1,!1);q(this,R6,"f").limitedChoices(J),q(this,R6,"f").implications(J),q(this,R6,"f").conflicting(J)}}[FZD](){tD(this,p4,!0,"f")}[uQ](D){if(typeof D==="string")q(this,C0,"f").key[D]=!0;else for(let F of D)q(this,C0,"f").key[F]=!0}}function qQD(D){return!!D&&typeof D.getInternalMethods==="function"}var YpD=$ZD(oc),XZD=YpD;var pA="0.0.1-beta.26";e9();class Mf{baseUrl="http://localhost:1337";securityData=null;securityWorker;abortControllers=new Map;customFetch=(...D)=>fetch(...D);baseApiParams={credentials:"same-origin",headers:{},redirect:"follow",referrerPolicy:"no-referrer"};constructor(D={}){Object.assign(this,D)}setSecurityData=(D)=>{this.securityData=D};encodeQueryParam(D,F){return`${encodeURIComponent(D)}=${encodeURIComponent(typeof F==="number"?F:`${F}`)}`}addQueryParam(D,F){return this.encodeQueryParam(F,D[F])}addArrayQueryParam(D,F){return D[F].map((B)=>this.encodeQueryParam(F,B)).join("&")}toQueryString(D){let F=D||{};return Object.keys(F).filter((B)=>typeof F[B]!=="undefined").map((B)=>Array.isArray(F[B])?this.addArrayQueryParam(F,B):this.addQueryParam(F,B)).join("&")}addQueryParams(D){let F=this.toQueryString(D);return F?`?${F}`:""}contentFormatters={["application/json"]:(D)=>D!==null&&(typeof D==="object"||typeof D==="string")?JSON.stringify(D):D,["application/vnd.api+json"]:(D)=>D!==null&&(typeof D==="object"||typeof D==="string")?JSON.stringify(D):D,["text/plain"]:(D)=>D!==null&&typeof D!=="string"?JSON.stringify(D):D,["multipart/form-data"]:(D)=>{if(D instanceof FormData)return D;return Object.keys(D||{}).reduce((F,$)=>{let B=D[$];return F.append($,B instanceof Blob?B:typeof B==="object"&&B!==null?JSON.stringify(B):`${B}`),F},new FormData)},["application/x-www-form-urlencoded"]:(D)=>this.toQueryString(D)};mergeRequestParams(D,F){return{...this.baseApiParams,...D,...F||{},headers:{...this.baseApiParams.headers||{},...D.headers||{},...F&&F.headers||{}}}}createAbortSignal=(D)=>{if(this.abortControllers.has(D)){let $=this.abortControllers.get(D);if($)return $.signal;return}let F=new AbortController;return this.abortControllers.set(D,F),F.signal};abortRequest=(D)=>{let F=this.abortControllers.get(D);if(F)F.abort(),this.abortControllers.delete(D)};request=async({body:D,secure:F,path:$,type:B,query:X,format:J,baseUrl:G,cancelToken:Y,...Q})=>{let Z=(typeof F==="boolean"?F:this.baseApiParams.secure)&&this.securityWorker&&await this.securityWorker(this.securityData)||{},N=this.mergeRequestParams(Q,Z),K=X&&this.toQueryString(X),C=this.contentFormatters[B||"application/json"],V=J||N.format;return this.customFetch(`${G||this.baseUrl||""}${$}${K?`?${K}`:""}`,{...N,headers:{...N.headers||{},...B&&B!=="multipart/form-data"?{"Content-Type":B}:{}},signal:(Y?this.createAbortSignal(Y):N.signal)||null,body:typeof D==="undefined"||D===null?null:C(D)}).then(async(H)=>{let W=H;W.data=null,W.error=null;let E=V?H.clone():H,L=!V?W:await E[V]().then((M)=>{if(W.ok)W.data=M;else W.error=M;return W}).catch((M)=>{return W.error=M,W});if(Y)this.abortControllers.delete(Y);if(!H.ok)throw L;return L})}}class qf{http;constructor(D){this.http=D}v0={blueprintsList:(D={})=>this.http.request({path:"/v0/blueprints",method:"GET",format:"json",...D}),blueprintsUpdate:(D,F,$={})=>this.http.request({path:"/v0/blueprints",method:"PUT",query:D,body:F,type:"application/json",format:"json",...$}),blueprintsCreate:(D,F={})=>this.http.request({path:"/v0/blueprints",method:"POST",body:D,type:"application/json",format:"json",...F}),blueprintsDelete:(D,F={})=>this.http.request({path:"/v0/blueprints",method:"DELETE",query:D,...F}),blueprintsPartialUpdate:(D,F,$={})=>this.http.request({path:"/v0/blueprints",method:"PATCH",query:D,body:F,type:"application/json",format:"json",...$}),metricsLogsQueryCreate:(D,F={})=>this.http.request({path:"/v0/metrics/logs/query",method:"POST",body:D,type:"application/json",format:"json",...F}),metricsLogsStreamList:(D,F={})=>this.http.request({path:"/v0/metrics/logs/stream",method:"GET",query:D,...F}),metricsQueryList:(D,F={})=>this.http.request({path:"/v0/metrics/query",method:"GET",query:D,format:"json",...F}),metricsQueryRangeList:(D,F={})=>this.http.request({path:"/v0/metrics/query_range",method:"GET",query:D,format:"json",...F}),networksRegisterCreate:(D={})=>this.http.request({path:"/v0/networks/register",method:"POST",type:"application/json",format:"json",...D}),networksSecretsList:(D={})=>this.http.request({path:"/v0/networks/secrets",method:"GET",type:"application/json",format:"json",...D}),networksSecretsCreate:(D={})=>this.http.request({path:"/v0/networks/secrets",method:"POST",type:"application/json",format:"json",...D}),networksSecretsDelete:(D={})=>this.http.request({path:"/v0/networks/secrets",method:"DELETE",type:"application/json",format:"json",...D}),networksVerifyCreate:(D,F={})=>this.http.request({path:"/v0/networks/verify",method:"POST",body:D,type:"application/json",format:"json",...F}),persistentServersList:(D={})=>this.http.request({path:"/v0/persistent-servers",method:"GET",format:"json",...D}),persistentServersUpdate:(D,F,$={})=>this.http.request({path:"/v0/persistent-servers",method:"PUT",query:D,body:F,type:"application/json",format:"json",...$}),persistentServersCreate:(D,F={})=>this.http.request({path:"/v0/persistent-servers",method:"POST",body:D,type:"application/json",format:"json",...F}),persistentServersDelete:(D,F={})=>this.http.request({path:"/v0/persistent-servers",method:"DELETE",query:D,...F}),persistentServersPartialUpdate:(D,F,$={})=>this.http.request({path:"/v0/persistent-servers",method:"PATCH",query:D,body:F,type:"application/json",format:"json",...$}),persistentServersPropertiesUpdate:(D,F,$={})=>this.http.request({path:"/v0/persistent-servers/properties",method:"PUT",query:D,body:F,type:"application/json",format:"json",...$}),persistentServersPropertiesDelete:(D,F,$={})=>this.http.request({path:"/v0/persistent-servers/properties",method:"DELETE",query:D,body:F,type:"application/json",format:"json",...$}),persistentServersPropertiesPartialUpdate:(D,F,$={})=>this.http.request({path:"/v0/persistent-servers/properties",method:"PATCH",query:D,body:F,type:"application/json",format:"json",...$}),pluginAssignmentsList:(D,F={})=>this.http.request({path:"/v0/plugin-assignments",method:"GET",query:D,format:"json",...F}),pluginAssignmentsCreate:(D,F={})=>this.http.request({path:"/v0/plugin-assignments",method:"POST",body:D,type:"application/json",format:"json",...F}),pluginAssignmentsDelete:(D,F={})=>this.http.request({path:"/v0/plugin-assignments",method:"DELETE",query:D,...F}),pluginsList:(D={})=>this.http.request({path:"/v0/plugins",method:"GET",format:"json",...D}),pluginsUpdate:(D,F,$={})=>this.http.request({path:"/v0/plugins",method:"PUT",query:D,body:F,type:"application/json",format:"json",...$}),pluginsCreate:(D,F={})=>this.http.request({path:"/v0/plugins",method:"POST",body:D,type:"application/json",format:"json",...F}),pluginsDelete:(D,F={})=>this.http.request({path:"/v0/plugins",method:"DELETE",query:D,...F}),serverGroupsList:(D,F={})=>this.http.request({path:"/v0/server-groups",method:"GET",query:D,format:"json",...F}),serverGroupsUpdate:(D,F,$={})=>this.http.request({path:"/v0/server-groups",method:"PUT",query:D,body:F,type:"application/json",format:"json",...$}),serverGroupsCreate:(D,F={})=>this.http.request({path:"/v0/server-groups",method:"POST",body:D,type:"application/json",format:"json",...F}),serverGroupsDelete:(D,F={})=>this.http.request({path:"/v0/server-groups",method:"DELETE",query:D,...F}),serverGroupsPartialUpdate:(D,F,$={})=>this.http.request({path:"/v0/server-groups",method:"PATCH",query:D,body:F,type:"application/json",format:"json",...$}),serverGroupsPropertiesUpdate:(D,F,$={})=>this.http.request({path:"/v0/server-groups/properties",method:"PUT",query:D,body:F,type:"application/json",format:"json",...$}),serverGroupsPropertiesDelete:(D,F,$={})=>this.http.request({path:"/v0/server-groups/properties",method:"DELETE",query:D,body:F,type:"application/json",format:"json",...$}),serverGroupsPropertiesPartialUpdate:(D,F,$={})=>this.http.request({path:"/v0/server-groups/properties",method:"PATCH",query:D,body:F,type:"application/json",format:"json",...$}),serverhostsList:(D,F={})=>this.http.request({path:"/v0/serverhosts",method:"GET",query:D,format:"json",...F}),serverhostsUpdate:(D,F,$={})=>this.http.request({path:"/v0/serverhosts",method:"PUT",query:D,body:F,type:"application/json",format:"json",...$}),serverhostsDelete:(D,F={})=>this.http.request({path:"/v0/serverhosts",method:"DELETE",query:D,format:"json",...F}),serverhostsDeactivatePartialUpdate:(D,F,$={})=>this.http.request({path:"/v0/serverhosts/deactivate",method:"PATCH",query:D,body:F,type:"application/json",format:"json",...$}),serverhostsRegisterCreate:(D,F={})=>this.http.request({path:"/v0/serverhosts/register",method:"POST",body:D,type:"application/json",format:"json",...F}),serverhostsVerifyCreate:(D,F={})=>this.http.request({path:"/v0/serverhosts/verify",method:"POST",body:D,type:"application/json",format:"json",...F}),serversList:(D,F={})=>this.http.request({path:"/v0/servers",method:"GET",query:D,format:"json",...F}),serversCreate:(D,F={})=>this.http.request({path:"/v0/servers",method:"POST",body:D,type:"application/json",format:"json",...F}),serversDelete:(D,F={})=>this.http.request({path:"/v0/servers",method:"DELETE",query:D,...F}),serversPartialUpdate:(D,F,$={})=>this.http.request({path:"/v0/servers",method:"PATCH",query:D,body:F,type:"application/json",format:"json",...$}),serversCommandCreate:(D,F,$={})=>this.http.request({path:"/v0/servers/command",method:"POST",query:D,body:F,type:"application/json",format:"json",...$}),serversPropertiesUpdate:(D,F,$={})=>this.http.request({path:"/v0/servers/properties",method:"PUT",query:D,body:F,type:"application/json",format:"json",...$}),serversPropertiesDelete:(D,F,$={})=>this.http.request({path:"/v0/servers/properties",method:"DELETE",query:D,body:F,type:"application/json",format:"json",...$}),serversPropertiesPartialUpdate:(D,F,$={})=>this.http.request({path:"/v0/servers/properties",method:"PATCH",query:D,body:F,type:"application/json",format:"json",...$}),statsList:(D={})=>this.http.request({path:"/v0/stats",method:"GET",format:"json",...D})}}var hJ=X4(Rf(),1),c3=X4(If(),1);import{stdout as $ND,stdin as BND}from"process";import*as uJ from"readline";import OlD from"readline";import{ReadStream as tZD}from"tty";var ElD=(D)=>D===161||D===164||D===167||D===168||D===170||D===173||D===174||D>=176&&D<=180||D>=182&&D<=186||D>=188&&D<=191||D===198||D===208||D===215||D===216||D>=222&&D<=225||D===230||D>=232&&D<=234||D===236||D===237||D===240||D===242||D===243||D>=247&&D<=250||D===252||D===254||D===257||D===273||D===275||D===283||D===294||D===295||D===299||D>=305&&D<=307||D===312||D>=319&&D<=322||D===324||D>=328&&D<=331||D===333||D===338||D===339||D===358||D===359||D===363||D===462||D===464||D===466||D===468||D===470||D===472||D===474||D===476||D===593||D===609||D===708||D===711||D>=713&&D<=715||D===717||D===720||D>=728&&D<=731||D===733||D===735||D>=768&&D<=879||D>=913&&D<=929||D>=931&&D<=937||D>=945&&D<=961||D>=963&&D<=969||D===1025||D>=1040&&D<=1103||D===1105||D===8208||D>=8211&&D<=8214||D===8216||D===8217||D===8220||D===8221||D>=8224&&D<=8226||D>=8228&&D<=8231||D===8240||D===8242||D===8243||D===8245||D===8251||D===8254||D===8308||D===8319||D>=8321&&D<=8324||D===8364||D===8451||D===8453||D===8457||D===8467||D===8470||D===8481||D===8482||D===8486||D===8491||D===8531||D===8532||D>=8539&&D<=8542||D>=8544&&D<=8555||D>=8560&&D<=8569||D===8585||D>=8592&&D<=8601||D===8632||D===8633||D===8658||D===8660||D===8679||D===8704||D===8706||D===8707||D===8711||D===8712||D===8715||D===8719||D===8721||D===8725||D===8730||D>=8733&&D<=8736||D===8739||D===8741||D>=8743&&D<=8748||D===8750||D>=8756&&D<=8759||D===8764||D===8765||D===8776||D===8780||D===8786||D===8800||D===8801||D>=8804&&D<=8807||D===8810||D===8811||D===8814||D===8815||D===8834||D===8835||D===8838||D===8839||D===8853||D===8857||D===8869||D===8895||D===8978||D>=9312&&D<=9449||D>=9451&&D<=9547||D>=9552&&D<=9587||D>=9600&&D<=9615||D>=9618&&D<=9621||D===9632||D===9633||D>=9635&&D<=9641||D===9650||D===9651||D===9654||D===9655||D===9660||D===9661||D===9664||D===9665||D>=9670&&D<=9672||D===9675||D>=9678&&D<=9681||D>=9698&&D<=9701||D===9711||D===9733||D===9734||D===9737||D===9742||D===9743||D===9756||D===9758||D===9792||D===9794||D===9824||D===9825||D>=9827&&D<=9829||D>=9831&&D<=9834||D===9836||D===9837||D===9839||D===9886||D===9887||D===9919||D>=9926&&D<=9933||D>=9935&&D<=9939||D>=9941&&D<=9953||D===9955||D===9960||D===9961||D>=9963&&D<=9969||D===9972||D>=9974&&D<=9977||D===9979||D===9980||D===9982||D===9983||D===10045||D>=10102&&D<=10111||D>=11094&&D<=11097||D>=12872&&D<=12879||D>=57344&&D<=63743||D>=65024&&D<=65039||D===65533||D>=127232&&D<=127242||D>=127248&&D<=127277||D>=127280&&D<=127337||D>=127344&&D<=127373||D===127375||D===127376||D>=127387&&D<=127404||D>=917760&&D<=917999||D>=983040&&D<=1048573||D>=1048576&&D<=1114109,zlD=(D)=>D===12288||D>=65281&&D<=65376||D>=65504&&D<=65510,_lD=(D)=>D>=4352&&D<=4447||D===8986||D===8987||D===9001||D===9002||D>=9193&&D<=9196||D===9200||D===9203||D===9725||D===9726||D===9748||D===9749||D>=9800&&D<=9811||D===9855||D===9875||D===9889||D===9898||D===9899||D===9917||D===9918||D===9924||D===9925||D===9934||D===9940||D===9962||D===9970||D===9971||D===9973||D===9978||D===9981||D===9989||D===9994||D===9995||D===10024||D===10060||D===10062||D>=10067&&D<=10069||D===10071||D>=10133&&D<=10135||D===10160||D===10175||D===11035||D===11036||D===11088||D===11093||D>=11904&&D<=11929||D>=11931&&D<=12019||D>=12032&&D<=12245||D>=12272&&D<=12287||D>=12289&&D<=12350||D>=12353&&D<=12438||D>=12441&&D<=12543||D>=12549&&D<=12591||D>=12593&&D<=12686||D>=12688&&D<=12771||D>=12783&&D<=12830||D>=12832&&D<=12871||D>=12880&&D<=19903||D>=19968&&D<=42124||D>=42128&&D<=42182||D>=43360&&D<=43388||D>=44032&&D<=55203||D>=63744&&D<=64255||D>=65040&&D<=65049||D>=65072&&D<=65106||D>=65108&&D<=65126||D>=65128&&D<=65131||D>=94176&&D<=94180||D===94192||D===94193||D>=94208&&D<=100343||D>=100352&&D<=101589||D>=101632&&D<=101640||D>=110576&&D<=110579||D>=110581&&D<=110587||D===110589||D===110590||D>=110592&&D<=110882||D===110898||D>=110928&&D<=110930||D===110933||D>=110948&&D<=110951||D>=110960&&D<=111355||D===126980||D===127183||D===127374||D>=127377&&D<=127386||D>=127488&&D<=127490||D>=127504&&D<=127547||D>=127552&&D<=127560||D===127568||D===127569||D>=127584&&D<=127589||D>=127744&&D<=127776||D>=127789&&D<=127797||D>=127799&&D<=127868||D>=127870&&D<=127891||D>=127904&&D<=127946||D>=127951&&D<=127955||D>=127968&&D<=127984||D===127988||D>=127992&&D<=128062||D===128064||D>=128066&&D<=128252||D>=128255&&D<=128317||D>=128331&&D<=128334||D>=128336&&D<=128359||D===128378||D===128405||D===128406||D===128420||D>=128507&&D<=128591||D>=128640&&D<=128709||D===128716||D>=128720&&D<=128722||D>=128725&&D<=128727||D>=128732&&D<=128735||D===128747||D===128748||D>=128756&&D<=128764||D>=128992&&D<=129003||D===129008||D>=129292&&D<=129338||D>=129340&&D<=129349||D>=129351&&D<=129535||D>=129648&&D<=129660||D>=129664&&D<=129672||D>=129680&&D<=129725||D>=129727&&D<=129733||D>=129742&&D<=129755||D>=129760&&D<=129768||D>=129776&&D<=129784||D>=131072&&D<=196605||D>=196608&&D<=262141,Sf=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/y,xT=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,bT=/\t{1,1000}/y,vf=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/yu,kT=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,wlD=/\p{M}+/gu,LlD={limit:1/0,ellipsis:""},XND=(D,F={},$={})=>{let B=F.limit??1/0,X=F.ellipsis??"",J=F?.ellipsisWidth??(X?XND(X,LlD,$).width:0),G=$.ansiWidth??0,Y=$.controlWidth??0,Q=$.tabWidth??8,Z=$.ambiguousWidth??1,N=$.emojiWidth??2,K=$.fullWidthWidth??2,C=$.regularWidth??1,V=$.wideWidth??2,H=0,W=0,E=D.length,L=0,M=!1,j=E,_=Math.max(0,B-J),h=0,R=0,z=0,P=0;D:for(;;){if(R>h||W>=E&&W>H){let S=D.slice(h,R)||D.slice(H,W);L=0;for(let a of S.replaceAll(wlD,"")){let k=a.codePointAt(0)||0;if(zlD(k)?P=K:_lD(k)?P=V:Z!==C&&ElD(k)?P=Z:P=C,z+P>_&&(j=Math.min(j,Math.max(h,H)+L)),z+P>B){M=!0;break D}L+=a.length,z+=P}h=R=0}if(W>=E)break;if(kT.lastIndex=W,kT.test(D)){if(L=kT.lastIndex-W,P=L*C,z+P>_&&(j=Math.min(j,W+Math.floor((_-z)/C))),z+P>B){M=!0;break}z+=P,h=H,R=W,W=H=kT.lastIndex;continue}if(Sf.lastIndex=W,Sf.test(D)){if(z+G>_&&(j=Math.min(j,W)),z+G>B){M=!0;break}z+=G,h=H,R=W,W=H=Sf.lastIndex;continue}if(xT.lastIndex=W,xT.test(D)){if(L=xT.lastIndex-W,P=L*Y,z+P>_&&(j=Math.min(j,W+Math.floor((_-z)/Y))),z+P>B){M=!0;break}z+=P,h=H,R=W,W=H=xT.lastIndex;continue}if(bT.lastIndex=W,bT.test(D)){if(L=bT.lastIndex-W,P=L*Q,z+P>_&&(j=Math.min(j,W+Math.floor((_-z)/Q))),z+P>B){M=!0;break}z+=P,h=H,R=W,W=H=bT.lastIndex;continue}if(vf.lastIndex=W,vf.test(D)){if(z+N>_&&(j=Math.min(j,W)),z+N>B){M=!0;break}z+=N,h=H,R=W,W=H=vf.lastIndex;continue}W+=1}return{width:M?_:z,index:M?j:E,truncated:M,ellipsed:M&&B>=J}},PlD={limit:1/0,ellipsis:"",ellipsisWidth:0},tA=(D,F={})=>XND(D,PlD,F).width,yT="\x1B",JND="\x9B",MlD=39,kf="\x07",GND="[",qlD="]",YND="m",gf=`${qlD}8;;`,sZD=new RegExp(`(?:\\${GND}(?<code>\\d+)m|\\${gf}(?<uri>.*)${kf})`,"y"),TlD=(D)=>{if(D>=30&&D<=37||D>=90&&D<=97)return 39;if(D>=40&&D<=47||D>=100&&D<=107)return 49;if(D===1||D===2)return 22;if(D===3)return 23;if(D===4)return 24;if(D===7)return 27;if(D===8)return 28;if(D===9)return 29;if(D===0)return 0},eZD=(D)=>`${yT}${GND}${D}${YND}`,DND=(D)=>`${yT}${gf}${D}${kf}`,RlD=(D)=>D.map((F)=>tA(F)),xf=(D,F,$)=>{let B=F[Symbol.iterator](),X=!1,J=!1,G=D.at(-1),Y=G===void 0?0:tA(G),Q=B.next(),Z=B.next(),N=0;for(;!Q.done;){let K=Q.value,C=tA(K);Y+C<=$?D[D.length-1]+=K:(D.push(K),Y=0),(K===yT||K===JND)&&(X=!0,J=F.startsWith(gf,N+1)),X?J?K===kf&&(X=!1,J=!1):K===YND&&(X=!1):(Y+=C,Y===$&&!Z.done&&(D.push(""),Y=0)),Q=Z,Z=B.next(),N+=K.length}G=D.at(-1),!Y&&G!==void 0&&G.length>0&&D.length>1&&(D[D.length-2]+=D.pop())},jlD=(D)=>{let F=D.split(" "),$=F.length;for(;$>0&&!(tA(F[$-1])>0);)$--;return $===F.length?D:F.slice(0,$).join(" ")+F.slice($).join("")},IlD=(D,F,$={})=>{if($.trim!==!1&&D.trim()==="")return"";let B="",X,J,G=D.split(" "),Y=RlD(G),Q=[""];for(let[H,W]of G.entries()){$.trim!==!1&&(Q[Q.length-1]=(Q.at(-1)??"").trimStart());let E=tA(Q.at(-1)??"");if(H!==0&&(E>=F&&($.wordWrap===!1||$.trim===!1)&&(Q.push(""),E=0),(E>0||$.trim===!1)&&(Q[Q.length-1]+=" ",E++)),$.hard&&Y[H]>F){let L=F-E,M=1+Math.floor((Y[H]-L-1)/F);Math.floor((Y[H]-1)/F)<M&&Q.push(""),xf(Q,W,F);continue}if(E+Y[H]>F&&E>0&&Y[H]>0){if($.wordWrap===!1&&E<F){xf(Q,W,F);continue}Q.push("")}if(E+Y[H]>F&&$.wordWrap===!1){xf(Q,W,F);continue}Q[Q.length-1]+=W}$.trim!==!1&&(Q=Q.map((H)=>jlD(H)));let Z=Q.join(`
|
|
163
|
+
`,"f");tD(this,r8,q(this,r8,"f")+D.join(" "),"f")}}}[sc](D){EC(q(this,C0,"f")).forEach((F)=>{if(((B)=>B==="configObjects")(F))return;let $=q(this,C0,"f")[F];if(Array.isArray($)){if($.includes(D))$.splice($.indexOf(D),1)}else if(typeof $==="object")delete $[D]}),delete q(this,p0,"f").getDescriptions()[D]}[mQD](D,F,$){if(!q(this,YT,"f")[$])q(this,S0,"f").process.emitWarning(D,F),q(this,YT,"f")[$]=!0}[uQD](){q(this,QT,"f").push({options:q(this,C0,"f"),configObjects:q(this,C0,"f").configObjects.slice(0),exitProcess:q(this,g$,"f"),groups:q(this,r9,"f"),strict:q(this,kQ,"f"),strictCommands:q(this,gQ,"f"),strictOptions:q(this,yQ,"f"),completionCommand:q(this,d4,"f"),output:q(this,r8,"f"),exitError:q(this,vJ,"f"),hasOutput:q(this,p4,"f"),parsed:this.parsed,parseFn:q(this,l4,"f"),parseContext:q(this,xQ,"f")}),q(this,p0,"f").freeze(),q(this,R6,"f").freeze(),q(this,n6,"f").freeze(),q(this,y$,"f").freeze()}[cQD](){let D="",F;if(/\b(node|iojs|electron)(\.exe)?$/.test(q(this,S0,"f").process.argv()[0]))F=q(this,S0,"f").process.argv().slice(1,2);else F=q(this,S0,"f").process.argv().slice(0,1);if(D=F.map(($)=>{let B=this[DZD](q(this,IQ,"f"),$);return $.match(/^(\/|([a-zA-Z]:)?\\)/)&&B.length<$.length?B:$}).join(" ").trim(),q(this,S0,"f").getEnv("_")&&q(this,S0,"f").getProcessArgvBin()===q(this,S0,"f").getEnv("_"))D=q(this,S0,"f").getEnv("_").replace(`${q(this,S0,"f").path.dirname(q(this,S0,"f").process.execPath())}/`,"");return D}[hQ](){return q(this,KT,"f")}[fQD](){return q(this,VT,"f")}[ec](){if(!q(this,SQ,"f"))return;let D=q(this,S0,"f").getEnv("LC_ALL")||q(this,S0,"f").getEnv("LC_MESSAGES")||q(this,S0,"f").getEnv("LANG")||q(this,S0,"f").getEnv("LANGUAGE")||"en_US";this.locale(D.replace(/[.:].*/,""))}[dQD](){return this[Df]().version||"unknown"}[pQD](D){let F=D["--"]?D["--"]:D._;for(let $=0,B;(B=F[$])!==void 0;$++)if(q(this,S0,"f").Parser.looksLikeNumber(B)&&Number.isSafeInteger(Math.floor(parseFloat(`${B}`))))F[$]=Number(B);return D}[Df](D){let F=D||"*";if(q(this,_C,"f")[F])return q(this,_C,"f")[F];let $={};try{let B=D||q(this,S0,"f").mainFilename;if(q(this,S0,"f").path.extname(B))B=q(this,S0,"f").path.dirname(B);let X=q(this,S0,"f").findUp(B,(J,G)=>{if(G.includes("package.json"))return"package.json";else return});z1(X,void 0,q(this,S0,"f")),$=JSON.parse(q(this,S0,"f").readFileSync(X,"utf8"))}catch(B){}return q(this,_C,"f")[F]=$||{},q(this,_C,"f")[F]}[bJ](D,F){F=[].concat(F),F.forEach(($)=>{$=this[Bf]($),q(this,C0,"f")[D].push($)})}[wC](D,F,$,B){this[$f](D,F,$,B,(X,J,G)=>{q(this,C0,"f")[X][J]=G})}[Ff](D,F,$,B){this[$f](D,F,$,B,(X,J,G)=>{q(this,C0,"f")[X][J]=(q(this,C0,"f")[X][J]||[]).concat(G)})}[$f](D,F,$,B,X){if(Array.isArray($))$.forEach((J)=>{D(J,B)});else if(((J)=>typeof J==="object")($))for(let J of EC($))D(J,$[J]);else X(F,this[Bf]($),B)}[Bf](D){if(D==="__proto__")return"___proto___";return D}[Xf](D,F){return this[wC](this[Xf].bind(this),"key",D,F),this}[Jf](){var D,F,$,B,X,J,G,Y,Q,Z,N,K;let C=q(this,QT,"f").pop();z1(C,void 0,q(this,S0,"f"));let V;D=this,F=this,$=this,B=this,X=this,J=this,G=this,Y=this,Q=this,Z=this,N=this,K=this,{options:{set value(H){tD(D,C0,H,"f")}}.value,configObjects:V,exitProcess:{set value(H){tD(F,g$,H,"f")}}.value,groups:{set value(H){tD($,r9,H,"f")}}.value,output:{set value(H){tD(B,r8,H,"f")}}.value,exitError:{set value(H){tD(X,vJ,H,"f")}}.value,hasOutput:{set value(H){tD(J,p4,H,"f")}}.value,parsed:this.parsed,strict:{set value(H){tD(G,kQ,H,"f")}}.value,strictCommands:{set value(H){tD(Y,gQ,H,"f")}}.value,strictOptions:{set value(H){tD(Q,yQ,H,"f")}}.value,completionCommand:{set value(H){tD(Z,d4,H,"f")}}.value,parseFn:{set value(H){tD(N,l4,H,"f")}}.value,parseContext:{set value(H){tD(K,xQ,H,"f")}}.value}=C,q(this,C0,"f").configObjects=V,q(this,p0,"f").unfreeze(),q(this,R6,"f").unfreeze(),q(this,n6,"f").unfreeze(),q(this,y$,"f").unfreeze()}[lQD](D,F){return jQ(F,($)=>{return D($),$})}getInternalMethods(){return{getCommandInstance:this[nQD].bind(this),getContext:this[oQD].bind(this),getHasOutput:this[iQD].bind(this),getLoggerInstance:this[rQD].bind(this),getParseContext:this[aQD].bind(this),getParserConfiguration:this[hQ].bind(this),getUsageConfiguration:this[fQD].bind(this),getUsageInstance:this[tQD].bind(this),getValidationInstance:this[sQD].bind(this),hasParseCallback:this[UT].bind(this),isGlobalContext:this[eQD].bind(this),postProcess:this[mQ].bind(this),reset:this[Gf].bind(this),runValidation:this[Yf].bind(this),runYargsParserAndExecuteCommands:this[dA].bind(this),setHasOutput:this[FZD].bind(this)}}[nQD](){return q(this,n6,"f")}[oQD](){return q(this,fA,"f")}[iQD](){return q(this,p4,"f")}[rQD](){return q(this,vQ,"f")}[aQD](){return q(this,xQ,"f")||{}}[tQD](){return q(this,p0,"f")}[sQD](){return q(this,R6,"f")}[UT](){return!!q(this,l4,"f")}[eQD](){return q(this,ZT,"f")}[mQ](D,F,$,B){if($)return D;if(p2(D))return D;if(!F)D=this[yQD](D);if(this[hQ]()["parse-positional-numbers"]||this[hQ]()["parse-positional-numbers"]===void 0)D=this[pQD](D);if(B)D=RQ(D,this,q(this,y$,"f").getMiddleware(),!1);return D}[Gf](D={}){tD(this,C0,q(this,C0,"f")||{},"f");let F={};F.local=q(this,C0,"f").local||[],F.configObjects=q(this,C0,"f").configObjects||[];let $={};F.local.forEach((J)=>{$[J]=!0,(D[J]||[]).forEach((G)=>{$[G]=!0})}),Object.assign(q(this,bQ,"f"),Object.keys(q(this,r9,"f")).reduce((J,G)=>{let Y=q(this,r9,"f")[G].filter((Q)=>!(Q in $));if(Y.length>0)J[G]=Y;return J},{})),tD(this,r9,{},"f");let B=["array","boolean","string","skipValidation","count","normalize","number","hiddenOptions"],X=["narg","key","alias","default","defaultDescription","config","choices","demandedOptions","demandedCommands","deprecatedOptions"];if(B.forEach((J)=>{F[J]=(q(this,C0,"f")[J]||[]).filter((G)=>!$[G])}),X.forEach((J)=>{F[J]=IJ(q(this,C0,"f")[J],(G)=>!$[G])}),F.envPrefix=q(this,C0,"f").envPrefix,tD(this,C0,F,"f"),tD(this,p0,q(this,p0,"f")?q(this,p0,"f").reset($):RQD(this,q(this,S0,"f")),"f"),tD(this,R6,q(this,R6,"f")?q(this,R6,"f").reset($):kQD(this,q(this,p0,"f"),q(this,S0,"f")),"f"),tD(this,n6,q(this,n6,"f")?q(this,n6,"f").reset():MQD(q(this,p0,"f"),q(this,R6,"f"),q(this,y$,"f"),q(this,S0,"f")),"f"),!q(this,o1,"f"))tD(this,o1,vQD(this,q(this,p0,"f"),q(this,n6,"f"),q(this,S0,"f")),"f");return q(this,y$,"f").reset(),tD(this,d4,null,"f"),tD(this,r8,"","f"),tD(this,vJ,null,"f"),tD(this,p4,!1,"f"),this.parsed=!1,this}[DZD](D,F){return q(this,S0,"f").path.relative(D,F)}[dA](D,F,$,B=0,X=!1){var J,G,Y,Q;let Z=!!$||X;D=D||q(this,xJ,"f"),q(this,C0,"f").__=q(this,S0,"f").y18n.__,q(this,C0,"f").configuration=this[hQ]();let N=!!q(this,C0,"f").configuration["populate--"],K=Object.assign({},q(this,C0,"f").configuration,{"populate--":!0}),C=q(this,S0,"f").Parser.detailed(D,Object.assign({},q(this,C0,"f"),{configuration:{"parse-positional-numbers":!1,...K}})),V=Object.assign(C.argv,q(this,xQ,"f")),H=void 0,W=C.aliases,E=!1,L=!1;if(Object.keys(V).forEach((M)=>{if(M===q(this,h$,"f")&&V[M])E=!0;else if(M===q(this,a9,"f")&&V[M])L=!0}),V.$0=this.$0,this.parsed=C,B===0)q(this,p0,"f").clearCachedHelpMessage();try{if(this[ec](),F)return this[mQ](V,N,!!$,!1);if(q(this,h$,"f")){if([q(this,h$,"f")].concat(W[q(this,h$,"f")]||[]).filter((R)=>R.length>1).includes(""+V._[V._.length-1]))V._.pop(),E=!0}tD(this,ZT,!1,"f");let M=q(this,n6,"f").getCommands(),j=((J=q(this,o1,"f"))===null||J===void 0?void 0:J.completionKey)?[(G=q(this,o1,"f"))===null||G===void 0?void 0:G.completionKey,...(Q=this.getAliases()[(Y=q(this,o1,"f"))===null||Y===void 0?void 0:Y.completionKey])!==null&&Q!==void 0?Q:[]].some((h)=>Object.prototype.hasOwnProperty.call(V,h)):!1,_=E||j||X;if(V._.length){if(M.length){let h;for(let R=B||0,z;V._[R]!==void 0;R++)if(z=String(V._[R]),M.includes(z)&&z!==q(this,d4,"f")){let P=q(this,n6,"f").runCommand(z,this,C,R+1,X,E||L||X);return this[mQ](P,N,!!$,!1)}else if(!h&&z!==q(this,d4,"f")){h=z;break}if(!q(this,n6,"f").hasDefaultCommand()&&q(this,CT,"f")&&h&&!_)q(this,R6,"f").recommendCommands(h,M)}if(q(this,d4,"f")&&V._.includes(q(this,d4,"f"))&&!j){if(q(this,g$,"f"))SJ(!0);this.showCompletionScript(),this.exit(0)}}if(q(this,n6,"f").hasDefaultCommand()&&!_){let h=q(this,n6,"f").runCommand(null,this,C,0,X,E||L||X);return this[mQ](h,N,!!$,!1)}if(j){if(q(this,g$,"f"))SJ(!0);D=[].concat(D);let h=D.slice(D.indexOf(`--${q(this,o1,"f").completionKey}`)+1);return q(this,o1,"f").getCompletion(h,(R,z)=>{if(R)throw new l6(R.message);(z||[]).forEach((P)=>{q(this,vQ,"f").log(P)}),this.exit(0)}),this[mQ](V,!N,!!$,!1)}if(!q(this,p4,"f")){if(E){if(q(this,g$,"f"))SJ(!0);Z=!0,this.showHelp((h)=>{q(this,vQ,"f").log(h),this.exit(0)})}else if(L){if(q(this,g$,"f"))SJ(!0);Z=!0,q(this,p0,"f").showVersion("log"),this.exit(0)}}if(!Z&&q(this,C0,"f").skipValidation.length>0)Z=Object.keys(V).some((h)=>q(this,C0,"f").skipValidation.indexOf(h)>=0&&V[h]===!0);if(!Z){if(C.error)throw new l6(C.error.message);if(!j){let h=this[Yf](W,{},C.error);if(!$)H=RQ(V,this,q(this,y$,"f").getMiddleware(),!0);if(H=this[lQD](h,H!==null&&H!==void 0?H:V),p2(H)&&!$)H=H.then(()=>{return RQ(V,this,q(this,y$,"f").getMiddleware(),!1)})}}}catch(M){if(M instanceof l6)q(this,p0,"f").fail(M.message,M);else throw M}return this[mQ](H!==null&&H!==void 0?H:V,N,!!$,!0)}[Yf](D,F,$,B){let X={...this.getDemandedOptions()};return(J)=>{if($)throw new l6($.message);q(this,R6,"f").nonOptionCount(J),q(this,R6,"f").requiredArguments(J,X);let G=!1;if(q(this,gQ,"f"))G=q(this,R6,"f").unknownCommands(J);if(q(this,kQ,"f")&&!G)q(this,R6,"f").unknownArguments(J,D,F,!!B);else if(q(this,yQ,"f"))q(this,R6,"f").unknownArguments(J,D,{},!1,!1);q(this,R6,"f").limitedChoices(J),q(this,R6,"f").implications(J),q(this,R6,"f").conflicting(J)}}[FZD](){tD(this,p4,!0,"f")}[uQ](D){if(typeof D==="string")q(this,C0,"f").key[D]=!0;else for(let F of D)q(this,C0,"f").key[F]=!0}}function qQD(D){return!!D&&typeof D.getInternalMethods==="function"}var YpD=$ZD(oc),XZD=YpD;var pA="0.0.1-beta.27";e9();class Mf{baseUrl="http://localhost:1337";securityData=null;securityWorker;abortControllers=new Map;customFetch=(...D)=>fetch(...D);baseApiParams={credentials:"same-origin",headers:{},redirect:"follow",referrerPolicy:"no-referrer"};constructor(D={}){Object.assign(this,D)}setSecurityData=(D)=>{this.securityData=D};encodeQueryParam(D,F){return`${encodeURIComponent(D)}=${encodeURIComponent(typeof F==="number"?F:`${F}`)}`}addQueryParam(D,F){return this.encodeQueryParam(F,D[F])}addArrayQueryParam(D,F){return D[F].map((B)=>this.encodeQueryParam(F,B)).join("&")}toQueryString(D){let F=D||{};return Object.keys(F).filter((B)=>typeof F[B]!=="undefined").map((B)=>Array.isArray(F[B])?this.addArrayQueryParam(F,B):this.addQueryParam(F,B)).join("&")}addQueryParams(D){let F=this.toQueryString(D);return F?`?${F}`:""}contentFormatters={["application/json"]:(D)=>D!==null&&(typeof D==="object"||typeof D==="string")?JSON.stringify(D):D,["application/vnd.api+json"]:(D)=>D!==null&&(typeof D==="object"||typeof D==="string")?JSON.stringify(D):D,["text/plain"]:(D)=>D!==null&&typeof D!=="string"?JSON.stringify(D):D,["multipart/form-data"]:(D)=>{if(D instanceof FormData)return D;return Object.keys(D||{}).reduce((F,$)=>{let B=D[$];return F.append($,B instanceof Blob?B:typeof B==="object"&&B!==null?JSON.stringify(B):`${B}`),F},new FormData)},["application/x-www-form-urlencoded"]:(D)=>this.toQueryString(D)};mergeRequestParams(D,F){return{...this.baseApiParams,...D,...F||{},headers:{...this.baseApiParams.headers||{},...D.headers||{},...F&&F.headers||{}}}}createAbortSignal=(D)=>{if(this.abortControllers.has(D)){let $=this.abortControllers.get(D);if($)return $.signal;return}let F=new AbortController;return this.abortControllers.set(D,F),F.signal};abortRequest=(D)=>{let F=this.abortControllers.get(D);if(F)F.abort(),this.abortControllers.delete(D)};request=async({body:D,secure:F,path:$,type:B,query:X,format:J,baseUrl:G,cancelToken:Y,...Q})=>{let Z=(typeof F==="boolean"?F:this.baseApiParams.secure)&&this.securityWorker&&await this.securityWorker(this.securityData)||{},N=this.mergeRequestParams(Q,Z),K=X&&this.toQueryString(X),C=this.contentFormatters[B||"application/json"],V=J||N.format;return this.customFetch(`${G||this.baseUrl||""}${$}${K?`?${K}`:""}`,{...N,headers:{...N.headers||{},...B&&B!=="multipart/form-data"?{"Content-Type":B}:{}},signal:(Y?this.createAbortSignal(Y):N.signal)||null,body:typeof D==="undefined"||D===null?null:C(D)}).then(async(H)=>{let W=H;W.data=null,W.error=null;let E=V?H.clone():H,L=!V?W:await E[V]().then((M)=>{if(W.ok)W.data=M;else W.error=M;return W}).catch((M)=>{return W.error=M,W});if(Y)this.abortControllers.delete(Y);if(!H.ok)throw L;return L})}}class qf{http;constructor(D){this.http=D}v0={blueprintsList:(D={})=>this.http.request({path:"/v0/blueprints",method:"GET",format:"json",...D}),blueprintsUpdate:(D,F,$={})=>this.http.request({path:"/v0/blueprints",method:"PUT",query:D,body:F,type:"application/json",format:"json",...$}),blueprintsCreate:(D,F={})=>this.http.request({path:"/v0/blueprints",method:"POST",body:D,type:"application/json",format:"json",...F}),blueprintsDelete:(D,F={})=>this.http.request({path:"/v0/blueprints",method:"DELETE",query:D,...F}),blueprintsPartialUpdate:(D,F,$={})=>this.http.request({path:"/v0/blueprints",method:"PATCH",query:D,body:F,type:"application/json",format:"json",...$}),metricsLogsQueryCreate:(D,F={})=>this.http.request({path:"/v0/metrics/logs/query",method:"POST",body:D,type:"application/json",format:"json",...F}),metricsLogsStreamList:(D,F={})=>this.http.request({path:"/v0/metrics/logs/stream",method:"GET",query:D,...F}),metricsQueryList:(D,F={})=>this.http.request({path:"/v0/metrics/query",method:"GET",query:D,format:"json",...F}),metricsQueryRangeList:(D,F={})=>this.http.request({path:"/v0/metrics/query_range",method:"GET",query:D,format:"json",...F}),networksRegisterCreate:(D={})=>this.http.request({path:"/v0/networks/register",method:"POST",type:"application/json",format:"json",...D}),networksSecretsList:(D={})=>this.http.request({path:"/v0/networks/secrets",method:"GET",type:"application/json",format:"json",...D}),networksSecretsCreate:(D={})=>this.http.request({path:"/v0/networks/secrets",method:"POST",type:"application/json",format:"json",...D}),networksSecretsDelete:(D={})=>this.http.request({path:"/v0/networks/secrets",method:"DELETE",type:"application/json",format:"json",...D}),networksVerifyCreate:(D,F={})=>this.http.request({path:"/v0/networks/verify",method:"POST",body:D,type:"application/json",format:"json",...F}),persistentServersList:(D={})=>this.http.request({path:"/v0/persistent-servers",method:"GET",format:"json",...D}),persistentServersUpdate:(D,F,$={})=>this.http.request({path:"/v0/persistent-servers",method:"PUT",query:D,body:F,type:"application/json",format:"json",...$}),persistentServersCreate:(D,F={})=>this.http.request({path:"/v0/persistent-servers",method:"POST",body:D,type:"application/json",format:"json",...F}),persistentServersDelete:(D,F={})=>this.http.request({path:"/v0/persistent-servers",method:"DELETE",query:D,...F}),persistentServersPartialUpdate:(D,F,$={})=>this.http.request({path:"/v0/persistent-servers",method:"PATCH",query:D,body:F,type:"application/json",format:"json",...$}),persistentServersPropertiesUpdate:(D,F,$={})=>this.http.request({path:"/v0/persistent-servers/properties",method:"PUT",query:D,body:F,type:"application/json",format:"json",...$}),persistentServersPropertiesDelete:(D,F,$={})=>this.http.request({path:"/v0/persistent-servers/properties",method:"DELETE",query:D,body:F,type:"application/json",format:"json",...$}),persistentServersPropertiesPartialUpdate:(D,F,$={})=>this.http.request({path:"/v0/persistent-servers/properties",method:"PATCH",query:D,body:F,type:"application/json",format:"json",...$}),pluginAssignmentsList:(D,F={})=>this.http.request({path:"/v0/plugin-assignments",method:"GET",query:D,format:"json",...F}),pluginAssignmentsCreate:(D,F={})=>this.http.request({path:"/v0/plugin-assignments",method:"POST",body:D,type:"application/json",format:"json",...F}),pluginAssignmentsDelete:(D,F={})=>this.http.request({path:"/v0/plugin-assignments",method:"DELETE",query:D,...F}),pluginsList:(D={})=>this.http.request({path:"/v0/plugins",method:"GET",format:"json",...D}),pluginsUpdate:(D,F,$={})=>this.http.request({path:"/v0/plugins",method:"PUT",query:D,body:F,type:"application/json",format:"json",...$}),pluginsCreate:(D,F={})=>this.http.request({path:"/v0/plugins",method:"POST",body:D,type:"application/json",format:"json",...F}),pluginsDelete:(D,F={})=>this.http.request({path:"/v0/plugins",method:"DELETE",query:D,...F}),serverGroupsList:(D,F={})=>this.http.request({path:"/v0/server-groups",method:"GET",query:D,format:"json",...F}),serverGroupsUpdate:(D,F,$={})=>this.http.request({path:"/v0/server-groups",method:"PUT",query:D,body:F,type:"application/json",format:"json",...$}),serverGroupsCreate:(D,F={})=>this.http.request({path:"/v0/server-groups",method:"POST",body:D,type:"application/json",format:"json",...F}),serverGroupsDelete:(D,F={})=>this.http.request({path:"/v0/server-groups",method:"DELETE",query:D,...F}),serverGroupsPartialUpdate:(D,F,$={})=>this.http.request({path:"/v0/server-groups",method:"PATCH",query:D,body:F,type:"application/json",format:"json",...$}),serverGroupsPropertiesUpdate:(D,F,$={})=>this.http.request({path:"/v0/server-groups/properties",method:"PUT",query:D,body:F,type:"application/json",format:"json",...$}),serverGroupsPropertiesDelete:(D,F,$={})=>this.http.request({path:"/v0/server-groups/properties",method:"DELETE",query:D,body:F,type:"application/json",format:"json",...$}),serverGroupsPropertiesPartialUpdate:(D,F,$={})=>this.http.request({path:"/v0/server-groups/properties",method:"PATCH",query:D,body:F,type:"application/json",format:"json",...$}),serverhostsList:(D,F={})=>this.http.request({path:"/v0/serverhosts",method:"GET",query:D,format:"json",...F}),serverhostsUpdate:(D,F,$={})=>this.http.request({path:"/v0/serverhosts",method:"PUT",query:D,body:F,type:"application/json",format:"json",...$}),serverhostsDelete:(D,F={})=>this.http.request({path:"/v0/serverhosts",method:"DELETE",query:D,format:"json",...F}),serverhostsDeactivatePartialUpdate:(D,F,$={})=>this.http.request({path:"/v0/serverhosts/deactivate",method:"PATCH",query:D,body:F,type:"application/json",format:"json",...$}),serverhostsRegisterCreate:(D,F={})=>this.http.request({path:"/v0/serverhosts/register",method:"POST",body:D,type:"application/json",format:"json",...F}),serverhostsVerifyCreate:(D,F={})=>this.http.request({path:"/v0/serverhosts/verify",method:"POST",body:D,type:"application/json",format:"json",...F}),serversList:(D,F={})=>this.http.request({path:"/v0/servers",method:"GET",query:D,format:"json",...F}),serversCreate:(D,F={})=>this.http.request({path:"/v0/servers",method:"POST",body:D,type:"application/json",format:"json",...F}),serversDelete:(D,F={})=>this.http.request({path:"/v0/servers",method:"DELETE",query:D,...F}),serversPartialUpdate:(D,F,$={})=>this.http.request({path:"/v0/servers",method:"PATCH",query:D,body:F,type:"application/json",format:"json",...$}),serversCommandCreate:(D,F,$={})=>this.http.request({path:"/v0/servers/command",method:"POST",query:D,body:F,type:"application/json",format:"json",...$}),serversPropertiesUpdate:(D,F,$={})=>this.http.request({path:"/v0/servers/properties",method:"PUT",query:D,body:F,type:"application/json",format:"json",...$}),serversPropertiesDelete:(D,F,$={})=>this.http.request({path:"/v0/servers/properties",method:"DELETE",query:D,body:F,type:"application/json",format:"json",...$}),serversPropertiesPartialUpdate:(D,F,$={})=>this.http.request({path:"/v0/servers/properties",method:"PATCH",query:D,body:F,type:"application/json",format:"json",...$}),statsList:(D={})=>this.http.request({path:"/v0/stats",method:"GET",format:"json",...D})}}var hJ=X4(Rf(),1),c3=X4(If(),1);import{stdout as $ND,stdin as BND}from"process";import*as uJ from"readline";import OlD from"readline";import{ReadStream as tZD}from"tty";var ElD=(D)=>D===161||D===164||D===167||D===168||D===170||D===173||D===174||D>=176&&D<=180||D>=182&&D<=186||D>=188&&D<=191||D===198||D===208||D===215||D===216||D>=222&&D<=225||D===230||D>=232&&D<=234||D===236||D===237||D===240||D===242||D===243||D>=247&&D<=250||D===252||D===254||D===257||D===273||D===275||D===283||D===294||D===295||D===299||D>=305&&D<=307||D===312||D>=319&&D<=322||D===324||D>=328&&D<=331||D===333||D===338||D===339||D===358||D===359||D===363||D===462||D===464||D===466||D===468||D===470||D===472||D===474||D===476||D===593||D===609||D===708||D===711||D>=713&&D<=715||D===717||D===720||D>=728&&D<=731||D===733||D===735||D>=768&&D<=879||D>=913&&D<=929||D>=931&&D<=937||D>=945&&D<=961||D>=963&&D<=969||D===1025||D>=1040&&D<=1103||D===1105||D===8208||D>=8211&&D<=8214||D===8216||D===8217||D===8220||D===8221||D>=8224&&D<=8226||D>=8228&&D<=8231||D===8240||D===8242||D===8243||D===8245||D===8251||D===8254||D===8308||D===8319||D>=8321&&D<=8324||D===8364||D===8451||D===8453||D===8457||D===8467||D===8470||D===8481||D===8482||D===8486||D===8491||D===8531||D===8532||D>=8539&&D<=8542||D>=8544&&D<=8555||D>=8560&&D<=8569||D===8585||D>=8592&&D<=8601||D===8632||D===8633||D===8658||D===8660||D===8679||D===8704||D===8706||D===8707||D===8711||D===8712||D===8715||D===8719||D===8721||D===8725||D===8730||D>=8733&&D<=8736||D===8739||D===8741||D>=8743&&D<=8748||D===8750||D>=8756&&D<=8759||D===8764||D===8765||D===8776||D===8780||D===8786||D===8800||D===8801||D>=8804&&D<=8807||D===8810||D===8811||D===8814||D===8815||D===8834||D===8835||D===8838||D===8839||D===8853||D===8857||D===8869||D===8895||D===8978||D>=9312&&D<=9449||D>=9451&&D<=9547||D>=9552&&D<=9587||D>=9600&&D<=9615||D>=9618&&D<=9621||D===9632||D===9633||D>=9635&&D<=9641||D===9650||D===9651||D===9654||D===9655||D===9660||D===9661||D===9664||D===9665||D>=9670&&D<=9672||D===9675||D>=9678&&D<=9681||D>=9698&&D<=9701||D===9711||D===9733||D===9734||D===9737||D===9742||D===9743||D===9756||D===9758||D===9792||D===9794||D===9824||D===9825||D>=9827&&D<=9829||D>=9831&&D<=9834||D===9836||D===9837||D===9839||D===9886||D===9887||D===9919||D>=9926&&D<=9933||D>=9935&&D<=9939||D>=9941&&D<=9953||D===9955||D===9960||D===9961||D>=9963&&D<=9969||D===9972||D>=9974&&D<=9977||D===9979||D===9980||D===9982||D===9983||D===10045||D>=10102&&D<=10111||D>=11094&&D<=11097||D>=12872&&D<=12879||D>=57344&&D<=63743||D>=65024&&D<=65039||D===65533||D>=127232&&D<=127242||D>=127248&&D<=127277||D>=127280&&D<=127337||D>=127344&&D<=127373||D===127375||D===127376||D>=127387&&D<=127404||D>=917760&&D<=917999||D>=983040&&D<=1048573||D>=1048576&&D<=1114109,zlD=(D)=>D===12288||D>=65281&&D<=65376||D>=65504&&D<=65510,_lD=(D)=>D>=4352&&D<=4447||D===8986||D===8987||D===9001||D===9002||D>=9193&&D<=9196||D===9200||D===9203||D===9725||D===9726||D===9748||D===9749||D>=9800&&D<=9811||D===9855||D===9875||D===9889||D===9898||D===9899||D===9917||D===9918||D===9924||D===9925||D===9934||D===9940||D===9962||D===9970||D===9971||D===9973||D===9978||D===9981||D===9989||D===9994||D===9995||D===10024||D===10060||D===10062||D>=10067&&D<=10069||D===10071||D>=10133&&D<=10135||D===10160||D===10175||D===11035||D===11036||D===11088||D===11093||D>=11904&&D<=11929||D>=11931&&D<=12019||D>=12032&&D<=12245||D>=12272&&D<=12287||D>=12289&&D<=12350||D>=12353&&D<=12438||D>=12441&&D<=12543||D>=12549&&D<=12591||D>=12593&&D<=12686||D>=12688&&D<=12771||D>=12783&&D<=12830||D>=12832&&D<=12871||D>=12880&&D<=19903||D>=19968&&D<=42124||D>=42128&&D<=42182||D>=43360&&D<=43388||D>=44032&&D<=55203||D>=63744&&D<=64255||D>=65040&&D<=65049||D>=65072&&D<=65106||D>=65108&&D<=65126||D>=65128&&D<=65131||D>=94176&&D<=94180||D===94192||D===94193||D>=94208&&D<=100343||D>=100352&&D<=101589||D>=101632&&D<=101640||D>=110576&&D<=110579||D>=110581&&D<=110587||D===110589||D===110590||D>=110592&&D<=110882||D===110898||D>=110928&&D<=110930||D===110933||D>=110948&&D<=110951||D>=110960&&D<=111355||D===126980||D===127183||D===127374||D>=127377&&D<=127386||D>=127488&&D<=127490||D>=127504&&D<=127547||D>=127552&&D<=127560||D===127568||D===127569||D>=127584&&D<=127589||D>=127744&&D<=127776||D>=127789&&D<=127797||D>=127799&&D<=127868||D>=127870&&D<=127891||D>=127904&&D<=127946||D>=127951&&D<=127955||D>=127968&&D<=127984||D===127988||D>=127992&&D<=128062||D===128064||D>=128066&&D<=128252||D>=128255&&D<=128317||D>=128331&&D<=128334||D>=128336&&D<=128359||D===128378||D===128405||D===128406||D===128420||D>=128507&&D<=128591||D>=128640&&D<=128709||D===128716||D>=128720&&D<=128722||D>=128725&&D<=128727||D>=128732&&D<=128735||D===128747||D===128748||D>=128756&&D<=128764||D>=128992&&D<=129003||D===129008||D>=129292&&D<=129338||D>=129340&&D<=129349||D>=129351&&D<=129535||D>=129648&&D<=129660||D>=129664&&D<=129672||D>=129680&&D<=129725||D>=129727&&D<=129733||D>=129742&&D<=129755||D>=129760&&D<=129768||D>=129776&&D<=129784||D>=131072&&D<=196605||D>=196608&&D<=262141,Sf=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/y,xT=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,bT=/\t{1,1000}/y,vf=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/yu,kT=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,wlD=/\p{M}+/gu,LlD={limit:1/0,ellipsis:""},XND=(D,F={},$={})=>{let B=F.limit??1/0,X=F.ellipsis??"",J=F?.ellipsisWidth??(X?XND(X,LlD,$).width:0),G=$.ansiWidth??0,Y=$.controlWidth??0,Q=$.tabWidth??8,Z=$.ambiguousWidth??1,N=$.emojiWidth??2,K=$.fullWidthWidth??2,C=$.regularWidth??1,V=$.wideWidth??2,H=0,W=0,E=D.length,L=0,M=!1,j=E,_=Math.max(0,B-J),h=0,R=0,z=0,P=0;D:for(;;){if(R>h||W>=E&&W>H){let S=D.slice(h,R)||D.slice(H,W);L=0;for(let a of S.replaceAll(wlD,"")){let k=a.codePointAt(0)||0;if(zlD(k)?P=K:_lD(k)?P=V:Z!==C&&ElD(k)?P=Z:P=C,z+P>_&&(j=Math.min(j,Math.max(h,H)+L)),z+P>B){M=!0;break D}L+=a.length,z+=P}h=R=0}if(W>=E)break;if(kT.lastIndex=W,kT.test(D)){if(L=kT.lastIndex-W,P=L*C,z+P>_&&(j=Math.min(j,W+Math.floor((_-z)/C))),z+P>B){M=!0;break}z+=P,h=H,R=W,W=H=kT.lastIndex;continue}if(Sf.lastIndex=W,Sf.test(D)){if(z+G>_&&(j=Math.min(j,W)),z+G>B){M=!0;break}z+=G,h=H,R=W,W=H=Sf.lastIndex;continue}if(xT.lastIndex=W,xT.test(D)){if(L=xT.lastIndex-W,P=L*Y,z+P>_&&(j=Math.min(j,W+Math.floor((_-z)/Y))),z+P>B){M=!0;break}z+=P,h=H,R=W,W=H=xT.lastIndex;continue}if(bT.lastIndex=W,bT.test(D)){if(L=bT.lastIndex-W,P=L*Q,z+P>_&&(j=Math.min(j,W+Math.floor((_-z)/Q))),z+P>B){M=!0;break}z+=P,h=H,R=W,W=H=bT.lastIndex;continue}if(vf.lastIndex=W,vf.test(D)){if(z+N>_&&(j=Math.min(j,W)),z+N>B){M=!0;break}z+=N,h=H,R=W,W=H=vf.lastIndex;continue}W+=1}return{width:M?_:z,index:M?j:E,truncated:M,ellipsed:M&&B>=J}},PlD={limit:1/0,ellipsis:"",ellipsisWidth:0},tA=(D,F={})=>XND(D,PlD,F).width,yT="\x1B",JND="\x9B",MlD=39,kf="\x07",GND="[",qlD="]",YND="m",gf=`${qlD}8;;`,sZD=new RegExp(`(?:\\${GND}(?<code>\\d+)m|\\${gf}(?<uri>.*)${kf})`,"y"),TlD=(D)=>{if(D>=30&&D<=37||D>=90&&D<=97)return 39;if(D>=40&&D<=47||D>=100&&D<=107)return 49;if(D===1||D===2)return 22;if(D===3)return 23;if(D===4)return 24;if(D===7)return 27;if(D===8)return 28;if(D===9)return 29;if(D===0)return 0},eZD=(D)=>`${yT}${GND}${D}${YND}`,DND=(D)=>`${yT}${gf}${D}${kf}`,RlD=(D)=>D.map((F)=>tA(F)),xf=(D,F,$)=>{let B=F[Symbol.iterator](),X=!1,J=!1,G=D.at(-1),Y=G===void 0?0:tA(G),Q=B.next(),Z=B.next(),N=0;for(;!Q.done;){let K=Q.value,C=tA(K);Y+C<=$?D[D.length-1]+=K:(D.push(K),Y=0),(K===yT||K===JND)&&(X=!0,J=F.startsWith(gf,N+1)),X?J?K===kf&&(X=!1,J=!1):K===YND&&(X=!1):(Y+=C,Y===$&&!Z.done&&(D.push(""),Y=0)),Q=Z,Z=B.next(),N+=K.length}G=D.at(-1),!Y&&G!==void 0&&G.length>0&&D.length>1&&(D[D.length-2]+=D.pop())},jlD=(D)=>{let F=D.split(" "),$=F.length;for(;$>0&&!(tA(F[$-1])>0);)$--;return $===F.length?D:F.slice(0,$).join(" ")+F.slice($).join("")},IlD=(D,F,$={})=>{if($.trim!==!1&&D.trim()==="")return"";let B="",X,J,G=D.split(" "),Y=RlD(G),Q=[""];for(let[H,W]of G.entries()){$.trim!==!1&&(Q[Q.length-1]=(Q.at(-1)??"").trimStart());let E=tA(Q.at(-1)??"");if(H!==0&&(E>=F&&($.wordWrap===!1||$.trim===!1)&&(Q.push(""),E=0),(E>0||$.trim===!1)&&(Q[Q.length-1]+=" ",E++)),$.hard&&Y[H]>F){let L=F-E,M=1+Math.floor((Y[H]-L-1)/F);Math.floor((Y[H]-1)/F)<M&&Q.push(""),xf(Q,W,F);continue}if(E+Y[H]>F&&E>0&&Y[H]>0){if($.wordWrap===!1&&E<F){xf(Q,W,F);continue}Q.push("")}if(E+Y[H]>F&&$.wordWrap===!1){xf(Q,W,F);continue}Q[Q.length-1]+=W}$.trim!==!1&&(Q=Q.map((H)=>jlD(H)));let Z=Q.join(`
|
|
164
164
|
`),N=Z[Symbol.iterator](),K=N.next(),C=N.next(),V=0;for(;!K.done;){let H=K.value,W=C.value;if(B+=H,H===yT||H===JND){sZD.lastIndex=V+1;let L=sZD.exec(Z)?.groups;if(L?.code!==void 0){let M=Number.parseFloat(L.code);X=M===MlD?void 0:M}else L?.uri!==void 0&&(J=L.uri.length===0?void 0:L.uri)}let E=X?TlD(X):void 0;W===`
|
|
165
165
|
`?(J&&(B+=DND("")),X&&E&&(B+=eZD(E))):H===`
|
|
166
166
|
`&&(X&&E&&(B+=eZD(X)),J&&(B+=DND(J))),V+=H.length,K=C,C=N.next()}return B};function FND(D,F,$){return String(D).normalize().replaceAll(`\r
|
|
@@ -259,7 +259,7 @@ tell application "System Events" to get value of property list item "CFBundleNam
|
|
|
259
259
|
Current context:
|
|
260
260
|
`)),console.log(` Name: ${A.bold.green(D)}`),F.orgName)console.log(` Organization: ${A.cyan(F.orgName)}`);if(F.orgSlug)console.log(` Org Slug: ${A.gray(F.orgSlug)}`);if(console.log(` Base URL: ${A.white(F.baseURL)}`),F.installationDir)console.log(` Installation Dir: ${A.white(F.installationDir)}`);console.log()}catch(D){console.error(A.red(`Failed to show current context: ${D instanceof Error?D.message:String(D)}`)),process.exit(1)}};var OzD=async()=>{try{let D=await T.runPromise(T.gen(function*(){return yield*NB()}).pipe(T.provide(mF))),F=await T.runPromise(T.gen(function*(){return yield*eJ()}).pipe(T.provide(mF))),$=Object.keys(D);if($.length===0){console.log(A.yellow("No contexts configured.")),console.log(A.cyan("Run 'simplecloud context add' to create your first context."));return}console.log(A.bold.cyan(`
|
|
261
261
|
Configured contexts:
|
|
262
|
-
`)),$.forEach((B)=>{let X=B===F,J=X?A.green("\u2192"):" ",G=X?A.bold.green(B):A.white(B),Y=D[B],Q=Y?.orgName?A.cyan(Y.orgName):A.gray("no org");if(console.log(`${J} ${G}`),console.log(` Organization: ${Q}`),Y?.installationDir)console.log(` Installation: ${A.gray(Y.installationDir)}`)}),console.log()}catch(D){console.error(A.red(`Failed to list contexts: ${D instanceof Error?D.message:String(D)}`)),process.exit(1)}};var EzD=async(D)=>{try{if(!(await T.runPromise(T.gen(function*(){return yield*NB()}).pipe(T.provide(mF))))[D])console.error(A.red(`Context "${D}" does not exist.`)),process.exit(1);if(await T.runPromise(T.gen(function*(){return yield*eJ()}).pipe(T.provide(mF)))===D){let B=await e8("context-remove");if(!await B.confirm({name:"confirmRemove",message:`You are currently using context "${D}". Are you sure you want to remove it?`,initialValue:!1})){console.log(A.yellow("Cancelled.")),await B.complete();return}await B.complete()}await T.runPromise(T.gen(function*(){yield*MUD(D)}).pipe(T.provide(mF))),console.log(A.green(`\u2713 Context "${D}" removed successfully.`))}catch(F){if(F instanceof Error&&F.message==="Setup cancelled."){BD.warn("Cancelled.");return}console.error(A.red(`Failed to remove context: ${F instanceof Error?F.message:String(F)}`)),process.exit(1)}};var zzD=async(D)=>{try{await T.runPromise(T.gen(function*(){yield*lC(D)}).pipe(T.provide(mF))),console.log(A.green(`\u2713 Switched to context "${D}"`))}catch(F){console.error(A.red(`Failed to switch context: ${F instanceof Error?F.message:String(F)}`)),process.exit(1)}};function _zD(D){D.command({command:"context <command>",aliases:["contexts","ctx"],describe:"Manage connection contexts",builder:(F)=>F.command({command:"list",aliases:["ls"],describe:"List all contexts",handler:G0(async()=>{await OzD()})}).command({command:"use <name>",describe:"Switch to a context",builder:($)=>$.positional("name",{describe:"Context name",type:"string",demandOption:!0}),handler:G0(async($)=>{await zzD($.name)})}).command({command:"add [name]",describe:"Add a new context",builder:($)=>$.positional("name",{describe:"Context name",type:"string"}),handler:G0(async($)=>{await WzD($.name)})}).command({command:"remove <name>",aliases:["del","rm"],describe:"Remove a context",builder:($)=>$.positional("name",{describe:"Context name",type:"string",demandOption:!0}),handler:G0(async($)=>{await EzD($.name)})}).command({command:"current",describe:"Show the current context",handler:G0(async()=>{await AzD()})}).demandCommand(1,"You must specify a subcommand"),handler:()=>{}})}var Qt=async(D)=>{let{query:F,loader:$,limit:B=10,offset:X=0}=D,J=[["project_type:plugin"]];if($)J.push([`categories:${$}`]);let G=new URLSearchParams({query:F,limit:String(B),offset:String(X),facets:JSON.stringify(J),index:"relevance"}),Y=await fetch(`https://api.modrinth.com/v2/search?${G}`,{headers:{"User-Agent":"simplecloud-cli/1.0.0 (https://simplecloud.app)"}});if(!Y.ok)throw new Error(`Modrinth API error: ${Y.status}`);return Y.json()},Zt=async(D)=>{let F=await fetch(`https://api.modrinth.com/v2/project/${D}`,{headers:{"User-Agent":"simplecloud-cli/1.0.0 (https://simplecloud.app)"}});if(!F.ok){if(F.status===404)throw new Error(`Plugin not found: ${D}`);throw new Error(`Modrinth API error: ${F.status}`)}return F.json()},Nt=(D)=>{if(D>=1e6)return`${(D/1e6).toFixed(1)}M`;if(D>=1000)return`${(D/1000).toFixed(1)}K`;return String(D)};var s80=["modrinth:","mr:"],e80=["spigot:","sp:"],D30=/^https?:\/\//i,F30=/^https?:\/\/(?:www\.)?modrinth\.com\/plugin\/([a-zA-Z0-9_-]+)/i,$30=/^https?:\/\/(?:www\.)?spigotmc\.org\/resources\/[a-zA-Z0-9_-]+\.(\d+)/i,Kt=(D)=>{let F=D.trim();for(let X of s80)if(F.toLowerCase().startsWith(X))return{type:"MODRINTH",value:F.slice(X.length),isSearch:!1};for(let X of e80)if(F.toLowerCase().startsWith(X))return{type:"SPIGOT",value:F.slice(X.length),isSearch:!1};let $=F.match(F30);if($)return{type:"MODRINTH",value:$[1],isSearch:!1};let B=F.match($30);if(B)return{type:"SPIGOT",value:B[1],isSearch:!1};if(D30.test(F))return{type:"URL",value:F,isSearch:!1};return{type:"MODRINTH",value:F,isSearch:!0}};var wZ=async(D)=>{return(await OF()).v0.pluginAssignmentsList({server_group_id:D?.serverGroupId,persistent_server_id:D?.persistentServerId})},Ct=async(D)=>{let $=await(await OF()).v0.pluginAssignmentsCreate({server_group_id:D.serverGroupId,persistent_server_id:D.persistentServerId,plugin_id:D.pluginId,plugin_name:D.pluginName,source_type:D.sourceType,source_value:D.sourceValue});if(!$.ok||$.error){let B=$.error,X=B?.error||B?.message||($.error?JSON.stringify($.error):`HTTP ${$.status}`);throw new Error(X)}return $},ME=async(D)=>{let $=await(await OF()).v0.pluginAssignmentsDelete({assignment_id:D});if(!$.ok||$.error){let B=$.error,X=B?.error||B?.message||($.error?JSON.stringify($.error):`HTTP ${$.status}`);throw new Error(X)}return $};var B30=(D)=>{if(D instanceof Error)return D.message;if(typeof D==="string")return D;if(typeof D==="object"&&D!==null){let F=D;if(typeof F.error==="string")return F.error;if(typeof F.message==="string")return F.message;if(typeof F.error==="object"&&F.error!==null){let $=F.error;if(typeof $.error==="string")return $.error;if(typeof $.message==="string")return $.message}try{return JSON.stringify(D,null,2)}catch{return"Unknown error (could not serialize)"}}return"Unknown error"},X30=async(D,F)=>{let $=q2();$.start("Searching Modrinth...");let B;try{let G=await Qt({query:D,loader:F,limit:15});B=G.hits,$.stop(`Found ${G.total_hits} plugins`)}catch(G){throw $.stop("Search failed"),G}if(B.length===0)return BD.warn("No plugins found matching your query."),[];let X=B.map((G)=>({value:G.slug,label:`${G.title} ${A.dim(`(${Nt(G.downloads)} downloads)`)}`,hint:G.description.length>60?`${G.description.slice(0,60)}...`:G.description})),J=await TND({message:"Select plugins to add (space to select, enter to confirm):",options:X,required:!1});if(W6(J))return[];return J.map((G)=>{return{name:B.find((Q)=>Q.slug===G).title,sourceType:"MODRINTH",sourceValue:G}})},J30=async(D,F)=>{if(D==="MODRINTH"){let $=q2();$.start("Fetching plugin details...");try{let B=await Zt(F);return $.stop(`Found: ${B.title}`),{name:B.title,sourceType:"MODRINTH",sourceValue:B.slug}}catch(B){throw $.stop("Failed to fetch plugin"),B}}return{name:F,sourceType:D,sourceValue:F}},MV=async(D)=>{let{target:F,initialQuery:$}=D,B=F.serverSoftware?F.serverSoftware.toLowerCase():void 0,X=0,J=!0;while(J){let G;if($&&X===0)G=$;else{let V=await pT({message:"Enter plugin name, Modrinth slug (mr:name), Spigot ID (sp:123), or URL:",placeholder:"e.g. essentials, mr:luckperms, sp:28140"});if(W6(V)||!V)break;G=V}let Y=Kt(G),Q=[];if(Y.isSearch)Q=await X30(Y.value,B);else try{Q=[await J30(Y.type,Y.value)]}catch(V){BD.error(`Failed to resolve plugin: ${V instanceof Error?V.message:"Unknown error"}`);continue}if(Q.length===0){let V=await w1({message:"No plugins selected. Try another search?",initialValue:!0});if(W6(V)||!V)break;continue}let Z=q2();Z.start(`Adding ${Q.length} plugin(s)...`);let N=0,K=[];for(let V of Q)try{await Ct({serverGroupId:F.type==="group"?F.id:void 0,persistentServerId:F.type==="persistent-server"?F.id:void 0,pluginName:V.name,sourceType:V.sourceType,sourceValue:V.sourceValue}),N++}catch(H){let W=B30(H);K.push(`${V.name}: ${W}`)}if(N>0)Z.stop(A.green(`Added ${N} plugin(s) to ${F.name}`)),X+=N;else Z.stop(A.red("Failed to add plugins"));if(K.length>0)for(let V of K)BD.error(V);let C=await w1({message:"Add more plugins?",initialValue:!1});if(W6(C)||!C)J=!1}return X},qE=async(D)=>{let F=await w1({message:`Would you like to add plugins to ${D.name}?`,initialValue:!1});if(W6(F)||!F)return!1;return await MV({target:D})>0};var TI=null,qV=async()=>{if(TI)return TI;let D=await fetch("https://raw.githubusercontent.com/theSimpleCloud/simplecloud-manifest/refs/heads/main/server_versions.json");if(!D.ok)throw new Error(`Failed to fetch server versions: ${D.statusText}`);return TI=await D.json(),TI};var G30=async(D)=>{return(await qV()).find(($)=>$.name===D)};var wzD=async()=>{return(await qV()).find(($)=>$.name==="Vanilla")?.latestVersion??""},TV=async(D,F)=>{let $=await G30(D);if(!$)return;return $.downloadLinks.find((X)=>X.version===F)?.link};var j6=async()=>{return(await OF()).v0.serverGroupsList()},LzD=async(D)=>{return(await OF()).v0.serverGroupsDelete({server_group_id:D})},PzD=async(D,F)=>{return(await OF()).v0.serverGroupsUpdate({server_group_id:D},F)},MzD=async(D,F,$)=>{let B=await OF(),X={};if(D.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i))X.server_group_id=D;else X.server_group_name=D;if(F)X.serverhost_id=F;if($)X.properties=$;return B.v0.serversStartCreate(X)},RI=async(D)=>{return(await OF()).v0.blueprintsCreate(D)},qzD=async(D)=>{return(await OF()).v0.serverGroupsCreate(D)},TzD=async(D)=>{return(await OF()).v0.serverGroupsPartialUpdate({server_group_id:D},{active:!0})},RzD=async(D)=>{return(await OF()).v0.serverGroupsPartialUpdate({server_group_id:D},{active:!1})};var Y30=[{name:"Tiny Server",description:"For basic testing or very light plugins",min:512,max:1024},{name:"Small Server",description:"Perfect for lobby servers and small minigames",min:1024,max:2048},{name:"Medium Server",description:"Ideal for most game modes and medium-sized worlds",min:2048,max:4096},{name:"Large Server",description:"For resource-intensive game modes and large worlds",min:4096,max:8192},{name:"Extra Large",description:"For complex game modes with many plugins or mods",min:8192,max:16384}],Q30=[{name:"Small Proxy",description:"Suitable for small networks up to 100 players",min:256,max:512},{name:"Medium Proxy",description:"Ideal for networks with up to 500 players",min:512,max:1024},{name:"Large Proxy",description:"For large networks with 1000+ players",min:1024,max:2048}],Z30=[{name:"Single Instance",description:"One server instance, no scaling",min:1,max:1},{name:"Dynamic Duo",description:"Two servers for better player distribution",min:2,max:2},{name:"Small Scale",description:"Scales between 1-3 servers as needed",min:1,max:3},{name:"Full Scale",description:"Maximum flexibility with 2-5 servers",min:2,max:5}],N30=[{name:"Single Proxy",description:"One proxy server for small networks",min:1,max:1},{name:"High Availability",description:"Two proxies for redundancy and load balancing",min:2,max:2},{name:"Auto-scaling",description:"Scales between 2-4 proxies based on player count",min:2,max:4}],K30=[{code:"paper_velocity",displayName:"Paper connected with Velocity",type:"SERVER"},{code:"spigot",displayName:"Spigot",type:"SERVER"},{code:"spigot_standalone",displayName:"Spigot Standalone",type:"SERVER"},{code:"bungeecord",displayName:"BungeeCord",type:"PROXY"},{code:"velocity",displayName:"Velocity",type:"PROXY"},{code:"waterfall",displayName:"Waterfall",type:"PROXY"}],C30=(D)=>{return K30.filter((F)=>F.type===D)},jzD=async(D={})=>{let F=await e8("group-create",{ttl:900000});if(L1(A.cyan.bold("Create a new Server Group with Blueprint")),F.hasPreviousSession())if(D.autoRetry&&F.getStatus()==="ready"&&F.hasRequiredAnswers())F.enableSkipMode();else switch(await F.promptResume()){case"cancel":throw new Error("Setup cancelled.");case"retry":F.enableSkipMode();break;case"prefill":break;case"fresh":break}let $=q2({indicator:"dots",onCancel:()=>{throw new Error("Setup cancelled.")}});$.start("Fetching server versions...");let B;try{B=await qV(),$.stop("Server versions fetched successfully")}catch(hD){throw $.stop("Failed to fetch server versions"),J0(hD,"Failed to fetch server versions"),hD}let X;while(!0){X=(await F.text({name:"groupName",message:"Group name:",validate:(eD)=>{if(!eD||eD.trim().length===0)return"Group name cannot be empty"}})).trim();try{let[eD,R0]=await Promise.all([j6(),o$()]);if((eD.data?.server_groups||[]).some((ZD)=>ZD.name?.toLowerCase()===X.toLowerCase())){console.log(A.yellow(`A group with the name "${X}" already exists.`));continue}if((R0.data?.blueprints||[]).some((ZD)=>ZD.name?.toLowerCase()===X.toLowerCase())){console.log(A.yellow(`A blueprint with the name "${X}" already exists.`));continue}break}catch{break}}let G=await F.select({name:"groupType",message:"Group type:",options:[{value:"SERVER",label:"SERVER"},{value:"PROXY",label:"PROXY"}]}),Y=B.filter((hD)=>hD.type===G);if(Y.length===0)throw new Error("No server software available for this type.");let Q=Y.map((hD)=>({value:hD.name,label:hD.name})),Z=await F.select({name:"serverSoftware",message:"Server software:",options:Q}),N=Y.find((hD)=>hD.name===Z);if(!N)throw new Error("Selected software not found.");let K,C,V,H=Z;if(G==="PROXY")C=N.latestVersion,V=await TV(H,C),K=await wzD(),F.setAnswer("minecraftVersion",K);else{let hD=N.downloadLinks.map((eD)=>({value:eD.version,label:eD.version}));K=await F.autocomplete({name:"minecraftVersion",message:"Minecraft version:",options:hD,maxItems:10}),C=K,V=await TV(H,C)}if(!V)throw new Error(`Download URL not found for ${H} version ${C}`);let W;if(G==="SERVER"){let eD=C30("SERVER").map((R0)=>({value:R0.code,label:R0.displayName}));W=await F.select({name:"configurator",message:"Configurator:",options:eD})}else W=H.toLowerCase(),F.setAnswer("configurator",W);let E=G==="SERVER"?Y30:Q30,L=[...E.map((hD)=>{let eD=(hD.min/1024).toFixed(1),R0=(hD.max/1024).toFixed(1);return{value:hD.name,label:`${hD.name} - ${hD.description} (${R0} GB max \u2190 ${eD} GB min)`}}),{value:"Custom",label:"Custom Memory Settings"}],M=await F.select({name:"memoryPreset",message:"Memory configuration:",options:L}),j,_;if(M==="Custom"){let hD=await F.text({name:"minMemory",message:"Minimum memory (MB):",validate:(R0)=>{if(!R0)return"Value cannot be empty";let T8=Number.parseInt(R0,10);if(Number.isNaN(T8)||T8<=0)return"Please enter a valid positive number"}}),eD=await F.text({name:"maxMemory",message:"Maximum memory (MB):",validate:(R0)=>{if(!R0)return"Value cannot be empty";let T8=Number.parseInt(R0,10);if(Number.isNaN(T8)||T8<=0)return"Please enter a valid positive number"}});j=Number.parseInt(hD,10),_=Number.parseInt(eD,10)}else{let hD=E.find((eD)=>eD.name===String(M));if(!hD)throw new Error("Invalid memory preset selected.");j=hD.min,_=hD.max}let h=G==="SERVER"?"50":"500",R=await F.text({name:"maxPlayers",message:"Maximum players:",initialValue:h,validate:(hD)=>{if(!hD)return"Value cannot be empty";let eD=Number.parseInt(hD,10);if(Number.isNaN(eD)||eD<=0)return"Please enter a valid positive number"}}),z=Number.parseInt(R,10),P=await F.text({name:"playerThreshold",message:"Scaling threshold (%):",initialValue:"75",validate:(hD)=>{if(!hD)return"Value cannot be empty";let eD=Number.parseFloat(hD);if(Number.isNaN(eD)||eD<0||eD>100)return"Please enter a valid percentage between 0 and 100"}}),S=Number.parseFloat(P)/100,a=G==="SERVER"?Z30:N30,k=[...a.map((hD)=>({value:hD.name,label:`${hD.name} - ${hD.description} (${hD.min} - ${hD.max} servers)`})),{value:"Custom",label:"Custom Scaling Settings"}],p=await F.select({name:"scalingPreset",message:"Scaling configuration:",options:k}),w,g;if(p==="Custom"){let hD=await F.text({name:"minServers",message:"Minimum servers:",validate:(R0)=>{if(!R0)return"Value cannot be empty";let T8=Number.parseInt(R0,10);if(Number.isNaN(T8)||T8<0)return"Please enter a valid non-negative number"}}),eD=await F.text({name:"maxServers",message:"Maximum servers:",validate:(R0)=>{if(!R0)return"Value cannot be empty";let T8=Number.parseInt(R0,10);if(Number.isNaN(T8)||T8<=0)return"Please enter a valid positive number"}});w=Number.parseInt(hD,10),g=Number.parseInt(eD,10)}else{let hD=a.find((eD)=>eD.name===String(p));if(!hD)throw new Error("Invalid scaling preset selected.");w=hD.min,g=hD.max}let f;if(G==="PROXY"){let hD=await F.text({name:"startPort",message:"Start port:",initialValue:"25565",validate:(eD)=>{if(!eD)return"Value cannot be empty";let R0=Number.parseInt(eD,10);if(Number.isNaN(R0)||R0<1||R0>65535)return"Please enter a valid port number (1-65535)"}});f=Number.parseInt(hD,10)}let n=N.downloadLinks.find((hD)=>hD.version===C),d;if(n?.javaMinimum){let hD={version:String(n.javaMinimum),options:["-Dcom.mojang.eula.agree=true"],args:["nogui"]};if(n.javaRecommendedFlags)hD.options=[...hD.options,...n.javaRecommendedFlags];d={type:"java",with:hD}}else d={type:"java",with:{version:"21",options:["-Dcom.mojang.eula.agree=true"],args:["nogui"]}};await F.markReady();let WD=q2({indicator:"dots",onCancel:async()=>{throw await F.save(),new Error("Setup cancelled.")}});WD.start("Creating blueprint...");let zD=String(K).trim(),VD=String(C).trim(),Z0=await RI({name:X,minecraft_version:zD,server_software:H,software_version:VD,configurator:W.trim(),server_url:V,runtime_config:d,workflow_steps:["internal/setup"]});if(Z0.error){WD.stop("Failed to create blueprint");let eD=Z0.error?.error||"Unknown error";throw console.log(A.red(`
|
|
262
|
+
`)),$.forEach((B)=>{let X=B===F,J=X?A.green("\u2192"):" ",G=X?A.bold.green(B):A.white(B),Y=D[B],Q=Y?.orgName?A.cyan(Y.orgName):A.gray("no org");if(console.log(`${J} ${G}`),console.log(` Organization: ${Q}`),Y?.installationDir)console.log(` Installation: ${A.gray(Y.installationDir)}`)}),console.log()}catch(D){console.error(A.red(`Failed to list contexts: ${D instanceof Error?D.message:String(D)}`)),process.exit(1)}};var EzD=async(D)=>{try{if(!(await T.runPromise(T.gen(function*(){return yield*NB()}).pipe(T.provide(mF))))[D])console.error(A.red(`Context "${D}" does not exist.`)),process.exit(1);if(await T.runPromise(T.gen(function*(){return yield*eJ()}).pipe(T.provide(mF)))===D){let B=await e8("context-remove");if(!await B.confirm({name:"confirmRemove",message:`You are currently using context "${D}". Are you sure you want to remove it?`,initialValue:!1})){console.log(A.yellow("Cancelled.")),await B.complete();return}await B.complete()}await T.runPromise(T.gen(function*(){yield*MUD(D)}).pipe(T.provide(mF))),console.log(A.green(`\u2713 Context "${D}" removed successfully.`))}catch(F){if(F instanceof Error&&F.message==="Setup cancelled."){BD.warn("Cancelled.");return}console.error(A.red(`Failed to remove context: ${F instanceof Error?F.message:String(F)}`)),process.exit(1)}};var zzD=async(D)=>{try{await T.runPromise(T.gen(function*(){yield*lC(D)}).pipe(T.provide(mF))),console.log(A.green(`\u2713 Switched to context "${D}"`))}catch(F){console.error(A.red(`Failed to switch context: ${F instanceof Error?F.message:String(F)}`)),process.exit(1)}};function _zD(D){D.command({command:"context <command>",aliases:["contexts","ctx"],describe:"Manage connection contexts",builder:(F)=>F.command({command:"list",aliases:["ls"],describe:"List all contexts",handler:G0(async()=>{await OzD()})}).command({command:"use <name>",describe:"Switch to a context",builder:($)=>$.positional("name",{describe:"Context name",type:"string",demandOption:!0}),handler:G0(async($)=>{await zzD($.name)})}).command({command:"add [name]",describe:"Add a new context",builder:($)=>$.positional("name",{describe:"Context name",type:"string"}),handler:G0(async($)=>{await WzD($.name)})}).command({command:"remove <name>",aliases:["del","rm"],describe:"Remove a context",builder:($)=>$.positional("name",{describe:"Context name",type:"string",demandOption:!0}),handler:G0(async($)=>{await EzD($.name)})}).command({command:"current",describe:"Show the current context",handler:G0(async()=>{await AzD()})}).demandCommand(1,"You must specify a subcommand"),handler:()=>{}})}var Qt=async(D)=>{let{query:F,loader:$,limit:B=10,offset:X=0}=D,J=[["project_type:plugin"]];if($)J.push([`categories:${$}`]);let G=new URLSearchParams({query:F,limit:String(B),offset:String(X),facets:JSON.stringify(J),index:"relevance"}),Y=await fetch(`https://api.modrinth.com/v2/search?${G}`,{headers:{"User-Agent":"simplecloud-cli/1.0.0 (https://simplecloud.app)"}});if(!Y.ok)throw new Error(`Modrinth API error: ${Y.status}`);return Y.json()},Zt=async(D)=>{let F=await fetch(`https://api.modrinth.com/v2/project/${D}`,{headers:{"User-Agent":"simplecloud-cli/1.0.0 (https://simplecloud.app)"}});if(!F.ok){if(F.status===404)throw new Error(`Plugin not found: ${D}`);throw new Error(`Modrinth API error: ${F.status}`)}return F.json()},Nt=(D)=>{if(D>=1e6)return`${(D/1e6).toFixed(1)}M`;if(D>=1000)return`${(D/1000).toFixed(1)}K`;return String(D)};var s80=["modrinth:","mr:"],e80=["spigot:","sp:"],D30=/^https?:\/\//i,F30=/^https?:\/\/(?:www\.)?modrinth\.com\/plugin\/([a-zA-Z0-9_-]+)/i,$30=/^https?:\/\/(?:www\.)?spigotmc\.org\/resources\/[a-zA-Z0-9_-]+\.(\d+)/i,Kt=(D)=>{let F=D.trim();for(let X of s80)if(F.toLowerCase().startsWith(X))return{type:"MODRINTH",value:F.slice(X.length),isSearch:!1};for(let X of e80)if(F.toLowerCase().startsWith(X))return{type:"SPIGOT",value:F.slice(X.length),isSearch:!1};let $=F.match(F30);if($)return{type:"MODRINTH",value:$[1],isSearch:!1};let B=F.match($30);if(B)return{type:"SPIGOT",value:B[1],isSearch:!1};if(D30.test(F))return{type:"URL",value:F,isSearch:!1};return{type:"MODRINTH",value:F,isSearch:!0}};var wZ=async(D)=>{return(await OF()).v0.pluginAssignmentsList({server_group_id:D?.serverGroupId,persistent_server_id:D?.persistentServerId})},Ct=async(D)=>{let $=await(await OF()).v0.pluginAssignmentsCreate({server_group_id:D.serverGroupId,persistent_server_id:D.persistentServerId,plugin_id:D.pluginId,plugin_name:D.pluginName,source_type:D.sourceType,source_value:D.sourceValue});if(!$.ok||$.error){let B=$.error,X=B?.error||B?.message||($.error?JSON.stringify($.error):`HTTP ${$.status}`);throw new Error(X)}return $},ME=async(D)=>{let $=await(await OF()).v0.pluginAssignmentsDelete({assignment_id:D});if(!$.ok||$.error){let B=$.error,X=B?.error||B?.message||($.error?JSON.stringify($.error):`HTTP ${$.status}`);throw new Error(X)}return $};var B30=(D)=>{if(D instanceof Error)return D.message;if(typeof D==="string")return D;if(typeof D==="object"&&D!==null){let F=D;if(typeof F.error==="string")return F.error;if(typeof F.message==="string")return F.message;if(typeof F.error==="object"&&F.error!==null){let $=F.error;if(typeof $.error==="string")return $.error;if(typeof $.message==="string")return $.message}try{return JSON.stringify(D,null,2)}catch{return"Unknown error (could not serialize)"}}return"Unknown error"},X30=async(D,F)=>{let $=q2();$.start("Searching Modrinth...");let B;try{let G=await Qt({query:D,loader:F,limit:15});B=G.hits,$.stop(`Found ${G.total_hits} plugins`)}catch(G){throw $.stop("Search failed"),G}if(B.length===0)return BD.warn("No plugins found matching your query."),[];let X=B.map((G)=>({value:G.slug,label:`${G.title} ${A.dim(`(${Nt(G.downloads)} downloads)`)}`,hint:G.description.length>60?`${G.description.slice(0,60)}...`:G.description})),J=await TND({message:"Select plugins to add (space to select, enter to confirm):",options:X,required:!1});if(W6(J))return[];return J.map((G)=>{return{name:B.find((Q)=>Q.slug===G).title,sourceType:"MODRINTH",sourceValue:G}})},J30=async(D,F)=>{if(D==="MODRINTH"){let $=q2();$.start("Fetching plugin details...");try{let B=await Zt(F);return $.stop(`Found: ${B.title}`),{name:B.title,sourceType:"MODRINTH",sourceValue:B.slug}}catch(B){throw $.stop("Failed to fetch plugin"),B}}return{name:F,sourceType:D,sourceValue:F}},MV=async(D)=>{let{target:F,initialQuery:$}=D,B=F.serverSoftware?F.serverSoftware.toLowerCase():void 0,X=0,J=!0;while(J){let G;if($&&X===0)G=$;else{let V=await pT({message:"Enter plugin name, Modrinth slug (mr:name), Spigot ID (sp:123), or URL:",placeholder:"e.g. essentials, mr:luckperms, sp:28140"});if(W6(V)||!V)break;G=V}let Y=Kt(G),Q=[];if(Y.isSearch)Q=await X30(Y.value,B);else try{Q=[await J30(Y.type,Y.value)]}catch(V){BD.error(`Failed to resolve plugin: ${V instanceof Error?V.message:"Unknown error"}`);continue}if(Q.length===0){let V=await w1({message:"No plugins selected. Try another search?",initialValue:!0});if(W6(V)||!V)break;continue}let Z=q2();Z.start(`Adding ${Q.length} plugin(s)...`);let N=0,K=[];for(let V of Q)try{await Ct({serverGroupId:F.type==="group"?F.id:void 0,persistentServerId:F.type==="persistent-server"?F.id:void 0,pluginName:V.name,sourceType:V.sourceType,sourceValue:V.sourceValue}),N++}catch(H){let W=B30(H);K.push(`${V.name}: ${W}`)}if(N>0)Z.stop(A.green(`Added ${N} plugin(s) to ${F.name}`)),X+=N;else Z.stop(A.red("Failed to add plugins"));if(K.length>0)for(let V of K)BD.error(V);let C=await w1({message:"Add more plugins?",initialValue:!1});if(W6(C)||!C)J=!1}return X},qE=async(D)=>{let F=await w1({message:`Would you like to add plugins to ${D.name}?`,initialValue:!1});if(W6(F)||!F)return!1;return await MV({target:D})>0};var TI=null,qV=async()=>{if(TI)return TI;let D=await fetch("https://raw.githubusercontent.com/theSimpleCloud/simplecloud-manifest/refs/heads/main/server_versions.json");if(!D.ok)throw new Error(`Failed to fetch server versions: ${D.statusText}`);return TI=await D.json(),TI};var G30=async(D)=>{return(await qV()).find(($)=>$.name===D)};var wzD=async()=>{return(await qV()).find(($)=>$.name==="Vanilla")?.latestVersion??""},TV=async(D,F)=>{let $=await G30(D);if(!$)return;return $.downloadLinks.find((X)=>X.version===F)?.link};var j6=async()=>{return(await OF()).v0.serverGroupsList()},LzD=async(D)=>{return(await OF()).v0.serverGroupsDelete({server_group_id:D})},PzD=async(D,F)=>{return(await OF()).v0.serverGroupsUpdate({server_group_id:D},F)},MzD=async(D,F,$)=>{let B=await OF(),X={};if(D.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i))X.server_group_id=D;else X.server_group_name=D;if(F)X.serverhost_id=F;if($)X.properties=$;return B.v0.serversCreate(X)},RI=async(D)=>{return(await OF()).v0.blueprintsCreate(D)},qzD=async(D)=>{return(await OF()).v0.serverGroupsCreate(D)},TzD=async(D)=>{return(await OF()).v0.serverGroupsPartialUpdate({server_group_id:D},{active:!0})},RzD=async(D)=>{return(await OF()).v0.serverGroupsPartialUpdate({server_group_id:D},{active:!1})};var Y30=[{name:"Tiny Server",description:"For basic testing or very light plugins",min:512,max:1024},{name:"Small Server",description:"Perfect for lobby servers and small minigames",min:1024,max:2048},{name:"Medium Server",description:"Ideal for most game modes and medium-sized worlds",min:2048,max:4096},{name:"Large Server",description:"For resource-intensive game modes and large worlds",min:4096,max:8192},{name:"Extra Large",description:"For complex game modes with many plugins or mods",min:8192,max:16384}],Q30=[{name:"Small Proxy",description:"Suitable for small networks up to 100 players",min:256,max:512},{name:"Medium Proxy",description:"Ideal for networks with up to 500 players",min:512,max:1024},{name:"Large Proxy",description:"For large networks with 1000+ players",min:1024,max:2048}],Z30=[{name:"Single Instance",description:"One server instance, no scaling",min:1,max:1},{name:"Dynamic Duo",description:"Two servers for better player distribution",min:2,max:2},{name:"Small Scale",description:"Scales between 1-3 servers as needed",min:1,max:3},{name:"Full Scale",description:"Maximum flexibility with 2-5 servers",min:2,max:5}],N30=[{name:"Single Proxy",description:"One proxy server for small networks",min:1,max:1},{name:"High Availability",description:"Two proxies for redundancy and load balancing",min:2,max:2},{name:"Auto-scaling",description:"Scales between 2-4 proxies based on player count",min:2,max:4}],K30=[{code:"paper_velocity",displayName:"Paper connected with Velocity",type:"SERVER"},{code:"spigot",displayName:"Spigot",type:"SERVER"},{code:"spigot_standalone",displayName:"Spigot Standalone",type:"SERVER"},{code:"bungeecord",displayName:"BungeeCord",type:"PROXY"},{code:"velocity",displayName:"Velocity",type:"PROXY"},{code:"waterfall",displayName:"Waterfall",type:"PROXY"}],C30=(D)=>{return K30.filter((F)=>F.type===D)},jzD=async(D={})=>{let F=await e8("group-create",{ttl:900000});if(L1(A.cyan.bold("Create a new Server Group with Blueprint")),F.hasPreviousSession())if(D.autoRetry&&F.getStatus()==="ready"&&F.hasRequiredAnswers())F.enableSkipMode();else switch(await F.promptResume()){case"cancel":throw new Error("Setup cancelled.");case"retry":F.enableSkipMode();break;case"prefill":break;case"fresh":break}let $=q2({indicator:"dots",onCancel:()=>{throw new Error("Setup cancelled.")}});$.start("Fetching server versions...");let B;try{B=await qV(),$.stop("Server versions fetched successfully")}catch(hD){throw $.stop("Failed to fetch server versions"),J0(hD,"Failed to fetch server versions"),hD}let X;while(!0){X=(await F.text({name:"groupName",message:"Group name:",validate:(eD)=>{if(!eD||eD.trim().length===0)return"Group name cannot be empty"}})).trim();try{let[eD,R0]=await Promise.all([j6(),o$()]);if((eD.data?.server_groups||[]).some((ZD)=>ZD.name?.toLowerCase()===X.toLowerCase())){console.log(A.yellow(`A group with the name "${X}" already exists.`));continue}if((R0.data?.blueprints||[]).some((ZD)=>ZD.name?.toLowerCase()===X.toLowerCase())){console.log(A.yellow(`A blueprint with the name "${X}" already exists.`));continue}break}catch{break}}let G=await F.select({name:"groupType",message:"Group type:",options:[{value:"SERVER",label:"SERVER"},{value:"PROXY",label:"PROXY"}]}),Y=B.filter((hD)=>hD.type===G);if(Y.length===0)throw new Error("No server software available for this type.");let Q=Y.map((hD)=>({value:hD.name,label:hD.name})),Z=await F.select({name:"serverSoftware",message:"Server software:",options:Q}),N=Y.find((hD)=>hD.name===Z);if(!N)throw new Error("Selected software not found.");let K,C,V,H=Z;if(G==="PROXY")C=N.latestVersion,V=await TV(H,C),K=await wzD(),F.setAnswer("minecraftVersion",K);else{let hD=N.downloadLinks.map((eD)=>({value:eD.version,label:eD.version}));K=await F.autocomplete({name:"minecraftVersion",message:"Minecraft version:",options:hD,maxItems:10}),C=K,V=await TV(H,C)}if(!V)throw new Error(`Download URL not found for ${H} version ${C}`);let W;if(G==="SERVER"){let eD=C30("SERVER").map((R0)=>({value:R0.code,label:R0.displayName}));W=await F.select({name:"configurator",message:"Configurator:",options:eD})}else W=H.toLowerCase(),F.setAnswer("configurator",W);let E=G==="SERVER"?Y30:Q30,L=[...E.map((hD)=>{let eD=(hD.min/1024).toFixed(1),R0=(hD.max/1024).toFixed(1);return{value:hD.name,label:`${hD.name} - ${hD.description} (${R0} GB max \u2190 ${eD} GB min)`}}),{value:"Custom",label:"Custom Memory Settings"}],M=await F.select({name:"memoryPreset",message:"Memory configuration:",options:L}),j,_;if(M==="Custom"){let hD=await F.text({name:"minMemory",message:"Minimum memory (MB):",validate:(R0)=>{if(!R0)return"Value cannot be empty";let T8=Number.parseInt(R0,10);if(Number.isNaN(T8)||T8<=0)return"Please enter a valid positive number"}}),eD=await F.text({name:"maxMemory",message:"Maximum memory (MB):",validate:(R0)=>{if(!R0)return"Value cannot be empty";let T8=Number.parseInt(R0,10);if(Number.isNaN(T8)||T8<=0)return"Please enter a valid positive number"}});j=Number.parseInt(hD,10),_=Number.parseInt(eD,10)}else{let hD=E.find((eD)=>eD.name===String(M));if(!hD)throw new Error("Invalid memory preset selected.");j=hD.min,_=hD.max}let h=G==="SERVER"?"50":"500",R=await F.text({name:"maxPlayers",message:"Maximum players:",initialValue:h,validate:(hD)=>{if(!hD)return"Value cannot be empty";let eD=Number.parseInt(hD,10);if(Number.isNaN(eD)||eD<=0)return"Please enter a valid positive number"}}),z=Number.parseInt(R,10),P=await F.text({name:"playerThreshold",message:"Scaling threshold (%):",initialValue:"75",validate:(hD)=>{if(!hD)return"Value cannot be empty";let eD=Number.parseFloat(hD);if(Number.isNaN(eD)||eD<0||eD>100)return"Please enter a valid percentage between 0 and 100"}}),S=Number.parseFloat(P)/100,a=G==="SERVER"?Z30:N30,k=[...a.map((hD)=>({value:hD.name,label:`${hD.name} - ${hD.description} (${hD.min} - ${hD.max} servers)`})),{value:"Custom",label:"Custom Scaling Settings"}],p=await F.select({name:"scalingPreset",message:"Scaling configuration:",options:k}),w,g;if(p==="Custom"){let hD=await F.text({name:"minServers",message:"Minimum servers:",validate:(R0)=>{if(!R0)return"Value cannot be empty";let T8=Number.parseInt(R0,10);if(Number.isNaN(T8)||T8<0)return"Please enter a valid non-negative number"}}),eD=await F.text({name:"maxServers",message:"Maximum servers:",validate:(R0)=>{if(!R0)return"Value cannot be empty";let T8=Number.parseInt(R0,10);if(Number.isNaN(T8)||T8<=0)return"Please enter a valid positive number"}});w=Number.parseInt(hD,10),g=Number.parseInt(eD,10)}else{let hD=a.find((eD)=>eD.name===String(p));if(!hD)throw new Error("Invalid scaling preset selected.");w=hD.min,g=hD.max}let f;if(G==="PROXY"){let hD=await F.text({name:"startPort",message:"Start port:",initialValue:"25565",validate:(eD)=>{if(!eD)return"Value cannot be empty";let R0=Number.parseInt(eD,10);if(Number.isNaN(R0)||R0<1||R0>65535)return"Please enter a valid port number (1-65535)"}});f=Number.parseInt(hD,10)}let n=N.downloadLinks.find((hD)=>hD.version===C),d;if(n?.javaMinimum){let hD={version:String(n.javaMinimum),options:["-Dcom.mojang.eula.agree=true"],args:["nogui"]};if(n.javaRecommendedFlags)hD.options=[...hD.options,...n.javaRecommendedFlags];d={type:"java",with:hD}}else d={type:"java",with:{version:"21",options:["-Dcom.mojang.eula.agree=true"],args:["nogui"]}};await F.markReady();let WD=q2({indicator:"dots",onCancel:async()=>{throw await F.save(),new Error("Setup cancelled.")}});WD.start("Creating blueprint...");let zD=String(K).trim(),VD=String(C).trim(),Z0=await RI({name:X,minecraft_version:zD,server_software:H,software_version:VD,configurator:W.trim(),server_url:V,runtime_config:d,workflow_steps:["internal/setup"]});if(Z0.error){WD.stop("Failed to create blueprint");let eD=Z0.error?.error||"Unknown error";throw console.log(A.red(`
|
|
263
263
|
\u2717 ${eD}`)),new Error("Failed to create blueprint")}let W0=Z0.data?.blueprint_id;if(!W0)throw WD.stop("Failed to create blueprint"),new Error("Failed to create blueprint: No blueprint ID returned.");WD.stop(`Blueprint created: ${W0}`);let lD=q2({indicator:"dots",onCancel:async()=>{console.log(A.yellow(`
|
|
264
264
|
Cleaning up created blueprint...`));try{if((await B4(W0)).error)console.log(A.yellow(`\u26A0 Failed to cleanup blueprint ${W0}. Please delete it manually.`));else console.log(A.green("\u2713 Blueprint cleaned up successfully"))}catch{console.log(A.yellow(`\u26A0 Failed to cleanup blueprint ${W0}. Please delete it manually.`))}throw await F.save(),new Error("Setup cancelled.")}});lD.start("Creating server group...");let sD={};if(f!==void 0)sD["start-port"]=String(f);let l0=await qzD({name:X,type:G,min_memory:j,max_memory:_,max_players:z,active:!1,tags:[X],properties:sD,deployment:{strategy:"blacklist",hosts:[]},scaling:{scaling_mode:"SLOTS",min_servers:w,max_servers:g,player_threshold:S,scale_down:{idle_time:"3m",ignore_players:!0}},workflows:{when:{start:["internal/setup"],stop:["internal/cleanup"]},manual:["default/backup","default/copy-to-template"]},source:{type:"blueprint",blueprint:W0}});if(l0.error){lD.stop("Failed to create server group");let eD=l0.error?.error||"Unknown error";console.log(A.red(`
|
|
265
265
|
\u2717 ${eD}`)),console.log(A.yellow(`
|
|
@@ -285,9 +285,8 @@ ${A.bold(G)} ${A.gray(`#${X.server_group_id?.slice(0,12)??"N/A"}`)}`),console.lo
|
|
|
285
285
|
\u2713 Successfully added ${J} plugin(s) to ${X.name}`))}catch($){J0($,"Failed to add plugins"),process.exit(1)}},mzD=async(D)=>{try{await v0();let F=rD("Looking up group...",{color:"magenta"}),$=await Ht(D);if(!$)F(),BD.error(`Group not found: ${D}`),process.exit(1);let B=await wZ({serverGroupId:$.server_group_id});F();let X=B.data?.plugin_assignments||[];if(X.length===0){console.log(A.yellow(`No plugins assigned to group "${$.name||$.server_group_id}"`));return}console.log(A.cyan.bold(`
|
|
286
286
|
Plugins for group "${$.name||$.server_group_id}":
|
|
287
287
|
`));let J=[[A.bold.white("Name"),A.bold.white("Source"),A.bold.white("Value"),A.bold.white("ID")]];for(let G of X)J.push([G.plugin_name||"Unknown",G.source_type||"\u2014",G.source_value||"\u2014",G.id?.substring(0,12)||"\u2014"]);console.log(yzD.table(J,{border:{topBody:"\u2500",topJoin:"\u252C",topLeft:"\u250C",topRight:"\u2510",bottomBody:"\u2500",bottomJoin:"\u2534",bottomLeft:"\u2514",bottomRight:"\u2518",bodyLeft:"\u2502",bodyRight:"\u2502",bodyJoin:"\u2502",joinBody:"\u2500",joinLeft:"\u251C",joinRight:"\u2524",joinJoin:"\u253C"},columnDefault:{paddingLeft:1,paddingRight:1,alignment:"left"},columns:[{width:25},{width:12},{width:30},{width:14}]})),console.log(A.dim(`Total: ${X.length} plugin(s)
|
|
288
|
-
`))}catch(F){J0(F,"Failed to list plugins"),process.exit(1)}},uzD=async(D,F)=>{try{await v0();let $=rD("Looking up group and plugin...",{color:"magenta"}),B=await Ht(D);if(!B)$(),BD.error(`Group not found: ${D}`),process.exit(1);let J=(await wZ({serverGroupId:B.server_group_id})).data?.plugin_assignments||[],G=F.toLowerCase(),Y=J.find((Q)=>Q.id?.toLowerCase()===G||Q.id?.toLowerCase().startsWith(G)||Q.plugin_name?.toLowerCase()===G||Q.plugin_name?.toLowerCase().includes(G));if(!Y)$(),BD.error(`Plugin not found: ${F}. Use "group plugin list ${D}" to see available plugins.`),process.exit(1);await ME(Y.id),$(),console.log(A.green(`\u2713 Removed plugin "${Y.plugin_name}" from group "${B.name||B.server_group_id}"`))}catch($){J0($,"Failed to remove plugin"),process.exit(1)}};function A30(D,F){let $=D.trim().toLowerCase();return F.find((B)=>B.server_group_id?.toLowerCase()===$||B.name?.toLowerCase()===$)||F.find((B)=>B.server_group_id?.toLowerCase().includes($)||B.name?.toLowerCase().includes($))}async function czD(D,F){try{await v0();let $=rD("Looking up server group...",{color:"magenta"}),B=await j6();$();let X=B.data?.server_groups||[],J=A30(D,X);if(!J)console.log(A.yellow(`No server group matched "${D}". Try a group name or ID from "group list".`)),process.exit(1);let G=J.server_group_id||J.name||D,Y=rD("Starting server...",{color:"cyan"}),Q=await MzD(G,F);if(Y(),Q.error)J0(Q.error,"Failed to start server"),process.exit(1);console.log(A.green.bold(`
|
|
289
|
-
Server start request sent successfully`)),console.log(` Server ID: ${A.bold(Q.data?.server_id||"N/A")}`),console.log(`
|
|
290
|
-
`)}catch($){J0($,"Failed to start server"),process.exit(1)}}function O30(D,F){let $=D.trim().toLowerCase();return F.find((B)=>B.server_group_id?.toLowerCase()===$||B.name?.toLowerCase()===$)||F.find((B)=>B.server_group_id?.toLowerCase().includes($)||B.name?.toLowerCase().includes($))}async function fzD(D,F){try{await v0();let $=rD("Looking up server group...",{color:"magenta"}),B=await j6();$();let X=B.data?.server_groups||[],J=O30(D,X);if(!J||!J.server_group_id)console.log(A.yellow(`No server group matched "${D}". Try a group name or ID from "group list".`)),process.exit(1);let G={name:J.name,type:J.type,active:J.active,max_memory:J.max_memory,min_memory:J.min_memory,max_players:J.max_players,deployment:J.deployment,scaling:J.scaling,source:J.source,workflows:J.workflows,properties:J.properties,tags:J.tags};if(F.name!==void 0)G.name=F.name;if(F.type!==void 0)G.type=F.type;if(F.active!==void 0)G.active=F.active;if(F.maxMemory!==void 0)G.max_memory=F.maxMemory;if(F.minMemory!==void 0)G.min_memory=F.minMemory;if(F.maxPlayers!==void 0)G.max_players=F.maxPlayers;if(F.scalingMin!==void 0||F.scalingMax!==void 0)G.scaling={...G.scaling,min_servers:F.scalingMin??G.scaling?.min_servers,max_servers:F.scalingMax??G.scaling?.max_servers};if(!(F.name!==void 0||F.type!==void 0||F.active!==void 0||F.maxMemory!==void 0||F.minMemory!==void 0||F.maxPlayers!==void 0||F.scalingMin!==void 0||F.scalingMax!==void 0)){console.log(A.yellow("No updates provided"));return}let Q=rD("Updating server group...",{color:"cyan"}),Z=await PzD(J.server_group_id,G);if(Q(),Z.error)J0(Z.error,"Failed to update server group"),process.exit(1);console.log(A.green.bold(`
|
|
288
|
+
`))}catch(F){J0(F,"Failed to list plugins"),process.exit(1)}},uzD=async(D,F)=>{try{await v0();let $=rD("Looking up group and plugin...",{color:"magenta"}),B=await Ht(D);if(!B)$(),BD.error(`Group not found: ${D}`),process.exit(1);let J=(await wZ({serverGroupId:B.server_group_id})).data?.plugin_assignments||[],G=F.toLowerCase(),Y=J.find((Q)=>Q.id?.toLowerCase()===G||Q.id?.toLowerCase().startsWith(G)||Q.plugin_name?.toLowerCase()===G||Q.plugin_name?.toLowerCase().includes(G));if(!Y)$(),BD.error(`Plugin not found: ${F}. Use "group plugin list ${D}" to see available plugins.`),process.exit(1);await ME(Y.id),$(),console.log(A.green(`\u2713 Removed plugin "${Y.plugin_name}" from group "${B.name||B.server_group_id}"`))}catch($){J0($,"Failed to remove plugin"),process.exit(1)}};function A30(D,F){let $=D.trim().toLowerCase();return F.find((B)=>B.server_group_id?.toLowerCase()===$||B.name?.toLowerCase()===$)||F.find((B)=>B.server_group_id?.toLowerCase().includes($)||B.name?.toLowerCase().includes($))}async function czD(D,F){try{await v0();let $=rD("Looking up server group...",{color:"magenta"}),B=await j6();$();let X=B.data?.server_groups||[],J=A30(D,X);if(!J)console.log(A.yellow(`No server group matched "${D}". Try a group name or ID from "group list".`)),process.exit(1);let G=J.server_group_id||J.name||D,Y=rD("Starting server...",{color:"cyan"}),Q=await MzD(G,F);if(Y(),Q.error)J0(Q.error,"Failed to start server"),process.exit(1);let Z=Q.data?.server,N=Z?.server_group?`${Z.server_group.name} ${Z.numerical_id}`:Z?.persistent_server?.name;console.log(A.green.bold(`
|
|
289
|
+
Server start request sent successfully`)),console.log(` Server ID: ${A.bold(Q.data?.server?.server_id||"N/A")}`),console.log(` Server Name: ${A.bold(N||"N/A")}`)}catch($){J0($,"Failed to start server"),process.exit(1)}}function O30(D,F){let $=D.trim().toLowerCase();return F.find((B)=>B.server_group_id?.toLowerCase()===$||B.name?.toLowerCase()===$)||F.find((B)=>B.server_group_id?.toLowerCase().includes($)||B.name?.toLowerCase().includes($))}async function fzD(D,F){try{await v0();let $=rD("Looking up server group...",{color:"magenta"}),B=await j6();$();let X=B.data?.server_groups||[],J=O30(D,X);if(!J||!J.server_group_id)console.log(A.yellow(`No server group matched "${D}". Try a group name or ID from "group list".`)),process.exit(1);let G={name:J.name,type:J.type,active:J.active,max_memory:J.max_memory,min_memory:J.min_memory,max_players:J.max_players,deployment:J.deployment,scaling:J.scaling,source:J.source,workflows:J.workflows,properties:J.properties,tags:J.tags};if(F.name!==void 0)G.name=F.name;if(F.type!==void 0)G.type=F.type;if(F.active!==void 0)G.active=F.active;if(F.maxMemory!==void 0)G.max_memory=F.maxMemory;if(F.minMemory!==void 0)G.min_memory=F.minMemory;if(F.maxPlayers!==void 0)G.max_players=F.maxPlayers;if(F.scalingMin!==void 0||F.scalingMax!==void 0)G.scaling={...G.scaling,min_servers:F.scalingMin??G.scaling?.min_servers,max_servers:F.scalingMax??G.scaling?.max_servers};if(!(F.name!==void 0||F.type!==void 0||F.active!==void 0||F.maxMemory!==void 0||F.minMemory!==void 0||F.maxPlayers!==void 0||F.scalingMin!==void 0||F.scalingMax!==void 0)){console.log(A.yellow("No updates provided"));return}let Q=rD("Updating server group...",{color:"cyan"}),Z=await PzD(J.server_group_id,G);if(Q(),Z.error)J0(Z.error,"Failed to update server group"),process.exit(1);console.log(A.green.bold(`
|
|
291
290
|
Server group updated successfully`)),console.log(` Name: ${Z.data?.name||J.name}`),console.log(` ID: ${Z.data?.server_group_id||J.server_group_id}`)}catch($){J0($,"Failed to update server group"),process.exit(1)}}function dzD(D){D.command({command:"group <command>",aliases:["groups"],describe:"Manage server groups",builder:(F)=>F.command({command:"list",aliases:["ls"],describe:"List all groups",builder:{filter:{type:"string",describe:"Filter results by name"},type:{choices:["SERVER","PROXY","LOBBY"],describe:"Filter by group type"},sort:{choices:["name","type","memory","players","created"],describe:"Sort results by field"},reverse:{type:"boolean",default:!1,describe:"Reverse sort order"}},handler:G0(async($)=>{await kzD({filter:$.filter,type:$.type,sort:$.sort,reverse:$.reverse})})}).command({command:"create",aliases:["new"],describe:"Create a new group",builder:{"auto-retry":{alias:"y",type:"boolean",default:!1,describe:"Automatically retry with previous answers if available"}},handler:G0(async($)=>{await jzD({autoRetry:$.autoRetry})})}).command({command:"info <group>",aliases:["get","show"],describe:"Show group information",builder:($)=>$.positional("group",{describe:"Group identifier",type:"string",demandOption:!0}),handler:G0(async($)=>{await gzD($.group)})}).command({command:"start <group>",describe:"Start a server in the group",builder:($)=>$.positional("group",{describe:"Group identifier",type:"string",demandOption:!0}).option("serverhost-id",{type:"string",describe:"Specific serverhost ID to use"}),handler:G0(async($)=>{await czD($.group,$.serverhostId)})}).command({command:"delete <group>",aliases:["del","rm"],describe:"Delete a group",builder:($)=>$.positional("group",{describe:"Group identifier",type:"string",demandOption:!0}),handler:G0(async($)=>{await vzD($.group)})}).command({command:"update <group>",aliases:["edit"],describe:"Update group settings",builder:($)=>$.positional("group",{describe:"Group identifier",type:"string",demandOption:!0}).option("name",{type:"string",describe:"New group name"}).option("type",{choices:["SERVER","PROXY","LOBBY"],describe:"Group type"}).option("active",{type:"boolean",describe:"Set active status"}).option("max-memory",{type:"number",describe:"Maximum memory in MB"}).option("min-memory",{type:"number",describe:"Minimum memory in MB"}).option("max-players",{type:"number",describe:"Maximum players"}).option("scaling-min",{type:"number",describe:"Minimum servers for scaling"}).option("scaling-max",{type:"number",describe:"Maximum servers for scaling"}),handler:G0(async($)=>{await fzD($.group,{name:$.name,type:$.type,active:$.active,maxMemory:$.maxMemory,minMemory:$.minMemory,maxPlayers:$.maxPlayers,scalingMin:$.scalingMin,scalingMax:$.scalingMax})})}).command({command:"plugin <command>",aliases:["plugins"],describe:"Manage plugins for a group",builder:($)=>$.command({command:"add <group> [query]",describe:"Add plugins to a group",builder:(B)=>B.positional("group",{describe:"Group identifier",type:"string",demandOption:!0}).positional("query",{describe:"Plugin search query, Modrinth slug (mr:name), Spigot ID (sp:123), or URL",type:"string"}),handler:G0(async(B)=>{await hzD(B.group,B.query)})}).command({command:"list <group>",aliases:["ls"],describe:"List plugins for a group",builder:(B)=>B.positional("group",{describe:"Group identifier",type:"string",demandOption:!0}),handler:G0(async(B)=>{await mzD(B.group)})}).command({command:"remove <group> <plugin>",aliases:["rm"],describe:"Remove a plugin from a group",builder:(B)=>B.positional("group",{describe:"Group identifier",type:"string",demandOption:!0}).positional("plugin",{describe:"Plugin name or assignment ID",type:"string",demandOption:!0}),handler:G0(async(B)=>{await uzD(B.group,B.plugin)})}).demandCommand(1,"You must specify a subcommand"),handler:()=>{}}).demandCommand(1,"You must specify a subcommand"),handler:()=>{}})}e9();function pzD(D){D.command({command:"logout",describe:"Log out from SimpleCloud",builder:{force:{type:"boolean",alias:"f",describe:"Skip confirmation prompt",default:!1}},handler:G0(async(F)=>{if(!await _1()){BD.info("You are not logged in.");return}if(!F.force){let B=await w1({message:"Are you sure you want to log out?",initialValue:!1});if(W6(B)||!B){BD.info("Logout cancelled.");return}}await Pf(),o6($6.success("Logged out successfully."))})})}var lzD=async()=>{return(await OF()).v0.networksRegisterCreate()},nzD=async(D,F)=>{return(await OF()).v0.networksVerifyCreate({network_id:D,network_secret:F})};function ozD(D){D.command({command:"network <command>",aliases:["networks","net"],describe:"Manage network configuration",builder:(F)=>F.command({command:"register",describe:"Register a new network",handler:G0(async()=>{await v0();let $=rD("Registering network...",{color:"cyan"}),B=await lzD();if($(),B.error)J0(B.error,"Failed to register network"),process.exit(1);console.log(A.green.bold(`
|
|
292
291
|
Network registered successfully!
|
|
293
292
|
`)),console.log(A.blueBright("Network Credentials:")),console.log(` Network ID: ${A.bold(B.data?.network_id||"N/A")}`),console.log(` Network Name: ${A.bold(B.data?.network_name||"N/A")}`),console.log(` Network Secret: ${A.bold(B.data?.network_secret||"N/A")}
|
package/dist/index.js
CHANGED
|
@@ -38,7 +38,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
38
38
|
`)}catch{return""}}async attach(A,q){let F=KW(A);if((await this.status(A,q)).status!=="running")throw new Error(`Component ${A} is not running`);return new Promise((E,g)=>{let Z=ULA("screen",["-r",F],{stdio:"inherit"});Z.on("error",g),Z.on("close",()=>E())})}}var EZq;var QLA=NA(()=>{TQ();jC();EZq=KZq(FZq)});var OLA={};Pg(OLA,{DockerRunner:()=>XLA});import{exec as gZq,spawn as ZZq}from"child_process";import*as JLA from"path";import{promisify as $Zq}from"util";class XLA{type="docker";async isAvailable(){if(!await KU("docker"))return!1;try{return await p_("docker info"),!0}catch{return!1}}async start(A){let{componentId:q,installationDir:F,jarPath:K,javaArgs:E=[],env:g={}}=A,Z=Z2(q),$=await this.status(q,F);if($.status==="running")return{success:!1,message:`Component ${q} is already running in container "${Z}"`,containerId:$.containerId};await p_(`docker rm -f ${Z} 2>/dev/null || true`).catch(()=>{});let U=JLA.basename(K),G="/app",Y=["run","-d","--name",Z,"--restart","unless-stopped","-v",`${F}:${G}`,"-w",G];for(let[Q,J]of Object.entries(g))Y.push("-e",`${Q}=${J}`);Y.push(UZq),Y.push("java"),Y.push(...E),Y.push("-jar"),Y.push(U);try{let{stdout:Q}=await p_(`docker ${Y.join(" ")}`),J=Q.trim().slice(0,12);if(await new Promise((H)=>setTimeout(H,1000)),(await this.status(q,F)).status==="running")return{success:!0,message:`Started ${q} in container "${Z}"`,containerId:J};return{success:!1,message:`Container started but exited immediately. Logs:
|
|
39
39
|
${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=Z2(A);try{return await p_(`docker stop ${F}`),await p_(`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=Z2(A);try{let{stdout:K}=await p_(`docker inspect --format '{{.State.Running}} {{.Id}} {{.State.StartedAt}}' ${F}`),[E,g,Z]=K.trim().split(" ");if(E==="true"){let $=new Date(Z??Date.now()),U=Math.floor((Date.now()-$.getTime())/1000);return{status:"running",containerId:g?.slice(0,12),uptime:U}}return{status:"stopped"}}catch{return{status:"stopped"}}}async logs(A,q,F=100){let K=Z2(A);try{let{stdout:E}=await p_(`docker logs --tail ${F} ${K}`);return E}catch{return""}}async attach(A,q){let F=Z2(A);if((await this.status(A,q)).status!=="running")throw new Error(`Component ${A} is not running`);return new Promise((E,g)=>{let Z=ZZq("docker",["attach",F],{stdio:"inherit"});Z.on("error",g),Z.on("close",()=>E())})}}var p_,UZq="eclipse-temurin:21-jre";var _LA=NA(()=>{TQ();jC();p_=$Zq(gZq)});var NLA={};Pg(NLA,{NativeRunner:()=>jLA});import{spawn as GZq}from"child_process";import*as EU from"fs/promises";import*as bJ from"path";class jLA{type="native";async isAvailable(){return!0}async start(A){let{componentId:q,installationDir:F,jarPath:K,javaArgs:E=[],env:g={}}=A,Z=await this.status(q,F);if(Z.status==="running")return{success:!1,message:`Component ${q} is already running (PID: ${Z.pid})`,pid:Z.pid};let $=bJ.join(F,"logs");await EU.mkdir($,{recursive:!0});let U=bJ.join($,`${q}.log`),G=bJ.join($,`${q}.error.log`),Q=Lg()==="windows"?"java.exe":"java",J=[...E,"-jar",K],X={...process.env,...g};try{let _=await EU.open(U,"a"),H=await EU.open(G,"a"),W=GZq(Q,J,{cwd:F,env:X,detached:!0,stdio:["ignore",_.fd,H.fd]}),M=W.pid;if(!M)return await _.close(),await H.close(),{success:!1,message:`Failed to start ${q}: No PID returned`};if(W.unref(),await _.close(),await H.close(),await YZq(F,q,{pid:M,startedAt:new Date().toISOString()}),await new Promise((B)=>setTimeout(B,500)),(await this.status(q,F)).status==="running")return{success:!0,message:`Started ${q} (PID: ${M})`,pid:M};return await $2(F,q),{success:!1,message:`Process started but exited immediately. Check logs at ${U}`}}catch(_){let H=_ instanceof Error?_.message:String(_);return{success:!1,message:`Failed to start ${q}: ${H}`}}}async stop(A,q){let F=await HLA(q,A);if(!F)return{success:!0,message:`Component ${A} is not running (no PID file)`};if(!await lt(F.pid))return await $2(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((Z)=>setTimeout(Z,500)),!await lt(F.pid))return await $2(q,A),{success:!0,message:`Stopped ${A} (PID: ${F.pid})`};return process.kill(F.pid,"SIGKILL"),await new Promise((E)=>setTimeout(E,500)),await $2(q,A),{success:!0,message:`Force stopped ${A} (PID: ${F.pid})`}}catch(E){let g=E instanceof Error?E.message:String(E);return await $2(q,A),{success:!1,message:`Failed to stop ${A}: ${g}`}}}async status(A,q){let F=await HLA(q,A);if(!F)return{status:"stopped"};if(!await lt(F.pid))return await $2(q,A),{status:"stopped"};let E=new Date(F.startedAt),g=Math.floor((Date.now()-E.getTime())/1000);return{status:"running",pid:F.pid,uptime:g}}async logs(A,q,F=100){let K=bJ.join(q,"logs",`${A}.log`);try{return(await EU.readFile(K,"utf-8")).split(`
|
|
40
40
|
`).slice(-F).join(`
|
|
41
|
-
`)}catch{return""}}async attach(A,q){throw new Error("Attach is not supported for native runner. Use 'logs' command instead.")}}var at=(A,q)=>{return bJ.join(A,".pids",`${q}.json`)},HLA=async(A,q)=>{let F=at(A,q);try{let K=await EU.readFile(F,"utf-8");return JSON.parse(K)}catch{return null}},YZq=async(A,q,F)=>{let K=at(A,q),E=bJ.dirname(K);await EU.mkdir(E,{recursive:!0}),await EU.writeFile(K,JSON.stringify(F,null,2),"utf-8")},$2=async(A,q)=>{let F=at(A,q);await EU.unlink(F).catch(()=>{})},lt=async(A)=>{try{return process.kill(A,0),!0}catch{return!1}};var VLA=NA(()=>{TQ()});var nt=(A)=>{switch(A){case"linux":case"darwin":return"screen";case"windows":return"native"}},l_=async(A)=>{switch(A){case"screen":return KU("screen");case"docker":return KU("docker");case"native":return!0}},U2=async(A)=>{let q=Lg();if(A){if(await l_(A))return A}let F=nt(q);if(await l_(F))return F;if(q!=="windows"){if(await l_("docker"))return"docker"}if(q==="windows")return"native";throw new Error(`No runner available. Please install screen or docker for ${q}.`)},WLA,G2=async(A)=>{let q=WLA.get(A);if(q)return q;let F;switch(A){case"screen":{let{ScreenRunner:K}=await Promise.resolve().then(() => (QLA(),YLA));F=new K;break}case"docker":{let{DockerRunner:K}=await Promise.resolve().then(() => (_LA(),OLA));F=new K;break}case"native":{let{NativeRunner:K}=await Promise.resolve().then(() => (VLA(),NLA));F=new K;break}}return WLA.set(A,F),F},KW=(A)=>{return`simplecloud-${A}`},Z2=(A)=>{return`simplecloud-${A}`};var jC=NA(()=>{TQ();WLA=new Map});var iC="0.0.1-beta.
|
|
41
|
+
`)}catch{return""}}async attach(A,q){throw new Error("Attach is not supported for native runner. Use 'logs' command instead.")}}var at=(A,q)=>{return bJ.join(A,".pids",`${q}.json`)},HLA=async(A,q)=>{let F=at(A,q);try{let K=await EU.readFile(F,"utf-8");return JSON.parse(K)}catch{return null}},YZq=async(A,q,F)=>{let K=at(A,q),E=bJ.dirname(K);await EU.mkdir(E,{recursive:!0}),await EU.writeFile(K,JSON.stringify(F,null,2),"utf-8")},$2=async(A,q)=>{let F=at(A,q);await EU.unlink(F).catch(()=>{})},lt=async(A)=>{try{return process.kill(A,0),!0}catch{return!1}};var VLA=NA(()=>{TQ()});var nt=(A)=>{switch(A){case"linux":case"darwin":return"screen";case"windows":return"native"}},l_=async(A)=>{switch(A){case"screen":return KU("screen");case"docker":return KU("docker");case"native":return!0}},U2=async(A)=>{let q=Lg();if(A){if(await l_(A))return A}let F=nt(q);if(await l_(F))return F;if(q!=="windows"){if(await l_("docker"))return"docker"}if(q==="windows")return"native";throw new Error(`No runner available. Please install screen or docker for ${q}.`)},WLA,G2=async(A)=>{let q=WLA.get(A);if(q)return q;let F;switch(A){case"screen":{let{ScreenRunner:K}=await Promise.resolve().then(() => (QLA(),YLA));F=new K;break}case"docker":{let{DockerRunner:K}=await Promise.resolve().then(() => (_LA(),OLA));F=new K;break}case"native":{let{NativeRunner:K}=await Promise.resolve().then(() => (VLA(),NLA));F=new K;break}}return WLA.set(A,F),F},KW=(A)=>{return`simplecloud-${A}`},Z2=(A)=>{return`simplecloud-${A}`};var jC=NA(()=>{TQ();WLA=new Map});var iC="0.0.1-beta.27";var ps=(A=0)=>(q)=>`\x1B[${q+A}m`,ls=(A=0)=>(q)=>`\x1B[${38+A};5;${q}m`,as=(A=0)=>(q,F,K)=>`\x1B[${38+A};2;${q};${F};${K}m`,rF={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]}},WUq=Object.keys(rF.modifier),oDA=Object.keys(rF.color),rDA=Object.keys(rF.bgColor),LUq=[...oDA,...rDA];function tDA(){let A=new Map;for(let[q,F]of Object.entries(rF)){for(let[K,E]of Object.entries(F))rF[K]={open:`\x1B[${E[0]}m`,close:`\x1B[${E[1]}m`},F[K]=rF[K],A.set(E[0],E[1]);Object.defineProperty(rF,q,{value:F,enumerable:!1})}return Object.defineProperty(rF,"codes",{value:A,enumerable:!1}),rF.color.close="\x1B[39m",rF.bgColor.close="\x1B[49m",rF.color.ansi=ps(),rF.color.ansi256=ls(),rF.color.ansi16m=as(),rF.bgColor.ansi=ps(10),rF.bgColor.ansi256=ls(10),rF.bgColor.ansi16m=as(10),Object.defineProperties(rF,{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((g)=>g+g).join("");let E=Number.parseInt(K,16);return[E>>16&255,E>>8&255,E&255]},enumerable:!1},hexToAnsi256:{value:(q)=>rF.rgbToAnsi256(...rF.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 g=Math.max(F,K,E)*2;if(g===0)return 30;let Z=30+(Math.round(E)<<2|Math.round(K)<<1|Math.round(F));if(g===2)Z+=60;return Z},enumerable:!1},rgbToAnsi:{value:(q,F,K)=>rF.ansi256ToAnsi(rF.rgbToAnsi256(q,F,K)),enumerable:!1},hexToAnsi:{value:(q)=>rF.ansi256ToAnsi(rF.hexToAnsi256(q)),enumerable:!1}}),rF}var sDA=tDA(),AG=sDA;import oC from"process";import eDA from"os";import ns from"tty";function UU(A,q=globalThis.Deno?globalThis.Deno.args:oC.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:tF}=oC,LW;if(UU("no-color")||UU("no-colors")||UU("color=false")||UU("color=never"))LW=0;else if(UU("color")||UU("colors")||UU("color=true")||UU("color=always"))LW=1;function APA(){if("FORCE_COLOR"in tF){if(tF.FORCE_COLOR==="true")return 1;if(tF.FORCE_COLOR==="false")return 0;return tF.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(tF.FORCE_COLOR,10),3)}}function qPA(A){if(A===0)return!1;return{level:A,hasBasic:!0,has256:A>=2,has16m:A>=3}}function FPA(A,{streamIsTTY:q,sniffFlags:F=!0}={}){let K=APA();if(K!==void 0)LW=K;let E=F?LW:K;if(E===0)return 0;if(F){if(UU("color=16m")||UU("color=full")||UU("color=truecolor"))return 3;if(UU("color=256"))return 2}if("TF_BUILD"in tF&&"AGENT_NAME"in tF)return 1;if(A&&!q&&E===void 0)return 0;let g=E||0;if(tF.TERM==="dumb")return g;if(oC.platform==="win32"){let Z=eDA.release().split(".");if(Number(Z[0])>=10&&Number(Z[2])>=10586)return Number(Z[2])>=14931?3:2;return 1}if("CI"in tF){if(["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some((Z)=>(Z in tF)))return 3;if(["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some((Z)=>(Z in tF))||tF.CI_NAME==="codeship")return 1;return g}if("TEAMCITY_VERSION"in tF)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(tF.TEAMCITY_VERSION)?1:0;if(tF.COLORTERM==="truecolor")return 3;if(tF.TERM==="xterm-kitty")return 3;if(tF.TERM==="xterm-ghostty")return 3;if(tF.TERM==="wezterm")return 3;if("TERM_PROGRAM"in tF){let Z=Number.parseInt((tF.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(tF.TERM_PROGRAM){case"iTerm.app":return Z>=3?3:2;case"Apple_Terminal":return 2}}if(/-256(color)?$/i.test(tF.TERM))return 2;if(/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(tF.TERM))return 1;if("COLORTERM"in tF)return 1;return g}function is(A,q={}){let F=FPA(A,{streamIsTTY:A&&A.isTTY,...q});return qPA(F)}var KPA={stdout:is({isTTY:ns.isatty(1)}),stderr:is({isTTY:ns.isatty(2)})},os=KPA;function rs(A,q,F){let K=A.indexOf(q);if(K===-1)return A;let E=q.length,g=0,Z="";do Z+=A.slice(g,K)+q+F,g=K+E,K=A.indexOf(q,g);while(K!==-1);return Z+=A.slice(g),Z}function ts(A,q,F,K){let E=0,g="";do{let Z=A[K-1]==="\r";g+=A.slice(E,Z?K-1:K)+q+(Z?`\r
|
|
42
42
|
`:`
|
|
43
43
|
`)+F,E=K+1,K=A.indexOf(`
|
|
44
44
|
`,E)}while(K!==-1);return g+=A.slice(E),g}var{stdout:ss,stderr:es}=os,rC=Symbol("GENERATOR"),q0=Symbol("STYLER"),V2=Symbol("IS_EMPTY"),Ae=["ansi","ansi","ansi256","ansi16m"],F0=Object.create(null),EPA=(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=ss?ss.level:0;A.level=q.level===void 0?F:q.level};var gPA=(A)=>{let q=(...F)=>F.join(" ");return EPA(q,A),Object.setPrototypeOf(q,W2.prototype),q};function W2(A){return gPA(A)}Object.setPrototypeOf(W2.prototype,Function.prototype);for(let[A,q]of Object.entries(AG))F0[A]={get(){let F=MW(this,sC(q.open,q.close,this[q0]),this[V2]);return Object.defineProperty(this,A,{value:F}),F}};F0.visible={get(){let A=MW(this,this[q0],!0);return Object.defineProperty(this,"visible",{value:A}),A}};var tC=(A,q,F,...K)=>{if(A==="rgb"){if(q==="ansi16m")return AG[F].ansi16m(...K);if(q==="ansi256")return AG[F].ansi256(AG.rgbToAnsi256(...K));return AG[F].ansi(AG.rgbToAnsi(...K))}if(A==="hex")return tC("rgb",q,F,...AG.hexToRgb(...K));return AG[F][A](...K)},ZPA=["rgb","hex","ansi256"];for(let A of ZPA){F0[A]={get(){let{level:F}=this;return function(...K){let E=sC(tC(A,Ae[F],"color",...K),AG.color.close,this[q0]);return MW(this,E,this[V2])}}};let q="bg"+A[0].toUpperCase()+A.slice(1);F0[q]={get(){let{level:F}=this;return function(...K){let E=sC(tC(A,Ae[F],"bgColor",...K),AG.bgColor.close,this[q0]);return MW(this,E,this[V2])}}}}var $PA=Object.defineProperties(()=>{},{...F0,level:{enumerable:!0,get(){return this[rC].level},set(A){this[rC].level=A}}}),sC=(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}},MW=(A,q,F)=>{let K=(...E)=>UPA(K,E.length===1?""+E[0]:E.join(" "));return Object.setPrototypeOf(K,$PA),K[rC]=A,K[q0]=q,K[V2]=F,K},UPA=(A,q)=>{if(A.level<=0||!q)return A[V2]?"":q;let F=A[q0];if(F===void 0)return q;let{openAll:K,closeAll:E}=F;if(q.includes("\x1B"))while(F!==void 0)q=rs(q,F.close,F.open),F=F.parent;let g=q.indexOf(`
|
|
@@ -180,7 +180,7 @@ tell application "System Events" to get value of property list item "CFBundleNam
|
|
|
180
180
|
Current context:
|
|
181
181
|
`)),console.log(` Name: ${j.bold.green(A)}`),q.orgName)console.log(` Organization: ${j.cyan(q.orgName)}`);if(q.orgSlug)console.log(` Org Slug: ${j.gray(q.orgSlug)}`);if(console.log(` Base URL: ${j.white(q.baseURL)}`),q.installationDir)console.log(` Installation Dir: ${j.white(q.installationDir)}`);console.log()}catch(A){console.error(j.red(`Failed to show current context: ${A instanceof Error?A.message:String(A)}`)),process.exit(1)}};var d7A=async()=>{try{let A=await w.runPromise(w.gen(function*(){return yield*M4()}).pipe(w.provide(f6))),q=await w.runPromise(w.gen(function*(){return yield*TJ()}).pipe(w.provide(f6))),F=Object.keys(A);if(F.length===0){console.log(j.yellow("No contexts configured.")),console.log(j.cyan("Run 'simplecloud context add' to create your first context."));return}console.log(j.bold.cyan(`
|
|
182
182
|
Configured contexts:
|
|
183
|
-
`)),F.forEach((K)=>{let E=K===q,g=E?j.green("\u2192"):" ",Z=E?j.bold.green(K):j.white(K),$=A[K],U=$?.orgName?j.cyan($.orgName):j.gray("no org");if(console.log(`${g} ${Z}`),console.log(` Organization: ${U}`),$?.installationDir)console.log(` Installation: ${j.gray($.installationDir)}`)}),console.log()}catch(A){console.error(j.red(`Failed to list contexts: ${A instanceof Error?A.message:String(A)}`)),process.exit(1)}};var f7A=async(A)=>{try{if(!(await w.runPromise(w.gen(function*(){return yield*M4()}).pipe(w.provide(f6))))[A])console.error(j.red(`Context "${A}" does not exist.`)),process.exit(1);if(await w.runPromise(w.gen(function*(){return yield*TJ()}).pipe(w.provide(f6)))===A){let K=await Fg("context-remove");if(!await K.confirm({name:"confirmRemove",message:`You are currently using context "${A}". Are you sure you want to remove it?`,initialValue:!1})){console.log(j.yellow("Cancelled.")),await K.complete();return}await K.complete()}await w.runPromise(w.gen(function*(){yield*o8A(A)}).pipe(w.provide(f6))),console.log(j.green(`\u2713 Context "${A}" removed successfully.`))}catch(q){if(q instanceof Error&&q.message==="Setup cancelled."){EA.warn("Cancelled.");return}console.error(j.red(`Failed to remove context: ${q instanceof Error?q.message:String(q)}`)),process.exit(1)}};var p7A=async(A)=>{try{await w.runPromise(w.gen(function*(){yield*_8(A)}).pipe(w.provide(f6))),console.log(j.green(`\u2713 Switched to context "${A}"`))}catch(q){console.error(j.red(`Failed to switch context: ${q instanceof Error?q.message:String(q)}`)),process.exit(1)}};function l7A(A){A.command({command:"context <command>",aliases:["contexts","ctx"],describe:"Manage connection contexts",builder:(q)=>q.command({command:"list",aliases:["ls"],describe:"List all contexts",handler:$q(async()=>{await d7A()})}).command({command:"use <name>",describe:"Switch to a context",builder:(F)=>F.positional("name",{describe:"Context name",type:"string",demandOption:!0}),handler:$q(async(F)=>{await p7A(F.name)})}).command({command:"add [name]",describe:"Add a new context",builder:(F)=>F.positional("name",{describe:"Context name",type:"string"}),handler:$q(async(F)=>{await c7A(F.name)})}).command({command:"remove <name>",aliases:["del","rm"],describe:"Remove a context",builder:(F)=>F.positional("name",{describe:"Context name",type:"string",demandOption:!0}),handler:$q(async(F)=>{await f7A(F.name)})}).command({command:"current",describe:"Show the current context",handler:$q(async()=>{await u7A()})}).demandCommand(1,"You must specify a subcommand"),handler:()=>{}})}var Bt=async(A)=>{let{query:q,loader:F,limit:K=10,offset:E=0}=A,g=[["project_type:plugin"]];if(F)g.push([`categories:${F}`]);let Z=new URLSearchParams({query:q,limit:String(K),offset:String(E),facets:JSON.stringify(g),index:"relevance"}),$=await fetch(`https://api.modrinth.com/v2/search?${Z}`,{headers:{"User-Agent":"simplecloud-cli/1.0.0 (https://simplecloud.app)"}});if(!$.ok)throw new Error(`Modrinth API error: ${$.status}`);return $.json()},Rt=async(A)=>{let q=await fetch(`https://api.modrinth.com/v2/project/${A}`,{headers:{"User-Agent":"simplecloud-cli/1.0.0 (https://simplecloud.app)"}});if(!q.ok){if(q.status===404)throw new Error(`Plugin not found: ${A}`);throw new Error(`Modrinth API error: ${q.status}`)}return q.json()},zt=(A)=>{if(A>=1e6)return`${(A/1e6).toFixed(1)}M`;if(A>=1000)return`${(A/1000).toFixed(1)}K`;return String(A)};var aEq=["modrinth:","mr:"],nEq=["spigot:","sp:"],iEq=/^https?:\/\//i,oEq=/^https?:\/\/(?:www\.)?modrinth\.com\/plugin\/([a-zA-Z0-9_-]+)/i,rEq=/^https?:\/\/(?:www\.)?spigotmc\.org\/resources\/[a-zA-Z0-9_-]+\.(\d+)/i,wt=(A)=>{let q=A.trim();for(let E of aEq)if(q.toLowerCase().startsWith(E))return{type:"MODRINTH",value:q.slice(E.length),isSearch:!1};for(let E of nEq)if(q.toLowerCase().startsWith(E))return{type:"SPIGOT",value:q.slice(E.length),isSearch:!1};let F=q.match(oEq);if(F)return{type:"MODRINTH",value:F[1],isSearch:!1};let K=q.match(rEq);if(K)return{type:"SPIGOT",value:K[1],isSearch:!1};if(iEq.test(q))return{type:"URL",value:q,isSearch:!1};return{type:"MODRINTH",value:q,isSearch:!0}};var d_=async(A)=>{return(await N6()).v0.pluginAssignmentsList({server_group_id:A?.serverGroupId,persistent_server_id:A?.persistentServerId})},Ct=async(A)=>{let F=await(await N6()).v0.pluginAssignmentsCreate({server_group_id:A.serverGroupId,persistent_server_id:A.persistentServerId,plugin_id:A.pluginId,plugin_name:A.pluginName,source_type:A.sourceType,source_value:A.sourceValue});if(!F.ok||F.error){let K=F.error,E=K?.error||K?.message||(F.error?JSON.stringify(F.error):`HTTP ${F.status}`);throw new Error(E)}return F},o7=async(A)=>{let F=await(await N6()).v0.pluginAssignmentsDelete({assignment_id:A});if(!F.ok||F.error){let K=F.error,E=K?.error||K?.message||(F.error?JSON.stringify(F.error):`HTTP ${F.status}`);throw new Error(E)}return F};var tEq=(A)=>{if(A instanceof Error)return A.message;if(typeof A==="string")return A;if(typeof A==="object"&&A!==null){let q=A;if(typeof q.error==="string")return q.error;if(typeof q.message==="string")return q.message;if(typeof q.error==="object"&&q.error!==null){let F=q.error;if(typeof F.error==="string")return F.error;if(typeof F.message==="string")return F.message}try{return JSON.stringify(A,null,2)}catch{return"Unknown error (could not serialize)"}}return"Unknown error"},sEq=async(A,q)=>{let F=VF();F.start("Searching Modrinth...");let K;try{let Z=await Bt({query:A,loader:q,limit:15});K=Z.hits,F.stop(`Found ${Z.total_hits} plugins`)}catch(Z){throw F.stop("Search failed"),Z}if(K.length===0)return EA.warn("No plugins found matching your query."),[];let E=K.map((Z)=>({value:Z.slug,label:`${Z.title} ${j.dim(`(${zt(Z.downloads)} downloads)`)}`,hint:Z.description.length>60?`${Z.description.slice(0,60)}...`:Z.description})),g=await DAA({message:"Select plugins to add (space to select, enter to confirm):",options:E,required:!1});if(UK(g))return[];return g.map((Z)=>{return{name:K.find((U)=>U.slug===Z).title,sourceType:"MODRINTH",sourceValue:Z}})},eEq=async(A,q)=>{if(A==="MODRINTH"){let F=VF();F.start("Fetching plugin details...");try{let K=await Rt(q);return F.stop(`Found: ${K.title}`),{name:K.title,sourceType:"MODRINTH",sourceValue:K.slug}}catch(K){throw F.stop("Failed to fetch plugin"),K}}return{name:q,sourceType:A,sourceValue:q}},o8=async(A)=>{let{target:q,initialQuery:F}=A,K=q.serverSoftware?q.serverSoftware.toLowerCase():void 0,E=0,g=!0;while(g){let Z;if(F&&E===0)Z=F;else{let X=await sW({message:"Enter plugin name, Modrinth slug (mr:name), Spigot ID (sp:123), or URL:",placeholder:"e.g. essentials, mr:luckperms, sp:28140"});if(UK(X)||!X)break;Z=X}let $=wt(Z),U=[];if($.isSearch)U=await sEq($.value,K);else try{U=[await eEq($.type,$.value)]}catch(X){EA.error(`Failed to resolve plugin: ${X instanceof Error?X.message:"Unknown error"}`);continue}if(U.length===0){let X=await tg({message:"No plugins selected. Try another search?",initialValue:!0});if(UK(X)||!X)break;continue}let G=VF();G.start(`Adding ${U.length} plugin(s)...`);let Y=0,Q=[];for(let X of U)try{await Ct({serverGroupId:q.type==="group"?q.id:void 0,persistentServerId:q.type==="persistent-server"?q.id:void 0,pluginName:X.name,sourceType:X.sourceType,sourceValue:X.sourceValue}),Y++}catch(_){let H=tEq(_);Q.push(`${X.name}: ${H}`)}if(Y>0)G.stop(j.green(`Added ${Y} plugin(s) to ${q.name}`)),E+=Y;else G.stop(j.red("Failed to add plugins"));if(Q.length>0)for(let X of Q)EA.error(X);let J=await tg({message:"Add more plugins?",initialValue:!1});if(UK(J)||!J)g=!1}return E},r7=async(A)=>{let q=await tg({message:`Would you like to add plugins to ${A.name}?`,initialValue:!1});if(UK(q)||!q)return!1;return await o8({target:A})>0};var tw=null,r8=async()=>{if(tw)return tw;let A=await fetch("https://raw.githubusercontent.com/theSimpleCloud/simplecloud-manifest/refs/heads/main/server_versions.json");if(!A.ok)throw new Error(`Failed to fetch server versions: ${A.statusText}`);return tw=await A.json(),tw};var Agq=async(A)=>{return(await r8()).find((F)=>F.name===A)};var a7A=async()=>{return(await r8()).find((F)=>F.name==="Vanilla")?.latestVersion??""},t8=async(A,q)=>{let F=await Agq(A);if(!F)return;return F.downloadLinks.find((E)=>E.version===q)?.link};var xK=async()=>{return(await N6()).v0.serverGroupsList()},n7A=async(A)=>{return(await N6()).v0.serverGroupsDelete({server_group_id:A})},i7A=async(A,q)=>{return(await N6()).v0.serverGroupsUpdate({server_group_id:A},q)},o7A=async(A,q,F)=>{let K=await N6(),E={};if(A.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i))E.server_group_id=A;else E.server_group_name=A;if(q)E.serverhost_id=q;if(F)E.properties=F;return K.v0.serversStartCreate(E)},sw=async(A)=>{return(await N6()).v0.blueprintsCreate(A)},r7A=async(A)=>{return(await N6()).v0.serverGroupsCreate(A)},t7A=async(A)=>{return(await N6()).v0.serverGroupsPartialUpdate({server_group_id:A},{active:!0})},s7A=async(A)=>{return(await N6()).v0.serverGroupsPartialUpdate({server_group_id:A},{active:!1})};var qgq=[{name:"Tiny Server",description:"For basic testing or very light plugins",min:512,max:1024},{name:"Small Server",description:"Perfect for lobby servers and small minigames",min:1024,max:2048},{name:"Medium Server",description:"Ideal for most game modes and medium-sized worlds",min:2048,max:4096},{name:"Large Server",description:"For resource-intensive game modes and large worlds",min:4096,max:8192},{name:"Extra Large",description:"For complex game modes with many plugins or mods",min:8192,max:16384}],Fgq=[{name:"Small Proxy",description:"Suitable for small networks up to 100 players",min:256,max:512},{name:"Medium Proxy",description:"Ideal for networks with up to 500 players",min:512,max:1024},{name:"Large Proxy",description:"For large networks with 1000+ players",min:1024,max:2048}],Kgq=[{name:"Single Instance",description:"One server instance, no scaling",min:1,max:1},{name:"Dynamic Duo",description:"Two servers for better player distribution",min:2,max:2},{name:"Small Scale",description:"Scales between 1-3 servers as needed",min:1,max:3},{name:"Full Scale",description:"Maximum flexibility with 2-5 servers",min:2,max:5}],Egq=[{name:"Single Proxy",description:"One proxy server for small networks",min:1,max:1},{name:"High Availability",description:"Two proxies for redundancy and load balancing",min:2,max:2},{name:"Auto-scaling",description:"Scales between 2-4 proxies based on player count",min:2,max:4}],ggq=[{code:"paper_velocity",displayName:"Paper connected with Velocity",type:"SERVER"},{code:"spigot",displayName:"Spigot",type:"SERVER"},{code:"spigot_standalone",displayName:"Spigot Standalone",type:"SERVER"},{code:"bungeecord",displayName:"BungeeCord",type:"PROXY"},{code:"velocity",displayName:"Velocity",type:"PROXY"},{code:"waterfall",displayName:"Waterfall",type:"PROXY"}],Zgq=(A)=>{return ggq.filter((q)=>q.type===A)},e7A=async(A={})=>{let q=await Fg("group-create",{ttl:900000});if(sg(j.cyan.bold("Create a new Server Group with Blueprint")),q.hasPreviousSession())if(A.autoRetry&&q.getStatus()==="ready"&&q.hasRequiredAnswers())q.enableSkipMode();else switch(await q.promptResume()){case"cancel":throw new Error("Setup cancelled.");case"retry":q.enableSkipMode();break;case"prefill":break;case"fresh":break}let F=VF({indicator:"dots",onCancel:()=>{throw new Error("Setup cancelled.")}});F.start("Fetching server versions...");let K;try{K=await r8(),F.stop("Server versions fetched successfully")}catch(iA){throw F.stop("Failed to fetch server versions"),Zq(iA,"Failed to fetch server versions"),iA}let E;while(!0){E=(await q.text({name:"groupName",message:"Group name:",validate:(bq)=>{if(!bq||bq.trim().length===0)return"Group name cannot be empty"}})).trim();try{let[bq,v6]=await Promise.all([xK(),nU()]);if((bq.data?.server_groups||[]).some((ZU)=>ZU.name?.toLowerCase()===E.toLowerCase())){console.log(j.yellow(`A group with the name "${E}" already exists.`));continue}if((v6.data?.blueprints||[]).some((ZU)=>ZU.name?.toLowerCase()===E.toLowerCase())){console.log(j.yellow(`A blueprint with the name "${E}" already exists.`));continue}break}catch{break}}let Z=await q.select({name:"groupType",message:"Group type:",options:[{value:"SERVER",label:"SERVER"},{value:"PROXY",label:"PROXY"}]}),$=K.filter((iA)=>iA.type===Z);if($.length===0)throw new Error("No server software available for this type.");let U=$.map((iA)=>({value:iA.name,label:iA.name})),G=await q.select({name:"serverSoftware",message:"Server software:",options:U}),Y=$.find((iA)=>iA.name===G);if(!Y)throw new Error("Selected software not found.");let Q,J,X,_=G;if(Z==="PROXY")J=Y.latestVersion,X=await t8(_,J),Q=await a7A(),q.setAnswer("minecraftVersion",Q);else{let iA=Y.downloadLinks.map((bq)=>({value:bq.version,label:bq.version}));Q=await q.autocomplete({name:"minecraftVersion",message:"Minecraft version:",options:iA,maxItems:10}),J=Q,X=await t8(_,J)}if(!X)throw new Error(`Download URL not found for ${_} version ${J}`);let H;if(Z==="SERVER"){let bq=Zgq("SERVER").map((v6)=>({value:v6.code,label:v6.displayName}));H=await q.select({name:"configurator",message:"Configurator:",options:bq})}else H=_.toLowerCase(),q.setAnswer("configurator",H);let W=Z==="SERVER"?qgq:Fgq,M=[...W.map((iA)=>{let bq=(iA.min/1024).toFixed(1),v6=(iA.max/1024).toFixed(1);return{value:iA.name,label:`${iA.name} - ${iA.description} (${v6} GB max \u2190 ${bq} GB min)`}}),{value:"Custom",label:"Custom Memory Settings"}],D=await q.select({name:"memoryPreset",message:"Memory configuration:",options:M}),B,P;if(D==="Custom"){let iA=await q.text({name:"minMemory",message:"Minimum memory (MB):",validate:(v6)=>{if(!v6)return"Value cannot be empty";let Eg=Number.parseInt(v6,10);if(Number.isNaN(Eg)||Eg<=0)return"Please enter a valid positive number"}}),bq=await q.text({name:"maxMemory",message:"Maximum memory (MB):",validate:(v6)=>{if(!v6)return"Value cannot be empty";let Eg=Number.parseInt(v6,10);if(Number.isNaN(Eg)||Eg<=0)return"Please enter a valid positive number"}});B=Number.parseInt(iA,10),P=Number.parseInt(bq,10)}else{let iA=W.find((bq)=>bq.name===String(D));if(!iA)throw new Error("Invalid memory preset selected.");B=iA.min,P=iA.max}let b=Z==="SERVER"?"50":"500",R=await q.text({name:"maxPlayers",message:"Maximum players:",initialValue:b,validate:(iA)=>{if(!iA)return"Value cannot be empty";let bq=Number.parseInt(iA,10);if(Number.isNaN(bq)||bq<=0)return"Please enter a valid positive number"}}),V=Number.parseInt(R,10),L=await q.text({name:"playerThreshold",message:"Scaling threshold (%):",initialValue:"75",validate:(iA)=>{if(!iA)return"Value cannot be empty";let bq=Number.parseFloat(iA);if(Number.isNaN(bq)||bq<0||bq>100)return"Please enter a valid percentage between 0 and 100"}}),C=Number.parseFloat(L)/100,h=Z==="SERVER"?Kgq:Egq,c=[...h.map((iA)=>({value:iA.name,label:`${iA.name} - ${iA.description} (${iA.min} - ${iA.max} servers)`})),{value:"Custom",label:"Custom Scaling Settings"}],KA=await q.select({name:"scalingPreset",message:"Scaling configuration:",options:c}),z,f;if(KA==="Custom"){let iA=await q.text({name:"minServers",message:"Minimum servers:",validate:(v6)=>{if(!v6)return"Value cannot be empty";let Eg=Number.parseInt(v6,10);if(Number.isNaN(Eg)||Eg<0)return"Please enter a valid non-negative number"}}),bq=await q.text({name:"maxServers",message:"Maximum servers:",validate:(v6)=>{if(!v6)return"Value cannot be empty";let Eg=Number.parseInt(v6,10);if(Number.isNaN(Eg)||Eg<=0)return"Please enter a valid positive number"}});z=Number.parseInt(iA,10),f=Number.parseInt(bq,10)}else{let iA=h.find((bq)=>bq.name===String(KA));if(!iA)throw new Error("Invalid scaling preset selected.");z=iA.min,f=iA.max}let o;if(Z==="PROXY"){let iA=await q.text({name:"startPort",message:"Start port:",initialValue:"25565",validate:(bq)=>{if(!bq)return"Value cannot be empty";let v6=Number.parseInt(bq,10);if(Number.isNaN(v6)||v6<1||v6>65535)return"Please enter a valid port number (1-65535)"}});o=Number.parseInt(iA,10)}let a=Y.downloadLinks.find((iA)=>iA.version===J),r;if(a?.javaMinimum){let iA={version:String(a.javaMinimum),options:["-Dcom.mojang.eula.agree=true"],args:["nogui"]};if(a.javaRecommendedFlags)iA.options=[...iA.options,...a.javaRecommendedFlags];r={type:"java",with:iA}}else r={type:"java",with:{version:"21",options:["-Dcom.mojang.eula.agree=true"],args:["nogui"]}};await q.markReady();let jA=VF({indicator:"dots",onCancel:async()=>{throw await q.save(),new Error("Setup cancelled.")}});jA.start("Creating blueprint...");let VA=String(Q).trim(),MA=String(J).trim(),Rq=await sw({name:E,minecraft_version:VA,server_software:_,software_version:MA,configurator:H.trim(),server_url:X,runtime_config:r,workflow_steps:["internal/setup"]});if(Rq.error){jA.stop("Failed to create blueprint");let bq=Rq.error?.error||"Unknown error";throw console.log(j.red(`
|
|
183
|
+
`)),F.forEach((K)=>{let E=K===q,g=E?j.green("\u2192"):" ",Z=E?j.bold.green(K):j.white(K),$=A[K],U=$?.orgName?j.cyan($.orgName):j.gray("no org");if(console.log(`${g} ${Z}`),console.log(` Organization: ${U}`),$?.installationDir)console.log(` Installation: ${j.gray($.installationDir)}`)}),console.log()}catch(A){console.error(j.red(`Failed to list contexts: ${A instanceof Error?A.message:String(A)}`)),process.exit(1)}};var f7A=async(A)=>{try{if(!(await w.runPromise(w.gen(function*(){return yield*M4()}).pipe(w.provide(f6))))[A])console.error(j.red(`Context "${A}" does not exist.`)),process.exit(1);if(await w.runPromise(w.gen(function*(){return yield*TJ()}).pipe(w.provide(f6)))===A){let K=await Fg("context-remove");if(!await K.confirm({name:"confirmRemove",message:`You are currently using context "${A}". Are you sure you want to remove it?`,initialValue:!1})){console.log(j.yellow("Cancelled.")),await K.complete();return}await K.complete()}await w.runPromise(w.gen(function*(){yield*o8A(A)}).pipe(w.provide(f6))),console.log(j.green(`\u2713 Context "${A}" removed successfully.`))}catch(q){if(q instanceof Error&&q.message==="Setup cancelled."){EA.warn("Cancelled.");return}console.error(j.red(`Failed to remove context: ${q instanceof Error?q.message:String(q)}`)),process.exit(1)}};var p7A=async(A)=>{try{await w.runPromise(w.gen(function*(){yield*_8(A)}).pipe(w.provide(f6))),console.log(j.green(`\u2713 Switched to context "${A}"`))}catch(q){console.error(j.red(`Failed to switch context: ${q instanceof Error?q.message:String(q)}`)),process.exit(1)}};function l7A(A){A.command({command:"context <command>",aliases:["contexts","ctx"],describe:"Manage connection contexts",builder:(q)=>q.command({command:"list",aliases:["ls"],describe:"List all contexts",handler:$q(async()=>{await d7A()})}).command({command:"use <name>",describe:"Switch to a context",builder:(F)=>F.positional("name",{describe:"Context name",type:"string",demandOption:!0}),handler:$q(async(F)=>{await p7A(F.name)})}).command({command:"add [name]",describe:"Add a new context",builder:(F)=>F.positional("name",{describe:"Context name",type:"string"}),handler:$q(async(F)=>{await c7A(F.name)})}).command({command:"remove <name>",aliases:["del","rm"],describe:"Remove a context",builder:(F)=>F.positional("name",{describe:"Context name",type:"string",demandOption:!0}),handler:$q(async(F)=>{await f7A(F.name)})}).command({command:"current",describe:"Show the current context",handler:$q(async()=>{await u7A()})}).demandCommand(1,"You must specify a subcommand"),handler:()=>{}})}var Bt=async(A)=>{let{query:q,loader:F,limit:K=10,offset:E=0}=A,g=[["project_type:plugin"]];if(F)g.push([`categories:${F}`]);let Z=new URLSearchParams({query:q,limit:String(K),offset:String(E),facets:JSON.stringify(g),index:"relevance"}),$=await fetch(`https://api.modrinth.com/v2/search?${Z}`,{headers:{"User-Agent":"simplecloud-cli/1.0.0 (https://simplecloud.app)"}});if(!$.ok)throw new Error(`Modrinth API error: ${$.status}`);return $.json()},Rt=async(A)=>{let q=await fetch(`https://api.modrinth.com/v2/project/${A}`,{headers:{"User-Agent":"simplecloud-cli/1.0.0 (https://simplecloud.app)"}});if(!q.ok){if(q.status===404)throw new Error(`Plugin not found: ${A}`);throw new Error(`Modrinth API error: ${q.status}`)}return q.json()},zt=(A)=>{if(A>=1e6)return`${(A/1e6).toFixed(1)}M`;if(A>=1000)return`${(A/1000).toFixed(1)}K`;return String(A)};var aEq=["modrinth:","mr:"],nEq=["spigot:","sp:"],iEq=/^https?:\/\//i,oEq=/^https?:\/\/(?:www\.)?modrinth\.com\/plugin\/([a-zA-Z0-9_-]+)/i,rEq=/^https?:\/\/(?:www\.)?spigotmc\.org\/resources\/[a-zA-Z0-9_-]+\.(\d+)/i,wt=(A)=>{let q=A.trim();for(let E of aEq)if(q.toLowerCase().startsWith(E))return{type:"MODRINTH",value:q.slice(E.length),isSearch:!1};for(let E of nEq)if(q.toLowerCase().startsWith(E))return{type:"SPIGOT",value:q.slice(E.length),isSearch:!1};let F=q.match(oEq);if(F)return{type:"MODRINTH",value:F[1],isSearch:!1};let K=q.match(rEq);if(K)return{type:"SPIGOT",value:K[1],isSearch:!1};if(iEq.test(q))return{type:"URL",value:q,isSearch:!1};return{type:"MODRINTH",value:q,isSearch:!0}};var d_=async(A)=>{return(await N6()).v0.pluginAssignmentsList({server_group_id:A?.serverGroupId,persistent_server_id:A?.persistentServerId})},Ct=async(A)=>{let F=await(await N6()).v0.pluginAssignmentsCreate({server_group_id:A.serverGroupId,persistent_server_id:A.persistentServerId,plugin_id:A.pluginId,plugin_name:A.pluginName,source_type:A.sourceType,source_value:A.sourceValue});if(!F.ok||F.error){let K=F.error,E=K?.error||K?.message||(F.error?JSON.stringify(F.error):`HTTP ${F.status}`);throw new Error(E)}return F},o7=async(A)=>{let F=await(await N6()).v0.pluginAssignmentsDelete({assignment_id:A});if(!F.ok||F.error){let K=F.error,E=K?.error||K?.message||(F.error?JSON.stringify(F.error):`HTTP ${F.status}`);throw new Error(E)}return F};var tEq=(A)=>{if(A instanceof Error)return A.message;if(typeof A==="string")return A;if(typeof A==="object"&&A!==null){let q=A;if(typeof q.error==="string")return q.error;if(typeof q.message==="string")return q.message;if(typeof q.error==="object"&&q.error!==null){let F=q.error;if(typeof F.error==="string")return F.error;if(typeof F.message==="string")return F.message}try{return JSON.stringify(A,null,2)}catch{return"Unknown error (could not serialize)"}}return"Unknown error"},sEq=async(A,q)=>{let F=VF();F.start("Searching Modrinth...");let K;try{let Z=await Bt({query:A,loader:q,limit:15});K=Z.hits,F.stop(`Found ${Z.total_hits} plugins`)}catch(Z){throw F.stop("Search failed"),Z}if(K.length===0)return EA.warn("No plugins found matching your query."),[];let E=K.map((Z)=>({value:Z.slug,label:`${Z.title} ${j.dim(`(${zt(Z.downloads)} downloads)`)}`,hint:Z.description.length>60?`${Z.description.slice(0,60)}...`:Z.description})),g=await DAA({message:"Select plugins to add (space to select, enter to confirm):",options:E,required:!1});if(UK(g))return[];return g.map((Z)=>{return{name:K.find((U)=>U.slug===Z).title,sourceType:"MODRINTH",sourceValue:Z}})},eEq=async(A,q)=>{if(A==="MODRINTH"){let F=VF();F.start("Fetching plugin details...");try{let K=await Rt(q);return F.stop(`Found: ${K.title}`),{name:K.title,sourceType:"MODRINTH",sourceValue:K.slug}}catch(K){throw F.stop("Failed to fetch plugin"),K}}return{name:q,sourceType:A,sourceValue:q}},o8=async(A)=>{let{target:q,initialQuery:F}=A,K=q.serverSoftware?q.serverSoftware.toLowerCase():void 0,E=0,g=!0;while(g){let Z;if(F&&E===0)Z=F;else{let X=await sW({message:"Enter plugin name, Modrinth slug (mr:name), Spigot ID (sp:123), or URL:",placeholder:"e.g. essentials, mr:luckperms, sp:28140"});if(UK(X)||!X)break;Z=X}let $=wt(Z),U=[];if($.isSearch)U=await sEq($.value,K);else try{U=[await eEq($.type,$.value)]}catch(X){EA.error(`Failed to resolve plugin: ${X instanceof Error?X.message:"Unknown error"}`);continue}if(U.length===0){let X=await tg({message:"No plugins selected. Try another search?",initialValue:!0});if(UK(X)||!X)break;continue}let G=VF();G.start(`Adding ${U.length} plugin(s)...`);let Y=0,Q=[];for(let X of U)try{await Ct({serverGroupId:q.type==="group"?q.id:void 0,persistentServerId:q.type==="persistent-server"?q.id:void 0,pluginName:X.name,sourceType:X.sourceType,sourceValue:X.sourceValue}),Y++}catch(_){let H=tEq(_);Q.push(`${X.name}: ${H}`)}if(Y>0)G.stop(j.green(`Added ${Y} plugin(s) to ${q.name}`)),E+=Y;else G.stop(j.red("Failed to add plugins"));if(Q.length>0)for(let X of Q)EA.error(X);let J=await tg({message:"Add more plugins?",initialValue:!1});if(UK(J)||!J)g=!1}return E},r7=async(A)=>{let q=await tg({message:`Would you like to add plugins to ${A.name}?`,initialValue:!1});if(UK(q)||!q)return!1;return await o8({target:A})>0};var tw=null,r8=async()=>{if(tw)return tw;let A=await fetch("https://raw.githubusercontent.com/theSimpleCloud/simplecloud-manifest/refs/heads/main/server_versions.json");if(!A.ok)throw new Error(`Failed to fetch server versions: ${A.statusText}`);return tw=await A.json(),tw};var Agq=async(A)=>{return(await r8()).find((F)=>F.name===A)};var a7A=async()=>{return(await r8()).find((F)=>F.name==="Vanilla")?.latestVersion??""},t8=async(A,q)=>{let F=await Agq(A);if(!F)return;return F.downloadLinks.find((E)=>E.version===q)?.link};var xK=async()=>{return(await N6()).v0.serverGroupsList()},n7A=async(A)=>{return(await N6()).v0.serverGroupsDelete({server_group_id:A})},i7A=async(A,q)=>{return(await N6()).v0.serverGroupsUpdate({server_group_id:A},q)},o7A=async(A,q,F)=>{let K=await N6(),E={};if(A.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i))E.server_group_id=A;else E.server_group_name=A;if(q)E.serverhost_id=q;if(F)E.properties=F;return K.v0.serversCreate(E)},sw=async(A)=>{return(await N6()).v0.blueprintsCreate(A)},r7A=async(A)=>{return(await N6()).v0.serverGroupsCreate(A)},t7A=async(A)=>{return(await N6()).v0.serverGroupsPartialUpdate({server_group_id:A},{active:!0})},s7A=async(A)=>{return(await N6()).v0.serverGroupsPartialUpdate({server_group_id:A},{active:!1})};var qgq=[{name:"Tiny Server",description:"For basic testing or very light plugins",min:512,max:1024},{name:"Small Server",description:"Perfect for lobby servers and small minigames",min:1024,max:2048},{name:"Medium Server",description:"Ideal for most game modes and medium-sized worlds",min:2048,max:4096},{name:"Large Server",description:"For resource-intensive game modes and large worlds",min:4096,max:8192},{name:"Extra Large",description:"For complex game modes with many plugins or mods",min:8192,max:16384}],Fgq=[{name:"Small Proxy",description:"Suitable for small networks up to 100 players",min:256,max:512},{name:"Medium Proxy",description:"Ideal for networks with up to 500 players",min:512,max:1024},{name:"Large Proxy",description:"For large networks with 1000+ players",min:1024,max:2048}],Kgq=[{name:"Single Instance",description:"One server instance, no scaling",min:1,max:1},{name:"Dynamic Duo",description:"Two servers for better player distribution",min:2,max:2},{name:"Small Scale",description:"Scales between 1-3 servers as needed",min:1,max:3},{name:"Full Scale",description:"Maximum flexibility with 2-5 servers",min:2,max:5}],Egq=[{name:"Single Proxy",description:"One proxy server for small networks",min:1,max:1},{name:"High Availability",description:"Two proxies for redundancy and load balancing",min:2,max:2},{name:"Auto-scaling",description:"Scales between 2-4 proxies based on player count",min:2,max:4}],ggq=[{code:"paper_velocity",displayName:"Paper connected with Velocity",type:"SERVER"},{code:"spigot",displayName:"Spigot",type:"SERVER"},{code:"spigot_standalone",displayName:"Spigot Standalone",type:"SERVER"},{code:"bungeecord",displayName:"BungeeCord",type:"PROXY"},{code:"velocity",displayName:"Velocity",type:"PROXY"},{code:"waterfall",displayName:"Waterfall",type:"PROXY"}],Zgq=(A)=>{return ggq.filter((q)=>q.type===A)},e7A=async(A={})=>{let q=await Fg("group-create",{ttl:900000});if(sg(j.cyan.bold("Create a new Server Group with Blueprint")),q.hasPreviousSession())if(A.autoRetry&&q.getStatus()==="ready"&&q.hasRequiredAnswers())q.enableSkipMode();else switch(await q.promptResume()){case"cancel":throw new Error("Setup cancelled.");case"retry":q.enableSkipMode();break;case"prefill":break;case"fresh":break}let F=VF({indicator:"dots",onCancel:()=>{throw new Error("Setup cancelled.")}});F.start("Fetching server versions...");let K;try{K=await r8(),F.stop("Server versions fetched successfully")}catch(iA){throw F.stop("Failed to fetch server versions"),Zq(iA,"Failed to fetch server versions"),iA}let E;while(!0){E=(await q.text({name:"groupName",message:"Group name:",validate:(bq)=>{if(!bq||bq.trim().length===0)return"Group name cannot be empty"}})).trim();try{let[bq,v6]=await Promise.all([xK(),nU()]);if((bq.data?.server_groups||[]).some((ZU)=>ZU.name?.toLowerCase()===E.toLowerCase())){console.log(j.yellow(`A group with the name "${E}" already exists.`));continue}if((v6.data?.blueprints||[]).some((ZU)=>ZU.name?.toLowerCase()===E.toLowerCase())){console.log(j.yellow(`A blueprint with the name "${E}" already exists.`));continue}break}catch{break}}let Z=await q.select({name:"groupType",message:"Group type:",options:[{value:"SERVER",label:"SERVER"},{value:"PROXY",label:"PROXY"}]}),$=K.filter((iA)=>iA.type===Z);if($.length===0)throw new Error("No server software available for this type.");let U=$.map((iA)=>({value:iA.name,label:iA.name})),G=await q.select({name:"serverSoftware",message:"Server software:",options:U}),Y=$.find((iA)=>iA.name===G);if(!Y)throw new Error("Selected software not found.");let Q,J,X,_=G;if(Z==="PROXY")J=Y.latestVersion,X=await t8(_,J),Q=await a7A(),q.setAnswer("minecraftVersion",Q);else{let iA=Y.downloadLinks.map((bq)=>({value:bq.version,label:bq.version}));Q=await q.autocomplete({name:"minecraftVersion",message:"Minecraft version:",options:iA,maxItems:10}),J=Q,X=await t8(_,J)}if(!X)throw new Error(`Download URL not found for ${_} version ${J}`);let H;if(Z==="SERVER"){let bq=Zgq("SERVER").map((v6)=>({value:v6.code,label:v6.displayName}));H=await q.select({name:"configurator",message:"Configurator:",options:bq})}else H=_.toLowerCase(),q.setAnswer("configurator",H);let W=Z==="SERVER"?qgq:Fgq,M=[...W.map((iA)=>{let bq=(iA.min/1024).toFixed(1),v6=(iA.max/1024).toFixed(1);return{value:iA.name,label:`${iA.name} - ${iA.description} (${v6} GB max \u2190 ${bq} GB min)`}}),{value:"Custom",label:"Custom Memory Settings"}],D=await q.select({name:"memoryPreset",message:"Memory configuration:",options:M}),B,P;if(D==="Custom"){let iA=await q.text({name:"minMemory",message:"Minimum memory (MB):",validate:(v6)=>{if(!v6)return"Value cannot be empty";let Eg=Number.parseInt(v6,10);if(Number.isNaN(Eg)||Eg<=0)return"Please enter a valid positive number"}}),bq=await q.text({name:"maxMemory",message:"Maximum memory (MB):",validate:(v6)=>{if(!v6)return"Value cannot be empty";let Eg=Number.parseInt(v6,10);if(Number.isNaN(Eg)||Eg<=0)return"Please enter a valid positive number"}});B=Number.parseInt(iA,10),P=Number.parseInt(bq,10)}else{let iA=W.find((bq)=>bq.name===String(D));if(!iA)throw new Error("Invalid memory preset selected.");B=iA.min,P=iA.max}let b=Z==="SERVER"?"50":"500",R=await q.text({name:"maxPlayers",message:"Maximum players:",initialValue:b,validate:(iA)=>{if(!iA)return"Value cannot be empty";let bq=Number.parseInt(iA,10);if(Number.isNaN(bq)||bq<=0)return"Please enter a valid positive number"}}),V=Number.parseInt(R,10),L=await q.text({name:"playerThreshold",message:"Scaling threshold (%):",initialValue:"75",validate:(iA)=>{if(!iA)return"Value cannot be empty";let bq=Number.parseFloat(iA);if(Number.isNaN(bq)||bq<0||bq>100)return"Please enter a valid percentage between 0 and 100"}}),C=Number.parseFloat(L)/100,h=Z==="SERVER"?Kgq:Egq,c=[...h.map((iA)=>({value:iA.name,label:`${iA.name} - ${iA.description} (${iA.min} - ${iA.max} servers)`})),{value:"Custom",label:"Custom Scaling Settings"}],KA=await q.select({name:"scalingPreset",message:"Scaling configuration:",options:c}),z,f;if(KA==="Custom"){let iA=await q.text({name:"minServers",message:"Minimum servers:",validate:(v6)=>{if(!v6)return"Value cannot be empty";let Eg=Number.parseInt(v6,10);if(Number.isNaN(Eg)||Eg<0)return"Please enter a valid non-negative number"}}),bq=await q.text({name:"maxServers",message:"Maximum servers:",validate:(v6)=>{if(!v6)return"Value cannot be empty";let Eg=Number.parseInt(v6,10);if(Number.isNaN(Eg)||Eg<=0)return"Please enter a valid positive number"}});z=Number.parseInt(iA,10),f=Number.parseInt(bq,10)}else{let iA=h.find((bq)=>bq.name===String(KA));if(!iA)throw new Error("Invalid scaling preset selected.");z=iA.min,f=iA.max}let o;if(Z==="PROXY"){let iA=await q.text({name:"startPort",message:"Start port:",initialValue:"25565",validate:(bq)=>{if(!bq)return"Value cannot be empty";let v6=Number.parseInt(bq,10);if(Number.isNaN(v6)||v6<1||v6>65535)return"Please enter a valid port number (1-65535)"}});o=Number.parseInt(iA,10)}let a=Y.downloadLinks.find((iA)=>iA.version===J),r;if(a?.javaMinimum){let iA={version:String(a.javaMinimum),options:["-Dcom.mojang.eula.agree=true"],args:["nogui"]};if(a.javaRecommendedFlags)iA.options=[...iA.options,...a.javaRecommendedFlags];r={type:"java",with:iA}}else r={type:"java",with:{version:"21",options:["-Dcom.mojang.eula.agree=true"],args:["nogui"]}};await q.markReady();let jA=VF({indicator:"dots",onCancel:async()=>{throw await q.save(),new Error("Setup cancelled.")}});jA.start("Creating blueprint...");let VA=String(Q).trim(),MA=String(J).trim(),Rq=await sw({name:E,minecraft_version:VA,server_software:_,software_version:MA,configurator:H.trim(),server_url:X,runtime_config:r,workflow_steps:["internal/setup"]});if(Rq.error){jA.stop("Failed to create blueprint");let bq=Rq.error?.error||"Unknown error";throw console.log(j.red(`
|
|
184
184
|
\u2717 ${bq}`)),new Error("Failed to create blueprint")}let Hq=Rq.data?.blueprint_id;if(!Hq)throw jA.stop("Failed to create blueprint"),new Error("Failed to create blueprint: No blueprint ID returned.");jA.stop(`Blueprint created: ${Hq}`);let gK=VF({indicator:"dots",onCancel:async()=>{console.log(j.yellow(`
|
|
185
185
|
Cleaning up created blueprint...`));try{if((await G$(Hq)).error)console.log(j.yellow(`\u26A0 Failed to cleanup blueprint ${Hq}. Please delete it manually.`));else console.log(j.green("\u2713 Blueprint cleaned up successfully"))}catch{console.log(j.yellow(`\u26A0 Failed to cleanup blueprint ${Hq}. Please delete it manually.`))}throw await q.save(),new Error("Setup cancelled.")}});gK.start("Creating server group...");let gq={};if(o!==void 0)gq["start-port"]=String(o);let Vq=await r7A({name:E,type:Z,min_memory:B,max_memory:P,max_players:V,active:!1,tags:[E],properties:gq,deployment:{strategy:"blacklist",hosts:[]},scaling:{scaling_mode:"SLOTS",min_servers:z,max_servers:f,player_threshold:C,scale_down:{idle_time:"3m",ignore_players:!0}},workflows:{when:{start:["internal/setup"],stop:["internal/cleanup"]},manual:["default/backup","default/copy-to-template"]},source:{type:"blueprint",blueprint:Hq}});if(Vq.error){gK.stop("Failed to create server group");let bq=Vq.error?.error||"Unknown error";console.log(j.red(`
|
|
186
186
|
\u2717 ${bq}`)),console.log(j.yellow(`
|
|
@@ -206,9 +206,8 @@ ${j.bold(Z)} ${j.gray(`#${E.server_group_id?.slice(0,12)??"N/A"}`)}`),console.lo
|
|
|
206
206
|
\u2713 Successfully added ${g} plugin(s) to ${E.name}`))}catch(F){Zq(F,"Failed to add plugins"),process.exit(1)}},GWA=async(A)=>{try{await Sq();let q=rA("Looking up group...",{color:"magenta"}),F=await kt(A);if(!F)q(),EA.error(`Group not found: ${A}`),process.exit(1);let K=await d_({serverGroupId:F.server_group_id});q();let E=K.data?.plugin_assignments||[];if(E.length===0){console.log(j.yellow(`No plugins assigned to group "${F.name||F.server_group_id}"`));return}console.log(j.cyan.bold(`
|
|
207
207
|
Plugins for group "${F.name||F.server_group_id}":
|
|
208
208
|
`));let g=[[j.bold.white("Name"),j.bold.white("Source"),j.bold.white("Value"),j.bold.white("ID")]];for(let Z of E)g.push([Z.plugin_name||"Unknown",Z.source_type||"\u2014",Z.source_value||"\u2014",Z.id?.substring(0,12)||"\u2014"]);console.log($WA.table(g,{border:{topBody:"\u2500",topJoin:"\u252C",topLeft:"\u250C",topRight:"\u2510",bottomBody:"\u2500",bottomJoin:"\u2534",bottomLeft:"\u2514",bottomRight:"\u2518",bodyLeft:"\u2502",bodyRight:"\u2502",bodyJoin:"\u2502",joinBody:"\u2500",joinLeft:"\u251C",joinRight:"\u2524",joinJoin:"\u253C"},columnDefault:{paddingLeft:1,paddingRight:1,alignment:"left"},columns:[{width:25},{width:12},{width:30},{width:14}]})),console.log(j.dim(`Total: ${E.length} plugin(s)
|
|
209
|
-
`))}catch(q){Zq(q,"Failed to list plugins"),process.exit(1)}},YWA=async(A,q)=>{try{await Sq();let F=rA("Looking up group and plugin...",{color:"magenta"}),K=await kt(A);if(!K)F(),EA.error(`Group not found: ${A}`),process.exit(1);let g=(await d_({serverGroupId:K.server_group_id})).data?.plugin_assignments||[],Z=q.toLowerCase(),$=g.find((U)=>U.id?.toLowerCase()===Z||U.id?.toLowerCase().startsWith(Z)||U.plugin_name?.toLowerCase()===Z||U.plugin_name?.toLowerCase().includes(Z));if(!$)F(),EA.error(`Plugin not found: ${q}. Use "group plugin list ${A}" to see available plugins.`),process.exit(1);await o7($.id),F(),console.log(j.green(`\u2713 Removed plugin "${$.plugin_name}" from group "${K.name||K.server_group_id}"`))}catch(F){Zq(F,"Failed to remove plugin"),process.exit(1)}};function Qgq(A,q){let F=A.trim().toLowerCase();return q.find((K)=>K.server_group_id?.toLowerCase()===F||K.name?.toLowerCase()===F)||q.find((K)=>K.server_group_id?.toLowerCase().includes(F)||K.name?.toLowerCase().includes(F))}async function QWA(A,q){try{await Sq();let F=rA("Looking up server group...",{color:"magenta"}),K=await xK();F();let E=K.data?.server_groups||[],g=Qgq(A,E);if(!g)console.log(j.yellow(`No server group matched "${A}". Try a group name or ID from "group list".`)),process.exit(1);let Z=g.server_group_id||g.name||A,$=rA("Starting server...",{color:"cyan"}),U=await o7A(Z,q);if($(),U.error)Zq(U.error,"Failed to start server"),process.exit(1);console.log(j.green.bold(`
|
|
210
|
-
Server start request sent successfully`)),console.log(` Server ID: ${j.bold(U.data?.server_id||"N/A")}`),console.log(`
|
|
211
|
-
`)}catch(F){Zq(F,"Failed to start server"),process.exit(1)}}function Jgq(A,q){let F=A.trim().toLowerCase();return q.find((K)=>K.server_group_id?.toLowerCase()===F||K.name?.toLowerCase()===F)||q.find((K)=>K.server_group_id?.toLowerCase().includes(F)||K.name?.toLowerCase().includes(F))}async function JWA(A,q){try{await Sq();let F=rA("Looking up server group...",{color:"magenta"}),K=await xK();F();let E=K.data?.server_groups||[],g=Jgq(A,E);if(!g||!g.server_group_id)console.log(j.yellow(`No server group matched "${A}". Try a group name or ID from "group list".`)),process.exit(1);let Z={name:g.name,type:g.type,active:g.active,max_memory:g.max_memory,min_memory:g.min_memory,max_players:g.max_players,deployment:g.deployment,scaling:g.scaling,source:g.source,workflows:g.workflows,properties:g.properties,tags:g.tags};if(q.name!==void 0)Z.name=q.name;if(q.type!==void 0)Z.type=q.type;if(q.active!==void 0)Z.active=q.active;if(q.maxMemory!==void 0)Z.max_memory=q.maxMemory;if(q.minMemory!==void 0)Z.min_memory=q.minMemory;if(q.maxPlayers!==void 0)Z.max_players=q.maxPlayers;if(q.scalingMin!==void 0||q.scalingMax!==void 0)Z.scaling={...Z.scaling,min_servers:q.scalingMin??Z.scaling?.min_servers,max_servers:q.scalingMax??Z.scaling?.max_servers};if(!(q.name!==void 0||q.type!==void 0||q.active!==void 0||q.maxMemory!==void 0||q.minMemory!==void 0||q.maxPlayers!==void 0||q.scalingMin!==void 0||q.scalingMax!==void 0)){console.log(j.yellow("No updates provided"));return}let U=rA("Updating server group...",{color:"cyan"}),G=await i7A(g.server_group_id,Z);if(U(),G.error)Zq(G.error,"Failed to update server group"),process.exit(1);console.log(j.green.bold(`
|
|
209
|
+
`))}catch(q){Zq(q,"Failed to list plugins"),process.exit(1)}},YWA=async(A,q)=>{try{await Sq();let F=rA("Looking up group and plugin...",{color:"magenta"}),K=await kt(A);if(!K)F(),EA.error(`Group not found: ${A}`),process.exit(1);let g=(await d_({serverGroupId:K.server_group_id})).data?.plugin_assignments||[],Z=q.toLowerCase(),$=g.find((U)=>U.id?.toLowerCase()===Z||U.id?.toLowerCase().startsWith(Z)||U.plugin_name?.toLowerCase()===Z||U.plugin_name?.toLowerCase().includes(Z));if(!$)F(),EA.error(`Plugin not found: ${q}. Use "group plugin list ${A}" to see available plugins.`),process.exit(1);await o7($.id),F(),console.log(j.green(`\u2713 Removed plugin "${$.plugin_name}" from group "${K.name||K.server_group_id}"`))}catch(F){Zq(F,"Failed to remove plugin"),process.exit(1)}};function Qgq(A,q){let F=A.trim().toLowerCase();return q.find((K)=>K.server_group_id?.toLowerCase()===F||K.name?.toLowerCase()===F)||q.find((K)=>K.server_group_id?.toLowerCase().includes(F)||K.name?.toLowerCase().includes(F))}async function QWA(A,q){try{await Sq();let F=rA("Looking up server group...",{color:"magenta"}),K=await xK();F();let E=K.data?.server_groups||[],g=Qgq(A,E);if(!g)console.log(j.yellow(`No server group matched "${A}". Try a group name or ID from "group list".`)),process.exit(1);let Z=g.server_group_id||g.name||A,$=rA("Starting server...",{color:"cyan"}),U=await o7A(Z,q);if($(),U.error)Zq(U.error,"Failed to start server"),process.exit(1);let G=U.data?.server,Y=G?.server_group?`${G.server_group.name} ${G.numerical_id}`:G?.persistent_server?.name;console.log(j.green.bold(`
|
|
210
|
+
Server start request sent successfully`)),console.log(` Server ID: ${j.bold(U.data?.server?.server_id||"N/A")}`),console.log(` Server Name: ${j.bold(Y||"N/A")}`)}catch(F){Zq(F,"Failed to start server"),process.exit(1)}}function Jgq(A,q){let F=A.trim().toLowerCase();return q.find((K)=>K.server_group_id?.toLowerCase()===F||K.name?.toLowerCase()===F)||q.find((K)=>K.server_group_id?.toLowerCase().includes(F)||K.name?.toLowerCase().includes(F))}async function JWA(A,q){try{await Sq();let F=rA("Looking up server group...",{color:"magenta"}),K=await xK();F();let E=K.data?.server_groups||[],g=Jgq(A,E);if(!g||!g.server_group_id)console.log(j.yellow(`No server group matched "${A}". Try a group name or ID from "group list".`)),process.exit(1);let Z={name:g.name,type:g.type,active:g.active,max_memory:g.max_memory,min_memory:g.min_memory,max_players:g.max_players,deployment:g.deployment,scaling:g.scaling,source:g.source,workflows:g.workflows,properties:g.properties,tags:g.tags};if(q.name!==void 0)Z.name=q.name;if(q.type!==void 0)Z.type=q.type;if(q.active!==void 0)Z.active=q.active;if(q.maxMemory!==void 0)Z.max_memory=q.maxMemory;if(q.minMemory!==void 0)Z.min_memory=q.minMemory;if(q.maxPlayers!==void 0)Z.max_players=q.maxPlayers;if(q.scalingMin!==void 0||q.scalingMax!==void 0)Z.scaling={...Z.scaling,min_servers:q.scalingMin??Z.scaling?.min_servers,max_servers:q.scalingMax??Z.scaling?.max_servers};if(!(q.name!==void 0||q.type!==void 0||q.active!==void 0||q.maxMemory!==void 0||q.minMemory!==void 0||q.maxPlayers!==void 0||q.scalingMin!==void 0||q.scalingMax!==void 0)){console.log(j.yellow("No updates provided"));return}let U=rA("Updating server group...",{color:"cyan"}),G=await i7A(g.server_group_id,Z);if(U(),G.error)Zq(G.error,"Failed to update server group"),process.exit(1);console.log(j.green.bold(`
|
|
212
211
|
Server group updated successfully`)),console.log(` Name: ${G.data?.name||g.name}`),console.log(` ID: ${G.data?.server_group_id||g.server_group_id}`)}catch(F){Zq(F,"Failed to update server group"),process.exit(1)}}function XWA(A){A.command({command:"group <command>",aliases:["groups"],describe:"Manage server groups",builder:(q)=>q.command({command:"list",aliases:["ls"],describe:"List all groups",builder:{filter:{type:"string",describe:"Filter results by name"},type:{choices:["SERVER","PROXY","LOBBY"],describe:"Filter by group type"},sort:{choices:["name","type","memory","players","created"],describe:"Sort results by field"},reverse:{type:"boolean",default:!1,describe:"Reverse sort order"}},handler:$q(async(F)=>{await gWA({filter:F.filter,type:F.type,sort:F.sort,reverse:F.reverse})})}).command({command:"create",aliases:["new"],describe:"Create a new group",builder:{"auto-retry":{alias:"y",type:"boolean",default:!1,describe:"Automatically retry with previous answers if available"}},handler:$q(async(F)=>{await e7A({autoRetry:F.autoRetry})})}).command({command:"info <group>",aliases:["get","show"],describe:"Show group information",builder:(F)=>F.positional("group",{describe:"Group identifier",type:"string",demandOption:!0}),handler:$q(async(F)=>{await ZWA(F.group)})}).command({command:"start <group>",describe:"Start a server in the group",builder:(F)=>F.positional("group",{describe:"Group identifier",type:"string",demandOption:!0}).option("serverhost-id",{type:"string",describe:"Specific serverhost ID to use"}),handler:$q(async(F)=>{await QWA(F.group,F.serverhostId)})}).command({command:"delete <group>",aliases:["del","rm"],describe:"Delete a group",builder:(F)=>F.positional("group",{describe:"Group identifier",type:"string",demandOption:!0}),handler:$q(async(F)=>{await FWA(F.group)})}).command({command:"update <group>",aliases:["edit"],describe:"Update group settings",builder:(F)=>F.positional("group",{describe:"Group identifier",type:"string",demandOption:!0}).option("name",{type:"string",describe:"New group name"}).option("type",{choices:["SERVER","PROXY","LOBBY"],describe:"Group type"}).option("active",{type:"boolean",describe:"Set active status"}).option("max-memory",{type:"number",describe:"Maximum memory in MB"}).option("min-memory",{type:"number",describe:"Minimum memory in MB"}).option("max-players",{type:"number",describe:"Maximum players"}).option("scaling-min",{type:"number",describe:"Minimum servers for scaling"}).option("scaling-max",{type:"number",describe:"Maximum servers for scaling"}),handler:$q(async(F)=>{await JWA(F.group,{name:F.name,type:F.type,active:F.active,maxMemory:F.maxMemory,minMemory:F.minMemory,maxPlayers:F.maxPlayers,scalingMin:F.scalingMin,scalingMax:F.scalingMax})})}).command({command:"plugin <command>",aliases:["plugins"],describe:"Manage plugins for a group",builder:(F)=>F.command({command:"add <group> [query]",describe:"Add plugins to a group",builder:(K)=>K.positional("group",{describe:"Group identifier",type:"string",demandOption:!0}).positional("query",{describe:"Plugin search query, Modrinth slug (mr:name), Spigot ID (sp:123), or URL",type:"string"}),handler:$q(async(K)=>{await UWA(K.group,K.query)})}).command({command:"list <group>",aliases:["ls"],describe:"List plugins for a group",builder:(K)=>K.positional("group",{describe:"Group identifier",type:"string",demandOption:!0}),handler:$q(async(K)=>{await GWA(K.group)})}).command({command:"remove <group> <plugin>",aliases:["rm"],describe:"Remove a plugin from a group",builder:(K)=>K.positional("group",{describe:"Group identifier",type:"string",demandOption:!0}).positional("plugin",{describe:"Plugin name or assignment ID",type:"string",demandOption:!0}),handler:$q(async(K)=>{await YWA(K.group,K.plugin)})}).demandCommand(1,"You must specify a subcommand"),handler:()=>{}}).demandCommand(1,"You must specify a subcommand"),handler:()=>{}})}_Y();function OWA(A){A.command({command:"logout",describe:"Log out from SimpleCloud",builder:{force:{type:"boolean",alias:"f",describe:"Skip confirmation prompt",default:!1}},handler:$q(async(q)=>{if(!await Tg()){EA.info("You are not logged in.");return}if(!q.force){let K=await tg({message:"Are you sure you want to log out?",initialValue:!1});if(UK(K)||!K){EA.info("Logout cancelled.");return}}await _x(),kK(iU.success("Logged out successfully."))})})}var _WA=async()=>{return(await N6()).v0.networksRegisterCreate()},HWA=async(A,q)=>{return(await N6()).v0.networksVerifyCreate({network_id:A,network_secret:q})};function jWA(A){A.command({command:"network <command>",aliases:["networks","net"],describe:"Manage network configuration",builder:(q)=>q.command({command:"register",describe:"Register a new network",handler:$q(async()=>{await Sq();let F=rA("Registering network...",{color:"cyan"}),K=await _WA();if(F(),K.error)Zq(K.error,"Failed to register network"),process.exit(1);console.log(j.green.bold(`
|
|
213
212
|
Network registered successfully!
|
|
214
213
|
`)),console.log(j.blueBright("Network Credentials:")),console.log(` Network ID: ${j.bold(K.data?.network_id||"N/A")}`),console.log(` Network Name: ${j.bold(K.data?.network_name||"N/A")}`),console.log(` Network Secret: ${j.bold(K.data?.network_secret||"N/A")}
|