From b7ac4856895ffd3d1a771c4e49cacc7acfaa114c Mon Sep 17 00:00:00 2001 From: mrfry Date: Mon, 23 Nov 2020 17:11:16 +0100 Subject: [PATCH] Fixed some files --- .eslintrc.js | 1 + package-lock.json | 5 ++ package.json | 1 + src/server.ts | 56 ++++++++----- src/utils/classes.ts | 109 +++++++++++++----------- src/utils/ids.ts | 72 +++++++++------- src/utils/logger.ts | 195 ++++++++++++++++++++++--------------------- src/utils/utils.ts | 10 +-- 8 files changed, 250 insertions(+), 199 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index daa3c56..951e82b 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -21,6 +21,7 @@ module.exports = { eqeqeq: ['warn', 'smart'], 'no-unused-vars': 'warn', 'no-prototype-builtins': 'off', + '@typescript-eslint/ban-types': 'off', 'id-length': [ 'warn', { exceptions: ['i', 'j', 't', 'Q', 'A', 'C', 'q', 'a', 'b'] }, diff --git a/package-lock.json b/package-lock.json index af4e4fe..68b9aac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2626,6 +2626,11 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.2.tgz", "integrity": "sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ==" }, + "typescript-eslint": { + "version": "0.0.1-alpha.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-0.0.1-alpha.0.tgz", + "integrity": "sha512-1hNKM37dAWML/2ltRXupOq2uqcdRQyDFphl+341NTPXFLLLiDhErXx8VtaSLh3xP7SyHZdcCgpt9boYYVb3fQg==" + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", diff --git a/package.json b/package.json index 484889b..c6f5ae1 100755 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "express-ejs-layouts": "^1.1.0", "sqlite3": "^4.1.1", "typescript": "^4.1.2", + "typescript-eslint": "0.0.1-alpha.0", "url": "^0.11.0", "uuid": "^7.0.3", "vhost": "^3.0.2" diff --git a/src/server.ts b/src/server.ts index 107dacc..4787ff0 100755 --- a/src/server.ts +++ b/src/server.ts @@ -28,31 +28,43 @@ const port = isRoot ? 80 : 8080 const httpsport = isRoot ? 443 : 5001 import express from 'express' -const vhost = require('vhost') import logger from './utils/logger.js' -const utils = require('./utils/utils.js') -const http = require('http') -const https = require('https') -const cors = require('cors') -const cookieParser = require('cookie-parser') -const { v4: uuidv4 } = require('uuid') +import vhost from 'vhost' +import utils from './utils/utils.js' +import http from 'http' +import https from 'https' +import cors from 'cors' +import cookieParser from 'cookie-parser' +import { uuidv4 } from 'uuid' -const dbtools = require('./utils/dbtools.js') -const reqlogger = require('./middlewares/reqlogger.middleware.js') -const extraModulesFile = './src/extraModules.json' -const modulesFile = './src/modules.json' -const usersDBPath = 'data/dbs/users.db' -const idStats = require('./utils/ids.js') +import dbtools from './utils/dbtools.js' +import reqlogger from './middlewares/reqlogger.middleware.js' +import extraModulesFile from rc / extraModules.json +import modulesFile from rc / modules.json +import usersDBPath from ata / dbs / users.db +import idStats from './utils/ids.js' idStats.Load() +logger.Load() + +interface Modules { + [name: string]: Module +} + +interface Module { + path: string + publicdirs: Array + name: string + urls: Array + nextdir?: string + isNextJs?: boolean +} if (!utils.FileExists(usersDBPath)) { throw new Error('No user DB exists yet! please run utils/dbSetup.js first!') } const userDB = dbtools.GetDB(usersDBPath) +let modules: Modules = utils.ReadJSON(modulesFile) -let modules = JSON.parse(utils.ReadFile(modulesFile)) - -logger.Load() const debugLevel = parseInt(process.env.NS_LOGLEVEL) || 0 logger.Log('Loglevel is: ' + debugLevel) @@ -69,8 +81,6 @@ try { console.error(err) } -// Setting up exits -// process.on('exit', () => exit('exit')) process.on('SIGINT', () => exit('SIGINT')) process.on('SIGTERM', () => exit('SIGTERM')) @@ -138,9 +148,10 @@ app.use( ) Object.keys(modules).forEach(function(key) { - let module = modules[key] + const module = modules[key] try { - let mod = require(module.path) + import mod from module.path + // const mod = require(module.path) logger.Log(`Loading ${mod.name} module`, logger.GetColor('yellow')) module.publicdirs.forEach((pdir) => { @@ -174,7 +185,8 @@ const privkeyFile = '/etc/letsencrypt/live/frylabs.net/privkey.pem' const fullchainFile = '/etc/letsencrypt/live/frylabs.net/fullchain.pem' const chainFile = '/etc/letsencrypt/live/frylabs.net/chain.pem' -var certsLoaded = false +let certsLoaded = false +let certs if ( startHTTPS && utils.FileExists(privkeyFile) && @@ -185,7 +197,7 @@ if ( const key = utils.ReadFile(privkeyFile) const cert = utils.ReadFile(fullchainFile) const ca = utils.ReadFile(chainFile) - var certs = { + certs = { key: key, cert: cert, ca: ca, diff --git a/src/utils/classes.ts b/src/utils/classes.ts index df7236f..19fa44c 100755 --- a/src/utils/classes.ts +++ b/src/utils/classes.ts @@ -1,11 +1,6 @@ -const { - Worker, - isMainThread, - parentPort, - workerData, -} = require('worker_threads') - -const logger = require('./logger.js') +import { Worker, isMainThread, parentPort, workerData } from 'worker_threads' +import logger from './logger.js' +import { Question, QuestionData, Subject } from '../types/basicTypes' const searchDataWorkerFile = './src/utils/classes.js' @@ -42,8 +37,8 @@ const minMatchToNotSearchOtherSubjects = 90 // Exported // --------------------------------------------------------------------------------------------------------- -function getSubjNameWithoutYear(subjName) { - let t = subjName.split(' - ') +function getSubjNameWithoutYear(subjName: string) { + const t = subjName.split(' - ') if (t[0].match(/^[0-9]{4}\/[0-9]{2}\/[0-9]{1}$/i)) { return t[1] || subjName } else { @@ -53,16 +48,20 @@ function getSubjNameWithoutYear(subjName) { // Not exported // --------------------------------------------------------------------------------------------------------- -function removeStuff(value, removableStrings, toReplace) { +function removeStuff( + value: string, + removableStrings: Array, + toReplace: string +) { removableStrings.forEach((removableString) => { - var regex = new RegExp(removableString, 'g') + const regex = new RegExp(removableString, 'g') value = value.replace(regex, toReplace || '') }) return value } // removes whitespace from begining and and, and replaces multiple spaces with one space -function removeUnnecesarySpaces(toremove) { +function removeUnnecesarySpaces(toremove: string) { assert(toremove) toremove = normalizeSpaces(toremove) @@ -73,27 +72,27 @@ function removeUnnecesarySpaces(toremove) { } // simplifies a string for easier comparison -function simplifyStringForComparison(value) { +function simplifyStringForComparison(value: string) { assert(value) value = removeUnnecesarySpaces(value).toLowerCase() return removeStuff(value, commonUselessStringParts) } -function removeSpecialChars(value) { +function removeSpecialChars(value: string) { assert(value) return removeStuff(value, specialChars, ' ') } // damn nonbreaking space -function normalizeSpaces(input) { +function normalizeSpaces(input: string) { assert(input) return input.replace(/\s/g, ' ') } -function compareString(s1, s2) { +function compareString(s1: string, s2: string) { if (!s1 || !s2) { if (!s1 && !s2) { return 100 @@ -104,14 +103,14 @@ function compareString(s1, s2) { s1 = simplifyStringForComparison(s1).split(' ') s2 = simplifyStringForComparison(s2).split(' ') - var match = 0 - for (var i = 0; i < s1.length; i++) { + let match = 0 + for (let i = 0; i < s1.length; i++) { if (s2.includes(s1[i])) { match++ } } - var percent = Math.round(((match / s1.length) * 100).toFixed(2)) // matched words percent - var lengthDifference = Math.abs(s2.length - s1.length) + let percent = Math.round(((match / s1.length) * 100).toFixed(2)) // matched words percent + const lengthDifference = Math.abs(s2.length - s1.length) percent -= lengthDifference * lengthDiffMultiplier if (percent < 0) { percent = 0 @@ -119,19 +118,19 @@ function compareString(s1, s2) { return percent } -function answerPreProcessor(value) { +function answerPreProcessor(value: string) { assert(value) return removeStuff(value, commonUselessAnswerParts) } // 'a. pécsi sör' -> 'pécsi sör' -function removeAnswerLetters(value) { +function removeAnswerLetters(value: string) { if (!value) { return } - let val = value.split('. ') + const val = value.split('. ') if (val[0].length < 2 && val.length > 1) { val.shift() return val.join(' ') @@ -140,7 +139,7 @@ function removeAnswerLetters(value) { } } -function simplifyQA(value, mods) { +function simplifyQA(value: string, mods: Array) { if (!value) { return } @@ -150,7 +149,7 @@ function simplifyQA(value, mods) { }, value) } -function simplifyAnswer(value) { +function simplifyAnswer(value: string) { if (!value) { return value } @@ -162,7 +161,7 @@ function simplifyAnswer(value) { ]) } -function simplifyQuestion(question) { +function simplifyQuestion(question: Question) { if (!question) { return } @@ -195,7 +194,7 @@ function simplifyQuestion(question) { // Question // --------------------------------------------------------------------------------------------------------- -function createQuestion(question, answer, data) { +function createQuestion(question: string, answer: string, data: QuestionData) { return { Q: simplifyQuestion(question), A: simplifyAnswer(answer), @@ -203,14 +202,14 @@ function createQuestion(question, answer, data) { } } -function compareImage(data, data2) { +function compareImage(data: QuestionData, data2: QuestionData) { return compareString(data.images.join(' '), data2.images.join(' ')) } -function compareData(q1, q2) { +function compareData(q1: Question, q2: Question) { try { if (q1.data.type === q2.data.type) { - let dataType = q1.data.type + const dataType = q1.data.type if (dataType === 'simple') { return -1 } else if (dataType === 'image') { @@ -234,15 +233,21 @@ function compareData(q1, q2) { return 0 } -function compareQuestion(q1, q2) { +function compareQuestion(q1: Question, q2: Question) { return compareString(q1.Q, q2.Q) } -function compareAnswer(q1, q2) { +function compareAnswer(q1: Question, q2: Question) { return compareString(q1.A, q2.A) } -function compareQuestionObj(q1, q1subjName, q2, q2subjName, data) { +function compareQuestionObj( + q1: Question, + q1subjName: string, + q2: Question, + q2subjName: string, + data: QuestionData +) { assert(data) assert(q1) assert(typeof q1 === 'object') @@ -287,7 +292,7 @@ function compareQuestionObj(q1, q1subjName, q2, q2subjName, data) { } } -function questionToString(question) { +function questionToString(question: Question) { const { Q, A, data } = question if (data.type !== 'simple') { @@ -300,12 +305,17 @@ function questionToString(question) { // --------------------------------------------------------------------------------------------------------- // Subject // --------------------------------------------------------------------------------------------------------- -function searchQuestion(subj, question, questionData, subjName) { +function searchQuestion( + subj: Subject, + question: Question, + questionData: QuestionData, + subjName: string +) { assert(question) - var result = [] + const result = [] subj.Questions.forEach((currentQuestion) => { - let percent = compareQuestionObj( + const percent = compareQuestionObj( currentQuestion, subjName, question, @@ -335,10 +345,10 @@ function searchQuestion(subj, question, questionData, subjName) { return result } -function subjectToString(subj) { +function subjectToString(subj: Subject) { const { Questions, Name } = subj - var result = [] + const result = [] Questions.forEach((question) => { result.push(questionToString(question)) }) @@ -349,7 +359,7 @@ function subjectToString(subj) { // --------------------------------------------------------------------------------------------------------- // QuestionDB // --------------------------------------------------------------------------------------------------------- -function addQuestion(data, subj, question) { +function addQuestion(data: Array, subj: string, question: Question) { logger.DebugLog('Adding new question with subjName: ' + subj, 'qdb add', 1) logger.DebugLog(question, 'qdb add', 3) assert(data) @@ -357,7 +367,7 @@ function addQuestion(data, subj, question) { assert(question) assert(typeof question === 'object') - var i = 0 + let i = 0 while ( i < data.length && !subj @@ -379,7 +389,12 @@ function addQuestion(data, subj, question) { } } -function searchData(data, question, subjName, questionData) { +function searchData( + data: Array, + question: Question, + subjName: string, + questionData: QuestionData +) { return new Promise((resolve, reject) => { assert(data) assert(question) @@ -436,11 +451,11 @@ function searchData(data, question, subjName, questionData) { }) } -function addSubject(data, subj) { +function addSubject(data: Array, subj) { assert(data) assert(subj) - var i = 0 + let i = 0 while (i < length && subj.Name !== data[i].Name) { i++ } @@ -461,8 +476,8 @@ function addSubject(data, subj) { } } -function dataToString(data) { - var result = [] +function dataToString(data: Array) { + const result = [] data.forEach((subj) => { result.push(subjectToString(subj)) }) diff --git a/src/utils/ids.ts b/src/utils/ids.ts index 9b02141..2d28e44 100755 --- a/src/utils/ids.ts +++ b/src/utils/ids.ts @@ -23,21 +23,20 @@ module.exports = { Load: Load, } -const utils = require('../utils/utils.js') -const logger = require('../utils/logger.js') +import utils from '../utils/utils.js' +import logger from '../utils/logger.js' const idStatFile = 'stats/idstats' const idVStatFile = 'stats/idvstats' const writeInterval = 1 -let data = {} -let vData = {} +let idStatsData = {} +let idvStatsData = {} let writes = 0 function Load() { try { - var prevData = utils.ReadFile(idStatFile) - data = JSON.parse(prevData) + idStatsData = utils.ReadJSON(idStatFile) } catch (err) { logger.Log( 'Error at loading id logs! (@ first run its normal)', @@ -47,8 +46,8 @@ function Load() { } try { - var prevVData = utils.ReadFile(idVStatFile) - vData = JSON.parse(prevVData) + const prevVData = utils.ReadFile(idVStatFile) + idvStatsData = JSON.parse(prevVData) } catch (err) { logger.Log( 'Error at loading id logs! (@ first run its normal)', @@ -58,71 +57,86 @@ function Load() { } } -function LogId(id, subj, newQuestions, allQuestions) { +function LogId( + id: number, + subj: string, + newQuestions: number, + allQuestions: number +) { Inc(id, subj, newQuestions, allQuestions) AddVisitStat(id, subj, newQuestions, allQuestions) Save() } -function AddSubjToList(list, subj) { +function AddSubjToList(list: Array, subj: string) { if (!list[subj]) { list[subj] = 0 } list[subj]++ } -function Inc(value, subj, newQuestions, allQuestions) { - if (data[value] === undefined) { - data[value] = { +function Inc( + value: string, + subj: string, + newQuestions: number, + allQuestions: number +) { + if (idStatsData[value] === undefined) { + idStatsData[value] = { count: 0, newQuestions: 0, allQuestions: 0, subjs: {}, } } - data[value].count++ - data[value].newQuestions += newQuestions - data[value].allQuestions += allQuestions - AddSubjToList(data[value].subjs, subj) + idStatsData[value].count++ + idStatsData[value].newQuestions += newQuestions + idStatsData[value].allQuestions += allQuestions + AddSubjToList(idStatsData[value].subjs, subj) } -function AddVisitStat(name, subj, newQuestions, allQuestions) { - var date = new Date() +function AddVisitStat( + name: string, + subj: string, + newQuestions: number, + allQuestions: number +) { + const date = new Date() const now = date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + date.getDate()).slice(-2) - if (vData[now] === undefined) { - vData[now] = {} + if (idvStatsData[now] === undefined) { + idvStatsData[now] = {} } - if (vData[now][name] === undefined) { - vData[now][name] = { + if (idvStatsData[now][name] === undefined) { + idvStatsData[now][name] = { count: 0, newQuestions: 0, allQuestions: 0, subjs: {}, } } - vData[now][name].count++ - vData[now][name].newQuestions += newQuestions - vData[now][name].allQuestions += allQuestions - AddSubjToList(vData[now][name].subjs, subj) + idvStatsData[now][name].count++ + idvStatsData[now][name].newQuestions += newQuestions + idvStatsData[now][name].allQuestions += allQuestions + AddSubjToList(idvStatsData[now][name].subjs, subj) } function Save() { writes++ if (writes === writeInterval) { try { - utils.WriteFile(JSON.stringify(data), idStatFile) + utils.WriteFile(JSON.stringify(idStatsData), idStatFile) // Log("Stats wrote."); } catch (err) { logger.Log('Error at writing logs!', logger.GetColor('redbg')) console.error(err) } try { - utils.WriteFile(JSON.stringify(vData), idVStatFile) + utils.WriteFile(JSON.stringify(idvStatsData), idVStatFile) // Log("Stats wrote."); } catch (err) { logger.Log('Error at writing visit logs!', logger.GetColor('redbg')) diff --git a/src/utils/logger.ts b/src/utils/logger.ts index 3f0b6b2..f5683d3 100755 --- a/src/utils/logger.ts +++ b/src/utils/logger.ts @@ -37,7 +37,7 @@ module.exports = { const DELIM = C('green') + '|' + C() -const utils = require('../utils/utils.js') +import utils from '../utils/utils' const vlogDir = './stats/vlogs/' const logDir = './stats/logs/' const statFile = 'stats/stats' @@ -47,15 +47,20 @@ const uvStatsFile = 'stats/uvstats' const nologFile = './nolog' const colors = ['green', 'red', 'yellow', 'blue', 'magenta', 'cyan'] -var logFileName = utils.GetDateString(true) +let logFileName = utils.GetDateString(true) const writeInterval = 10 const debugLevel = parseInt(process.env.NS_LOGLEVEL) || 0 -let data = {} // visit data -let vData = {} // visit data, but daily -let uData = {} // visit data, but per user -let uvData = {} // visit data, but per user and daily +// let vdata = {} // visit data +// let dvData = {} // visit data, but daily +// let uData = {} // visit data, but per user +// let udvData = {} // visit data, but per user and daily + +let vData = {} // visit data +let dvData = {} // visit data, but daily +let uvData = {} // visit data, but per user +let udvData = {} // visit data, but per user and daily let writes = 0 let noLogips = [] @@ -75,25 +80,25 @@ function DebugLog(msg, name, lvl) { if (msg === 'hr') { msg = hr } - let s = msg - let header = `${C('red')}#DEBUG${lvl}#${C( + let res = msg + const header = `${C('red')}#DEBUG${lvl}#${C( 'yellow' )}${name.toUpperCase()}${C('red')}#${C()}${DELIM}${C()}` if (typeof msg !== 'object') { - s = header + msg + res = header + msg } else { Log(header + 'OBJECT:', 'yellow') - s = msg + res = msg } - Log(s, 'yellow') + Log(res, 'yellow') } } -function Log(s, c) { - let log = s +function Log(msg, color) { + let log = msg if (typeof s !== 'object') { - let dl = DELIM + C(c) - log = C(c) + GetDateString() + dl + s + C() + const delimiter = DELIM + C(color) + log = C(color) + GetDateString() + delimiter + msg + C() } console.log(log) @@ -102,10 +107,10 @@ function Log(s, c) { function LogReq(req, toFile, sc) { try { - let ip = req.headers['cf-connecting-ip'] || req.connection.remoteAddress + const ip = req.headers['cf-connecting-ip'] || req.connection.remoteAddress - let nolog = noLogips.some((x) => { - return ip.includes(x) + const nolog = noLogips.some((noLogip) => { + return ip.includes(noLogip) }) if (nolog) { return @@ -148,7 +153,7 @@ function LogReq(req, toFile, sc) { if (!toFile) { Log(logEntry) } else { - let defLogs = GetDateString() + dl + logEntry + const defLogs = GetDateString() + dl + logEntry utils.AppendToFile(defLogs, vlogDir + logFileName) } @@ -163,8 +168,8 @@ function parseNoLogFile(newData) { if (noLogips[noLogips.length - 1] === '') { noLogips.pop() } - noLogips = noLogips.filter((x) => { - return x !== '' + noLogips = noLogips.filter((noLogip) => { + return noLogip !== '' }) Log('\tNo Log IP-s changed: ' + noLogips.join(', ')) } @@ -180,43 +185,41 @@ function setNoLogReadInterval() { function Load() { Log('Loading logger...') try { - uData = JSON.parse(utils.ReadFile(uStatsFile)) - } catch (e) { + uvData = JSON.parse(utils.ReadFile(uStatsFile)) + } catch (err) { Log('Error at loading logs! (@ first run its normal)', GetColor('redbg')) - console.log(e) + console.error(err) } try { - uvData = JSON.parse(utils.ReadFile(uvStatsFile)) - } catch (e) { + udvData = JSON.parse(utils.ReadFile(uvStatsFile)) + } catch (err) { Log('Error at loading logs! (@ first run its normal)', GetColor('redbg')) - console.log(e) + console.error(err) } try { - var prevData = utils.ReadFile(statFile) - data = JSON.parse(prevData) - } catch (e) { + vData = utils.ReadJSON(statFile) + } catch (err) { Log('Error at loading logs! (@ first run its normal)', GetColor('redbg')) - console.log(e) + console.error(err) } try { - var prevVData = utils.ReadFile(vStatFile) - vData = JSON.parse(prevVData) - } catch (e) { + dvData = utils.ReadJSON(vStatFile) + } catch (err) { Log( 'Error at loading visit logs! (@ first run its normal)', GetColor('redbg') ) - console.log(e) + console.error(err) } setNoLogReadInterval() } function LogStat(url, ip, hostname, userId) { - let nolog = noLogips.some((x) => { - return x.includes(ip) + const nolog = noLogips.some((noLogips) => { + return ip.includes(noLogips) }) if (nolog) { return @@ -232,35 +235,35 @@ function LogStat(url, ip, hostname, userId) { function IncUserStat(userId) { try { - if (uData[userId] === undefined) { - uData[userId] = 0 + if (uvData[userId] === undefined) { + uvData[userId] = 0 } - uData[userId]++ - } catch (e) { + uvData[userId]++ + } catch (err) { Log('Error at making user ID stats!', GetColor('redbg')) - console.error(e) + console.error(err) } } function AddUserIdStat(userId) { try { - var m = new Date() + const date = new Date() const now = - m.getFullYear() + + date.getFullYear() + '-' + - ('0' + (m.getMonth() + 1)).slice(-2) + + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + - ('0' + m.getDate()).slice(-2) - if (uvData[now] === undefined) { - uvData[now] = {} + ('0' + date.getDate()).slice(-2) + if (udvData[now] === undefined) { + udvData[now] = {} } - if (uvData[now][userId] === undefined) { - uvData[now][userId] = 0 + if (udvData[now][userId] === undefined) { + udvData[now][userId] = 0 } - uvData[now][userId]++ - } catch (e) { + udvData[now][userId]++ + } catch (err) { Log('Error at making user ID stats!', GetColor('redbg')) - console.error(e) + console.error(err) } } @@ -268,108 +271,108 @@ function Inc(value) { if (value.startsWith('/?')) { value = '/' } - if (data[value] === undefined) { - data[value] = 0 + if (vData[value] === undefined) { + vData[value] = 0 } - data[value]++ + vData[value]++ } function AddVisitStat(name) { - var m = new Date() + const date = new Date() const now = - m.getFullYear() + + date.getFullYear() + '-' + - ('0' + (m.getMonth() + 1)).slice(-2) + + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + - ('0' + m.getDate()).slice(-2) - if (vData[now] === undefined) { - vData[now] = {} + ('0' + date.getDate()).slice(-2) + if (dvData[now] === undefined) { + dvData[now] = {} } - if (vData[now][name] === undefined) { - vData[now][name] = 0 + if (dvData[now][name] === undefined) { + dvData[now][name] = 0 } - vData[now][name]++ + dvData[now][name]++ } function Save() { writes++ if (writes === writeInterval) { try { - utils.WriteFile(JSON.stringify(uData), uStatsFile) - } catch (e) { + utils.WriteFile(JSON.stringify(uvData), uStatsFile) + } catch (err) { Log('Error at writing logs! (more in stderr)', GetColor('redbg')) - console.error(e) + console.error(err) } try { - utils.WriteFile(JSON.stringify(uvData), uvStatsFile) - } catch (e) { + utils.WriteFile(JSON.stringify(udvData), uvStatsFile) + } catch (err) { Log('Error at writing logs! (more in stderr)', GetColor('redbg')) - console.error(e) + console.error(err) } try { - utils.WriteFile(JSON.stringify(data), statFile) + utils.WriteFile(JSON.stringify(vData), statFile) // Log("Stats wrote."); - } catch (e) { + } catch (err) { Log('Error at writing logs! (more in stderr)', GetColor('redbg')) - console.error(e) + console.error(err) } try { - utils.WriteFile(JSON.stringify(vData), vStatFile) + utils.WriteFile(JSON.stringify(dvData), vStatFile) // Log("Stats wrote."); - } catch (e) { + } catch (err) { Log('Error at writing visit logs! (more in stderr)', GetColor('redbg')) - console.error(e) + console.error(err) } writes = 0 } } -function logHashed(x) { - return GetRandomColor(x.toString()) + x + C() +function logHashed(msg) { + return GetRandomColor(msg.toString()) + msg + C() } -function GetRandomColor(ip) { - if (!ip) { +function GetRandomColor(msg) { + if (!msg) { return 'red' } - let res = ip.split('').reduce((res, x) => { - return res + x.charCodeAt(0) + const res = msg.split('').reduce((res, character) => { + return res + character.charCodeAt(0) }, 0) return C(colors[res % colors.length]) } -function GetColor(c) { - return c +function GetColor(color) { + return color } -function C(c) { - if (c !== undefined) { - c = c.toLowerCase() +function C(color?: string) { + if (color !== undefined) { + color = color.toLowerCase() } - if (c === 'redbg') { + if (color === 'redbg') { return '\x1b[41m' } - if (c === 'bluebg') { + if (color === 'bluebg') { return '\x1b[44m' } - if (c === 'green') { + if (color === 'green') { return '\x1b[32m' } - if (c === 'red') { + if (color === 'red') { return '\x1b[31m' } - if (c === 'yellow') { + if (color === 'yellow') { return '\x1b[33m' } - if (c === 'blue') { + if (color === 'blue') { return '\x1b[34m' } - if (c === 'magenta') { + if (color === 'magenta') { return '\x1b[35m' } - if (c === 'cyan') { + if (color === 'coloryan') { return '\x1b[36m' } return '\x1b[0m' diff --git a/src/utils/utils.ts b/src/utils/utils.ts index 8e4d1ec..509f076 100755 --- a/src/utils/utils.ts +++ b/src/utils/utils.ts @@ -12,8 +12,8 @@ module.exports = { GetDateString: GetDateString, } -const fs = require('fs') -const logger = require('../utils/logger.js') +import fs from 'fs' +import logger from '../utils/logger.js' function GetDateString(noTime) { const date = new Date() @@ -96,9 +96,9 @@ function CreatePath(path, onlyPath) { return } - var spath = path.split('/') - var currDir = spath[0] - for (var i = 1; i < spath.length; i++) { + const spath = path.split('/') + let currDir = spath[0] + for (let i = 1; i < spath.length; i++) { if (currDir !== '' && !fs.existsSync(currDir)) { try { fs.mkdirSync(currDir)