From 02dc688161036ea642290cb3498511014f5092f3 Mon Sep 17 00:00:00 2001 From: Danielv123 Date: Tue, 7 Nov 2017 16:29:43 +0100 Subject: [PATCH] Documented more things with JSDOC --- .gitignore | 1 + lib/getFactorioLocale.js | 24 +++++++++++++++++++++++- lib/manager/modManager.js | 21 ++++++++++++++++++++- master.js | 13 ++++++++++++- 4 files changed, 56 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index b31280a2..1a94620d 100644 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,7 @@ Factorio* /database database/items.db config.json +package-lock.json # weird pattern to ignore sharedPlugins except not ignore some core modules !sharedPlugins/ diff --git a/lib/getFactorioLocale.js b/lib/getFactorioLocale.js index 8863ed81..89bf7497 100644 --- a/lib/getFactorioLocale.js +++ b/lib/getFactorioLocale.js @@ -1,6 +1,21 @@ +/** +Module for grabbing factorio locale from a local factorio install +@module getFactorioLocale +*/ + const fs = require("fs"); const ini = require("ini"); +/** +Gets raw factorio locale from the .ini file. +Not available outside of module through exports. + +@memberof getFactorioLocale +@inner +@param {string} factorioDirectory +@param {string} languageCode +@param {function} callback +*/ function getLocale(factorioDirectory, languageCode, callback){ var localeFile = factorioDirectory + '/data/base/locale/' + languageCode + '/base.cfg'; fs.readFile(localeFile, "utf8", (err, rawLocale) => { @@ -8,7 +23,14 @@ function getLocale(factorioDirectory, languageCode, callback){ }); } -function getLocaleAsObject(factorioDirectory, languageCode, callback){ +/** +Gets factorios locale as an object, does not respect mods. + +@param {string} factorioDirectory +@param {string} languageCode +@param {function} callback +*/ +module.exports.asObject = function getLocaleAsObject(factorioDirectory, languageCode, callback){ if(typeof factorioDirectory != "string" || typeof languageCode != "string" || typeof callback != "function"){ throw "Error: wrong parameters provided"; } diff --git a/lib/manager/modManager.js b/lib/manager/modManager.js index 9a88b989..254f8e2d 100644 --- a/lib/manager/modManager.js +++ b/lib/manager/modManager.js @@ -13,8 +13,15 @@ const config = require("./../../config"); const instances = fileOps.getDirectoriesSync("./instances/"); /** -Lists mods for an instance +Lists mods for an instance as a table. Warning, handles printing internally. @param {string} instance - Name of the instance or "shared" +@async +@example +var modManager = require("modManager"); +modManager.listMods("testInstance"); +// console.logs table of mods installed on instance +modManager.listMods("shared"); +// console.logs mods located in /sharedMods as a nice table */ module.exports.listMods = function(instance){ if(instance && instances.includes(instance)){ @@ -67,6 +74,12 @@ module.exports.listMods = function(instance){ console.log(JSON.parse(res.getBody())) */ } +/** +Searches mods.factorio.com for mods matching a search term and prints +the results to console as a neat looking table + +@param {string} searchTerm What to search for +*/ module.exports.findMods = function(searchTerm){ factorioAPI.init(false); console.log("Authenticating to factorio.com...") @@ -94,6 +107,12 @@ module.exports.findMods = function(searchTerm){ } // 'https://api.github.com/repos/Danielv123/factorioClusterioMod/releases' +/** +Download mod from github repo by looking for the first binary download in +the latest release, saving it to /sharedMods + +@param {string} url a github repo URL, for example https://api.github.com/repos/Danielv123/factorioClusterioMod/releases. Must link to /releases +*/ module.exports.downloadFromGitURL = function(url){ console.log("Downloading mod from "+url); // get JSON data about releases diff --git a/master.js b/master.js index bed44530..b278eed0 100644 --- a/master.js +++ b/master.js @@ -5,6 +5,9 @@ combinator signals. @module clusterioMaster @author Danielv123 + +@example +node master.js */ // Set the process title, shows up as the title of the CMD window on windows @@ -360,11 +363,13 @@ app.post("/api/readSignal", function(req,res) { /** GET endpoint to read the masters current inventory of items. +@memberof clusterioMaster +@instance @alias api/inventory @returns {object[]} JSON [{name:"iron-plate", count:100},{name:"copper-plate",count:5}] */ // endpoint for getting an inventory of what we got -app.get("/api/inventory", function(req, res) { +var apiinventory = app.get("/api/inventory", function(req, res) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); // Check it and send it @@ -390,6 +395,8 @@ POST endpoint to log production graph statistics. Should contain a timestamp gathered from Date.now(), a slaveID (also reffered to as "unique") and of course the timeSeries data. +@memberof clusterioMaster +@instance @alias api/logStats @param {object} JSON {timestamp: Date.now(), slaveID: "string", data: {"item": number}} @returns {string} failure @@ -417,6 +424,8 @@ app.post("/api/logStats", function(req,res) { POST endpoint to get timeSeries statistics stored on the master. Can give production graphs and other IO statistics. +@memberof clusterioMaster +@instance @alias api/getStats @param {object} JSON @returns {object} - with statistics @@ -488,6 +497,8 @@ at /nodes. It is like getStats but it does not report items which were not produced at the moment of recording. (This is to save space, the 0-items were making up about 92% of the response body weight.) +@memberof clusterioMaster +@instance @alias api/getTimelineStats @param {object} JSON {slaveID:1941029, fromTime: ???, toTime: ???} @returns {object[]} timeseries where each entry is a set point in time.