UNPKG

minecraft-modpack

Version:

Minecraft modpack creation made easy

78 lines (65 loc) 2.62 kB
var storage; const config = require("../config"); var Mod; class ModFactory{ constructor(){ } static passStorage( storageInstance ){ storage = storageInstance; Mod = require("./Mod"); //prevent recurse GG 200 IQ Mod.passStorage(storage); } async instance(obj, type){ let ret = {}; let filesBig = await this.getFiles(obj.id); ret.id = obj.id || 0; ret.type = type || 1; ret.fileNames = filesBig.fileNames || []; ret.fileNamesPlain = filesBig.fileNamesPlain || []; ret.authors = this.parseAuthors(obj.authors) || []; ret.files = filesBig.files || []; ret.slug = obj.slug || ""; ret.addonName = obj.name || ""; ret.curseforgeURL = obj.websiteUrl || ""; return new Mod(ret); } getFiles(id){ let fileNamesPlain = []; let fileNames = []; return new Promise( resolve => { storage.instance.get( config.path.files(id) ) .then(async resp => { let filesTemp = resp.data; let files = []; filesTemp.map( file => { if( file.gameVersion.includes(storage.gameConfig.gameVersion) ){ let fileInstancePromise = file; fileNamesPlain.push( file.fileName ); files.push( fileInstancePromise ); } }); // let sortFn = function(a, b) { // a = new Date(a.fileDate); // b = new Date(b.fileDate); // return a > b ? -1 : a < b ? 1 : 0; // }; let sortFn = undefined; // It's necessary!!! fileNames = fileNamesPlain.slice().sort(sortFn).reverse().map( (fileName, index) => { return index + ". " + fileName; }); let filesBig = { files, fileNames, fileNamesPlain }; resolve(filesBig); }); }); } parseAuthors(authors){ return authors.map(author => { return author.name; }); } } module.exports = ModFactory;