Se añaden cambios estructurales de la aplicacion

parent 0bcf6e79
const {parameters} = require("../config/parameters"); const config = require("config");
const express = require("express"); const express = require("express");
const basicAuth = require("express-basic-auth"); const basicAuth = require("express-basic-auth");
const userAgentValidator = require("express-useragent"); const userAgentValidator = require("express-useragent");
const server = express(); const server = express();
server.use((req, res, next) => {
console.log("Verificando Credenciales...");
next();
});
/** /**
* Autorizacion basica permitida para la api generada * MiddleWare Function : Autorizacion basica permitida para la api generada
*/ */
server.use(basicAuth({ server.use(
authorizer : myAuthorizer, basicAuth({
unauthorizedResponse: getUnauthorizedResponse authorizer: myAuthorizer,
})) unauthorizedResponse: getUnauthorizedResponse,
})
function myAuthorizer(username, password) { );
const userMatches = basicAuth.safeCompare(username, parameters.basicAuth.USER)
const passwordMatches = basicAuth.safeCompare(password, parameters.basicAuth.PASS) server.use((req, res, next) => {
console.log("Autentificado correctamente!...");
return userMatches & passwordMatches next();
} });
function getUnauthorizedResponse(req) {
return req.auth
? (`Las credenciales ${req.auth.user}:${req.auth.password} no son válidas.`)
: 'No se ingresaron credenciales'
}
/**
* Se activa la utilizacion de json en express para esta instancia(Response)
*/
server.use(express.json());
/**
* Se activa la utilizacion de useragent en express para esta instancia(Response)
*/
server.use(userAgentValidator.express());
function myAuthorizer(username, password) {
const userMatches = basicAuth.safeCompare(
username,
config.get("basicAuth.USER")
);
const passwordMatches = basicAuth.safeCompare(
password,
config.get("basicAuth.PASS")
);
return userMatches & passwordMatches;
}
function getUnauthorizedResponse(req) {
return req.auth
? `Las credenciales ${req.auth.user}:${req.auth.password} no son válidas.`
: "No se ingresaron credenciales";
}
/** /**
* Definicion de funciones asociadas a endpoints * MiddleWare Function: Verifica que el req.body sea json y lo trata como tal
*/ */
function listenPort (port) { server.use(express.json());
server.listen(port, () => {
console.log(`Escuchando en puerto ${port}...`); /**
}); * MiddleWare Function: verifica el contenido de req.body y lo convierte en formato json
} */
//server.use(express.urlencoded({extended : true}));
/**
* MiddleWare Function: permite consumir archivos fisicos de una carpeta del proyecto
*/
//server.use(express.static('public'));
/**
* Se activa la utilizacion de useragent en express para esta instancia(Response)
*/
server.use(userAgentValidator.express());
/**
* Definicion de funciones asociadas a endpoints
*/
function listenPort(port) {
server.listen(port, () => {
console.log(`Escuchando en puerto ${port}...`);
});
}
module.exports.server = server ; module.exports.server = server;
module.exports.listenPort = listenPort; module.exports.listenPort = listenPort;
\ No newline at end of file
/**
* Objeto de ayuda para respuestas http
*/
const constants = {
HTTP_STATUS_CODE : {
OK: 200,
BAD_REQUEST: 400,
NOT_FOUND: 404,
ERROR: 500,
},
/**
* Objeto de ayuda para secciones html campaña
*/
HTML_SECTIONS : {
HEAD: 1,
BODY: 2,
FOOTER: 3,
},
/**
* Objeto de ayuda para secciones html campaña
*/
ACTIVE_STATUS : {
ACTIVE: 1,
NON_ACTIVE: 2,
},
/**
* Objeto de ayuda para secciones html campaña
*/
DELETE_STATUS : {
DELETE: 1,
NON_DELETE: 0,
},
/**
* Objeto de ayuda para disposicion de contenido
*/
CONTENT_DEVICE_DISPOSITION : {
MOBILE: 1,
DESKTOP: 2,
BOTH: 3,
},
CONTENT_TYPE : {
TEXT: 1,
IMAGE: 2,
VIDEO: 3,
}
}
module.exports.constants = constants;
\ No newline at end of file
{
}
\ No newline at end of file
{
"constants": {
"HTTP_STATUS_CODE": {
"OK": 200,
"BAD_REQUEST": 400,
"NOT_FOUND": 404,
"ERROR": 500
},
"HTML_SECTIONS": {
"HEAD": 1,
"BODY": 2,
"FOOTER": 3
},
"ACTIVE_STATUS": {
"ACTIVE": 1,
"NON_ACTIVE": 2
},
"DELETE_STATUS": {
"DELETE": 1,
"NON_DELETE": 0
},
"CONTENT_DEVICE_DISPOSITION": {
"MOBILE": 1,
"DESKTOP": 2,
"BOTH": 3
},
"CONTENT_TYPE": {
"TEXT": 1,
"IMAGE": 2,
"VIDEO": 3
}
}
}
\ No newline at end of file
{
"name": "ENDPOINTS MCAFEE - DEV",
"version": "1.0.0",
"server":{
"PORT" : 5000
},
"database": {
"DBNAME": "mcafee_multiterritorios",
"DBHOST": "dbtesting.gearlabs.cl",
"DBPORT": 3306,
"DBUSER": "mcafee_admin_territorios",
"DBPSSW": "HSuwshhuw43&%1253"
},
"basicAuth": {
"USER": "userApi",
"PASS" : "34lq4od8usda"
}
}
\ No newline at end of file
const parameters = {
database: {
DBNAME: "mcafee_multiterritorios",
DBHOST: "dbtesting.gearlabs.cl",
DBPORT: 3306,
DBUSER: "mcafee_admin_territorios",
DBPSSW: "HSuwshhuw43&%1253",
},
basicAuth:{
USER : 'userApi',
PASS : '34lq4od8usda'
}
};
module.exports.parameters = parameters;
{
"name": "ENDPOINTS MCAFEE - PROD",
"version": "1.0.0",
"server":{
"PORT" : 5000
},
"database": {
"DBNAME": "mcafee_multiterritorios",
"DBHOST": "dbtesting.gearlabs.cl",
"DBPORT": 3306,
"DBUSER": "mcafee_admin_territorios",
"DBPSSW": "HSuwshhuw43&%1253"
},
"basicAuth": {
"USER": "userApi",
"PASS" : "34lq4od8usda"
}
}
\ No newline at end of file
const mysql = require('mysql'); const mysql = require('mysql');
const configuration = require('../config/parameters'); const config = require('config');
var con = mysql.createPool({ var con = mysql.createPool({
host: configuration.parameters.database.DBHOST, host: config.get("database.DBHOST"),
database: configuration.parameters.database.DBNAME, database: config.get("database.DBNAME"),
user: configuration.parameters.database.DBUSER, user: config.get("database.DBUSER"),
password: configuration.parameters.database.DBPSSW, password: config.get("database.DBPSSW"),
port: configuration.parameters.database.DBPORT port: config.get("database.DBPORT")
}); });
......
const config = require('config');
const szerCampaniaValidator = require("../validation_modules/validation"); const szerCampaniaValidator = require("../validation_modules/validation");
const { constants } = require("../config/constants");
const jsonResponse = {}; const jsonResponse = {};
/*dbConn.con.query("SELECT * from template_css_relacion where tem_id = 1 and dco_id = 1 and tcr_tipo = 1 and tcr_entorno = 1 limit 1", function (err, result) {
if (err) throw err;
//console.log(`Result: ${JSON.stringify(result)}`);
});*/
/** /**
* Definicion de clase para manejo de endpoints - Contenido * Definicion de clase para manejo de endpoints - Contenido
...@@ -22,7 +18,7 @@ class EndPointContenido { ...@@ -22,7 +18,7 @@ class EndPointContenido {
//Si falta el parametro uid, error 400 //Si falta el parametro uid, error 400
var { error } = validateCampania.validate(req.body); var { error } = validateCampania.validate(req.body);
if (error) { if (error) {
res.status(constants.HTTP_STATUS_CODE.BAD_REQUEST).json({"error" : error.details[0].message}); res.status(config.get("constants.HTTP_STATUS_CODE.BAD_REQUEST")).json({"error" : error.details[0].message});
return; return;
} }
...@@ -39,13 +35,13 @@ class EndPointContenido { ...@@ -39,13 +35,13 @@ class EndPointContenido {
//console.log("obteniendo campaña asociada..."); //console.log("obteniendo campaña asociada...");
const campania = await this.getCampaniaById([uid]); const campania = await this.getCampaniaById([uid]);
if(!campania || campania.length == 0) { if(!campania || campania.length == 0) {
res.status(constants.HTTP_STATUS_CODE.NOT_FOUND).json({"error" : `El uid ${uid} no esta asociado a ninguna campaña.`}); res.status(config.get("constants.HTTP_STATUS_CODE.NOT_FOUND")).json({"error" : `El uid ${uid} no esta asociado a ninguna campaña.`});
return; return;
} }
//console.log(campania[0].cam_id); //console.log(campania[0].cam_id);
const template = await this.getTemplateById([campania[0].tem_id]); const template = await this.getTemplateById([campania[0].tem_id]);
if(!template || template.length == 0) { if(!template || template.length == 0) {
res.status(constants.HTTP_STATUS_CODE.NOT_FOUND).json({"error" : `La campaña uid ${uid} no tiene asociado ninguna plantilla de diseño.`}); res.status(config.get("constants.HTTP_STATUS_CODE.NOT_FOUND")).json({"error" : `La campaña uid ${uid} no tiene asociado ninguna plantilla de diseño.`});
return; return;
} }
//console.log(template[0].tem_id); //console.log(template[0].tem_id);
...@@ -57,25 +53,25 @@ class EndPointContenido { ...@@ -57,25 +53,25 @@ class EndPointContenido {
jsonResponse.contenidoHead = await this.generateHtmlSection( jsonResponse.contenidoHead = await this.generateHtmlSection(
campania, campania,
template, template,
constants.HTML_SECTIONS.HEAD, config.get("constants.HTML_SECTIONS.HEAD"),
isMobile isMobile
); );
jsonResponse.contenidoBody = await this.generateHtmlSection( jsonResponse.contenidoBody = await this.generateHtmlSection(
campania, campania,
template, template,
constants.HTML_SECTIONS.BODY, config.get("constants.HTML_SECTIONS.BODY"),
isMobile isMobile
); );
jsonResponse.contenidoFooter = await this.generateHtmlSection( jsonResponse.contenidoFooter = await this.generateHtmlSection(
campania, campania,
template, template,
constants.HTML_SECTIONS.FOOTER, config.get("constants.HTML_SECTIONS.FOOTER"),
isMobile isMobile
); );
res.status(constants.HTTP_STATUS_CODE.OK).send(jsonResponse); res.status(config.get("constants.HTTP_STATUS_CODE.OK")).send(jsonResponse);
} }
async generateHtmlSection(campania, template, type, isMobile) { async generateHtmlSection(campania, template, type, isMobile) {
...@@ -94,17 +90,10 @@ class EndPointContenido { ...@@ -94,17 +90,10 @@ class EndPointContenido {
contenidos.forEach((contenido) => { contenidos.forEach((contenido) => {
let json = {}; let json = {};
var cantidadContenido = countContenido[0]["cantidad"]; var cantidadContenido = countContenido[0]["cantidad"];
console.log("seccion "+contenido.sec_id);
console.log("cantidad contenido "+cantidadContenido);
console.log("buffer de fila "+fila);
console.log(`fila actual ${contenido.cco_fila}...`);
if(fila !== contenido.cco_fila){ if(fila !== contenido.cco_fila){
if (fila != 0) html = html + "</div>"; if (fila != 0) html = html + "</div>";
console.log("generando nueva fila");
fila = contenido.cco_fila; fila = contenido.cco_fila;
html = html + `<div id='fila_id_${contenido.cco_fila}_${contenido.cco_id}' class='row'>`; html = html + `<div id='fila_id_${contenido.cco_fila}_${contenido.cco_id}' class='row'>`;
}else {
console.log("misma fila para la seccion");
} }
json.id = contenido.cco_id; json.id = contenido.cco_id;
...@@ -120,7 +109,6 @@ class EndPointContenido { ...@@ -120,7 +109,6 @@ class EndPointContenido {
if(posContenido == cantidadContenido){ if(posContenido == cantidadContenido){
console.log("cerrando fila actual...");
json.contenido = json.contenido + '</div>'; json.contenido = json.contenido + '</div>';
arrayJson[posContenido - 1] = json; arrayJson[posContenido - 1] = json;
} }
...@@ -140,8 +128,8 @@ class EndPointContenido { ...@@ -140,8 +128,8 @@ class EndPointContenido {
query = query =
query + query +
` WHERE cco_eliminado = ${constants.DELETE_STATUS.NON_DELETE} ` WHERE cco_eliminado = ${config.get("constants.DELETE_STATUS.NON_DELETE")}
and cco_estado = ${constants.ACTIVE_STATUS.ACTIVE} and cco_estado = ${config.get("constants.ACTIVE_STATUS.ACTIVE")}
and cam_id = ${campania[0].cam_id} and cam_id = ${campania[0].cam_id}
and sec_id = ${type} and sec_id = ${type}
`; `;
...@@ -149,11 +137,11 @@ class EndPointContenido { ...@@ -149,11 +137,11 @@ class EndPointContenido {
if (isMobile) if (isMobile)
query = query =
query + query +
` and dis_id in (${constants.CONTENT_DEVICE_DISPOSITION.MOBILE}, ${constants.CONTENT_DEVICE_DISPOSITION.BOTH}) `; ` and dis_id in (${config.get("constants.CONTENT_DEVICE_DISPOSITION.MOBILE")}, ${config.get("constants.CONTENT_DEVICE_DISPOSITION.BOTH")}) `;
else else
query = query =
query + query +
` and dis_id in (${constants.CONTENT_DEVICE_DISPOSITION.DESKTOP}, ${constants.CONTENT_DEVICE_DISPOSITION.BOTH}) `; ` and dis_id in (${config.get("constants.CONTENT_DEVICE_DISPOSITION.DESKTOP")}, ${config.get("constants.CONTENT_DEVICE_DISPOSITION.BOTH")}) `;
query = query + ` ORDER BY cco_fila ASC, cco_columna ASC;`; query = query + ` ORDER BY cco_fila ASC, cco_columna ASC;`;
//console.log(query); //console.log(query);
...@@ -165,19 +153,19 @@ class EndPointContenido { ...@@ -165,19 +153,19 @@ class EndPointContenido {
var html = ""; var html = "";
switch (contenido.cco_tipo) { switch (contenido.cco_tipo) {
case constants.CONTENT_TYPE.TEXT: case config.get("constants.CONTENT_TYPE.TEXT"):
html = ""; html = "";
html = this.getColumnaByDisposicion(contenido.cco_disposicion_nombre, contenido.cco_columna); html = this.getColumnaByDisposicion(contenido.cco_disposicion_nombre, contenido.cco_columna);
html = html + `<div id="texto_fil_${contenido.cco_fila}_con_${contenido.cco_id}" class="${contenido.cco_clase_css}" >${contenido.cco_contenido}</div>`; html = html + `<div id="texto_fil_${contenido.cco_fila}_con_${contenido.cco_id}" class="${contenido.cco_clase_css}" >${contenido.cco_contenido}</div>`;
html = html + '</div>'; html = html + '</div>';
break; break;
case constants.CONTENT_TYPE.IMAGE: case config.get("constants.CONTENT_TYPE.IMAGE"):
html = ""; html = "";
html = this.getColumnaByDisposicion(contenido.cco_disposicion_nombre, contenido.cco_columna); html = this.getColumnaByDisposicion(contenido.cco_disposicion_nombre, contenido.cco_columna);
html = html + `<img id="imagen_fil_${contenido.cco_fila}_con_${contenido.cco_id}" class="${contenido.cco_clase_css}" src="${contenido.cco_contenido}" />`; html = html + `<img id="imagen_fil_${contenido.cco_fila}_con_${contenido.cco_id}" class="${contenido.cco_clase_css}" src="${contenido.cco_contenido}" />`;
html = html + '</div>'; html = html + '</div>';
break; break;
case constants.CONTENT_TYPE.VIDEO: case config.get("constants.CONTENT_TYPE.VIDEO"):
html = ""; html = "";
html = this.getColumnaByDisposicion(contenido.cco_disposicion_nombre, contenido.cco_columna); html = this.getColumnaByDisposicion(contenido.cco_disposicion_nombre, contenido.cco_columna);
html = html + `<div id="video_fil_${contenido.cco_fila}_con_${contenido.cco_id}" class="${contenido.cco_clase_css} embed-responsive embed-responsive-16by9"><iframe class="embed-responsive-item" src="${contenido.cco_contenido}"></iframe></div>`; html = html + `<div id="video_fil_${contenido.cco_fila}_con_${contenido.cco_id}" class="${contenido.cco_clase_css} embed-responsive embed-responsive-16by9"><iframe class="embed-responsive-item" src="${contenido.cco_contenido}"></iframe></div>`;
......
const config = require('config');
const serverApp = require('./appexpress_modules/app'); const serverApp = require('./appexpress_modules/app');
const endPoints = require('./endpoints_modules/endpoints'); const endPoints = require('./endpoints_modules/endpoints');
const dbConn = require('./database_modules/database'); const dbConn = require('./database_modules/database');
const log = require('./logger_modules/logger');
/*Trick para problema con eventListeners maximos*/ /*Trick para problema con eventListeners maximos*/
require('events').EventEmitter.prototype._maxListeners = 100; require('events').EventEmitter.prototype._maxListeners = 100;
/** /**
* Se activa la conexion a la base de datos en modalidad pool * Se activa la conexion a la base de datos en modalidad pool
**/ **/
console.log(`Aplicacion : ${config.get("name")} `);
dbConn.con.getConnection((err, connection) => { dbConn.con.getConnection((err, connection) => {
if(err) { if(err) {
console.log("Ha ocurrido un error con la conexion..."); log.logger.error(`Error con la conexion a la base de datos : ${err}`);
throw err; throw err;
}else console.log("Conectado!...") ; }else console.log("Conectado!...") ;
...@@ -22,7 +25,7 @@ dbConn.con.getConnection((err, connection) => { ...@@ -22,7 +25,7 @@ dbConn.con.getConnection((err, connection) => {
* Solo en ambientes de desarrollo locales se coloca el puerto directamente al iniciar la aplicacion * Solo en ambientes de desarrollo locales se coloca el puerto directamente al iniciar la aplicacion
* en servidores, se debe obtener del objeto global "process" * en servidores, se debe obtener del objeto global "process"
*/ */
const port = process.env.PORT || 5000; const port = process.env.PORT || config.get("server.PORT");
serverApp.listenPort(port); serverApp.listenPort(port);
......
/**
* Configurations of logger.
*/
const appRoot = require('app-root-path');
const winston = require("winston");
var options = {
error: { /*Se almacena registro en archivo de error*/
level: 'error',
name: 'error-file',
filename: `${appRoot}/logs/error.log`,
handleExceptions: true,
json: true,
maxsize: 5242880, // 5MB
maxFiles: 100,
colorize: true,
datePattern: "yyyy-MM-dd-",
prepend: true,
},
info: {/*Se almacena registro en archivo de aplicacion*/
level: 'info',
name: 'success-file',
filename: `${appRoot}/logs/app.log`,
handleExceptions: true,
json: true,
maxsize: 5242880, // 5MB
maxFiles: 100,
colorize: true,
datePattern: "yyyy-MM-dd-",
prepend: true,
},
console: {/*Log que va directo a la consola*/
level: 'debug',
handleExceptions: true,
json: false,
colorize: true,
},
};
const consoleConfig = [
new winston.transports.Console(options.console),
new winston.transports.File(options.error),
new winston.transports.File(options.info),
];
const createLogger = winston.createLogger({
transports: consoleConfig,
exitOnError: false, // do not exit on handled exceptions
});
module.exports.logger = createLogger;
...@@ -4,6 +4,16 @@ ...@@ -4,6 +4,16 @@
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
"@dabh/diagnostics": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz",
"integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==",
"requires": {
"colorspace": "1.1.x",
"enabled": "2.0.x",
"kuler": "^2.0.0"
}
},
"@hapi/address": { "@hapi/address": {
"version": "4.1.0", "version": "4.1.0",
"resolved": "https://registry.npmjs.org/@hapi/address/-/address-4.1.0.tgz", "resolved": "https://registry.npmjs.org/@hapi/address/-/address-4.1.0.tgz",
...@@ -44,11 +54,26 @@ ...@@ -44,11 +54,26 @@
"negotiator": "0.6.2" "negotiator": "0.6.2"
} }
}, },
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
},
"app-root-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz",
"integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw=="
},
"array-flatten": { "array-flatten": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
"integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
}, },
"async": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
"integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw=="
},
"basic-auth": { "basic-auth": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
...@@ -93,6 +118,93 @@ ...@@ -93,6 +118,93 @@
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
"integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
}, },
"cli-color": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz",
"integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==",
"requires": {
"ansi-regex": "^2.1.1",
"d": "1",
"es5-ext": "^0.10.46",
"es6-iterator": "^2.0.3",
"memoizee": "^0.4.14",
"timers-ext": "^0.1.5"
}
},
"cli-sprintf-format": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/cli-sprintf-format/-/cli-sprintf-format-1.1.0.tgz",
"integrity": "sha512-t3LcCdPvrypZovStadWdRS4a186gsq9aoHJYTIer55VY20YdVjGVHDV4uPWcWCXTw1tPjfwlRGE7zKMWJ663Sw==",
"requires": {
"cli-color": "^1.3",
"es5-ext": "^0.10.46",
"sprintf-kit": "2",
"supports-color": "^5.5"
},
"dependencies": {
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"requires": {
"has-flag": "^3.0.0"
}
}
}
},
"color": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz",
"integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==",
"requires": {
"color-convert": "^1.9.1",
"color-string": "^1.5.2"
}
},
"color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"requires": {
"color-name": "1.1.3"
}
},
"color-name": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
},
"color-string": {
"version": "1.5.4",
"resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz",
"integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==",
"requires": {
"color-name": "^1.0.0",
"simple-swizzle": "^0.2.2"
}
},
"colors": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
"integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA=="
},
"colorspace": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz",
"integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==",
"requires": {
"color": "3.0.x",
"text-hex": "1.0.x"
}
},
"config": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/config/-/config-3.3.2.tgz",
"integrity": "sha512-NlGfBn2565YA44Irn7GV5KHlIGC3KJbf0062/zW5ddP9VXIuRj0m7HVyFAWvMZvaHPEglyGfwmevGz3KosIpCg==",
"requires": {
"json5": "^2.1.1"
}
},
"content-disposition": { "content-disposition": {
"version": "0.5.3", "version": "0.5.3",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
...@@ -121,6 +233,15 @@ ...@@ -121,6 +233,15 @@
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
}, },
"d": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
"integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
"requires": {
"es5-ext": "^0.10.50",
"type": "^1.0.1"
}
},
"debug": { "debug": {
"version": "2.6.9", "version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
...@@ -144,16 +265,70 @@ ...@@ -144,16 +265,70 @@
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
}, },
"duration": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/duration/-/duration-0.2.2.tgz",
"integrity": "sha512-06kgtea+bGreF5eKYgI/36A6pLXggY7oR4p1pq4SmdFBn1ReOL5D8RhG64VrqfTTKNucqqtBAwEj8aB88mcqrg==",
"requires": {
"d": "1",
"es5-ext": "~0.10.46"
}
},
"ee-first": { "ee-first": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
}, },
"enabled": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz",
"integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ=="
},
"encodeurl": { "encodeurl": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
}, },
"es5-ext": {
"version": "0.10.53",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz",
"integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==",
"requires": {
"es6-iterator": "~2.0.3",
"es6-symbol": "~3.1.3",
"next-tick": "~1.0.0"
}
},
"es6-iterator": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
"integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
"requires": {
"d": "1",
"es5-ext": "^0.10.35",
"es6-symbol": "^3.1.1"
}
},
"es6-symbol": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
"integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
"requires": {
"d": "^1.0.1",
"ext": "^1.1.2"
}
},
"es6-weak-map": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
"integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
"requires": {
"d": "1",
"es5-ext": "^0.10.46",
"es6-iterator": "^2.0.3",
"es6-symbol": "^3.1.1"
}
},
"escape-html": { "escape-html": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
...@@ -164,6 +339,15 @@ ...@@ -164,6 +339,15 @@
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
}, },
"event-emitter": {
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
"integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
"requires": {
"d": "1",
"es5-ext": "~0.10.14"
}
},
"express": { "express": {
"version": "4.17.1", "version": "4.17.1",
"resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
...@@ -214,6 +398,39 @@ ...@@ -214,6 +398,39 @@
"resolved": "https://registry.npmjs.org/express-useragent/-/express-useragent-1.0.15.tgz", "resolved": "https://registry.npmjs.org/express-useragent/-/express-useragent-1.0.15.tgz",
"integrity": "sha512-eq5xMiYCYwFPoekffMjvEIk+NWdlQY9Y38OsTyl13IvA728vKT+q/CSERYWzcw93HGBJcIqMIsZC5CZGARPVdg==" "integrity": "sha512-eq5xMiYCYwFPoekffMjvEIk+NWdlQY9Y38OsTyl13IvA728vKT+q/CSERYWzcw93HGBJcIqMIsZC5CZGARPVdg=="
}, },
"ext": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz",
"integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==",
"requires": {
"type": "^2.0.0"
},
"dependencies": {
"type": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/type/-/type-2.1.0.tgz",
"integrity": "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA=="
}
}
},
"fast-safe-stringify": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz",
"integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA=="
},
"fecha": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz",
"integrity": "sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg=="
},
"file-stream-rotator": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.5.7.tgz",
"integrity": "sha512-VYb3HZ/GiAGUCrfeakO8Mp54YGswNUHvL7P09WQcXAJNSj3iQ5QraYSp3cIn1MUyw6uzfgN/EFOarCNa4JvUHQ==",
"requires": {
"moment": "^2.11.2"
}
},
"finalhandler": { "finalhandler": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
...@@ -228,6 +445,11 @@ ...@@ -228,6 +445,11 @@
"unpipe": "~1.0.0" "unpipe": "~1.0.0"
} }
}, },
"fn.name": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz",
"integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="
},
"forwarded": { "forwarded": {
"version": "0.1.2", "version": "0.1.2",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
...@@ -238,6 +460,26 @@ ...@@ -238,6 +460,26 @@
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
}, },
"has-ansi": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-3.0.0.tgz",
"integrity": "sha1-Ngd+8dFfMzSEqn+neihgbxxlWzc=",
"requires": {
"ansi-regex": "^3.0.0"
},
"dependencies": {
"ansi-regex": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
}
}
},
"has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
},
"http-errors": { "http-errors": {
"version": "1.7.2", "version": "1.7.2",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
...@@ -268,6 +510,21 @@ ...@@ -268,6 +510,21 @@
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
}, },
"is-arrayish": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
"integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
},
"is-promise": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
"integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ=="
},
"is-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
"integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw=="
},
"isarray": { "isarray": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
...@@ -285,16 +542,98 @@ ...@@ -285,16 +542,98 @@
"@hapi/topo": "^5.0.0" "@hapi/topo": "^5.0.0"
} }
}, },
"json5": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
"integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
"requires": {
"minimist": "^1.2.5"
}
},
"kareem": { "kareem": {
"version": "2.3.1", "version": "2.3.1",
"resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.1.tgz", "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.1.tgz",
"integrity": "sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw==" "integrity": "sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw=="
}, },
"kuler": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz",
"integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A=="
},
"log": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/log/-/log-6.0.0.tgz",
"integrity": "sha512-sxChESNYJ/EcQv8C7xpmxhtTOngoXuMEqGDAkhXBEmt3MAzM3SM/TmIBOqnMEVdrOv1+VgZoYbo6U2GemQiU4g==",
"requires": {
"d": "^1.0.0",
"duration": "^0.2.2",
"es5-ext": "^0.10.49",
"event-emitter": "^0.3.5",
"sprintf-kit": "^2.0.0",
"type": "^1.0.1"
}
},
"log-node": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/log-node/-/log-node-7.0.0.tgz",
"integrity": "sha512-/P5eDVV2AXVmXq3TTKOsAyb3Xcb/iVBuxmWW8HisgmiYKuah05/je7jbbSfVdT9UPxGLANbGsbthDTVHMi/3Eg==",
"requires": {
"cli-color": "^1.4.0",
"cli-sprintf-format": "^1.1.0",
"d": "^1.0.0",
"es5-ext": "^0.10.49",
"has-ansi": "^3.0.0",
"sprintf-kit": "^2.0.0",
"supports-color": "^6.1.0"
}
},
"logform": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/logform/-/logform-2.2.0.tgz",
"integrity": "sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg==",
"requires": {
"colors": "^1.2.1",
"fast-safe-stringify": "^2.0.4",
"fecha": "^4.2.0",
"ms": "^2.1.1",
"triple-beam": "^1.3.0"
},
"dependencies": {
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
"lru-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz",
"integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=",
"requires": {
"es5-ext": "~0.10.2"
}
},
"media-typer": { "media-typer": {
"version": "0.3.0", "version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
}, },
"memoizee": {
"version": "0.4.14",
"resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.14.tgz",
"integrity": "sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==",
"requires": {
"d": "1",
"es5-ext": "^0.10.45",
"es6-weak-map": "^2.0.2",
"event-emitter": "^0.3.5",
"is-promise": "^2.1",
"lru-queue": "0.1",
"next-tick": "1",
"timers-ext": "^0.1.5"
}
},
"memory-pager": { "memory-pager": {
"version": "1.5.0", "version": "1.5.0",
"resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
...@@ -329,6 +668,16 @@ ...@@ -329,6 +668,16 @@
"mime-db": "1.44.0" "mime-db": "1.44.0"
} }
}, },
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
},
"moment": {
"version": "2.29.1",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
"integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ=="
},
"mongoose": { "mongoose": {
"version": "5.10.9", "version": "5.10.9",
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.10.9.tgz", "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.10.9.tgz",
...@@ -435,6 +784,16 @@ ...@@ -435,6 +784,16 @@
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
"integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
}, },
"next-tick": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
"integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
},
"object-hash": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.0.3.tgz",
"integrity": "sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg=="
},
"on-finished": { "on-finished": {
"version": "2.3.0", "version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
...@@ -443,6 +802,14 @@ ...@@ -443,6 +802,14 @@
"ee-first": "1.1.1" "ee-first": "1.1.1"
} }
}, },
"one-time": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz",
"integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==",
"requires": {
"fn.name": "1.x.x"
}
},
"parseurl": { "parseurl": {
"version": "1.3.3", "version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
...@@ -593,6 +960,14 @@ ...@@ -593,6 +960,14 @@
"resolved": "https://registry.npmjs.org/sift/-/sift-7.0.1.tgz", "resolved": "https://registry.npmjs.org/sift/-/sift-7.0.1.tgz",
"integrity": "sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g==" "integrity": "sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g=="
}, },
"simple-swizzle": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
"integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
"requires": {
"is-arrayish": "^0.3.1"
}
},
"sliced": { "sliced": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz",
...@@ -607,11 +982,24 @@ ...@@ -607,11 +982,24 @@
"memory-pager": "^1.0.2" "memory-pager": "^1.0.2"
} }
}, },
"sprintf-kit": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/sprintf-kit/-/sprintf-kit-2.0.0.tgz",
"integrity": "sha512-/0d2YTn8ZFVpIPAU230S9ZLF8WDkSSRWvh/UOLM7zzvkCchum1TtouRgyV8OfgOaYilSGU4lSSqzwBXJVlAwUw==",
"requires": {
"es5-ext": "^0.10.46"
}
},
"sqlstring": { "sqlstring": {
"version": "2.3.1", "version": "2.3.1",
"resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz", "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
"integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A=" "integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A="
}, },
"stack-trace": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
"integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA="
},
"statuses": { "statuses": {
"version": "1.5.0", "version": "1.5.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
...@@ -625,11 +1013,43 @@ ...@@ -625,11 +1013,43 @@
"safe-buffer": "~5.1.0" "safe-buffer": "~5.1.0"
} }
}, },
"supports-color": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
"integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
"requires": {
"has-flag": "^3.0.0"
}
},
"text-hex": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
"integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg=="
},
"timers-ext": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz",
"integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==",
"requires": {
"es5-ext": "~0.10.46",
"next-tick": "1"
}
},
"toidentifier": { "toidentifier": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
"integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
}, },
"triple-beam": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
"integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw=="
},
"type": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
"integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="
},
"type-is": { "type-is": {
"version": "1.6.18", "version": "1.6.18",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
...@@ -663,6 +1083,54 @@ ...@@ -663,6 +1083,54 @@
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
},
"winston": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz",
"integrity": "sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==",
"requires": {
"@dabh/diagnostics": "^2.0.2",
"async": "^3.1.0",
"is-stream": "^2.0.0",
"logform": "^2.2.0",
"one-time": "^1.0.0",
"readable-stream": "^3.4.0",
"stack-trace": "0.0.x",
"triple-beam": "^1.3.0",
"winston-transport": "^4.4.0"
},
"dependencies": {
"readable-stream": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
"requires": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
}
}
}
},
"winston-daily-rotate-file": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-4.5.0.tgz",
"integrity": "sha512-/HqeWiU48dzGqcrABRlxYWVMdL6l3uKCtFSJyrqK+E2rLnSFNsgYpvwx15EgTitBLNzH69lQd/+z2ASryV2aqw==",
"requires": {
"file-stream-rotator": "^0.5.7",
"object-hash": "^2.0.1",
"triple-beam": "^1.3.0",
"winston-transport": "^4.2.0"
}
},
"winston-transport": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz",
"integrity": "sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==",
"requires": {
"readable-stream": "^2.3.7",
"triple-beam": "^1.2.0"
}
} }
} }
} }
...@@ -11,13 +11,19 @@ ...@@ -11,13 +11,19 @@
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"app-root-path": "^3.0.0",
"basic-auth": "^2.0.1", "basic-auth": "^2.0.1",
"config": "^3.3.2",
"express": "^4.17.1", "express": "^4.17.1",
"express-basic-auth": "^1.2.0", "express-basic-auth": "^1.2.0",
"express-useragent": "^1.0.15", "express-useragent": "^1.0.15",
"joi": "^17.2.1", "joi": "^17.2.1",
"log": "^6.0.0",
"log-node": "^7.0.0",
"mongoose": "^5.10.9", "mongoose": "^5.10.9",
"mysql": "^2.18.1", "mysql": "^2.18.1",
"underscore": "^1.11.0" "underscore": "^1.11.0",
"winston": "^3.3.3",
"winston-daily-rotate-file": "^4.5.0"
} }
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment