@tobylai/qmcli 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/qmcli.cjs +2 -2
- package/package.json +1 -1
package/dist/qmcli.cjs
CHANGED
|
@@ -121,7 +121,7 @@ Reset: remove the entries you want to reset
|
|
|
121
121
|
<AppenderRef ref="File"/>
|
|
122
122
|
</Root>
|
|
123
123
|
</Loggers>
|
|
124
|
-
</Configuration>`;var lf=require("node:crypto");function uf(e){let t=H.get("users");t.push(e),H.set("users",t)}function ff(e){let t=H.get("users"),r=t.findIndex(n=>n.uuid===e.uuid);r!==-1&&(t.splice(r,1),H.set("users",t))}function Gn(){return H.get("users")}function xf(e){let t=(0,lf.createHash)("md5").update(`OfflinePlayer:${e}`,"utf8").digest();return t[6]=t[6]&15|48,t[8]=t[8]&63|128,t.subarray(0,4).toString("hex")+"-"+t.subarray(4,6).toString("hex")+"-"+t.subarray(6,8).toString("hex")+"-"+t.subarray(8,10).toString("hex")+"-"+t.subarray(10,16).toString("hex")}function df(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}var Wn={name:"@tobylai/qmcli",version:"0.2.
|
|
124
|
+
</Configuration>`;var lf=require("node:crypto");function uf(e){let t=H.get("users");t.push(e),H.set("users",t)}function ff(e){let t=H.get("users"),r=t.findIndex(n=>n.uuid===e.uuid);r!==-1&&(t.splice(r,1),H.set("users",t))}function Gn(){return H.get("users")}function xf(e){let t=(0,lf.createHash)("md5").update(`OfflinePlayer:${e}`,"utf8").digest();return t[6]=t[6]&15|48,t[8]=t[8]&63|128,t.subarray(0,4).toString("hex")+"-"+t.subarray(4,6).toString("hex")+"-"+t.subarray(6,8).toString("hex")+"-"+t.subarray(8,10).toString("hex")+"-"+t.subarray(10,16).toString("hex")}function df(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}var Wn={name:"@tobylai/qmcli",version:"0.2.2",description:"A quick minecraft launcher command-line interface",type:"module",bin:{qmcli:"dist/qmcli.cjs"},scripts:{},keywords:["minecraft","cli"],author:"tobylai-toby",license:"MIT",dependencies:{},devDependencies:{},publishConfig:{registry:"https://registry.npmjs.org/",access:"public"}};var J0=R(require("node:path")),Rr=R(require("node:fs"));var dt={defaultMerge:Symbol("deepmerge-ts: default merge"),skip:Symbol("deepmerge-ts: skip")},yD={defaultMerge:dt.defaultMerge};function Dm(e,t){return t}function bm(e,t){return e.filter(r=>r!==void 0)}var hf;(function(e){e[e.NOT=0]="NOT",e[e.RECORD=1]="RECORD",e[e.ARRAY=2]="ARRAY",e[e.SET=3]="SET",e[e.MAP=4]="MAP",e[e.OTHER=5]="OTHER"})(hf||(hf={}));function pf(e){return typeof e!="object"||e===null?0:Array.isArray(e)?2:Em(e)?1:e instanceof Set?3:e instanceof Map?4:5}function ym(e){let t=new Set;for(let r of e)for(let n of[...Object.keys(r),...Object.getOwnPropertySymbols(r)])t.add(n);return t}function vm(e,t){return typeof e=="object"&&Object.prototype.propertyIsEnumerable.call(e,t)}function gf(e){let t=0,r=e[0]?.[Symbol.iterator]();return{[Symbol.iterator](){return{next(){do{if(r===void 0)return{done:!0,value:void 0};let n=r.next();if(n.done===!0){t+=1,r=e[t]?.[Symbol.iterator]();continue}return{done:!1,value:n.value}}while(!0)}}}}}var mf=["[object Object]","[object Module]"];function Em(e){if(!mf.includes(Object.prototype.toString.call(e)))return!1;let{constructor:t}=e;if(t===void 0)return!0;let r=t.prototype;return!(r===null||typeof r!="object"||!mf.includes(Object.prototype.toString.call(r))||!r.hasOwnProperty("isPrototypeOf"))}function Cm(e,t,r){let n={};for(let i of ym(e)){let s=[];for(let c of e)vm(c,i)&&s.push(c[i]);if(s.length===0)continue;let o=t.metaDataUpdater(r,{key:i,parents:e}),a=_f(s,t,o);a!==dt.skip&&(i==="__proto__"?Object.defineProperty(n,i,{value:a,configurable:!0,enumerable:!0,writable:!0}):n[i]=a)}return n}function wm(e){return e.flat()}function Fm(e){return new Set(gf(e))}function Sm(e){return new Map(gf(e))}function Am(e){return e.at(-1)}var zn={mergeRecords:Cm,mergeArrays:wm,mergeSets:Fm,mergeMaps:Sm,mergeOthers:Am};function kt(...e){return Om({})(...e)}function Om(e,t){let r=Bm(e,n);function n(...i){return _f(i,r,t)}return n}function Bm(e,t){return{defaultMergeFunctions:zn,mergeFunctions:{...zn,...Object.fromEntries(Object.entries(e).filter(([r,n])=>Object.hasOwn(zn,r)).map(([r,n])=>n===!1?[r,zn.mergeOthers]:[r,n]))},metaDataUpdater:e.metaDataUpdater??Dm,deepmerge:t,useImplicitDefaultMerging:e.enableImplicitDefaultMerging??!1,filterValues:e.filterValues===!1?void 0:e.filterValues??bm,actions:dt}}function _f(e,t,r){let n=t.filterValues?.(e,r)??e;if(n.length===0)return;if(n.length===1)return Z0(n,t,r);let i=pf(n[0]);if(i!==0&&i!==5){for(let s=1;s<n.length;s++)if(pf(n[s])!==i)return Z0(n,t,r)}switch(i){case 1:return Im(n,t,r);case 2:return Tm(n,t,r);case 3:return Lm(n,t,r);case 4:return Nm(n,t,r);default:return Z0(n,t,r)}}function Im(e,t,r){let n=t.mergeFunctions.mergeRecords(e,t,r);return n===dt.defaultMerge||t.useImplicitDefaultMerging&&n===void 0&&t.mergeFunctions.mergeRecords!==t.defaultMergeFunctions.mergeRecords?t.defaultMergeFunctions.mergeRecords(e,t,r):n}function Tm(e,t,r){let n=t.mergeFunctions.mergeArrays(e,t,r);return n===dt.defaultMerge||t.useImplicitDefaultMerging&&n===void 0&&t.mergeFunctions.mergeArrays!==t.defaultMergeFunctions.mergeArrays?t.defaultMergeFunctions.mergeArrays(e):n}function Lm(e,t,r){let n=t.mergeFunctions.mergeSets(e,t,r);return n===dt.defaultMerge||t.useImplicitDefaultMerging&&n===void 0&&t.mergeFunctions.mergeSets!==t.defaultMergeFunctions.mergeSets?t.defaultMergeFunctions.mergeSets(e):n}function Nm(e,t,r){let n=t.mergeFunctions.mergeMaps(e,t,r);return n===dt.defaultMerge||t.useImplicitDefaultMerging&&n===void 0&&t.mergeFunctions.mergeMaps!==t.defaultMergeFunctions.mergeMaps?t.defaultMergeFunctions.mergeMaps(e):n}function Z0(e,t,r){let n=t.mergeFunctions.mergeOthers(e,t,r);return n===dt.defaultMerge||t.useImplicitDefaultMerging&&n===void 0&&t.mergeFunctions.mergeOthers!==t.defaultMergeFunctions.mergeOthers?t.defaultMergeFunctions.mergeOthers(e):n}var X0=`# QMCLI launcher
|
|
125
125
|
isolated: false
|
|
126
126
|
|
|
127
127
|
ram:
|
|
@@ -140,7 +140,7 @@ java: ${x}
|
|
|
140
140
|
main: ${pt}
|
|
141
141
|
cp: ${so}
|
|
142
142
|
args: ${io.join(" ")}
|
|
143
|
-
`;z.default.appendFileSync(v,Bf);let oo=z.default.openSync(v,"a"),ao=z.default.openSync(v,"a"),If=(0,Cf.spawnSync)(x,["-cp",so,pt,...io],{stdio:["ignore",oo,ao]});if(z.default.closeSync(oo),z.default.closeSync(ao),If.status!==0)throw console.log(O.red(`Forge processor failed: ${Y}`)),console.log(O.red(`Details logged to: ${v}`)),new Error(`Forge processor failed: ${Y}`);console.log(O.green(y("forge_processor_done",Y)));for(let[Ke,ri]of Object.entries(k)){let jt=this.resolveDataValue(String(Ke),t,r,s,o,n,i,b),fr=this.resolveDataValue(String(ri),t,r,s,o,n,i,b);if(fr&&z.default.existsSync(jt)){let ni=new Uint8Array(z.default.readFileSync(jt));if(await Lt(ni)!==fr)throw new Error(`Forge processor checksum mismatch: ${jt}`)}}}return l}static async install(t,r,n){console.log(O.green(y("forge_installing")));let i=t.mcversion==="1.7.10-pre4"?"1.7.10_pre4":t.mcversion,s=t.mcversion==="1.7.10-pre4"?"prerelease":t.branch??"",o=s?`-${s}`:"",c=`forge-${`${i}-${t.version}${o}`}-installer.jar`,l=pe.default.join(r,"cache");z.default.mkdirSync(l,{recursive:!0});let u=pe.default.join(l,c);(!z.default.existsSync(u)||z.default.statSync(u).size===0)&&await this.downloadInstaller(t,u);let f;try{f=new Xn.default(u)}catch{z.default.unlinkSync(u),await this.downloadInstaller(t,u),f=new Xn.default(u)}let D=this.readZipText(f,"install_profile.json");if(!D)throw new Error("Invalid Forge installer: missing install_profile.json");let d=JSON.parse(D),h;if(d.install&&d.versionInfo)h=this.installOldFormat(d,f,r);else if(d.spec!=null)h=await this.installNewFormat(d,f,r,n,l,u);else throw new Error("Unrecognized Forge installer format");if(h.libraries){let _=J(`${this.mavenRoot}/`);for(let x of h.libraries)if(!x.downloads?.artifact){let v=Ye(x.name);x.downloads={artifact:{path:v,url:(x.url||_)+v}}}}let m=pe.default.join(r,"versions",n,`${n}.json`),p=JSON.parse(z.default.readFileSync(m,"utf-8")),g=Ur(p,h,{id:this.loader,priority:3e4,version:t.version});z.default.writeFileSync(m,JSON.stringify(g,null,4),"utf-8"),console.log(O.green(y("forge_install_complete")))}};var Jn=class extends lr{static loader="neoforged";static apiRoot="https://bmclapi2.bangbang93.com/neoforge/list";static mavenRoot="https://maven.neoforged.net/releases";static mavenBackupRoot="https://maven.neoforged.net/releases";static getInstallerCandidates(t,r,n){let i=r,s=`neoforge-${i}-installer.jar`;return[J(`${this.mavenRoot}/net/neoforged/neoforge/${i}/${s}`),J(`${this.mavenBackupRoot}/net/neoforged/neoforge/${i}/${s}`)]}static async getInstallersFromMcVersion(t){let r=J(`${this.apiRoot}/${t}`),n=await fetch(r,{headers:this.headers});if(!n.ok)return null;let i=await n.json();return!Array.isArray(i)||i.length===0?null:i.map(s=>({version:s.version,mcversion:s.mcversion||t}))}};var Qn=class extends cr{static loader="quilt";static fabricapi="https://meta.quiltmc.org/v3"};function Pr(e){let t=(o,a)=>{if(!o||!a)return!1;for(let c=0;c<o.length-1;c++){let l=o[c],u=o[c+1];if(l==="--launchTarget"&&u===a)return!0}return!1},r=(e.libraries??[]).some(o=>o.name?.startsWith("net.minecraftforge:forge:")),n=(e.libraries??[]).some(o=>o.name?.startsWith("net.neoforged:"));for(let o of e.patches||[]){if(o.mainClass?.includes("fabricmc"))return"fabric";if(o.mainClass?.includes("quiltmc"))return"quilt";if(o.mainClass?.includes("ForgeBootstrap")||t(o.arguments?.game,"forge_client")||t(o.arguments?.game,"forgeclient")||r)return"forge";if(o.mainClass?.includes("neoforge")||t(o.arguments?.game,"neoforgeclient")||n)return"neoforged"}let i=e.mainClass??"",s=e.arguments;return i.includes("fabricmc")?"fabric":i.includes("quiltmc")?"quilt":i.includes("ForgeBootstrap")||t(s?.game,"forge_client")||t(s?.game,"forgeclient")||r?"forge":i.includes("neoforge")||t(s?.game,"neoforgeclient")||n?"neoforged":!1}var Hm={fabric:cr,forge:lr,quilt:Qn,neoforged:Jn};async function Ff(e,t,r){let n=ei.default.join(e,"versions",t),i=JSON.parse(ro.default.readFileSync(ei.default.join(n,t+".json"),{encoding:"utf-8"})),s=Pr(i),o=await he({message:y("auto_install_prompt_select_mod_loader"),choices:[{name:`${s=="fabric"?"\u2705 ":""}Fabric`,value:"fabric",disabled:s!==!1&&s!="fabric"},{name:`${s=="quilt"?"\u2705 ":""}Quilt`,value:"quilt",disabled:s!==!1&&s!="quilt"},{name:`${s=="forge"?"\u2705 ":""}Forge`,value:"forge",disabled:s!==!1&&s!="forge"},{name:`${s=="neoforged"?"\u2705 ":""}NeoForge`,value:"neoforged",disabled:s!==!1&&s!="neoforged"}]}),a=Hm[o];if(s){let c=await he({message:y("auto_install_select_action_prompt"),choices:[{name:y("auto_install_select_action_info"),value:"info",description:y("auto_install_select_action_info_desc")},{name:y("auto_install_select_action_delete"),value:"delete",description:y("auto_install_select_action_delete_desc")}]});if(c=="info")if(console.log(O.green(y("auto_install_info_loader",s))),!i.patches)console.log(O.yellow(y("auto_install_info_err_no_patches")));else{let l=i.patches?.find(u=>u.id==s);if(!l){console.log(O.yellow(y("auto_install_info_err_no_patches_named",s)));return}console.log(O.green(y("auto_install_version_loader",l.version)))}else if(c=="delete"&&await tt({message:y("auto_install_confirm_delete"),default:!1})){let u=i.patches?.findIndex(f=>f.id==s)??-1;if(u==-1){console.log(O.red(y("auto_install_info_err_no_patches_named",s))),console.log(O.red(y("err_failed")));return}i=eo(i,i.patches[u]),ro.default.writeFileSync(ei.default.join(n,t+".json"),JSON.stringify(i,null,4)),console.log(O.green(y("operation_completed")))}}else{let c=await a.getInstallersFromMcVersion(r);if(!c){console.log(O.red(y("auto_install_prompt_no_loaders_found")));return}c.sort((u,f)=>{let D=u.version.split(".")[0]!==void 0?u.version.replace(/-.*$/,"").split(".").map(Number):[0],d=f.version.split(".")[0]!==void 0?f.version.replace(/-.*$/,"").split(".").map(Number):[0];for(let h=0;h<Math.max(D.length,d.length);h++){let m=D[h]??0,p=d[h]??0;if(m!==p)return p-m}return 0});let l=await he({message:y("auto_install_prompt_select_loader_version"),choices:c.map(u=>({name:u.version,value:u}))});console.log(O.green(y("operation_starting"))),await a.install(l,e,t),console.log(O.green(y("operation_completed")))}}var Gm=jn[H.get("lang")];Fu(Gm);var ht=new dr;ht.name("qmcli").description(y("app_desc")).version(Wn.version);async function Sf(){return await he({message:y("select_mc_path_prompt"),choices:H.get("paths").map(e=>({value:e,name:e,description:y("select_mc_path_desc"),short:e}))})}var qr=new dr;qr.name("versions");qr.description(y("cmd_versions_desc"));qr.command("add").description(y("cmd_versions_add_desc")).action(async()=>{let e=await tt({message:y("cmd_versions_add_confirm_show_snapshots")});console.log(O.green(y("cmd_versions_fetching_versions")));let r=(await Su()).filter(a=>e?!0:!(a.type==="snapshot"||a.type==="old_beta"||a.type==="old_alpha")).map(a=>({value:a,name:`${a.id} (${y("mctype."+a.type)})`,description:y("cmd_versions_list_version_desc",a.id,y("mctype."+a.type),a.releaseTime,a.time),short:a.id})),n=await f0({message:y("cmd_versions_add_select_version_prompt"),source(a){return a?r.filter(c=>c.name?.toLowerCase().includes(a.toLowerCase())):r}}),i=await Sf(),s=await Ft({message:y("cmd_versions_enter_game_name_prompt"),default:n.id,validate(a){return a?yu(a)?it.existsSync(no.default.join(De(i),"versions",a))?y("error_game_name_exists",a):!0:y("error_game_name_invalid"):y("error_game_name_required")}});console.log(O.green(y("summary_info"))),console.log(O.green(y("summary_game_name",s))),console.log(O.green(y("summary_version",n.id)));try{let c=await(await fetch(J(n.url))).json();c.javaVersion?.majorVersion&&console.log(O.green(y("summary_java_version",c.javaVersion.majorVersion)))}catch{}if(console.log(O.green(y("summary_minecraft_path",i))),console.log(O.green(y("cmd_versions_add_tips_autoinstall"))),!await tt({message:y("confirm_continue")})){console.log(O.red(y("operation_canceled")));return}console.log(O.green(y("operation_starting"))),await Au(n.url,De(i),s),console.log(O.green(y("operation_completed")))});qr.command("list").description(y("cmd_versions_list_desc")).action(async()=>{let e=await Sf(),t=await Q0(De(e));if(t.length===0){console.log(O.red(y("error_no_game_installed")));return}let r=await he({message:y("cmd_versions_list_select_game_prompt"),choices:t.map(i=>{let s=JSON.parse(it.readFileSync(`${De(e)}/versions/${i}/${i}.json`,"utf-8")),o=Pr(s),a=s.javaVersion?.majorVersion,c=a?` | ${y("summary_java_version",a)}`:"";return{value:i,name:i+(o?` | (\u2705 ${o})`:"")+c,description:y("cmd_versions_list_game_desc",i,Zn(s))+(o?` (\u2705 ${o})`:"")+c,short:i}})}),n=await he({message:y("cmd_versions_list_select_action_prompt"),choices:[{value:"launch",name:y("cmd_versions_action_launch"),description:y("cmd_versions_action_launch_desc")},{value:"edit",name:y("cmd_versions_action_edit"),description:y("cmd_versions_action_edit_desc")},{value:"autoinstall",name:y("cmd_versions_action_autoinstall"),description:y("cmd_versions_action_autoinstall_desc")},{value:"delete",name:y("cmd_versions_action_delete"),description:y("cmd_versions_action_delete_desc")}]});if(n==="launch")console.log(O.green(y("operation_starting"))),await Ef(De(e),r);else if(n==="edit"){let i=Yn(De(e),r),s=ft.dump(i),o=await c0({message:y("cmd_versions_action_edit_prompt"),default:s,postfix:".yml"});Df(De(e),r,ft.load(o)),console.log(O.green(y("cmd_versions_action_edit_saved")))}else if(n==="autoinstall"){let i=JSON.parse(it.readFileSync(`${De(e)}/versions/${r}/${r}.json`,"utf-8"));await Ff(De(e),r,Zn(i)??r)}else n==="delete"&&(await tt({message:y("cmd_versions_action_delete_confirm",r),default:!1})?(console.log(O.green(y("operation_starting"))),vf(De(e),r),console.log(O.green(y("operation_completed")))):console.log(O.red(y("operation_canceled"))))});ht.addCommand(qr);var ur=new dr;ur.name("settings").description(y("cmd_settings_desc"));ur.command("mirror").description(y("cmd_settings_mirror_desc")).action(async()=>{let e=await he({message:y("cmd_settings_mirror_select_prompt",H.get("mirror")),default:H.get("mirror"),choices:[{value:"official",name:y("cmd_settings_mirror_option_official"),description:y("cmd_settings_mirror_option_official_desc")},{value:"bmclapi",name:y("cmd_settings_mirror_option_bmclapi"),description:y("cmd_settings_mirror_option_bmclapi_desc")}]});H.set("mirror",e),console.log(O.green(y("cmd_settings_mirror_set_success",e)))});var Af=ur.command("paths").description(y("cmd_settings_paths_desc"));Af.command("add").description(y("cmd_settings_paths_add_desc")).action(async()=>{let e=H.get("paths"),t=await Ft({message:y("cmd_settings_paths_add_prompt"),validate(n){return n?it.existsSync(De(n))?it.statSync(De(n)).isDirectory()?e.includes(n)||e.includes(De(n))?y("error_path_already_added"):!0:y("error_path_not_directory"):y("error_path_not_exist"):y("error_path_required")}}),r=no.default.resolve(De(t));e.push(r),H.set("paths",e),console.log(O.green(y("cmd_settings_paths_add_success",r)))});Af.command("list").description(y("cmd_settings_paths_list_desc")).action(async()=>{let e=H.get("paths");if(e.length===0){console.log(O.red(y("error_no_path_added")));return}let t=await he({message:y("cmd_settings_paths_list_select_prompt"),choices:e.map(n=>({value:n,name:n,description:y("cmd_settings_paths_list_select_desc"),short:n}))}),r=await he({message:y("cmd_settings_paths_list_select_action_prompt"),choices:[{value:"info",name:y("cmd_settings_paths_list_action_info"),description:y("cmd_settings_paths_list_action_info_desc")},{value:"remove",name:y("cmd_settings_paths_list_action_remove"),description:y("cmd_settings_paths_list_action_remove_desc")}]});if(r==="info"){console.log(O.blue(y("cmd_settings_paths_list_info_path",t)));let n=await Q0(De(t));if(n.length===0){console.log(O.red(y("error_no_game_installed")));return}console.log(O.blue(y("cmd_settings_paths_list_info_games")));for(let i of n){let s=JSON.parse(it.readFileSync(`${De(t)}/versions/${i}/${i}.json`,"utf-8"));console.log(O.blue(y("cmd_settings_paths_list_info_game_entry",i,Zn(s))))}}else r==="remove"&&(await tt({message:y("cmd_settings_paths_list_action_remove_confirm",t),default:!1})?(console.log(O.green(y("operation_starting"))),H.set("paths",e.filter(i=>i!==t)),console.log(O.green(y("operation_completed")))):console.log(O.red(y("operation_canceled"))))});ur.command("lang").description(y("cmd_settings_lang_desc")).action(async()=>{let e=await he({message:y("cmd_settings_lang_select_prompt",H.get("lang")),default:H.get("lang"),choices:Object.keys(jn).map(t=>({value:t,name:`${jn[t].lang_name} (${t})`,short:t}))});H.set("lang",e),console.log(O.green(y("cmd_settings_lang_set_success",e)))});ur.command("java").description(y("cmd_settings_java_desc")).action(async()=>{let e=await Ft({message:y("cmd_settings_java_prompt",H.get("java")),default:H.get("java"),validate(t){return t?!0:y("error_java_required")}});H.set("java",e),console.log(O.green(y("cmd_settings_java_set_success",e)))});ht.addCommand(ur);var ti=new dr;ti.name("users").description(y("cmd_users_desc"));ti.command("add").description(y("cmd_users_add_desc")).action(async()=>{if(await he({message:y("cmd_users_add_select_type_prompt"),choices:[{value:"offline",name:y("cmd_users_add_type_offline"),description:y("cmd_users_add_type_offline_desc")},{value:"microsoft",name:y("cmd_users_add_type_microsoft"),description:y("cmd_users_add_type_microsoft_desc")}]})==="offline"){let t=await Ft({message:y("cmd_users_add_name_prompt"),validate(i){return i?/^[a-zA-Z0-9_]{3,16}$/.test(i)?!0:y("error_name_invalid"):y("error_name_required")}}),r=await Ft({message:y("cmd_users_add_uuid_prompt"),default:xf(t),validate(i){return df(i)?!0:y("error_uuid_invalid")}});uf({name:t,uuid:r,type:"offline"}),console.log(O.green(y("cmd_users_add_success",t)))}});ti.command("list").description(y("cmd_users_list_desc")).action(async()=>{let e=Gn();if(e.length===0){console.log(O.red(y("error_no_users")));return}let t=await he({message:y("cmd_users_list_select_user_prompt"),choices:e.map(n=>({value:n,name:`${n.name} (${n.type})`,description:y("cmd_users_list_user_desc",n.name,n.uuid,n.type),short:n.name}))}),r=await he({message:y("cmd_users_list_select_action_prompt"),choices:[{value:"info",name:y("cmd_users_list_action_info"),description:y("cmd_users_list_action_info_desc")},{value:"delete",name:y("cmd_users_list_action_delete"),description:y("cmd_users_list_action_delete_desc")}]});r==="info"?(console.log(O.green(y("cmd_users_list_info_name",t.name))),console.log(O.green(y("cmd_users_list_info_uuid",t.uuid))),console.log(O.green(y("cmd_users_list_info_type",t.type)))):r==="delete"&&(await tt({message:y("cmd_users_list_action_delete_confirm",t.name),default:!1})?(ff(t),console.log(O.green(y("cmd_users_list_action_delete_success")))):console.log(O.red(y("cmd_users_list_action_delete_cancel"))))});ht.addCommand(ti);ht.args.length===0&&ht.commands.length===0&&ht.help();ht.parse();
|
|
143
|
+
`;z.default.appendFileSync(v,Bf);let oo=z.default.openSync(v,"a"),ao=z.default.openSync(v,"a"),If=(0,Cf.spawnSync)(x,["-cp",so,pt,...io],{stdio:["ignore",oo,ao]});if(z.default.closeSync(oo),z.default.closeSync(ao),If.status!==0)throw console.log(O.red(`Forge processor failed: ${Y}`)),console.log(O.red(`Details logged to: ${v}`)),new Error(`Forge processor failed: ${Y}`);console.log(O.green(y("forge_processor_done",Y)));for(let[Ke,ri]of Object.entries(k)){let jt=this.resolveDataValue(String(Ke),t,r,s,o,n,i,b),fr=this.resolveDataValue(String(ri),t,r,s,o,n,i,b);if(fr&&z.default.existsSync(jt)){let ni=new Uint8Array(z.default.readFileSync(jt));if(await Lt(ni)!==fr)throw new Error(`Forge processor checksum mismatch: ${jt}`)}}}return l}static async install(t,r,n){console.log(O.green(y("forge_installing")));let i=t.mcversion==="1.7.10-pre4"?"1.7.10_pre4":t.mcversion,s=t.mcversion==="1.7.10-pre4"?"prerelease":t.branch??"",o=s?`-${s}`:"",c=`forge-${`${i}-${t.version}${o}`}-installer.jar`,l=pe.default.join(r,"cache");z.default.mkdirSync(l,{recursive:!0});let u=pe.default.join(l,c);(!z.default.existsSync(u)||z.default.statSync(u).size===0)&&await this.downloadInstaller(t,u);let f;try{f=new Xn.default(u)}catch{z.default.unlinkSync(u),await this.downloadInstaller(t,u),f=new Xn.default(u)}let D=this.readZipText(f,"install_profile.json");if(!D)throw new Error("Invalid Forge installer: missing install_profile.json");let d=JSON.parse(D),h;if(d.install&&d.versionInfo)h=this.installOldFormat(d,f,r);else if(d.spec!=null)h=await this.installNewFormat(d,f,r,n,l,u);else throw new Error("Unrecognized Forge installer format");if(h.libraries){let _=J(`${this.mavenRoot}/`);for(let x of h.libraries)if(!x.downloads?.artifact){let v=Ye(x.name);x.downloads={artifact:{path:v,url:(x.url||_)+v}}}}let m=pe.default.join(r,"versions",n,`${n}.json`),p=JSON.parse(z.default.readFileSync(m,"utf-8")),g=Ur(p,h,{id:this.loader,priority:3e4,version:t.version});z.default.writeFileSync(m,JSON.stringify(g,null,4),"utf-8"),console.log(O.green(y("forge_install_complete")))}};var Jn=class extends lr{static loader="neoforged";static apiRoot="https://bmclapi2.bangbang93.com/neoforge/list";static mavenRoot="https://maven.neoforged.net/releases";static mavenBackupRoot="https://maven.neoforged.net/releases";static getInstallerCandidates(t,r,n){let i=r,s=`neoforge-${i}-installer.jar`;return[J(`${this.mavenRoot}/net/neoforged/neoforge/${i}/${s}`),J(`${this.mavenBackupRoot}/net/neoforged/neoforge/${i}/${s}`)]}static async getInstallersFromMcVersion(t){let r=J(`${this.apiRoot}/${t}`),n=await fetch(r,{headers:this.headers});if(!n.ok)return null;let i=await n.json();return!Array.isArray(i)||i.length===0?null:i.map(s=>({version:s.version,mcversion:s.mcversion||t}))}};var Qn=class extends cr{static loader="quilt";static fabricapi="https://meta.quiltmc.org/v3"};function Pr(e){let t=(r,n)=>{if(!r||!n)return!1;for(let i=0;i<r.length-1;i++){let s=r[i],o=r[i+1];if(s==="--launchTarget"&&o===n)return!0}return!1};for(let r of e.patches||[]){if(r.mainClass?.includes("fabricmc"))return"fabric";if(r.mainClass?.includes("quiltmc"))return"quilt";if(r.mainClass?.includes("ForgeBootstrap")||t(r.arguments?.game,"forge_client")||t(r.arguments?.game,"forgeclient"))return"forge";if(r.mainClass?.includes("neoforge")||t(r.arguments?.game,"neoforgeclient"))return"neoforged"}return!1}var Hm={fabric:cr,forge:lr,quilt:Qn,neoforged:Jn};async function Ff(e,t,r){let n=ei.default.join(e,"versions",t),i=JSON.parse(ro.default.readFileSync(ei.default.join(n,t+".json"),{encoding:"utf-8"})),s=Pr(i),o=await he({message:y("auto_install_prompt_select_mod_loader"),choices:[{name:`${s=="fabric"?"\u2705 ":""}Fabric`,value:"fabric",disabled:s!==!1&&s!="fabric"},{name:`${s=="quilt"?"\u2705 ":""}Quilt`,value:"quilt",disabled:s!==!1&&s!="quilt"},{name:`${s=="forge"?"\u2705 ":""}Forge`,value:"forge",disabled:s!==!1&&s!="forge"},{name:`${s=="neoforged"?"\u2705 ":""}NeoForge`,value:"neoforged",disabled:s!==!1&&s!="neoforged"}]}),a=Hm[o];if(s){let c=await he({message:y("auto_install_select_action_prompt"),choices:[{name:y("auto_install_select_action_info"),value:"info",description:y("auto_install_select_action_info_desc")},{name:y("auto_install_select_action_delete"),value:"delete",description:y("auto_install_select_action_delete_desc")}]});if(c=="info")if(console.log(O.green(y("auto_install_info_loader",s))),!i.patches)console.log(O.yellow(y("auto_install_info_err_no_patches")));else{let l=i.patches?.find(u=>u.id==s);if(!l){console.log(O.yellow(y("auto_install_info_err_no_patches_named",s)));return}console.log(O.green(y("auto_install_version_loader",l.version)))}else if(c=="delete"&&await tt({message:y("auto_install_confirm_delete"),default:!1})){let u=i.patches?.findIndex(f=>f.id==s)??-1;if(u==-1){console.log(O.red(y("auto_install_info_err_no_patches_named",s))),console.log(O.red(y("err_failed")));return}i=eo(i,i.patches[u]),ro.default.writeFileSync(ei.default.join(n,t+".json"),JSON.stringify(i,null,4)),console.log(O.green(y("operation_completed")))}}else{let c=await a.getInstallersFromMcVersion(r);if(!c){console.log(O.red(y("auto_install_prompt_no_loaders_found")));return}c.sort((u,f)=>{let D=u.version.split(".")[0]!==void 0?u.version.replace(/-.*$/,"").split(".").map(Number):[0],d=f.version.split(".")[0]!==void 0?f.version.replace(/-.*$/,"").split(".").map(Number):[0];for(let h=0;h<Math.max(D.length,d.length);h++){let m=D[h]??0,p=d[h]??0;if(m!==p)return p-m}return 0});let l=await he({message:y("auto_install_prompt_select_loader_version"),choices:c.map(u=>({name:u.version,value:u}))});console.log(O.green(y("operation_starting"))),await a.install(l,e,t),console.log(O.green(y("operation_completed")))}}var Gm=jn[H.get("lang")];Fu(Gm);var ht=new dr;ht.name("qmcli").description(y("app_desc")).version(Wn.version);async function Sf(){return await he({message:y("select_mc_path_prompt"),choices:H.get("paths").map(e=>({value:e,name:e,description:y("select_mc_path_desc"),short:e}))})}var qr=new dr;qr.name("versions");qr.description(y("cmd_versions_desc"));qr.command("add").description(y("cmd_versions_add_desc")).action(async()=>{let e=await tt({message:y("cmd_versions_add_confirm_show_snapshots")});console.log(O.green(y("cmd_versions_fetching_versions")));let r=(await Su()).filter(a=>e?!0:!(a.type==="snapshot"||a.type==="old_beta"||a.type==="old_alpha")).map(a=>({value:a,name:`${a.id} (${y("mctype."+a.type)})`,description:y("cmd_versions_list_version_desc",a.id,y("mctype."+a.type),a.releaseTime,a.time),short:a.id})),n=await f0({message:y("cmd_versions_add_select_version_prompt"),source(a){return a?r.filter(c=>c.name?.toLowerCase().includes(a.toLowerCase())):r}}),i=await Sf(),s=await Ft({message:y("cmd_versions_enter_game_name_prompt"),default:n.id,validate(a){return a?yu(a)?it.existsSync(no.default.join(De(i),"versions",a))?y("error_game_name_exists",a):!0:y("error_game_name_invalid"):y("error_game_name_required")}});console.log(O.green(y("summary_info"))),console.log(O.green(y("summary_game_name",s))),console.log(O.green(y("summary_version",n.id)));try{let c=await(await fetch(J(n.url))).json();c.javaVersion?.majorVersion&&console.log(O.green(y("summary_java_version",c.javaVersion.majorVersion)))}catch{}if(console.log(O.green(y("summary_minecraft_path",i))),console.log(O.green(y("cmd_versions_add_tips_autoinstall"))),!await tt({message:y("confirm_continue")})){console.log(O.red(y("operation_canceled")));return}console.log(O.green(y("operation_starting"))),await Au(n.url,De(i),s),console.log(O.green(y("operation_completed")))});qr.command("list").description(y("cmd_versions_list_desc")).action(async()=>{let e=await Sf(),t=await Q0(De(e));if(t.length===0){console.log(O.red(y("error_no_game_installed")));return}let r=await he({message:y("cmd_versions_list_select_game_prompt"),choices:t.map(i=>{let s=JSON.parse(it.readFileSync(`${De(e)}/versions/${i}/${i}.json`,"utf-8")),o=Pr(s),a=s.javaVersion?.majorVersion,c=a?` | ${y("summary_java_version",a)}`:"";return{value:i,name:i+(o?` | (\u2705 ${o})`:"")+c,description:y("cmd_versions_list_game_desc",i,Zn(s))+(o?` (\u2705 ${o})`:"")+c,short:i}})}),n=await he({message:y("cmd_versions_list_select_action_prompt"),choices:[{value:"launch",name:y("cmd_versions_action_launch"),description:y("cmd_versions_action_launch_desc")},{value:"edit",name:y("cmd_versions_action_edit"),description:y("cmd_versions_action_edit_desc")},{value:"autoinstall",name:y("cmd_versions_action_autoinstall"),description:y("cmd_versions_action_autoinstall_desc")},{value:"delete",name:y("cmd_versions_action_delete"),description:y("cmd_versions_action_delete_desc")}]});if(n==="launch")console.log(O.green(y("operation_starting"))),await Ef(De(e),r);else if(n==="edit"){let i=Yn(De(e),r),s=ft.dump(i),o=await c0({message:y("cmd_versions_action_edit_prompt"),default:s,postfix:".yml"});Df(De(e),r,ft.load(o)),console.log(O.green(y("cmd_versions_action_edit_saved")))}else if(n==="autoinstall"){let i=JSON.parse(it.readFileSync(`${De(e)}/versions/${r}/${r}.json`,"utf-8"));await Ff(De(e),r,Zn(i)??r)}else n==="delete"&&(await tt({message:y("cmd_versions_action_delete_confirm",r),default:!1})?(console.log(O.green(y("operation_starting"))),vf(De(e),r),console.log(O.green(y("operation_completed")))):console.log(O.red(y("operation_canceled"))))});ht.addCommand(qr);var ur=new dr;ur.name("settings").description(y("cmd_settings_desc"));ur.command("mirror").description(y("cmd_settings_mirror_desc")).action(async()=>{let e=await he({message:y("cmd_settings_mirror_select_prompt",H.get("mirror")),default:H.get("mirror"),choices:[{value:"official",name:y("cmd_settings_mirror_option_official"),description:y("cmd_settings_mirror_option_official_desc")},{value:"bmclapi",name:y("cmd_settings_mirror_option_bmclapi"),description:y("cmd_settings_mirror_option_bmclapi_desc")}]});H.set("mirror",e),console.log(O.green(y("cmd_settings_mirror_set_success",e)))});var Af=ur.command("paths").description(y("cmd_settings_paths_desc"));Af.command("add").description(y("cmd_settings_paths_add_desc")).action(async()=>{let e=H.get("paths"),t=await Ft({message:y("cmd_settings_paths_add_prompt"),validate(n){return n?it.existsSync(De(n))?it.statSync(De(n)).isDirectory()?e.includes(n)||e.includes(De(n))?y("error_path_already_added"):!0:y("error_path_not_directory"):y("error_path_not_exist"):y("error_path_required")}}),r=no.default.resolve(De(t));e.push(r),H.set("paths",e),console.log(O.green(y("cmd_settings_paths_add_success",r)))});Af.command("list").description(y("cmd_settings_paths_list_desc")).action(async()=>{let e=H.get("paths");if(e.length===0){console.log(O.red(y("error_no_path_added")));return}let t=await he({message:y("cmd_settings_paths_list_select_prompt"),choices:e.map(n=>({value:n,name:n,description:y("cmd_settings_paths_list_select_desc"),short:n}))}),r=await he({message:y("cmd_settings_paths_list_select_action_prompt"),choices:[{value:"info",name:y("cmd_settings_paths_list_action_info"),description:y("cmd_settings_paths_list_action_info_desc")},{value:"remove",name:y("cmd_settings_paths_list_action_remove"),description:y("cmd_settings_paths_list_action_remove_desc")}]});if(r==="info"){console.log(O.blue(y("cmd_settings_paths_list_info_path",t)));let n=await Q0(De(t));if(n.length===0){console.log(O.red(y("error_no_game_installed")));return}console.log(O.blue(y("cmd_settings_paths_list_info_games")));for(let i of n){let s=JSON.parse(it.readFileSync(`${De(t)}/versions/${i}/${i}.json`,"utf-8"));console.log(O.blue(y("cmd_settings_paths_list_info_game_entry",i,Zn(s))))}}else r==="remove"&&(await tt({message:y("cmd_settings_paths_list_action_remove_confirm",t),default:!1})?(console.log(O.green(y("operation_starting"))),H.set("paths",e.filter(i=>i!==t)),console.log(O.green(y("operation_completed")))):console.log(O.red(y("operation_canceled"))))});ur.command("lang").description(y("cmd_settings_lang_desc")).action(async()=>{let e=await he({message:y("cmd_settings_lang_select_prompt",H.get("lang")),default:H.get("lang"),choices:Object.keys(jn).map(t=>({value:t,name:`${jn[t].lang_name} (${t})`,short:t}))});H.set("lang",e),console.log(O.green(y("cmd_settings_lang_set_success",e)))});ur.command("java").description(y("cmd_settings_java_desc")).action(async()=>{let e=await Ft({message:y("cmd_settings_java_prompt",H.get("java")),default:H.get("java"),validate(t){return t?!0:y("error_java_required")}});H.set("java",e),console.log(O.green(y("cmd_settings_java_set_success",e)))});ht.addCommand(ur);var ti=new dr;ti.name("users").description(y("cmd_users_desc"));ti.command("add").description(y("cmd_users_add_desc")).action(async()=>{if(await he({message:y("cmd_users_add_select_type_prompt"),choices:[{value:"offline",name:y("cmd_users_add_type_offline"),description:y("cmd_users_add_type_offline_desc")},{value:"microsoft",name:y("cmd_users_add_type_microsoft"),description:y("cmd_users_add_type_microsoft_desc")}]})==="offline"){let t=await Ft({message:y("cmd_users_add_name_prompt"),validate(i){return i?/^[a-zA-Z0-9_]{3,16}$/.test(i)?!0:y("error_name_invalid"):y("error_name_required")}}),r=await Ft({message:y("cmd_users_add_uuid_prompt"),default:xf(t),validate(i){return df(i)?!0:y("error_uuid_invalid")}});uf({name:t,uuid:r,type:"offline"}),console.log(O.green(y("cmd_users_add_success",t)))}});ti.command("list").description(y("cmd_users_list_desc")).action(async()=>{let e=Gn();if(e.length===0){console.log(O.red(y("error_no_users")));return}let t=await he({message:y("cmd_users_list_select_user_prompt"),choices:e.map(n=>({value:n,name:`${n.name} (${n.type})`,description:y("cmd_users_list_user_desc",n.name,n.uuid,n.type),short:n.name}))}),r=await he({message:y("cmd_users_list_select_action_prompt"),choices:[{value:"info",name:y("cmd_users_list_action_info"),description:y("cmd_users_list_action_info_desc")},{value:"delete",name:y("cmd_users_list_action_delete"),description:y("cmd_users_list_action_delete_desc")}]});r==="info"?(console.log(O.green(y("cmd_users_list_info_name",t.name))),console.log(O.green(y("cmd_users_list_info_uuid",t.uuid))),console.log(O.green(y("cmd_users_list_info_type",t.type)))):r==="delete"&&(await tt({message:y("cmd_users_list_action_delete_confirm",t.name),default:!1})?(ff(t),console.log(O.green(y("cmd_users_list_action_delete_success")))):console.log(O.red(y("cmd_users_list_action_delete_cancel"))))});ht.addCommand(ti);ht.args.length===0&&ht.commands.length===0&&ht.help();ht.parse();
|
|
144
144
|
/*! Bundled license information:
|
|
145
145
|
|
|
146
146
|
js-yaml/dist/js-yaml.mjs:
|