Initial Commit
This commit is contained in:
parent
fe687daebe
commit
c795ccb942
6 changed files with 2968 additions and 0 deletions
134
.gitignore
vendored
Normal file
134
.gitignore
vendored
Normal file
|
@ -0,0 +1,134 @@
|
||||||
|
# Build folder
|
||||||
|
lib/
|
||||||
|
logs/
|
||||||
|
|
||||||
|
# Logs
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
lerna-debug.log*
|
||||||
|
.pnpm-debug.log*
|
||||||
|
|
||||||
|
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||||
|
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||||
|
|
||||||
|
# Runtime data
|
||||||
|
pids
|
||||||
|
*.pid
|
||||||
|
*.seed
|
||||||
|
*.pid.lock
|
||||||
|
|
||||||
|
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||||
|
lib-cov
|
||||||
|
|
||||||
|
# Coverage directory used by tools like istanbul
|
||||||
|
coverage
|
||||||
|
*.lcov
|
||||||
|
|
||||||
|
# nyc test coverage
|
||||||
|
.nyc_output
|
||||||
|
|
||||||
|
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||||
|
.grunt
|
||||||
|
|
||||||
|
# Bower dependency directory (https://bower.io/)
|
||||||
|
bower_components
|
||||||
|
|
||||||
|
# node-waf configuration
|
||||||
|
.lock-wscript
|
||||||
|
|
||||||
|
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||||
|
build/Release
|
||||||
|
|
||||||
|
# Dependency directories
|
||||||
|
node_modules/
|
||||||
|
jspm_packages/
|
||||||
|
|
||||||
|
# Snowpack dependency directory (https://snowpack.dev/)
|
||||||
|
web_modules/
|
||||||
|
|
||||||
|
# TypeScript cache
|
||||||
|
*.tsbuildinfo
|
||||||
|
|
||||||
|
# Optional npm cache directory
|
||||||
|
.npm
|
||||||
|
|
||||||
|
# Optional eslint cache
|
||||||
|
.eslintcache
|
||||||
|
|
||||||
|
# Optional stylelint cache
|
||||||
|
.stylelintcache
|
||||||
|
|
||||||
|
# Microbundle cache
|
||||||
|
.rpt2_cache/
|
||||||
|
.rts2_cache_cjs/
|
||||||
|
.rts2_cache_es/
|
||||||
|
.rts2_cache_umd/
|
||||||
|
|
||||||
|
# Optional REPL history
|
||||||
|
.node_repl_history
|
||||||
|
|
||||||
|
# Output of 'npm pack'
|
||||||
|
*.tgz
|
||||||
|
|
||||||
|
# Yarn Integrity file
|
||||||
|
.yarn-integrity
|
||||||
|
|
||||||
|
# dotenv environment variable files
|
||||||
|
.env
|
||||||
|
.env.development.local
|
||||||
|
.env.test.local
|
||||||
|
.env.production.local
|
||||||
|
.env.local
|
||||||
|
|
||||||
|
# parcel-bundler cache (https://parceljs.org/)
|
||||||
|
.cache
|
||||||
|
.parcel-cache
|
||||||
|
|
||||||
|
# Next.js build output
|
||||||
|
.next
|
||||||
|
out
|
||||||
|
|
||||||
|
# Nuxt.js build / generate output
|
||||||
|
.nuxt
|
||||||
|
dist
|
||||||
|
|
||||||
|
# Gatsby files
|
||||||
|
.cache/
|
||||||
|
# Comment in the public line in if your project uses Gatsby and not Next.js
|
||||||
|
# https://nextjs.org/blog/next-9-1#public-directory-support
|
||||||
|
# public
|
||||||
|
|
||||||
|
# vuepress build output
|
||||||
|
.vuepress/dist
|
||||||
|
|
||||||
|
# vuepress v2.x temp and cache directory
|
||||||
|
.temp
|
||||||
|
.cache
|
||||||
|
|
||||||
|
# Docusaurus cache and generated files
|
||||||
|
.docusaurus
|
||||||
|
|
||||||
|
# Serverless directories
|
||||||
|
.serverless/
|
||||||
|
|
||||||
|
# FuseBox cache
|
||||||
|
.fusebox/
|
||||||
|
|
||||||
|
# DynamoDB Local files
|
||||||
|
.dynamodb/
|
||||||
|
|
||||||
|
# TernJS port file
|
||||||
|
.tern-port
|
||||||
|
|
||||||
|
# Stores VSCode versions used for testing VSCode extensions
|
||||||
|
.vscode-test
|
||||||
|
|
||||||
|
# yarn v2
|
||||||
|
.yarn/cache
|
||||||
|
.yarn/unplugged
|
||||||
|
.yarn/build-state.yml
|
||||||
|
.yarn/install-state.gz
|
||||||
|
.pnp.*
|
135
.npmignore
Normal file
135
.npmignore
Normal file
|
@ -0,0 +1,135 @@
|
||||||
|
.github/*
|
||||||
|
logs/
|
||||||
|
index.ts
|
||||||
|
tsconfig.json
|
||||||
|
|
||||||
|
# Logs
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
lerna-debug.log*
|
||||||
|
.pnpm-debug.log*
|
||||||
|
|
||||||
|
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||||
|
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||||
|
|
||||||
|
# Runtime data
|
||||||
|
pids
|
||||||
|
*.pid
|
||||||
|
*.seed
|
||||||
|
*.pid.lock
|
||||||
|
|
||||||
|
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||||
|
lib-cov
|
||||||
|
|
||||||
|
# Coverage directory used by tools like istanbul
|
||||||
|
coverage
|
||||||
|
*.lcov
|
||||||
|
|
||||||
|
# nyc test coverage
|
||||||
|
.nyc_output
|
||||||
|
|
||||||
|
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||||
|
.grunt
|
||||||
|
|
||||||
|
# Bower dependency directory (https://bower.io/)
|
||||||
|
bower_components
|
||||||
|
|
||||||
|
# node-waf configuration
|
||||||
|
.lock-wscript
|
||||||
|
|
||||||
|
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||||
|
build/Release
|
||||||
|
|
||||||
|
# Dependency directories
|
||||||
|
node_modules/
|
||||||
|
jspm_packages/
|
||||||
|
|
||||||
|
# Snowpack dependency directory (https://snowpack.dev/)
|
||||||
|
web_modules/
|
||||||
|
|
||||||
|
# TypeScript cache
|
||||||
|
*.tsbuildinfo
|
||||||
|
|
||||||
|
# Optional npm cache directory
|
||||||
|
.npm
|
||||||
|
|
||||||
|
# Optional eslint cache
|
||||||
|
.eslintcache
|
||||||
|
|
||||||
|
# Optional stylelint cache
|
||||||
|
.stylelintcache
|
||||||
|
|
||||||
|
# Microbundle cache
|
||||||
|
.rpt2_cache/
|
||||||
|
.rts2_cache_cjs/
|
||||||
|
.rts2_cache_es/
|
||||||
|
.rts2_cache_umd/
|
||||||
|
|
||||||
|
# Optional REPL history
|
||||||
|
.node_repl_history
|
||||||
|
|
||||||
|
# Output of 'npm pack'
|
||||||
|
*.tgz
|
||||||
|
|
||||||
|
# Yarn Integrity file
|
||||||
|
.yarn-integrity
|
||||||
|
|
||||||
|
# dotenv environment variable files
|
||||||
|
.env
|
||||||
|
.env.development.local
|
||||||
|
.env.test.local
|
||||||
|
.env.production.local
|
||||||
|
.env.local
|
||||||
|
|
||||||
|
# parcel-bundler cache (https://parceljs.org/)
|
||||||
|
.cache
|
||||||
|
.parcel-cache
|
||||||
|
|
||||||
|
# Next.js build output
|
||||||
|
.next
|
||||||
|
out
|
||||||
|
|
||||||
|
# Nuxt.js build / generate output
|
||||||
|
.nuxt
|
||||||
|
dist
|
||||||
|
|
||||||
|
# Gatsby files
|
||||||
|
.cache/
|
||||||
|
# Comment in the public line in if your project uses Gatsby and not Next.js
|
||||||
|
# https://nextjs.org/blog/next-9-1#public-directory-support
|
||||||
|
# public
|
||||||
|
|
||||||
|
# vuepress build output
|
||||||
|
.vuepress/dist
|
||||||
|
|
||||||
|
# vuepress v2.x temp and cache directory
|
||||||
|
.temp
|
||||||
|
.cache
|
||||||
|
|
||||||
|
# Docusaurus cache and generated files
|
||||||
|
.docusaurus
|
||||||
|
|
||||||
|
# Serverless directories
|
||||||
|
.serverless/
|
||||||
|
|
||||||
|
# FuseBox cache
|
||||||
|
.fusebox/
|
||||||
|
|
||||||
|
# DynamoDB Local files
|
||||||
|
.dynamodb/
|
||||||
|
|
||||||
|
# TernJS port file
|
||||||
|
.tern-port
|
||||||
|
|
||||||
|
# Stores VSCode versions used for testing VSCode extensions
|
||||||
|
.vscode-test
|
||||||
|
|
||||||
|
# yarn v2
|
||||||
|
.yarn/cache
|
||||||
|
.yarn/unplugged
|
||||||
|
.yarn/build-state.yml
|
||||||
|
.yarn/install-state.gz
|
||||||
|
.pnp.*
|
119
index.ts
Normal file
119
index.ts
Normal file
|
@ -0,0 +1,119 @@
|
||||||
|
import * as dyetty from "dyetty";
|
||||||
|
import { createWriteStream, mkdirSync, existsSync, renameSync } from "fs";
|
||||||
|
|
||||||
|
console.clear();
|
||||||
|
|
||||||
|
enum LogType {
|
||||||
|
INFO,
|
||||||
|
WARN,
|
||||||
|
ERROR
|
||||||
|
}
|
||||||
|
|
||||||
|
enum LogTag {
|
||||||
|
INFO,
|
||||||
|
WARN,
|
||||||
|
ERROR
|
||||||
|
}
|
||||||
|
|
||||||
|
const LogTags = [
|
||||||
|
dyetty.bgGreen(dyetty.black(" INFO ")),
|
||||||
|
dyetty.bgYellow(dyetty.black(" WARN ")),
|
||||||
|
dyetty.bgRed(" ERRR ")
|
||||||
|
] as const;
|
||||||
|
|
||||||
|
const TagsForFile = [
|
||||||
|
"[INFO]",
|
||||||
|
"[WARN]",
|
||||||
|
"[ERROR]"
|
||||||
|
] as const;
|
||||||
|
|
||||||
|
function zeroPad(i:number) : string {
|
||||||
|
if (i <= 9) return `0${i}`;
|
||||||
|
else return i.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
function getTime() : string {
|
||||||
|
const time = new Date();
|
||||||
|
return `[${zeroPad(time.getHours())}:${zeroPad(time.getMinutes())}:${zeroPad(time.getSeconds())}]`;
|
||||||
|
}
|
||||||
|
|
||||||
|
let queuedForLog = "";
|
||||||
|
|
||||||
|
function log(tag:LogTag, log:string, logType:LogType) : void {
|
||||||
|
const stringTime = getTime(),
|
||||||
|
fileTag = TagsForFile[tag],
|
||||||
|
consoleTag = LogTags[tag];
|
||||||
|
|
||||||
|
queuedForLog += `${stringTime} ${fileTag} ${log}\n`;
|
||||||
|
switch (logType) {
|
||||||
|
case LogType.INFO:
|
||||||
|
return console.log(`${dyetty.green(stringTime)} ${consoleTag} ${log}`);
|
||||||
|
case LogType.WARN:
|
||||||
|
return console.warn(`${dyetty.green(stringTime)} ${consoleTag} ${log}`);
|
||||||
|
case LogType.ERROR:
|
||||||
|
return console.error(`${dyetty.green(stringTime)} ${consoleTag} ${log}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!existsSync("./logs")) {
|
||||||
|
mkdirSync("./logs/");
|
||||||
|
}
|
||||||
|
|
||||||
|
function flushLogQueueToDisk() {
|
||||||
|
if (queuedForLog.length !== 0) {
|
||||||
|
const strRef = queuedForLog;
|
||||||
|
queuedForLog = "";
|
||||||
|
logFileWriteStream.write(strRef);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Open write stream to log file
|
||||||
|
const logFileWriteStream = createWriteStream("./logs/latest.log");
|
||||||
|
let flushTimer:NodeJS.Timeout = setInterval(flushLogQueueToDisk, 5000);
|
||||||
|
const startTime = new Date();
|
||||||
|
let cleaningUp = false;
|
||||||
|
|
||||||
|
export abstract class Console {
|
||||||
|
public static customHeader(s:string) : void {
|
||||||
|
const headerLines = s.replaceAll("\r", "").split("\n");
|
||||||
|
if (headerLines.length === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let textToLog = "";
|
||||||
|
for (const line of headerLines) {
|
||||||
|
textToLog += `# ${line}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
queuedForLog += `${textToLog}\n`;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static flushInterval(i:number) {
|
||||||
|
clearInterval(flushTimer);
|
||||||
|
flushTimer = setInterval(flushLogQueueToDisk, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static cleanup() {
|
||||||
|
if (cleaningUp) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
cleaningUp = true;
|
||||||
|
clearInterval(flushTimer);
|
||||||
|
flushLogQueueToDisk();
|
||||||
|
logFileWriteStream.close();
|
||||||
|
|
||||||
|
renameSync("./logs/latest.log", `./logs/${zeroPad(startTime.getFullYear())}-${zeroPad(startTime.getMonth())}-${zeroPad(startTime.getDate())}_${zeroPad(startTime.getHours())}-${zeroPad(startTime.getMinutes())}-${zeroPad(startTime.getSeconds())}.log`);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static printInfo(s:string) : void {
|
||||||
|
log(LogTag.INFO, s, LogType.INFO);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static printWarn(s:string) : void {
|
||||||
|
log(LogTag.WARN, s, LogType.WARN);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static printError(s:string) : void {
|
||||||
|
log(LogTag.ERROR, s, LogType.ERROR);
|
||||||
|
}
|
||||||
|
}
|
2540
package-lock.json
generated
Normal file
2540
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
24
package.json
Normal file
24
package.json
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
{
|
||||||
|
"name": "hsconsole",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"updateCheck": "check-outdated",
|
||||||
|
"build": "tsc --build",
|
||||||
|
"_clean": "tsc --build --clean"
|
||||||
|
},
|
||||||
|
"keywords": [],
|
||||||
|
"author": "",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"dyetty": "^1.0.1"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/node": "^20.5.0",
|
||||||
|
"check-outdated": "^2.12.0",
|
||||||
|
"ts-loader": "^9.4.4",
|
||||||
|
"ts-node": "^10.9.1",
|
||||||
|
"typescript": "^5.1.6"
|
||||||
|
}
|
||||||
|
}
|
16
tsconfig.json
Normal file
16
tsconfig.json
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"module": "CommonJS",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"target": "es6",
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"rootDir": "./",
|
||||||
|
"outDir": "./lib/",
|
||||||
|
"strict": true,
|
||||||
|
"declaration": true,
|
||||||
|
"lib": [
|
||||||
|
"ES2021.String"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue