#5878 - FiscalData validations #1851
|
@ -203,11 +203,19 @@
|
||||||
"keepPrice": "keepPrice",
|
"keepPrice": "keepPrice",
|
||||||
"Cannot past travels with entries": "Cannot past travels with entries",
|
"Cannot past travels with entries": "Cannot past travels with entries",
|
||||||
"It was not able to remove the next expeditions:": "It was not able to remove the next expeditions: {{expeditions}}",
|
"It was not able to remove the next expeditions:": "It was not able to remove the next expeditions: {{expeditions}}",
|
||||||
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
|
"Try again": "Try again",
|
||||||
|
>>>>>>> 5918c14d41259e9989b63c8a36f0e23612cf5d69
|
||||||
"Incorrect pin": "Incorrect pin.",
|
"Incorrect pin": "Incorrect pin.",
|
||||||
"The notification subscription of this worker cant be modified": "The notification subscription of this worker cant be modified",
|
"The notification subscription of this worker cant be modified": "The notification subscription of this worker cant be modified",
|
||||||
"Name should be uppercase": "Name should be uppercase",
|
"Name should be uppercase": "Name should be uppercase",
|
||||||
"You cannot update these fields": "You cannot update these fields",
|
"You cannot update these fields": "You cannot update these fields",
|
||||||
|
<<<<<<< HEAD
|
||||||
"CountryFK cannot be empty": "Country cannot be empty",
|
"CountryFK cannot be empty": "Country cannot be empty",
|
||||||
"You are not allowed to modify the alias": "You are not allowed to modify the alias",
|
"You are not allowed to modify the alias": "You are not allowed to modify the alias",
|
||||||
"You already have the mailAlias": "You already have the mailAlias"
|
"You already have the mailAlias": "You already have the mailAlias"
|
||||||
|
=======
|
||||||
|
"CountryFK cannot be empty": "Country cannot be empty"
|
||||||
|
>>>>>>> 5918c14d41259e9989b63c8a36f0e23612cf5d69
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
{
|
{
|
||||||
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
|
"postalcode": "Código postal",
|
||||||
|
>>>>>>> 5918c14d41259e9989b63c8a36f0e23612cf5d69
|
||||||
"Phone format is invalid": "El formato del teléfono no es correcto",
|
"Phone format is invalid": "El formato del teléfono no es correcto",
|
||||||
"You are not allowed to change the credit": "No tienes privilegios para modificar el crédito",
|
"You are not allowed to change the credit": "No tienes privilegios para modificar el crédito",
|
||||||
"Unable to mark the equivalence surcharge": "No se puede marcar el recargo de equivalencia",
|
"Unable to mark the equivalence surcharge": "No se puede marcar el recargo de equivalencia",
|
||||||
|
@ -139,7 +143,11 @@
|
||||||
"Claim state has changed to": "Se ha cambiado el estado de la reclamación [({{claimId}})]({{{claimUrl}}}) del cliente *{{clientName}}* a *{{newState}}*",
|
"Claim state has changed to": "Se ha cambiado el estado de la reclamación [({{claimId}})]({{{claimUrl}}}) del cliente *{{clientName}}* a *{{newState}}*",
|
||||||
"Client checked as validated despite of duplication": "Cliente comprobado a pesar de que existe el cliente id {{clientId}}",
|
"Client checked as validated despite of duplication": "Cliente comprobado a pesar de que existe el cliente id {{clientId}}",
|
||||||
"ORDER_ROW_UNAVAILABLE": "No hay disponibilidad de este producto",
|
"ORDER_ROW_UNAVAILABLE": "No hay disponibilidad de este producto",
|
||||||
|
<<<<<<< HEAD
|
||||||
"Distance must be lesser than 4000": "La distancia debe ser inferior a 4000",
|
"Distance must be lesser than 4000": "La distancia debe ser inferior a 4000",
|
||||||
|
=======
|
||||||
|
"Distance must be lesser than 1000": "La distancia debe ser inferior a 1000",
|
||||||
|
>>>>>>> 5918c14d41259e9989b63c8a36f0e23612cf5d69
|
||||||
"This ticket is deleted": "Este ticket está eliminado",
|
"This ticket is deleted": "Este ticket está eliminado",
|
||||||
"Unable to clone this travel": "No ha sido posible clonar este travel",
|
"Unable to clone this travel": "No ha sido posible clonar este travel",
|
||||||
"This thermograph id already exists": "La id del termógrafo ya existe",
|
"This thermograph id already exists": "La id del termógrafo ya existe",
|
||||||
|
@ -333,16 +341,28 @@
|
||||||
"It was not able to remove the next expeditions:": "No se pudo eliminar las siguientes expediciones: {{expeditions}}",
|
"It was not able to remove the next expeditions:": "No se pudo eliminar las siguientes expediciones: {{expeditions}}",
|
||||||
"This claim has been updated": "La reclamación con Id: {{claimId}}, ha sido actualizada",
|
"This claim has been updated": "La reclamación con Id: {{claimId}}, ha sido actualizada",
|
||||||
"This user does not have an assigned tablet": "Este usuario no tiene tablet asignada",
|
"This user does not have an assigned tablet": "Este usuario no tiene tablet asignada",
|
||||||
|
<<<<<<< HEAD
|
||||||
"Incorrect pin": "Pin incorrecto",
|
"Incorrect pin": "Pin incorrecto",
|
||||||
"You already have the mailAlias": "Ya tienes este alias de correo",
|
"You already have the mailAlias": "Ya tienes este alias de correo",
|
||||||
"The alias cant be modified": "Este alias de correo no puede ser modificado",
|
"The alias cant be modified": "Este alias de correo no puede ser modificado",
|
||||||
|
=======
|
||||||
|
"Field are invalid": "El campo '{{tag}}' no es válido",
|
||||||
|
"Incorrect pin": "Pin incorrecto.",
|
||||||
|
"You already have the mailAlias": "Ya tienes este alias de correo",
|
||||||
|
"The alias cant be modified": "Este alias de correo no puede ser modificado",
|
||||||
|
"No tickets to invoice": "No hay tickets para facturar",
|
||||||
|
>>>>>>> 5918c14d41259e9989b63c8a36f0e23612cf5d69
|
||||||
"This ticket already has a cmr saved": "Este ticket ya tiene un cmr guardado",
|
"This ticket already has a cmr saved": "Este ticket ya tiene un cmr guardado",
|
||||||
"Name should be uppercase": "El nombre debe ir en mayúscula",
|
"Name should be uppercase": "El nombre debe ir en mayúscula",
|
||||||
"Bank entity must be specified": "La entidad bancaria es obligatoria",
|
"Bank entity must be specified": "La entidad bancaria es obligatoria",
|
||||||
"An email is necessary": "Es necesario un email",
|
"An email is necessary": "Es necesario un email",
|
||||||
"You cannot update these fields": "No puedes actualizar estos campos",
|
"You cannot update these fields": "No puedes actualizar estos campos",
|
||||||
"CountryFK cannot be empty": "El país no puede estar vacío",
|
"CountryFK cannot be empty": "El país no puede estar vacío",
|
||||||
|
<<<<<<< HEAD
|
||||||
"Cmr file does not exist": "El archivo del cmr no existe",
|
"Cmr file does not exist": "El archivo del cmr no existe",
|
||||||
"You are not allowed to modify the alias": "No estás autorizado a modificar el alias",
|
"You are not allowed to modify the alias": "No estás autorizado a modificar el alias",
|
||||||
"No tickets to invoice": "No hay tickets para facturar"
|
"No tickets to invoice": "No hay tickets para facturar"
|
||||||
|
=======
|
||||||
|
"Cmr file does not exist": "El archivo del cmr no existe"
|
||||||
|
>>>>>>> 5918c14d41259e9989b63c8a36f0e23612cf5d69
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,14 @@
|
||||||
const SalixError = require('../../util/salixError');
|
const SalixError = require('vn-loopback/util/salixError');
|
||||||
const UserError = require('../../util/user-error');
|
const UserError = require('vn-loopback/util/user-error');
|
||||||
const logToConsole = require('strong-error-handler/lib/logger');
|
const logToConsole = require('strong-error-handler/lib/logger');
|
||||||
|
const valueIsNot = require('./value-is-not');
|
||||||
|
const valueInvalid = require('./value-invalid');
|
||||||
|
const mapMethods = require('vn-loopback/util/map-methods');
|
||||||
|
const validations = [
|
||||||
|
valueIsNot,
|
||||||
|
valueInvalid,
|
||||||
|
mapMethods
|
||||||
|
];
|
||||||
module.exports = function() {
|
module.exports = function() {
|
||||||
return function(err, req, res, next) {
|
return function(err, req, res, next) {
|
||||||
// Thrown user errors
|
// Thrown user errors
|
||||||
|
@ -11,7 +18,19 @@ module.exports = function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validation errors
|
// Validation errors
|
||||||
if (err.statusCode == 422) {
|
if ([400, 422].includes(err.statusCode)) {
|
||||||
|
try {
|
||||||
|
validations.forEach(validation => {
|
||||||
|
if (validation.validation(err.message)) {
|
||||||
|
const error = validation.handleError(req, err);
|
||||||
|
if (error)
|
||||||
|
err.message = validation.message(error, req);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return next(err);
|
||||||
|
} catch (e) {
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
let code;
|
let code;
|
||||||
let {messages} = err.details;
|
let {messages} = err.details;
|
||||||
|
@ -26,7 +45,6 @@ module.exports = function() {
|
||||||
return next(new UserError(req.__(err.sqlMessage)));
|
return next(new UserError(req.__(err.sqlMessage)));
|
||||||
|
|
||||||
// Logs error to console
|
// Logs error to console
|
||||||
|
|
||||||
let env = process.env.NODE_ENV;
|
let env = process.env.NODE_ENV;
|
||||||
let useCustomLogging = env && env != 'development' &&
|
let useCustomLogging = env && env != 'development' &&
|
||||||
(!err.statusCode || err.statusCode >= 500);
|
(!err.statusCode || err.statusCode >= 500);
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
const valueIsNot = require('../value-is-not');
|
||||||
|
|
||||||
|
fdescribe('Value is not', () => {
|
||||||
|
const i18n = require('i18n');
|
||||||
|
|
||||||
|
const userId = 9;
|
||||||
|
const ctx = {
|
||||||
|
req: {
|
||||||
|
|
||||||
|
accessToken: {userId: userId},
|
||||||
|
headers: {origin: 'http://localhost:5000'},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
fit('UpdateFiscalData endpoint', () => {
|
||||||
|
let messageError = 'Value is not number';
|
||||||
|
const tag = 'provinceFk';
|
||||||
|
try {
|
||||||
|
expect(valueIsNot.validation(messageError)).toBeTrue();
|
||||||
|
const data = {
|
||||||
|
method: 'PATCH',
|
||||||
|
originalUrl: '/api/supplier/updateFiscalData',
|
||||||
|
body: {
|
||||||
|
[tag]: null
|
||||||
|
},
|
||||||
|
__: i18n
|
||||||
|
};
|
||||||
|
const result = valueIsNot.handleError(data);
|
||||||
|
|
||||||
|
expect(result.tag).toEqual(tag);
|
||||||
|
expect(valueIsNot.message(result, i18n)).toEqual('El campo \'provincia\' no es válido');
|
||||||
|
} catch (error) {
|
||||||
|
expect(error).toBeDefined();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('OsTicket', () => {
|
||||||
|
let messageError = 'Value is not object';
|
||||||
|
const tag = 'additionalData';
|
||||||
|
it('sendToSupport endpoint', () => {
|
||||||
|
try {
|
||||||
|
expect(valueIsNot.validation(messageError)).toBeTrue();
|
||||||
|
const data = {
|
||||||
|
method: 'POST',
|
||||||
|
originalUrl: '/api/OsTickets/send-to-support?access_token=DEFAULT_TOKEN',
|
||||||
|
body: {
|
||||||
|
[tag]: '{ \'foo\': 42 }'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const result = valueIsNot.handleError(data);
|
||||||
|
|
||||||
|
expect(result.tag).toEqual(tag);
|
||||||
|
expect(valueIsNot.message(tag, i18n)).toEqual(`El campo '${tag}' no es válido`);
|
||||||
|
} catch (error) {
|
||||||
|
expect(error).toBeDefined();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
|
@ -0,0 +1,58 @@
|
||||||
|
const SLASH = '/';
|
||||||
|
const $t = require('i18n');
|
||||||
|
const {models} = require('vn-loopback/server/server');
|
||||||
|
const mapLocale = require('../../util/map-locales');
|
||||||
|
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
validation: message => String(message).includes('is not valid'),
|
||||||
|
message: ({tagValue}, {__: $t}) =>
|
||||||
|
$t('Field are invalid', {tag: tagValue}),
|
||||||
|
handleError: ({method: verb, originalUrl, body}, err) => {
|
||||||
|
let tag = null;
|
||||||
|
let module = null;
|
||||||
|
let moduleOriginal = null;
|
||||||
|
let path = null;
|
||||||
|
try {
|
||||||
|
if (originalUrl.includes('?'))
|
||||||
|
originalUrl = originalUrl.split('?')[0];
|
||||||
|
|
||||||
|
originalUrl = originalUrl.split('api/')[1];
|
||||||
|
[module, ...path] = originalUrl.split(SLASH);
|
||||||
|
|
||||||
|
moduleOriginal = module;
|
||||||
|
let model = models[module];
|
||||||
|
// Capitalize
|
||||||
|
if (!model) {
|
||||||
|
module = module.charAt(0).toUpperCase() + module.slice(1);
|
||||||
|
model = models[module];
|
||||||
|
}
|
||||||
|
// Singular
|
||||||
|
if (!model) {
|
||||||
|
module = module.substring(0, module.length - 1);
|
||||||
|
model = models[module];
|
||||||
|
}
|
||||||
|
if (!model) throw new Error('No matching model found');
|
||||||
|
tag = Object.keys(err.details.codes)[0];
|
||||||
|
if (tag) {
|
||||||
|
let tagValue = mapLocale[$t.getLocale()][tag];
|
||||||
|
if (!tagValue) tagValue = tag;
|
||||||
|
return {tag, tagValue};
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
throw new Error(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function isJsonString(str) {
|
||||||
|
try {
|
||||||
|
let json = JSON.parse(str);
|
||||||
|
return (typeof json === 'object');
|
||||||
|
} catch (e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,106 @@
|
||||||
|
const SLASH = '/';
|
||||||
|
const {models} = require('vn-loopback/server/server');
|
||||||
|
const $t = require('i18n');
|
||||||
|
const mapLocale = require('../../util/map-locales');
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
validation: message => String(message).startsWith('Value is not'),
|
||||||
|
message: ({tagValue}, {__: $t}) =>
|
||||||
|
$t('Field are invalid', {tag: tagValue}),
|
||||||
|
handleError: ({method: verb, originalUrl, body}) => {
|
||||||
|
let tag = null;
|
||||||
|
let module = null;
|
||||||
|
let path = null;
|
||||||
|
let hasId = false;
|
||||||
|
try {
|
||||||
|
if (originalUrl.includes('?'))
|
||||||
|
originalUrl = originalUrl.split('?')[0];
|
||||||
|
|
||||||
|
originalUrl = originalUrl.split('api/')[1];
|
||||||
|
[module, ...path] = originalUrl.split(SLASH);
|
||||||
|
hasId = path.length > 1;
|
||||||
|
|
||||||
|
let model = models[module];
|
||||||
|
// Capitalize
|
||||||
|
if (!model) {
|
||||||
|
module = module.charAt(0).toUpperCase() + module.slice(1);
|
||||||
|
model = models[module];
|
||||||
|
}
|
||||||
|
// Singular
|
||||||
|
if (!model) {
|
||||||
|
module = module.substring(0, module.length - 1);
|
||||||
|
model = models[module];
|
||||||
|
}
|
||||||
|
if (!model) throw new Error('No matching model found');
|
||||||
|
const currentMethod = model.sharedClass.methods().find(method => {
|
||||||
|
const methodMatch = [method.http].flat().filter(el => el.verb === verb.toLowerCase()).find(el => {
|
||||||
|
let isValid = false;
|
||||||
|
if (hasId)
|
||||||
|
isValid = el.path.replace(':id', path[0]) === SLASH + path.join(SLASH);
|
||||||
|
else
|
||||||
|
isValid = el.path.endsWith(path[0]);
|
||||||
|
return isValid;
|
||||||
|
});
|
||||||
|
if (methodMatch)
|
||||||
|
return method;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (!currentMethod) throw new Error('No matching currentMethod found');
|
||||||
|
const {accepts} = currentMethod;
|
||||||
|
for (const [key, value] of Object.entries(body)) {
|
||||||
|
if (!value) {
|
||||||
|
tag = key;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
const accept = accepts.find(acc => acc.arg === key);
|
||||||
|
if (accept.type !== 'any') {
|
||||||
|
let isValid = false;
|
||||||
|
if (value) {
|
||||||
|
switch (accept.type) {
|
||||||
|
case 'object':
|
||||||
|
isValid = isJsonString(value);
|
||||||
|
break;
|
||||||
|
case 'number':
|
||||||
|
isValid = /^[0-9]*$/.test(value);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'boolean':
|
||||||
|
isValid = value instanceof Boolean;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'date':
|
||||||
|
isValid = (new Date(date) !== 'Invalid Date') && !isNaN(new Date(date));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'string':
|
||||||
|
isValid = typeof value == 'string';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!isValid) {
|
||||||
|
tag = key;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (tag) {
|
||||||
|
let tagValue = mapLocale[$t.getLocale()][tag];
|
||||||
|
if (!tagValue) tagValue = tag;
|
||||||
|
return {tag, tagValue};
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
throw new Error(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
function isJsonString(str) {
|
||||||
|
try {
|
||||||
|
let json = JSON.parse(str);
|
||||||
|
return (typeof json === 'object');
|
||||||
|
} catch (e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
const SLASH = '/';
|
||||||
|
const MODULES = 'modules';
|
||||||
|
const BACK = 'back';
|
||||||
|
const path = require('path');
|
||||||
|
const glob = require('glob');
|
||||||
|
const modulesPath = `${MODULES}/**/${BACK}/locale/**/**.yml`;
|
||||||
|
const pathResolve = path.resolve(modulesPath);
|
||||||
|
|
||||||
|
const modelsLocale = glob.sync(pathResolve, {}).reduce((acc, f) => {
|
||||||
|
const file = require(f);
|
||||||
|
const model = f.substring(f.indexOf(MODULES), f.indexOf(BACK) - 1).split(SLASH)[1];
|
||||||
|
const locale = path.parse(f).base.split('.')[0];
|
||||||
|
|
||||||
|
if (!acc[locale]) acc[locale] = {};
|
||||||
|
acc[locale] = Object.assign(acc[locale], file.columns);
|
||||||
|
return acc;
|
||||||
|
}, {}
|
||||||
|
);
|
||||||
|
function keyMap(model, local, connector = '_') {
|
||||||
|
return `${model}${connector}${local}`;
|
||||||
|
}
|
||||||
|
module.exports =modelsLocale;
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
const SLASH = '/';
|
||||||
|
const MODULES = 'modules';
|
||||||
|
const BACK = 'back';
|
||||||
|
|
||||||
|
const app = require('vn-loopback/server/server');
|
||||||
|
|
||||||
|
const modelsMethods = app;
|
||||||
|
function keyMap(model, local, connector = '_') {
|
||||||
|
return `${model}${connector}${local}`;
|
||||||
|
}
|
||||||
|
module.exports = modelsMethods;
|
||||||
|
|
|
@ -26,7 +26,7 @@ module.exports = Self => {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
arg: 'street',
|
arg: 'street',
|
||||||
type: 'string'
|
type: 'any'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
arg: 'postcode',
|
arg: 'postcode',
|
||||||
|
@ -94,7 +94,7 @@ module.exports = Self => {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
arg: 'despiteOfClient',
|
arg: 'despiteOfClient',
|
||||||
type: 'number'
|
type: 'any'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
arg: 'hasIncoterms',
|
arg: 'hasIncoterms',
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
"form-data": "^4.0.0",
|
"form-data": "^4.0.0",
|
||||||
"fs-extra": "^5.0.0",
|
"fs-extra": "^5.0.0",
|
||||||
"ftps": "^1.2.0",
|
"ftps": "^1.2.0",
|
||||||
|
"glob": "^10.3.10",
|
||||||
carlossa marked this conversation as resolved
Outdated
|
|||||||
"gm": "^1.25.0",
|
"gm": "^1.25.0",
|
||||||
"got": "^10.7.0",
|
"got": "^10.7.0",
|
||||||
"helmet": "^3.21.2",
|
"helmet": "^3.21.2",
|
||||||
|
|
|
@ -29,6 +29,9 @@ dependencies:
|
||||||
ftps:
|
ftps:
|
||||||
specifier: ^1.2.0
|
specifier: ^1.2.0
|
||||||
version: 1.2.0
|
version: 1.2.0
|
||||||
|
glob:
|
||||||
|
specifier: ^10.3.10
|
||||||
|
version: 10.3.10
|
||||||
gm:
|
gm:
|
||||||
specifier: ^1.25.0
|
specifier: ^1.25.0
|
||||||
version: 1.25.0
|
version: 1.25.0
|
||||||
|
@ -1625,7 +1628,6 @@ packages:
|
||||||
strip-ansi-cjs: /strip-ansi@6.0.1
|
strip-ansi-cjs: /strip-ansi@6.0.1
|
||||||
wrap-ansi: 8.1.0
|
wrap-ansi: 8.1.0
|
||||||
wrap-ansi-cjs: /wrap-ansi@7.0.0
|
wrap-ansi-cjs: /wrap-ansi@7.0.0
|
||||||
dev: true
|
|
||||||
|
|
||||||
/@istanbuljs/load-nyc-config@1.1.0:
|
/@istanbuljs/load-nyc-config@1.1.0:
|
||||||
resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==}
|
resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==}
|
||||||
|
@ -1913,7 +1915,6 @@ packages:
|
||||||
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
|
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
|
||||||
engines: {node: '>=14'}
|
engines: {node: '>=14'}
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: true
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@puppeteer/browsers@1.9.1:
|
/@puppeteer/browsers@1.9.1:
|
||||||
|
@ -3027,7 +3028,6 @@ packages:
|
||||||
/ansi-regex@6.0.1:
|
/ansi-regex@6.0.1:
|
||||||
resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
|
resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/ansi-styles@2.2.1:
|
/ansi-styles@2.2.1:
|
||||||
resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==}
|
resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==}
|
||||||
|
@ -3049,7 +3049,6 @@ packages:
|
||||||
/ansi-styles@6.2.1:
|
/ansi-styles@6.2.1:
|
||||||
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
|
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/ansi-wrap@0.1.0:
|
/ansi-wrap@0.1.0:
|
||||||
resolution: {integrity: sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==}
|
resolution: {integrity: sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==}
|
||||||
|
@ -5207,7 +5206,6 @@ packages:
|
||||||
|
|
||||||
/eastasianwidth@0.2.0:
|
/eastasianwidth@0.2.0:
|
||||||
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
|
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/ecc-jsbn@0.1.2:
|
/ecc-jsbn@0.1.2:
|
||||||
resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==}
|
resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==}
|
||||||
|
@ -5266,7 +5264,6 @@ packages:
|
||||||
|
|
||||||
/emoji-regex@9.2.2:
|
/emoji-regex@9.2.2:
|
||||||
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
|
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/emojis-list@3.0.0:
|
/emojis-list@3.0.0:
|
||||||
resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==}
|
resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==}
|
||||||
|
@ -6102,7 +6099,6 @@ packages:
|
||||||
dependencies:
|
dependencies:
|
||||||
cross-spawn: 7.0.3
|
cross-spawn: 7.0.3
|
||||||
signal-exit: 4.1.0
|
signal-exit: 4.1.0
|
||||||
dev: true
|
|
||||||
|
|
||||||
/forever-agent@0.6.1:
|
/forever-agent@0.6.1:
|
||||||
resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==}
|
resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==}
|
||||||
|
@ -6496,7 +6492,6 @@ packages:
|
||||||
minimatch: 9.0.3
|
minimatch: 9.0.3
|
||||||
minipass: 7.0.4
|
minipass: 7.0.4
|
||||||
path-scurry: 1.10.1
|
path-scurry: 1.10.1
|
||||||
dev: true
|
|
||||||
|
|
||||||
/glob@3.2.11:
|
/glob@3.2.11:
|
||||||
resolution: {integrity: sha512-hVb0zwEZwC1FXSKRPFTeOtN7AArJcJlI6ULGLtrstaswKNlrTJqAA+1lYlSUop4vjA423xlBzqfVS3iWGlqJ+g==}
|
resolution: {integrity: sha512-hVb0zwEZwC1FXSKRPFTeOtN7AArJcJlI6ULGLtrstaswKNlrTJqAA+1lYlSUop4vjA423xlBzqfVS3iWGlqJ+g==}
|
||||||
|
@ -6511,7 +6506,7 @@ packages:
|
||||||
fs.realpath: 1.0.0
|
fs.realpath: 1.0.0
|
||||||
inflight: 1.0.6
|
inflight: 1.0.6
|
||||||
inherits: 2.0.4
|
inherits: 2.0.4
|
||||||
minimatch: 3.0.8
|
minimatch: 3.1.2
|
||||||
once: 1.4.0
|
once: 1.4.0
|
||||||
path-is-absolute: 1.0.1
|
path-is-absolute: 1.0.1
|
||||||
dev: true
|
dev: true
|
||||||
|
@ -8005,7 +8000,6 @@ packages:
|
||||||
'@isaacs/cliui': 8.0.2
|
'@isaacs/cliui': 8.0.2
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@pkgjs/parseargs': 0.11.0
|
'@pkgjs/parseargs': 0.11.0
|
||||||
dev: true
|
|
||||||
|
|
||||||
/jade@0.26.3:
|
/jade@0.26.3:
|
||||||
resolution: {integrity: sha512-mkk3vzUHFjzKjpCXeu+IjXeZD+QOTjUUdubgmHtHTDwvAO2ZTkMTTVrapts5CWz3JvJryh/4KWZpjeZrCepZ3A==}
|
resolution: {integrity: sha512-mkk3vzUHFjzKjpCXeu+IjXeZD+QOTjUUdubgmHtHTDwvAO2ZTkMTTVrapts5CWz3JvJryh/4KWZpjeZrCepZ3A==}
|
||||||
|
@ -9254,7 +9248,6 @@ packages:
|
||||||
/lru-cache@10.2.0:
|
/lru-cache@10.2.0:
|
||||||
resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==}
|
resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==}
|
||||||
engines: {node: 14 || >=16.14}
|
engines: {node: 14 || >=16.14}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/lru-cache@2.7.3:
|
/lru-cache@2.7.3:
|
||||||
resolution: {integrity: sha512-WpibWJ60c3AgAz8a2iYErDrcT2C7OmKnsWhIcHOjkUHFjkXncJhtLxNSqUmxRxRunpb5I8Vprd7aNSd2NtksJQ==}
|
resolution: {integrity: sha512-WpibWJ60c3AgAz8a2iYErDrcT2C7OmKnsWhIcHOjkUHFjkXncJhtLxNSqUmxRxRunpb5I8Vprd7aNSd2NtksJQ==}
|
||||||
|
@ -9660,7 +9653,6 @@ packages:
|
||||||
engines: {node: '>=16 || 14 >=14.17'}
|
engines: {node: '>=16 || 14 >=14.17'}
|
||||||
dependencies:
|
dependencies:
|
||||||
brace-expansion: 2.0.1
|
brace-expansion: 2.0.1
|
||||||
dev: true
|
|
||||||
|
|
||||||
/minimist-options@4.1.0:
|
/minimist-options@4.1.0:
|
||||||
resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==}
|
resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==}
|
||||||
|
@ -9750,7 +9742,6 @@ packages:
|
||||||
/minipass@7.0.4:
|
/minipass@7.0.4:
|
||||||
resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==}
|
resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==}
|
||||||
engines: {node: '>=16 || 14 >=14.17'}
|
engines: {node: '>=16 || 14 >=14.17'}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/minizlib@1.3.3:
|
/minizlib@1.3.3:
|
||||||
resolution: {integrity: sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==}
|
resolution: {integrity: sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==}
|
||||||
|
@ -10845,7 +10836,6 @@ packages:
|
||||||
dependencies:
|
dependencies:
|
||||||
lru-cache: 10.2.0
|
lru-cache: 10.2.0
|
||||||
minipass: 7.0.4
|
minipass: 7.0.4
|
||||||
dev: true
|
|
||||||
|
|
||||||
/path-to-regexp@0.1.7:
|
/path-to-regexp@0.1.7:
|
||||||
resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
|
resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
|
||||||
|
@ -12176,7 +12166,6 @@ packages:
|
||||||
/signal-exit@4.1.0:
|
/signal-exit@4.1.0:
|
||||||
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
|
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
|
||||||
engines: {node: '>=14'}
|
engines: {node: '>=14'}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/simple-concat@1.0.1:
|
/simple-concat@1.0.1:
|
||||||
resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==}
|
resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==}
|
||||||
|
@ -12633,7 +12622,6 @@ packages:
|
||||||
eastasianwidth: 0.2.0
|
eastasianwidth: 0.2.0
|
||||||
emoji-regex: 9.2.2
|
emoji-regex: 9.2.2
|
||||||
strip-ansi: 7.1.0
|
strip-ansi: 7.1.0
|
||||||
dev: true
|
|
||||||
|
|
||||||
/string_decoder@0.10.31:
|
/string_decoder@0.10.31:
|
||||||
resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==}
|
resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==}
|
||||||
|
@ -12680,7 +12668,6 @@ packages:
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
dependencies:
|
dependencies:
|
||||||
ansi-regex: 6.0.1
|
ansi-regex: 6.0.1
|
||||||
dev: true
|
|
||||||
|
|
||||||
/strip-bom@2.0.0:
|
/strip-bom@2.0.0:
|
||||||
resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==}
|
resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==}
|
||||||
|
@ -14183,7 +14170,6 @@ packages:
|
||||||
ansi-styles: 6.2.1
|
ansi-styles: 6.2.1
|
||||||
string-width: 5.1.2
|
string-width: 5.1.2
|
||||||
strip-ansi: 7.1.0
|
strip-ansi: 7.1.0
|
||||||
dev: true
|
|
||||||
|
|
||||||
/wrappy@1.0.2:
|
/wrappy@1.0.2:
|
||||||
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
|
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
|
||||||
|
|
Loading…
Reference in New Issue
?
Esto queda por quitar @carlossa