mc-piston-api
Version:
A library to assist with Minecraft's piston-meta API.
3 lines (2 loc) • 4.52 kB
JavaScript
;var I=Object.create;var u=Object.defineProperty;var O=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var R=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty;var G=(r,t)=>{for(var e in t)u(r,e,{get:t[e],enumerable:!0})},V=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of k(t))!F.call(r,s)&&s!==e&&u(r,s,{get:()=>t[s],enumerable:!(n=O(t,s))||n.enumerable});return r};var m=(r,t,e)=>(e=r!=null?I(R(r)):{},V(t||!r||!r.__esModule?u(e,"default",{value:r,enumerable:!0}):e,r)),N=r=>V(u({},"__esModule",{value:!0}),r);var W={};G(W,{downloadAsset:()=>h,downloadFile:()=>p,downloadMinecraft:()=>J,getArch:()=>L,getAssetIndex:()=>g,getLatestSnapshotVersion:()=>E,getLatestVersion:()=>U,getOSName:()=>j,getVersion:()=>v,getVersions:()=>d,resolveAssetURL:()=>w,shouldDownload:()=>y});module.exports=N(W);var $=m(require("https")),g=r=>{let t=r.assetIndex.url;return new Promise((e,n)=>{$.default.get(t,s=>{let a="";s.on("data",o=>a+=o),s.on("error",o=>n(o)),s.on("end",()=>{try{e(JSON.parse(a))}catch(o){n(o)}})})})},w=r=>`https://resources.download.minecraft.net/${r.substring(0,2)}/${r}`;var i=m(require("fs")),f=m(require("path")),A=m(require("http")),x=m(require("https"));var p=(r,t="./")=>{let e=f.default.resolve(t,r.path),n=f.default.dirname(e);return i.default.existsSync(n)||i.default.mkdirSync(n,{recursive:!0}),i.default.existsSync(e)&&i.default.rmSync(e),new Promise(s=>{(r.url.startsWith("https")?x.default:A.default).get(r.url,a=>{let o=i.default.createWriteStream(e);a.pipe(o),o.on("finish",()=>s(!0))})})},h=(r,t,e="./")=>{let n=f.default.resolve(e,"assets","objects",t.substring(0,2),t),s=f.default.dirname(n);return i.default.existsSync(s)||i.default.mkdirSync(s,{recursive:!0}),i.default.existsSync(n)&&i.default.rmSync(n),new Promise(a=>{x.default.get(w(t),o=>{let c=i.default.createWriteStream(n);o.pipe(c),c.on("finish",()=>{let l=f.default.resolve(e,"assets",r),S=f.default.dirname(l);i.default.existsSync(S)||i.default.mkdirSync(S,{recursive:!0}),i.default.existsSync(l)&&i.default.rmSync(l),i.default.copyFileSync(n,l),a(!0)})})})};var b=m(require("path"));var D=m(require("os")),j=()=>{switch(process.platform){case"win32":case"cygwin":return"windows";case"darwin":return"osx";case"linux":case"android":return"linux";default:throw new ReferenceError("Unknown platform!")}},L=()=>{switch(process.arch){case"arm":case"arm64":return"arm";case"ia32":case"x64":return"x86";default:throw new ReferenceError("Unknown architecture!")}},y=r=>{let t=!0;for(let e of r.rules||[])e.os&&(e.os.name&&t&&(t=e.os.name==j()),e.os.version&&t&&(t=new RegExp(e.os.version).test(D.default.version())),e.os.arch&&t&&(t=e.os.arch==L()));return t};var P=m(require("https"));var M=m(require("https")),d=()=>new Promise((r,t)=>{M.default.get("https://piston-meta.mojang.com/mc/game/version_manifest_v2.json",e=>{let n="";e.on("data",s=>n+=s),e.on("error",s=>t(s)),e.on("end",()=>{try{r(JSON.parse(n))}catch(s){t(s)}})})});var v=async r=>{let n=(await d()).versions.find(s=>s.id==r)?.url;return new Promise((s,a)=>{if(!n)return a("Could not find a URL!");P.default.get(n,o=>{let c="";o.on("data",l=>c+=l),o.on("error",l=>a(l)),o.on("end",()=>{try{s(JSON.parse(c))}catch(l){a(l)}})})})},U=async()=>(await d()).latest.release,E=async()=>(await d()).latest.snapshot;var J=async(r,t="./")=>{console.log("Fetching version info...");let e=await v(r);console.log("Fetching asset index...");let n=await g(e),s=[],a=[];console.log("Building download indexes...");for(let o of e.libraries)y(o)&&s.push({...o.downloads.artifact,name:o.name});for(let o of Object.keys(n.objects))a.push({...n.objects[o],name:o});console.log(`[1/3] [1/2] Downloading: client-${e.id}.jar...`),await p({url:e.downloads.client.url,path:b.default.resolve(`${t||"./"}/versions/${e.id}/client-${e.id}.jar`)}),console.log(`[1/3] [2/2] Downloading: server-${e.id}.jar...`),await p({url:e.downloads.server.url,path:b.default.resolve(`${t||"./"}/versions/${e.id}/server-${e.id}.jar`)});for(let o=0;o<s.length;o++){let c=s[o];console.log(`[2/3] [${o+1} / ${s.length}] Downloading library: ${c.name}`),await p(c,`${t||"./"}/libraries`)}for(let o=0;o<a.length;o++){let c=a[o];console.log(`[3/3] [${o+1} / ${a.length}] Downloading asset: ${c.name}`),await h(c.name,c.hash,t||"./")}};0&&(module.exports={downloadAsset,downloadFile,downloadMinecraft,getArch,getAssetIndex,getLatestSnapshotVersion,getLatestVersion,getOSName,getVersion,getVersions,resolveAssetURL,shouldDownload});
//# sourceMappingURL=index.js.map