Added logging system
This commit is contained in:
parent
e1f7451e51
commit
1e14eb5b6b
@ -5,10 +5,8 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node dist/app.js",
|
"start": "node dist/app.js",
|
||||||
"build": "webpack --env production",
|
"build": "webpack --env production",
|
||||||
|
|
||||||
"prewatch": "yarn lint-build",
|
"prewatch": "yarn lint-build",
|
||||||
"watch": "webpack --watch",
|
"watch": "webpack --watch",
|
||||||
|
|
||||||
"lint": "eslint \"./{src, tests}/**\" --fix",
|
"lint": "eslint \"./{src, tests}/**\" --fix",
|
||||||
"lint-build": "eslint \"./src/**\" --fix",
|
"lint-build": "eslint \"./src/**\" --fix",
|
||||||
"test": "jest",
|
"test": "jest",
|
||||||
@ -28,36 +26,39 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@types/cookie-parser": "1.4.2",
|
||||||
|
"@types/dateformat": "5.0.0",
|
||||||
|
"@types/debug": "4.1.5",
|
||||||
|
"@types/express": "4.17.11",
|
||||||
|
"@types/express-session": "^1.17.3",
|
||||||
|
"@types/morgan": "1.9.2",
|
||||||
"@types/node": "14.14.37",
|
"@types/node": "14.14.37",
|
||||||
|
"@types/ramda": "0.27.40",
|
||||||
|
"@types/uuid": "8.3.0",
|
||||||
|
"@types/ws": "7.4.1",
|
||||||
|
"@types/yargs": "17.0.0",
|
||||||
"bufferutil": "4.0.3",
|
"bufferutil": "4.0.3",
|
||||||
"cookie-parser": "1.4.5",
|
"cookie-parser": "1.4.5",
|
||||||
"@types/cookie-parser": "1.4.2",
|
"dateformat": "5.0.3",
|
||||||
"debug": "2.6.9",
|
"debug": "2.6.9",
|
||||||
"@types/debug": "4.1.5",
|
|
||||||
"deemix": "^3.6.0",
|
"deemix": "^3.6.0",
|
||||||
"deezer-js": "^1.3.0",
|
"deezer-js": "^1.3.0",
|
||||||
"dotenv": "8.2.0",
|
"dotenv": "8.2.0",
|
||||||
"express": "4.17.1",
|
"express": "4.17.1",
|
||||||
"@types/express": "4.17.11",
|
|
||||||
"express-session": "^1.17.1",
|
"express-session": "^1.17.1",
|
||||||
"@types/express-session": "^1.17.3",
|
|
||||||
"memorystore": "1.6.6",
|
"memorystore": "1.6.6",
|
||||||
"morgan": "1.10.0",
|
"morgan": "1.10.0",
|
||||||
"@types/morgan": "1.9.2",
|
|
||||||
"ramda": "0.27.1",
|
|
||||||
"@types/ramda": "0.27.40",
|
|
||||||
"utf-8-validate": "5.0.5",
|
|
||||||
"uuid": "8.3.2",
|
|
||||||
"@types/uuid": "8.3.0",
|
|
||||||
"ws": "7.4.5",
|
|
||||||
"@types/ws": "7.4.1",
|
|
||||||
"yargs": "17.0.1",
|
|
||||||
"@types/yargs": "17.0.0",
|
|
||||||
"nodemon": "2.0.7",
|
"nodemon": "2.0.7",
|
||||||
"nodemon-webpack-plugin": "4.5.2",
|
"nodemon-webpack-plugin": "4.5.2",
|
||||||
|
"ramda": "0.27.1",
|
||||||
"ts-loader": "9.2.3",
|
"ts-loader": "9.2.3",
|
||||||
|
"utf-8-validate": "5.0.5",
|
||||||
|
"uuid": "8.3.2",
|
||||||
"webpack": "5.41.1",
|
"webpack": "5.41.1",
|
||||||
"webpack-cli": "4.7.2"
|
"webpack-cli": "4.7.2",
|
||||||
|
"winston": "3.6.0",
|
||||||
|
"ws": "7.4.5",
|
||||||
|
"yargs": "17.0.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@nuxtjs/eslint-config": "6.0.0",
|
"@nuxtjs/eslint-config": "6.0.0",
|
||||||
@ -69,11 +70,11 @@
|
|||||||
"eslint-config-prettier": "8.1.0",
|
"eslint-config-prettier": "8.1.0",
|
||||||
"eslint-plugin-prettier": "3.3.1",
|
"eslint-plugin-prettier": "3.3.1",
|
||||||
"jest": "26.6.3",
|
"jest": "26.6.3",
|
||||||
|
"prettier": "2.2.1",
|
||||||
|
"supertest": "6.1.3",
|
||||||
"ts-jest": "26.5.4",
|
"ts-jest": "26.5.4",
|
||||||
"ts-node": "9.1.1",
|
"ts-node": "9.1.1",
|
||||||
"ts-node-dev": "1.1.6",
|
"ts-node-dev": "1.1.6",
|
||||||
"typescript": "4.2.4",
|
"typescript": "4.2.4"
|
||||||
"prettier": "2.2.1",
|
|
||||||
"supertest": "6.1.3"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ import { Settings, Listener } from './types'
|
|||||||
import { NotLoggedIn } from './helpers/errors'
|
import { NotLoggedIn } from './helpers/errors'
|
||||||
|
|
||||||
import { GUI_PACKAGE } from './helpers/paths'
|
import { GUI_PACKAGE } from './helpers/paths'
|
||||||
|
import { logger } from './helpers/logger'
|
||||||
|
|
||||||
// Types
|
// Types
|
||||||
const Downloader = deemix.downloader.Downloader
|
const Downloader = deemix.downloader.Downloader
|
||||||
@ -70,7 +71,7 @@ export class DeemixApp {
|
|||||||
retry: 5
|
retry: 5
|
||||||
})
|
})
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.trace(e)
|
logger.error(e)
|
||||||
this.deezerAvailable = 'no-network'
|
this.deezerAvailable = 'no-network'
|
||||||
return this.deezerAvailable
|
return this.deezerAvailable
|
||||||
}
|
}
|
||||||
@ -90,7 +91,7 @@ export class DeemixApp {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.trace(e)
|
logger.error(e)
|
||||||
this.latestVersion = 'NotFound'
|
this.latestVersion = 'NotFound'
|
||||||
return this.latestVersion
|
return this.latestVersion
|
||||||
}
|
}
|
||||||
@ -111,7 +112,7 @@ export class DeemixApp {
|
|||||||
commit: matchResult[5] || ''
|
commit: matchResult[5] || ''
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.trace(e)
|
logger.error(e)
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -168,7 +169,7 @@ export class DeemixApp {
|
|||||||
|
|
||||||
for (let i = 0; i < url.length; i++) {
|
for (let i = 0; i < url.length; i++) {
|
||||||
link = url[i]
|
link = url[i]
|
||||||
console.log(`Adding ${link} to queue`)
|
logger.info(`Adding ${link} to queue`)
|
||||||
let downloadObj
|
let downloadObj
|
||||||
try {
|
try {
|
||||||
downloadObj = await deemix.generateDownloadObject(dz, link, bitrate, this.plugins, this.listener)
|
downloadObj = await deemix.generateDownloadObject(dz, link, bitrate, this.plugins, this.listener)
|
||||||
@ -182,7 +183,7 @@ export class DeemixApp {
|
|||||||
|
|
||||||
if (downloadErrors.length) {
|
if (downloadErrors.length) {
|
||||||
downloadErrors.forEach((e: any) => {
|
downloadErrors.forEach((e: any) => {
|
||||||
if (!e.errid) console.trace(e)
|
if (!e.errid) logger.error(e)
|
||||||
this.listener.send('queueError', { link: e.link, error: e.message, errid: e.errid })
|
this.listener.send('queueError', { link: e.link, error: e.message, errid: e.errid })
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -280,7 +281,7 @@ export class DeemixApp {
|
|||||||
this.queue[currentUUID] = savedObject
|
this.queue[currentUUID] = savedObject
|
||||||
fs.writeFileSync(configFolder + `queue${sep}${currentUUID}.json`, JSON.stringify(savedObject))
|
fs.writeFileSync(configFolder + `queue${sep}${currentUUID}.json`, JSON.stringify(savedObject))
|
||||||
}
|
}
|
||||||
console.log(this.queueOrder)
|
logger.info(this.queueOrder)
|
||||||
fs.writeFileSync(configFolder + `queue${sep}order.json`, JSON.stringify(this.queueOrder))
|
fs.writeFileSync(configFolder + `queue${sep}order.json`, JSON.stringify(this.queueOrder))
|
||||||
|
|
||||||
this.currentJob = null
|
this.currentJob = null
|
||||||
|
@ -1,10 +1,3 @@
|
|||||||
import { concat } from 'ramda'
|
|
||||||
|
|
||||||
const prependDeemix = concat('[deemix-server]: ')
|
|
||||||
|
|
||||||
export const consoleInfo = (infoText: string) => console.info(prependDeemix(infoText))
|
|
||||||
export const consoleError = (errorText: string) => console.error(prependDeemix(errorText))
|
|
||||||
|
|
||||||
export class BadRequestError extends Error {
|
export class BadRequestError extends Error {
|
||||||
constructor() {
|
constructor() {
|
||||||
super()
|
super()
|
||||||
|
51
server/src/helpers/logger.ts
Normal file
51
server/src/helpers/logger.ts
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
import fs from 'fs'
|
||||||
|
import { join as joinPath } from 'path'
|
||||||
|
import os from 'os'
|
||||||
|
import dateFormat from 'dateformat'
|
||||||
|
import { createLogger, format, transports } from 'winston'
|
||||||
|
// @ts-expect-error
|
||||||
|
import deemix from 'deemix'
|
||||||
|
const { combine, timestamp, errors, colorize, printf } = format
|
||||||
|
|
||||||
|
const logFolder: string = joinPath(deemix.utils.localpaths.getConfigFolder(), 'logs')
|
||||||
|
const logFilename = joinPath(logFolder, `${dateFormat(new Date(), 'yyyy-mm-dd-HH.MM.ss')}.log`)
|
||||||
|
|
||||||
|
const logFormat = printf(error => {
|
||||||
|
const { level, message, timestamp, stack } = error
|
||||||
|
let result = `${timestamp} [${level}] ${message}`
|
||||||
|
if (stack && !message.startsWith('uncaughtException')) result += '\n' + stack + '\n'
|
||||||
|
return result
|
||||||
|
})
|
||||||
|
|
||||||
|
export const logger = createLogger({
|
||||||
|
format: combine(errors({ stack: true }), timestamp(), logFormat),
|
||||||
|
transports: [
|
||||||
|
new transports.File({
|
||||||
|
handleExceptions: true,
|
||||||
|
handleRejections: true,
|
||||||
|
format: combine(errors({ stack: true }), timestamp(), logFormat),
|
||||||
|
filename: logFilename
|
||||||
|
}),
|
||||||
|
new transports.Console({
|
||||||
|
handleExceptions: true,
|
||||||
|
handleRejections: true,
|
||||||
|
format: combine(errors({ stack: true }), colorize(), timestamp(), logFormat)
|
||||||
|
})
|
||||||
|
]
|
||||||
|
})
|
||||||
|
|
||||||
|
export function removeOldLogs(logFilesNumber: number) {
|
||||||
|
if (!fs.existsSync(logFolder)) fs.mkdirSync(logFolder, { recursive: true })
|
||||||
|
fs.appendFileSync(logFilename, `${os.platform()} - ${os.type()} ${os.release()} ${os.arch()}\n\n`)
|
||||||
|
const files = fs.readdirSync(logFolder)
|
||||||
|
const logs: Array<string> = []
|
||||||
|
files.forEach(function (file) {
|
||||||
|
logs.push(file.substring(0, file.length - 4))
|
||||||
|
})
|
||||||
|
logs.sort()
|
||||||
|
if (logs.length > logFilesNumber) {
|
||||||
|
for (let i = 0; i < logs.length - logFilesNumber; i++) {
|
||||||
|
fs.unlinkSync(joinPath(logFolder, logs[i] + '.log'))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,6 @@
|
|||||||
import http from 'http'
|
import http from 'http'
|
||||||
import type { Debugger } from 'debug'
|
import type { Debugger } from 'debug'
|
||||||
import { consoleInfo } from './errors'
|
import { logger } from './logger'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Event listener for HTTP server "error" event.
|
* Event listener for HTTP server "error" event.
|
||||||
@ -18,11 +18,11 @@ export function getErrorCb(port: number | string | boolean) {
|
|||||||
// handle specific listen errors with friendly messages
|
// handle specific listen errors with friendly messages
|
||||||
switch (error.code) {
|
switch (error.code) {
|
||||||
case 'EACCES': {
|
case 'EACCES': {
|
||||||
console.error(bind + ' requires elevated privileges')
|
logger.error(bind + ' requires elevated privileges')
|
||||||
process.exit(1)
|
process.exit(1)
|
||||||
}
|
}
|
||||||
case 'EADDRINUSE': {
|
case 'EADDRINUSE': {
|
||||||
console.error(bind + ' is already in use')
|
logger.error(bind + ' is already in use')
|
||||||
process.exit(1)
|
process.exit(1)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -44,7 +44,7 @@ export function getListeningCb(server: http.Server, debug: Debugger) {
|
|||||||
const bind = typeof addr === 'string' ? 'pipe ' + addr : 'port ' + addr.port
|
const bind = typeof addr === 'string' ? 'pipe ' + addr : 'port ' + addr.port
|
||||||
|
|
||||||
debug(`Listening on ${bind}`)
|
debug(`Listening on ${bind}`)
|
||||||
consoleInfo(`Listening on ${bind}`)
|
logger.info(`Listening on ${bind}`)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,8 @@ import { ApiHandler } from '../../../types'
|
|||||||
import { sessionDZ } from '../../../app'
|
import { sessionDZ } from '../../../app'
|
||||||
|
|
||||||
import { isObjectEmpy } from '../../../helpers/primitive-checks'
|
import { isObjectEmpy } from '../../../helpers/primitive-checks'
|
||||||
import { BadRequestError, isBadRequestError, consoleError } from '../../../helpers/errors'
|
import { BadRequestError, isBadRequestError } from '../../../helpers/errors'
|
||||||
|
import { logger } from '../../../helpers/logger'
|
||||||
|
|
||||||
export interface RawChartTracksQuery {
|
export interface RawChartTracksQuery {
|
||||||
id: string
|
id: string
|
||||||
@ -32,7 +33,7 @@ const handler: RequestHandler<{}, {}, {}, RawChartTracksQuery> = async (req, res
|
|||||||
return res.status(200).send(response)
|
return res.status(200).send(response)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (isBadRequestError(error)) {
|
if (isBadRequestError(error)) {
|
||||||
consoleError(error.message)
|
logger.error(error.message)
|
||||||
res.status(400).send()
|
res.status(400).send()
|
||||||
return next()
|
return next()
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
import { Deezer } from 'deezer-js'
|
import { Deezer } from 'deezer-js'
|
||||||
import { ApiHandler } from '../../../types'
|
import { ApiHandler } from '../../../types'
|
||||||
import { sessionDZ } from '../../../app'
|
import { sessionDZ } from '../../../app'
|
||||||
|
import { logger } from '../../../helpers/logger'
|
||||||
|
|
||||||
const path: ApiHandler['path'] = '/addToQueue'
|
const path: ApiHandler['path'] = '/addToQueue'
|
||||||
|
|
||||||
@ -24,7 +25,7 @@ const handler: ApiHandler['handler'] = async (req, res) => {
|
|||||||
deemix.listener.send('loginNeededToDownload')
|
deemix.listener.send('loginNeededToDownload')
|
||||||
break
|
break
|
||||||
default:
|
default:
|
||||||
console.error(e)
|
logger.error(e)
|
||||||
res.send({ result: false, errid: e.name, data: { url, bitrate } })
|
res.send({ result: false, errid: e.name, data: { url, bitrate } })
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ import { RequestHandler } from 'express'
|
|||||||
import { Deezer } from 'deezer-js'
|
import { Deezer } from 'deezer-js'
|
||||||
import { sessionDZ } from '../../../app'
|
import { sessionDZ } from '../../../app'
|
||||||
import { ApiHandler } from '../../../types'
|
import { ApiHandler } from '../../../types'
|
||||||
|
import { logger } from '../../../helpers/logger'
|
||||||
|
|
||||||
export interface RawLoginArlBody {
|
export interface RawLoginArlBody {
|
||||||
arl: string
|
arl: string
|
||||||
@ -47,7 +48,7 @@ const handler: RequestHandler<{}, {}, RawLoginArlBody, {}> = async (req, res, _)
|
|||||||
try {
|
try {
|
||||||
response = await dz.login_via_arl(...loginParams)
|
response = await dz.login_via_arl(...loginParams)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.trace(e)
|
logger.error(e)
|
||||||
response = false
|
response = false
|
||||||
}
|
}
|
||||||
response = response ? 1 : 0
|
response = response ? 1 : 0
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import express from 'express'
|
import express from 'express'
|
||||||
// @ts-expect-error
|
// @ts-expect-error
|
||||||
import { Deezer } from 'deezer-js'
|
import { Deezer } from 'deezer-js'
|
||||||
import { consoleInfo } from '../helpers/errors'
|
import { logger } from '../helpers/logger'
|
||||||
import { sessionDZ, deemixVersion, currentVersion } from '../app'
|
import { sessionDZ, deemixVersion, currentVersion } from '../app'
|
||||||
|
|
||||||
const router = express.Router()
|
const router = express.Router()
|
||||||
@ -13,8 +13,8 @@ router.get('/connect', async (req, res) => {
|
|||||||
const deemix = req.app.get('deemix')
|
const deemix = req.app.get('deemix')
|
||||||
|
|
||||||
if (!update) {
|
if (!update) {
|
||||||
consoleInfo(`Currently running deemix-gui version ${currentVersion}`)
|
logger.info(`Currently running deemix-gui version ${currentVersion}`)
|
||||||
consoleInfo(`deemix-lib version ${deemixVersion}`)
|
logger.info(`deemix-lib version ${deemixVersion}`)
|
||||||
update = {
|
update = {
|
||||||
currentCommit: currentVersion,
|
currentCommit: currentVersion,
|
||||||
deemixVersion
|
deemixVersion
|
||||||
|
@ -9,7 +9,7 @@ import indexRouter from './routes'
|
|||||||
import { getErrorCb, getListeningCb } from './helpers/server-callbacks'
|
import { getErrorCb, getListeningCb } from './helpers/server-callbacks'
|
||||||
import { registerApis } from './routes/api/register'
|
import { registerApis } from './routes/api/register'
|
||||||
import { registerWebsocket } from './websocket'
|
import { registerWebsocket } from './websocket'
|
||||||
import { consoleInfo } from './helpers/errors'
|
import { logger, removeOldLogs } from './helpers/logger'
|
||||||
import { Port, Listener } from './types'
|
import { Port, Listener } from './types'
|
||||||
import { DeemixApp } from './app'
|
import { DeemixApp } from './app'
|
||||||
import { normalizePort } from './helpers/port'
|
import { normalizePort } from './helpers/port'
|
||||||
@ -34,7 +34,7 @@ export class DeemixServer {
|
|||||||
const listener: Listener = {
|
const listener: Listener = {
|
||||||
send: (key: string, data?: any) => {
|
send: (key: string, data?: any) => {
|
||||||
const logLine = deemix.utils.formatListener(key, data)
|
const logLine = deemix.utils.formatListener(key, data)
|
||||||
if (logLine) console.log(logLine)
|
if (logLine) logger.info(logLine)
|
||||||
if (['downloadInfo', 'downloadWarn'].includes(key)) return
|
if (['downloadInfo', 'downloadWarn'].includes(key)) return
|
||||||
this.wss.clients.forEach(client => {
|
this.wss.clients.forEach(client => {
|
||||||
if (client.readyState === WsOpen) {
|
if (client.readyState === WsOpen) {
|
||||||
@ -72,10 +72,10 @@ export class DeemixServer {
|
|||||||
|
|
||||||
/* === Server callbacks === */
|
/* === Server callbacks === */
|
||||||
this.app.on('mount', a => {
|
this.app.on('mount', a => {
|
||||||
console.log(a)
|
logger.info(a)
|
||||||
})
|
})
|
||||||
this.server.on('connect', () => {
|
this.server.on('connect', () => {
|
||||||
consoleInfo('Server connected')
|
logger.info('Server connected')
|
||||||
})
|
})
|
||||||
this.server.on('upgrade', (request, socket, head) => {
|
this.server.on('upgrade', (request, socket, head) => {
|
||||||
this.wss.handleUpgrade(request, socket, head, socket => {
|
this.wss.handleUpgrade(request, socket, head, socket => {
|
||||||
@ -84,5 +84,8 @@ export class DeemixServer {
|
|||||||
})
|
})
|
||||||
this.server.on('error', getErrorCb(this.port))
|
this.server.on('error', getErrorCb(this.port))
|
||||||
this.server.on('listening', getListeningCb(this.server, debug))
|
this.server.on('listening', getListeningCb(this.server, debug))
|
||||||
|
|
||||||
|
/* === Remove Old logs files === */
|
||||||
|
removeOldLogs(5)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { Server as WsServer } from 'ws'
|
import { Server as WsServer } from 'ws'
|
||||||
|
|
||||||
import { consoleError, consoleInfo } from '../helpers/errors'
|
import { logger } from '../helpers/logger'
|
||||||
import { DeemixApp } from '../app'
|
import { DeemixApp } from '../app'
|
||||||
import wsModules from './modules'
|
import wsModules from './modules'
|
||||||
|
|
||||||
@ -18,10 +18,10 @@ export const registerWebsocket = (wss: WsServer, deemix: DeemixApp) => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
wss.on('error', () => {
|
wss.on('error', () => {
|
||||||
consoleError('An error occurred to the WebSocket server.')
|
logger.error('An error occurred to the WebSocket server.')
|
||||||
})
|
})
|
||||||
|
|
||||||
wss.on('close', () => {
|
wss.on('close', () => {
|
||||||
consoleInfo('Connection to the WebSocket server closed.')
|
logger.info('Connection to the WebSocket server closed.')
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
import { Server as WsServer } from 'ws'
|
import { Server as WsServer } from 'ws'
|
||||||
import { consoleInfo } from '../../helpers/errors'
|
import { logger } from '../../helpers/logger'
|
||||||
import { DeemixApp } from '../../app'
|
import { DeemixApp } from '../../app'
|
||||||
|
|
||||||
const eventName = 'cancelAllDownloads'
|
const eventName = 'cancelAllDownloads'
|
||||||
|
|
||||||
const cb = (_: any, __: any, ___: WsServer, deemix: DeemixApp) => {
|
const cb = (_: any, __: any, ___: WsServer, deemix: DeemixApp) => {
|
||||||
deemix.cancelAllDownloads()
|
deemix.cancelAllDownloads()
|
||||||
consoleInfo(`Queue cleared`)
|
logger.info(`Queue cleared`)
|
||||||
}
|
}
|
||||||
|
|
||||||
export default { eventName, cb }
|
export default { eventName, cb }
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
import { Server as WsServer } from 'ws'
|
import { Server as WsServer } from 'ws'
|
||||||
import { consoleInfo } from '../../helpers/errors'
|
import { logger } from '../../helpers/logger'
|
||||||
import { DeemixApp } from '../../app'
|
import { DeemixApp } from '../../app'
|
||||||
|
|
||||||
const eventName = 'removeFinishedDownloads'
|
const eventName = 'removeFinishedDownloads'
|
||||||
|
|
||||||
const cb = (_: any, __: any, ___: WsServer, deemix: DeemixApp) => {
|
const cb = (_: any, __: any, ___: WsServer, deemix: DeemixApp) => {
|
||||||
deemix.clearCompletedDownloads()
|
deemix.clearCompletedDownloads()
|
||||||
consoleInfo('Completed downloads cleared')
|
logger.info('Completed downloads cleared')
|
||||||
}
|
}
|
||||||
|
|
||||||
export default { eventName, cb }
|
export default { eventName, cb }
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
import { Server as WsServer } from 'ws'
|
import { Server as WsServer } from 'ws'
|
||||||
import { consoleInfo } from '../../helpers/errors'
|
import { logger } from '../../helpers/logger'
|
||||||
import { DeemixApp } from '../../app'
|
import { DeemixApp } from '../../app'
|
||||||
|
|
||||||
const eventName = 'removeFromQueue'
|
const eventName = 'removeFromQueue'
|
||||||
|
|
||||||
const cb = (data: any, __: any, ___: WsServer, deemix: DeemixApp) => {
|
const cb = (data: any, __: any, ___: WsServer, deemix: DeemixApp) => {
|
||||||
deemix.cancelDownload(data)
|
deemix.cancelDownload(data)
|
||||||
consoleInfo(`Cancelled ${data}`)
|
logger.info(`Cancelled ${data}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
export default { eventName, cb }
|
export default { eventName, cb }
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { Server as WsServer } from 'ws'
|
import { Server as WsServer } from 'ws'
|
||||||
import { consoleInfo } from '../../helpers/errors'
|
import { logger } from '../../helpers/logger'
|
||||||
import { DeemixApp } from '../../app'
|
import { DeemixApp } from '../../app'
|
||||||
import { Settings, SpotifySettings } from '../../types'
|
import { Settings, SpotifySettings } from '../../types'
|
||||||
|
|
||||||
@ -13,7 +13,7 @@ export interface SaveSettingsData {
|
|||||||
const cb = (data: SaveSettingsData, _: any, __: WsServer, deemix: DeemixApp) => {
|
const cb = (data: SaveSettingsData, _: any, __: WsServer, deemix: DeemixApp) => {
|
||||||
const { settings, spotifySettings } = data
|
const { settings, spotifySettings } = data
|
||||||
deemix.saveSettings(settings, spotifySettings)
|
deemix.saveSettings(settings, spotifySettings)
|
||||||
consoleInfo('Settings saved')
|
logger.info('Settings saved')
|
||||||
deemix.listener.send('updateSettings', { settings, spotifySettings })
|
deemix.listener.send('updateSettings', { settings, spotifySettings })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
151
server/yarn.lock
151
server/yarn.lock
@ -310,6 +310,20 @@
|
|||||||
exec-sh "^0.3.2"
|
exec-sh "^0.3.2"
|
||||||
minimist "^1.2.0"
|
minimist "^1.2.0"
|
||||||
|
|
||||||
|
"@colors/colors@1.5.0":
|
||||||
|
version "1.5.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9"
|
||||||
|
integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==
|
||||||
|
|
||||||
|
"@dabh/diagnostics@^2.0.2":
|
||||||
|
version "2.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a"
|
||||||
|
integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==
|
||||||
|
dependencies:
|
||||||
|
colorspace "1.1.x"
|
||||||
|
enabled "2.0.x"
|
||||||
|
kuler "^2.0.0"
|
||||||
|
|
||||||
"@discoveryjs/json-ext@^0.5.0":
|
"@discoveryjs/json-ext@^0.5.0":
|
||||||
version "0.5.6"
|
version "0.5.6"
|
||||||
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz#d5e0706cf8c6acd8c6032f8d54070af261bbbb2f"
|
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz#d5e0706cf8c6acd8c6032f8d54070af261bbbb2f"
|
||||||
@ -683,6 +697,11 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@types/cookiejar/-/cookiejar-2.1.2.tgz#66ad9331f63fe8a3d3d9d8c6e3906dd10f6446e8"
|
resolved "https://registry.yarnpkg.com/@types/cookiejar/-/cookiejar-2.1.2.tgz#66ad9331f63fe8a3d3d9d8c6e3906dd10f6446e8"
|
||||||
integrity sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==
|
integrity sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==
|
||||||
|
|
||||||
|
"@types/dateformat@5.0.0":
|
||||||
|
version "5.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/dateformat/-/dateformat-5.0.0.tgz#17ce64b0318f3f36d1c830c58a7a915445f1f93d"
|
||||||
|
integrity sha512-SZg4JdHIWHQGEokbYGZSDvo5wA4TLYPXaqhigs/wH+REDOejcJzgH+qyY+HtEUtWOZxEUkbhbdYPqQDiEgrXeA==
|
||||||
|
|
||||||
"@types/debug@4.1.5":
|
"@types/debug@4.1.5":
|
||||||
version "4.1.5"
|
version "4.1.5"
|
||||||
resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.5.tgz#b14efa8852b7768d898906613c23f688713e02cd"
|
resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.5.tgz#b14efa8852b7768d898906613c23f688713e02cd"
|
||||||
@ -1411,7 +1430,7 @@ astral-regex@^2.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
|
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
|
||||||
integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
|
integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
|
||||||
|
|
||||||
async@^3.2.0:
|
async@^3.2.0, async@^3.2.3:
|
||||||
version "3.2.3"
|
version "3.2.3"
|
||||||
resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9"
|
resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9"
|
||||||
integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==
|
integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==
|
||||||
@ -1853,7 +1872,7 @@ collection-visit@^1.0.0:
|
|||||||
map-visit "^1.0.0"
|
map-visit "^1.0.0"
|
||||||
object-visit "^1.0.0"
|
object-visit "^1.0.0"
|
||||||
|
|
||||||
color-convert@^1.9.0:
|
color-convert@^1.9.0, color-convert@^1.9.3:
|
||||||
version "1.9.3"
|
version "1.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
|
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
|
||||||
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
|
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
|
||||||
@ -1872,16 +1891,40 @@ color-name@1.1.3:
|
|||||||
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
|
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
|
||||||
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
|
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
|
||||||
|
|
||||||
color-name@~1.1.4:
|
color-name@^1.0.0, color-name@~1.1.4:
|
||||||
version "1.1.4"
|
version "1.1.4"
|
||||||
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
|
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
|
||||||
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
|
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
|
||||||
|
|
||||||
|
color-string@^1.6.0:
|
||||||
|
version "1.9.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.0.tgz#63b6ebd1bec11999d1df3a79a7569451ac2be8aa"
|
||||||
|
integrity sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ==
|
||||||
|
dependencies:
|
||||||
|
color-name "^1.0.0"
|
||||||
|
simple-swizzle "^0.2.2"
|
||||||
|
|
||||||
|
color@^3.1.3:
|
||||||
|
version "3.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164"
|
||||||
|
integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==
|
||||||
|
dependencies:
|
||||||
|
color-convert "^1.9.3"
|
||||||
|
color-string "^1.6.0"
|
||||||
|
|
||||||
colorette@^1.2.1:
|
colorette@^1.2.1:
|
||||||
version "1.4.0"
|
version "1.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40"
|
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40"
|
||||||
integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==
|
integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==
|
||||||
|
|
||||||
|
colorspace@1.1.x:
|
||||||
|
version "1.1.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243"
|
||||||
|
integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==
|
||||||
|
dependencies:
|
||||||
|
color "^3.1.3"
|
||||||
|
text-hex "1.0.x"
|
||||||
|
|
||||||
combined-stream@^1.0.8:
|
combined-stream@^1.0.8:
|
||||||
version "1.0.8"
|
version "1.0.8"
|
||||||
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
|
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
|
||||||
@ -2041,6 +2084,11 @@ data-urls@^2.0.0:
|
|||||||
whatwg-mimetype "^2.3.0"
|
whatwg-mimetype "^2.3.0"
|
||||||
whatwg-url "^8.0.0"
|
whatwg-url "^8.0.0"
|
||||||
|
|
||||||
|
dateformat@5.0.3:
|
||||||
|
version "5.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-5.0.3.tgz#fe2223eff3cc70ce716931cb3038b59a9280696e"
|
||||||
|
integrity sha512-Kvr6HmPXUMerlLcLF+Pwq3K7apHpYmGDVqrxcDasBg86UcKeTSNWbEzU8bwdXnxnR44FtMhJAxI4Bov6Y/KUfA==
|
||||||
|
|
||||||
dateformat@~1.0.4-1.2.3:
|
dateformat@~1.0.4-1.2.3:
|
||||||
version "1.0.12"
|
version "1.0.12"
|
||||||
resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9"
|
resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9"
|
||||||
@ -2279,6 +2327,11 @@ emoji-regex@^8.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
|
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
|
||||||
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
|
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
|
||||||
|
|
||||||
|
enabled@2.0.x:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2"
|
||||||
|
integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==
|
||||||
|
|
||||||
encodeurl@~1.0.2:
|
encodeurl@~1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
|
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
|
||||||
@ -2873,6 +2926,11 @@ fb-watchman@^2.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
bser "2.1.1"
|
bser "2.1.1"
|
||||||
|
|
||||||
|
fecha@^4.2.0:
|
||||||
|
version "4.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.1.tgz#0a83ad8f86ef62a091e22bb5a039cd03d23eecce"
|
||||||
|
integrity sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q==
|
||||||
|
|
||||||
file-entry-cache@^6.0.1:
|
file-entry-cache@^6.0.1:
|
||||||
version "6.0.1"
|
version "6.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
|
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
|
||||||
@ -2946,6 +3004,11 @@ flatted@^3.1.0:
|
|||||||
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3"
|
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3"
|
||||||
integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==
|
integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==
|
||||||
|
|
||||||
|
fn.name@1.x.x:
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc"
|
||||||
|
integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==
|
||||||
|
|
||||||
for-in@^1.0.2:
|
for-in@^1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
|
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
|
||||||
@ -3437,6 +3500,11 @@ is-arrayish@^0.2.1:
|
|||||||
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
|
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
|
||||||
integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
|
integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
|
||||||
|
|
||||||
|
is-arrayish@^0.3.1:
|
||||||
|
version "0.3.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
|
||||||
|
integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
|
||||||
|
|
||||||
is-bigint@^1.0.1:
|
is-bigint@^1.0.1:
|
||||||
version "1.0.4"
|
version "1.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3"
|
resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3"
|
||||||
@ -4295,6 +4363,11 @@ kleur@^3.0.3:
|
|||||||
resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
|
resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
|
||||||
integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
|
integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
|
||||||
|
|
||||||
|
kuler@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3"
|
||||||
|
integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==
|
||||||
|
|
||||||
latest-version@^5.0.0:
|
latest-version@^5.0.0:
|
||||||
version "5.1.0"
|
version "5.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face"
|
resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face"
|
||||||
@ -4374,6 +4447,17 @@ lodash@4.x, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0:
|
|||||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
||||||
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
||||||
|
|
||||||
|
logform@^2.3.2, logform@^2.4.0:
|
||||||
|
version "2.4.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/logform/-/logform-2.4.0.tgz#131651715a17d50f09c2a2c1a524ff1a4164bcfe"
|
||||||
|
integrity sha512-CPSJw4ftjf517EhXZGGvTHHkYobo7ZCc0kvwUoOYcjfR2UVrI66RHj8MCrfAdEitdmFqbu2BYdYs8FHHZSb6iw==
|
||||||
|
dependencies:
|
||||||
|
"@colors/colors" "1.5.0"
|
||||||
|
fecha "^4.2.0"
|
||||||
|
ms "^2.1.1"
|
||||||
|
safe-stable-stringify "^2.3.1"
|
||||||
|
triple-beam "^1.3.0"
|
||||||
|
|
||||||
loud-rejection@^1.0.0:
|
loud-rejection@^1.0.0:
|
||||||
version "1.6.0"
|
version "1.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
|
resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
|
||||||
@ -4856,6 +4940,13 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
wrappy "1"
|
wrappy "1"
|
||||||
|
|
||||||
|
one-time@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45"
|
||||||
|
integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==
|
||||||
|
dependencies:
|
||||||
|
fn.name "1.x.x"
|
||||||
|
|
||||||
onetime@^5.1.0, onetime@^5.1.2:
|
onetime@^5.1.0, onetime@^5.1.2:
|
||||||
version "5.1.2"
|
version "5.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
|
resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
|
||||||
@ -5306,7 +5397,7 @@ read-pkg@^5.2.0:
|
|||||||
parse-json "^5.0.0"
|
parse-json "^5.0.0"
|
||||||
type-fest "^0.6.0"
|
type-fest "^0.6.0"
|
||||||
|
|
||||||
readable-stream@^3.6.0:
|
readable-stream@^3.4.0, readable-stream@^3.6.0:
|
||||||
version "3.6.0"
|
version "3.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
|
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
|
||||||
integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
|
integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
|
||||||
@ -5521,6 +5612,11 @@ safe-regex@^2.1.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
regexp-tree "~0.1.1"
|
regexp-tree "~0.1.1"
|
||||||
|
|
||||||
|
safe-stable-stringify@^2.3.1:
|
||||||
|
version "2.3.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz#ab67cbe1fe7d40603ca641c5e765cb942d04fc73"
|
||||||
|
integrity sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==
|
||||||
|
|
||||||
"safer-buffer@>= 2.1.2 < 3":
|
"safer-buffer@>= 2.1.2 < 3":
|
||||||
version "2.1.2"
|
version "2.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
||||||
@ -5692,6 +5788,13 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3:
|
|||||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
|
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
|
||||||
integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
|
integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
|
||||||
|
|
||||||
|
simple-swizzle@^0.2.2:
|
||||||
|
version "0.2.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
|
||||||
|
integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=
|
||||||
|
dependencies:
|
||||||
|
is-arrayish "^0.3.1"
|
||||||
|
|
||||||
sisteransi@^1.0.5:
|
sisteransi@^1.0.5:
|
||||||
version "1.0.5"
|
version "1.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
|
resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
|
||||||
@ -5830,6 +5933,11 @@ sprintf-js@~1.0.2:
|
|||||||
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
|
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
|
||||||
integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
|
integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
|
||||||
|
|
||||||
|
stack-trace@0.0.x:
|
||||||
|
version "0.0.10"
|
||||||
|
resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0"
|
||||||
|
integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=
|
||||||
|
|
||||||
stack-utils@^2.0.2:
|
stack-utils@^2.0.2:
|
||||||
version "2.0.5"
|
version "2.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5"
|
resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5"
|
||||||
@ -6070,6 +6178,11 @@ test-exclude@^6.0.0:
|
|||||||
glob "^7.1.4"
|
glob "^7.1.4"
|
||||||
minimatch "^3.0.4"
|
minimatch "^3.0.4"
|
||||||
|
|
||||||
|
text-hex@1.0.x:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5"
|
||||||
|
integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==
|
||||||
|
|
||||||
text-table@^0.2.0:
|
text-table@^0.2.0:
|
||||||
version "0.2.0"
|
version "0.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
|
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
|
||||||
@ -6165,6 +6278,11 @@ trim-newlines@^1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
|
resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
|
||||||
integrity sha1-WIeWa7WCpFA6QetST301ARgVphM=
|
integrity sha1-WIeWa7WCpFA6QetST301ARgVphM=
|
||||||
|
|
||||||
|
triple-beam@^1.3.0:
|
||||||
|
version "1.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9"
|
||||||
|
integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==
|
||||||
|
|
||||||
ts-jest@26.5.4:
|
ts-jest@26.5.4:
|
||||||
version "26.5.4"
|
version "26.5.4"
|
||||||
resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.5.4.tgz#207f4c114812a9c6d5746dd4d1cdf899eafc9686"
|
resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.5.4.tgz#207f4c114812a9c6d5746dd4d1cdf899eafc9686"
|
||||||
@ -6644,6 +6762,31 @@ wildcard@^2.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec"
|
resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec"
|
||||||
integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==
|
integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==
|
||||||
|
|
||||||
|
winston-transport@^4.5.0:
|
||||||
|
version "4.5.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.5.0.tgz#6e7b0dd04d393171ed5e4e4905db265f7ab384fa"
|
||||||
|
integrity sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==
|
||||||
|
dependencies:
|
||||||
|
logform "^2.3.2"
|
||||||
|
readable-stream "^3.6.0"
|
||||||
|
triple-beam "^1.3.0"
|
||||||
|
|
||||||
|
winston@3.6.0:
|
||||||
|
version "3.6.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/winston/-/winston-3.6.0.tgz#be32587a099a292b88c49fac6fa529d478d93fb6"
|
||||||
|
integrity sha512-9j8T75p+bcN6D00sF/zjFVmPp+t8KMPB1MzbbzYjeN9VWxdsYnTB40TkbNUEXAmILEfChMvAMgidlX64OG3p6w==
|
||||||
|
dependencies:
|
||||||
|
"@dabh/diagnostics" "^2.0.2"
|
||||||
|
async "^3.2.3"
|
||||||
|
is-stream "^2.0.0"
|
||||||
|
logform "^2.4.0"
|
||||||
|
one-time "^1.0.0"
|
||||||
|
readable-stream "^3.4.0"
|
||||||
|
safe-stable-stringify "^2.3.1"
|
||||||
|
stack-trace "0.0.x"
|
||||||
|
triple-beam "^1.3.0"
|
||||||
|
winston-transport "^4.5.0"
|
||||||
|
|
||||||
word-wrap@^1.2.3, word-wrap@~1.2.3:
|
word-wrap@^1.2.3, word-wrap@~1.2.3:
|
||||||
version "1.2.3"
|
version "1.2.3"
|
||||||
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
|
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
|
||||||
|
Loading…
Reference in New Issue
Block a user