init report && move live_monitor_vue
This commit is contained in:
2
repo/3-class-complex-assistants/.eslintignore
Normal file
2
repo/3-class-complex-assistants/.eslintignore
Normal file
@@ -0,0 +1,2 @@
|
||||
tsup.config.ts
|
||||
/tests
|
||||
17
repo/3-class-complex-assistants/.eslintrc.cjs
Normal file
17
repo/3-class-complex-assistants/.eslintrc.cjs
Normal 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',
|
||||
},
|
||||
}
|
||||
7
repo/3-class-complex-assistants/.gitignore
vendored
Normal file
7
repo/3-class-complex-assistants/.gitignore
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
/node_modules
|
||||
/dist
|
||||
|
||||
|
||||
|
||||
.env
|
||||
.DS_Store
|
||||
8
repo/3-class-complex-assistants/.npmignore
Normal file
8
repo/3-class-complex-assistants/.npmignore
Normal file
@@ -0,0 +1,8 @@
|
||||
/node_modules
|
||||
/src
|
||||
|
||||
.env
|
||||
.DS_Store
|
||||
|
||||
tsconfig.json
|
||||
tsup.config.js
|
||||
53
repo/3-class-complex-assistants/Readme.md
Normal file
53
repo/3-class-complex-assistants/Readme.md
Normal 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)
|
||||
```
|
||||
41
repo/3-class-complex-assistants/package.json
Normal file
41
repo/3-class-complex-assistants/package.json
Normal 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"
|
||||
}
|
||||
}
|
||||
113
repo/3-class-complex-assistants/src/Logger.ts
Normal file
113
repo/3-class-complex-assistants/src/Logger.ts
Normal 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
|
||||
5
repo/3-class-complex-assistants/src/index.ts
Normal file
5
repo/3-class-complex-assistants/src/index.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
import Logger from './Logger'
|
||||
|
||||
export {
|
||||
Logger
|
||||
}
|
||||
74
repo/3-class-complex-assistants/tests/logger.test.ts
Normal file
74
repo/3-class-complex-assistants/tests/logger.test.ts
Normal 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')
|
||||
})
|
||||
|
||||
})
|
||||
18
repo/3-class-complex-assistants/tsconfig.json
Normal file
18
repo/3-class-complex-assistants/tsconfig.json
Normal 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"
|
||||
}
|
||||
}
|
||||
11
repo/3-class-complex-assistants/tsup.config.ts
Normal file
11
repo/3-class-complex-assistants/tsup.config.ts
Normal 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,
|
||||
})
|
||||
1996
repo/3-class-complex-assistants/yarn.lock
Normal file
1996
repo/3-class-complex-assistants/yarn.lock
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user