const path = require('path'); const fs = require('fs'); const getAppSupportFolder = () => { let folder; if(process.platform == 'darwin') { folder = path.resolve(process.env.HOME, 'Library/Application Support/seedpacket') } else if(process.platform == 'win32') { folder = path.resolve(process.env.APPDATA, 'seedpacket') } else { folder = path.resolve(process.env.HOME, '.local/share/seedpacket') } return folder; }; let myLogInternal = (message) => { console.log(message); }; const myLog = (message) => { myLogInternal(message); }; const startLoggingToFile = (logFileName) => { const logFilePath = path.join(getAppSupportFolder(), logFileName); logStream = fs.createWriteStream(logFilePath, {flags:'a', mode: 0o666}); myLogInternal = (message) => { logStream.write(`\n${new Date().toISOString()} ${message}`); console.log(message); }; }; function BytesPerSecondGuage() { this.totalBytes = 0; this.timeslices = {}; this.getBytesPerSecond = () => { const timeslice = Math.round(new Date().getTime()/100); let lastSecondBytes = 0; Object.keys(this.timeslices).forEach(key => { if(key < timeslice - 10) { delete this.timeslices[key]; } else { lastSecondBytes += this.timeslices[key].reduce((a,b) => a+b, 0); } }); return lastSecondBytes; }; this.recordBytes = (bytes) => { const timeslice = Math.round(new Date().getTime()/100); this.timeslices[timeslice] = this.timeslices[timeslice] || []; this.timeslices[timeslice].push(bytes); this.totalBytes += bytes; }; } module.exports = { getAppSupportFolder, myLog, startLoggingToFile, BytesPerSecondGuage };