init report && move live_monitor_vue

This commit is contained in:
2024-03-22 13:27:00 +03:00
parent b215f88b2c
commit 4e123e6555
255 changed files with 79351 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
tsup.config.ts
/tests

View File

@@ -0,0 +1,17 @@
module.exports = {
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended', // Uses the recommended rules from the @typescript-eslint/eslint-plugin
],
parserOptions: {
ecmaVersion: 2022,
sourceType: 'module',
project: './tsconfig.json',
},
rules: {
'@typescript-eslint/no-unused-vars': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/ban-ts-comment': 'off',
"@typescript-eslint/ban-types": 'off',
},
}

View File

@@ -0,0 +1,7 @@
/node_modules
/dist
.env
.DS_Store

View File

@@ -0,0 +1,8 @@
/node_modules
/src
.env
.DS_Store
tsconfig.json
tsup.config.js

View File

@@ -0,0 +1,53 @@
# Вспомогательные сущности
## Описание
* В данном репозитории собраны классы, которые помогают в разработке
## Установка
npm install 3-class-complex-assistants --registry=https://vniac.ru:4873/
### Logger
* Заменяет console.log, console.error, console.warn, console.info Отправляет логи на сервер, если передан url
#### Функции
* convertObject - Адаптирует объект к другому виду, путем замены ключей, может заменять значения через callback
* convertList - Имплементация метода convertObject для массива объектов
```js
import {Logger} from '3-class-complex-assistants'
/**
*
* @type {{
* datetime: string,
* loggerLevel: {0 | 1 | 2 | 3 | 4 | 5},
* port: number,
* serviceName: string,
* machineAddr: string
* }}
* @description loggerLevel - уровень логирования;
* берется из конфига, приложения, например из .env
*
* 0 - не логировать,
* 1 - только ошибки,
* 2 - ошибки и предупреждения,
* 3 - ошибки, предупреждения и информация,
* 4 - все,
* 5 - все + отладка
*/
const loggerInfo = {
"loggerLevel": 4,
"serviceName": "live_monitor",
"machineAddr": "172.25.78.151",
"port": 6175,
"datetime": moment().format("YYYY-MM-DDTHH:mm:ss"),
}
const callback = () => {}
const allParams = {...loggerInfo, callFunc: callback, isPushToServer: true}
const newLogger = new Logger(allParams)
const loggerDebug = newLogger.debug('Test debug', 1)
const loggerInfos = newLogger.info('Test info', 1)
const loggerWarn = newLogger.warn('Test warn', 1)
const loggerError = newLogger.error('Test error', 1)
```

View File

@@ -0,0 +1,41 @@
{
"name": "3-class-complex-assistants",
"description": "",
"version": "0.0.6",
"main": "./dist/index.js",
"module": "./dist/index.mjs",
"types": "./dist/index.d.ts",
"scripts": {
"test": "vitest",
"build": "tsup",
"release": "npm run build && npm version patch && npm publish --tag latest",
"release_up": "npm version $(semver $npm_package_version -i minor) && npm publish --tag latest",
"lint": "eslint . --ext .ts",
"lint:fix": "eslint . --ext .ts -- --fix"
},
"repository": {
"type": "git",
"url": "https://gitlab.com/niac_vniizht/niac-packs"
},
"publishConfig": {
"registry": "https://vniac.ru:4873"
},
"keywords": [
"Logger",
"helpers",
"utils"
],
"author": "vbuglov",
"license": "ISC",
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^7.2.0",
"@typescript-eslint/parser": "^7.2.0",
"eslint": "^8.57.0",
"moment": "^2.30.1",
"tsup": "^8.0.2",
"typescript": "^5.4.2",
"typescript-eslint": "^7.2.0",
"vite": "^5.1.6",
"vitest": "^1.4.0"
}
}

View File

@@ -0,0 +1,113 @@
interface LoggerParams {
loggerLevel: number;
serviceName?: string;
machineAddr?: string;
port?: number;
dateTime?: Date;
callFunc: (text: string) => void;
isPushToServer: boolean;
}
const defaultParams = {
loggerLevel: -1,
serviceName: '',
machineAddr: '',
port: 80,
dateTime: new Date(),
callFunc: (text: string) => console.log(text),
isPushToServer: false
}
const mergeParams = (mainObject = {}, defaultParams: LoggerParams ): LoggerParams => {
return {...defaultParams, ...mainObject}
}
class Logger {
private readonly loggerLevel: number;
private serviceName: string | undefined;
private machineAddr: string | undefined;
private port: number | undefined;
private dateTime: Date | undefined;
private readonly callFunc: ((text: string) => void) | undefined;
private readonly isPushToServer: boolean | undefined;
constructor(params: LoggerParams) {
const parsedParams = mergeParams(params, defaultParams)
this.loggerLevel = parsedParams.loggerLevel
this.serviceName = parsedParams.serviceName
this.machineAddr = parsedParams.machineAddr
this.port = parsedParams.port
this.dateTime = parsedParams.dateTime
this.callFunc = parsedParams.callFunc
this.isPushToServer = parsedParams.isPushToServer
}
debug(text: string, level: number) {
if(!text && !level && !this.isPushToServer) return
/* Отправляем инфу на сервер
const data = {serviceInfo: this.params, text: text, level: level}
axios.post(url, data)
.then((res) => {
return res
})
.catch((err) => {
return err
})
... */
if (this.loggerLevel > level) {
return this.callFunc ? this.callFunc(text) : 'Отладочная информация отправлена на сервер'
}
}
info(text: string, level: number) {
if(!text && !level && !this.isPushToServer) return
/* Отправляем инфу на сервер
const data = {serviceInfo: this.params, text: text, level: level}
axios.post(url, data)
.then((res) => {
return res
})
.catch((err) => {
return err
})
... */
if (this.loggerLevel > level) {
return this.callFunc ? this.callFunc(text) : 'Информация отправлена на сервер'
}
}
warn(text: string, level: number) {
if(!text && !level && !this.isPushToServer) return
/* Отправляем инфу на сервер
const data = {serviceInfo: this.params, text: text, level: level}
axios.post(url, data)
.then((res) => {
return res
})
.catch((err) => {
return err
})
... */
if (this.loggerLevel > level) {
return this.callFunc ? this.callFunc(text) : 'Предупреждение отправлено на сервер'
}
}
error(text: string, level: number) {
if(!text && !level && !this.isPushToServer) return
/* Отправляем инфу на сервер
const data = {serviceInfo: this.params, text: text, level: level}
axios.post(url, data)
.then((res) => {
return res
})
.catch((err) => {
return err
})
... */
if (this.loggerLevel > level) {
return this.callFunc ? this.callFunc(text) : 'Ошибка отправлена на сервер'
}
}
}
export default Logger

View File

@@ -0,0 +1,5 @@
import Logger from './Logger'
export {
Logger
}

View File

@@ -0,0 +1,74 @@
import {describe, expect, test, vi} from 'vitest'
import Logger from '../src/Logger'
// @ts-ignore
import moment from 'moment'
const VITE_LOGGER_LEVEL = 4
const loggerInfo = {
"loggerLevel": VITE_LOGGER_LEVEL,
"serviceName": "live_monitor",
"machineAddr": "172.25.78.151",
"port": 6175,
"datetime": moment().format("YYYY-MM-DDTHH:mm:ss"),
}
describe('Logger', () => {
test('empty logger info', () => {
const newLogger = new Logger(null)
const loggerDebug = newLogger.debug(undefined, undefined)
const loggerInfo = newLogger.info(undefined, undefined)
const loggerWarn = newLogger.warn(undefined, undefined)
const loggerError = newLogger.error(undefined, undefined)
expect(loggerDebug).toBeUndefined()
expect(loggerInfo).toBeUndefined()
expect(loggerWarn).toBeUndefined()
expect(loggerError).toBeUndefined()
})
test('sent logger, empty required params', () => {
const callback = (text: string) => console.log('callback', text)
const allParams = {...loggerInfo, callFunc: callback, isPushToServer: true}
const newLogger = new Logger(allParams)
const loggerWarn = newLogger.warn('', 1)
const loggerError = newLogger.error('Test error', undefined)
expect(loggerWarn).toBeUndefined()
expect(loggerError).toBeUndefined()
})
test('sent logger, empty callback function', () => {
const allParams = {...loggerInfo, callFunc: null, isPushToServer: true}
const newLogger = new Logger(allParams)
const loggerDebug = newLogger.debug('Test debug', 0)
const loggerInfos = newLogger.info('Test info', 1)
const loggerWarn = newLogger.warn('Test warn', 2)
const loggerError = newLogger.error('Test error', 3)
expect(loggerDebug).toBe('Отладочная информация отправлена на сервер')
expect(loggerInfos).toBe('Информация отправлена на сервер')
expect(loggerWarn).toBe('Предупреждение отправлено на сервер')
expect(loggerError).toBe('Ошибка отправлена на сервер')
})
test('sent logger, with callback function', () => {
const callback = vi.fn((text) => `callback func - ${text}`)
const allParams = {...loggerInfo, callFunc: callback, isPushToServer: true}
const newLogger = new Logger(allParams)
const loggerDebug = newLogger.debug('Test debug', 1)
const loggerInfos = newLogger.info('Test info', 1)
const loggerWarn = newLogger.warn('Test warn', 1)
const loggerError = newLogger.error('Test error', 1)
expect(loggerDebug).toBe('callback func - Test debug')
expect(loggerInfos).toBe('callback func - Test info')
expect(loggerWarn).toBe('callback func - Test warn')
expect(loggerError).toBe('callback func - Test error')
})
})

View File

@@ -0,0 +1,18 @@
{
"noImplicitAny": true,
"esModuleInterop": true,
"strictNullChecks": true,
"moduleResolution": "Node10",
"module": "CommonJs",
"outDir": "dist",
"declaration": true,
"isolatedModules": true,
"noEmit": true,
"include": ["src"],
"exclude": ["node_modules"],
"format": ["esm"],
"compilerOptions": {
"strict": true,
"target": "ES2022"
}
}

View File

@@ -0,0 +1,11 @@
// @ts-nocheck
import {defineConfig} from "tsup";
export default defineConfig({
format: ["cjs", "esm"],
entry: ['src/index.ts'],
dts: true,
shims: true,
skipNodeModulesBundle: true,
clean: true,
})

File diff suppressed because it is too large Load Diff