From 0bcd22d2bca3f6d61c243459ecc095ef796ec21d Mon Sep 17 00:00:00 2001 From: Mauricio Date: Mon, 31 Jan 2022 12:49:06 +0100 Subject: [PATCH 01/17] Update Project --- .gitignore | 2 +- cmds/create.js | 13 -------- cmds/delete.js | 3 -- cmds/findBy.js | 3 -- cmds/help.js | 3 -- cmds/show.js | 3 -- cmds/update.js | 3 -- createTest.js | 38 ----------------------- index.js | 66 ---------------------------------------- inquirerTest.js | 13 -------- messagesApp/helpFile.txt | 9 ------ messagesApp/welcome.txt | 10 ------ 12 files changed, 1 insertion(+), 165 deletions(-) delete mode 100644 cmds/create.js delete mode 100644 cmds/delete.js delete mode 100644 cmds/findBy.js delete mode 100644 cmds/help.js delete mode 100644 cmds/show.js delete mode 100644 cmds/update.js delete mode 100644 createTest.js delete mode 100644 inquirerTest.js delete mode 100644 messagesApp/helpFile.txt delete mode 100644 messagesApp/welcome.txt diff --git a/.gitignore b/.gitignore index 0965b4fb4..f7baaa326 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ node_modules/ - +database/ ##MacOs .DS_Store \ No newline at end of file diff --git a/cmds/create.js b/cmds/create.js deleted file mode 100644 index 16e11f8e7..000000000 --- a/cmds/create.js +++ /dev/null @@ -1,13 +0,0 @@ -// Pasos estándar a hacer en todas las funciones -// Leer archivo.json, crear si no existe -// Copiar información del archivo en un arrayTemporal -// Inicia pregunta de los campos para crear la tarea, guardar en un objetoTemporal -// Cuando complete los campos, hacer push del objeto temporal al arrayTemporal. -// Escribir arrayTemporal en archivo.json -// Mensaje de Éxito y/o Error -// EN Todos los pasos siempre tener un mensaje de Error si algo falla, indicando el proceso que hace -// Pej: Si falla a leer el archivo, Error: File not found o si falla al escribir Error: File can not write. - -module.exports = (args) => { - console.log('Tu tarea se esta creando'); -} \ No newline at end of file diff --git a/cmds/delete.js b/cmds/delete.js deleted file mode 100644 index f14a33cdc..000000000 --- a/cmds/delete.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = (args) => { - console.log('Tu tarea se borrará'); -} \ No newline at end of file diff --git a/cmds/findBy.js b/cmds/findBy.js deleted file mode 100644 index e71985a16..000000000 --- a/cmds/findBy.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = (args) => { - console.log('Buscando tu tarea'); -} \ No newline at end of file diff --git a/cmds/help.js b/cmds/help.js deleted file mode 100644 index 478f3747b..000000000 --- a/cmds/help.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = (args) => { - console.log('Ayuda!'); -} \ No newline at end of file diff --git a/cmds/show.js b/cmds/show.js deleted file mode 100644 index a5ff06462..000000000 --- a/cmds/show.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = (args) => { - console.log('Esta es tu tarea'); -} \ No newline at end of file diff --git a/cmds/update.js b/cmds/update.js deleted file mode 100644 index 5810456c5..000000000 --- a/cmds/update.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = (args) => { - console.log('Tu tarea está actualizada'); -} \ No newline at end of file diff --git a/createTest.js b/createTest.js deleted file mode 100644 index 8be37447e..000000000 --- a/createTest.js +++ /dev/null @@ -1,38 +0,0 @@ -// Pasos estándar a hacer en todas las funciones -// Leer archivo.json, crear si no existe -// Copiar información del archivo en un arrayTemporal -// Inicia pregunta de los campos para crear la tarea, guardar en un objetoTemporal -// Cuando complete los campos, hacer push del objeto temporal al arrayTemporal. -// Escribir arrayTemporal en archivo.json -// Mensaje de Éxito y/o Error -// EN Todos los pasos siempre tener un mensaje de Error si algo falla, indicando el proceso que hace -// Pej: Si falla a leer el archivo, Error: File not found o si falla al escribir Error: File can not write. - -const inquirer = require('inquirer'); -// Código que te permite crear la pregunta sobre el campo que quieres crear -inquirer - .prompt([ - { - name: 'taskName', - message: 'Cuál es tu tarea:' - }, - { - name: 'taskStartDate', - message: 'Fecha de Inicio:' - }, - { - name: 'taskEndDate', - message: 'Fecha de Fin:' - }, - { - name: 'taskDescription', - message: 'Descripción de la tarea:' - }, - { - name: 'taskUser', - message: 'Usuario Asignado:' - } - ]) - .then(answers => { // Aquí va la función que guarda el Nombre en el Objeto (Json, Sql o Mongo) - console.info('Nombre de la tarea:', answers); // En este momento no hay presistencia - }); \ No newline at end of file diff --git a/index.js b/index.js index 18a31d1a7..e69de29bb 100644 --- a/index.js +++ b/index.js @@ -1,66 +0,0 @@ -const fs = require('fs'); -const readline = require('readline'); -const welcomeMsg = fs.createReadStream('./messagesApp/welcome.txt'); -const helpConsole = fs.createReadStream('./messagesApp/helpFile.txt'); - -// Crear Interfaz de Lineas de Comando (CLI) (Consola) -const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout, - prompt: 'ToDo APP> \n' -}); - -// Función procesa textos desde un archivo y los muestra por consola -async function showText(textToShow) { - const rl = readline.createInterface({ - input: textToShow, - crlfDelay: Infinity - }); - - for await (const line of rl) { - console.log(`${line}`); - } -} -// Mensaje de bienvenida -showText(welcomeMsg); - -rl.prompt(); - -rl.on('line', (line) => { - switch (line.trim()) { - case 'help': - showText(helpConsole); - break; - case 'create': - const create = (require('./cmds/create')) //Función que llama a create.js (Crear Tarea) - create() //Ejecuta create.js llamado previamente - break; - case 'update': - const update = (require('./cmds/update')) //Función que llama a update.js (Modificar Tarea) - update()//Ejecuta update.js llamado previamente - break; - case 'delete': - const del = (require('./cmds/delete')) //Función que llama a delete.js (Borrar Tarea) - del()//Ejecuta delete.js llamado previamente - break; - case 'show': - const show = (require('./cmds/show')) //Función que llama a show.js (Mostrar Tarea) - show()//Ejecuta show.js llamado previamente - break; - case 'find': - const findBy = (require('./cmds/findBy')) //Función que llama a findby.js (Buscar Tarea) - findBy()//Ejecuta findBy.js llamado previamente - break; - case 'exit': - console.log('Que tengas un buen día!'); // Muestra mensaje de despedida - process.exit(0); // Cierra app de consola - default: - console.table(`No se reconoce: '${line.trim()}'`); // Mensaje si el comando ingresado no es válido - break; -} - rl.prompt(); - -}).on('close', () => { - console.log('Que tengas un buen día!'); - process.exit(0); -}); // Función que cierra la consola \ No newline at end of file diff --git a/inquirerTest.js b/inquirerTest.js deleted file mode 100644 index 838613519..000000000 --- a/inquirerTest.js +++ /dev/null @@ -1,13 +0,0 @@ -const inquirer = require('inquirer'); - -inquirer - .prompt([ - { - type: 'editor', - name: 'story', - message: 'Tell me a story, a really long one!', - }, - ]) - .then(answers => { - console.info('Answer:', answers.story); - }); \ No newline at end of file diff --git a/messagesApp/helpFile.txt b/messagesApp/helpFile.txt deleted file mode 100644 index 40b939f45..000000000 --- a/messagesApp/helpFile.txt +++ /dev/null @@ -1,9 +0,0 @@ -Listado de Comandos: -help - Para abrir el archivo de ayuda. -create - Para crear una tarea. -create-sql - Para crear en SQL -create-mongo - Para crear en Mongo -update-sql - Para modificar una tarea. -del- Para borrar una tarea. -show - Para mostrar todas las tareas. -find - Para buscar una o mas tareas por requisitos. \ No newline at end of file diff --git a/messagesApp/welcome.txt b/messagesApp/welcome.txt deleted file mode 100644 index 3700bdcfc..000000000 --- a/messagesApp/welcome.txt +++ /dev/null @@ -1,10 +0,0 @@ -============================================= -| ╔╗╔╗╔═╗╔╗─╔╗─╔═╗ | -| ║╚╝║║╦╝║║─║║─║║║ | -| ║╔╗║║╩╗║╚╗║╚╗║║║ | -| ╚╝╚╝╚═╝╚═╝╚═╝╚═╝ | -| Bienvenido a la ToDo App ヅ | -============================================= -Escribe 'help' para ver todos los comandos -Escribe 'create' para crear una nueva Tarea (Utilizando Json) -Escribe 'exit' para salir From 55444a92ce97990459530298aac2c7440ec74298 Mon Sep 17 00:00:00 2001 From: Mauricio Date: Mon, 31 Jan 2022 13:02:45 +0100 Subject: [PATCH 02/17] Estructura del proyecto --- api/app.js | 110 ++++++++++++++++++++++++++++++++++++++ api/controllers/README.md | 2 + api/index.js | 1 + api/middlewares/README.md | 3 ++ api/models/README.md | 2 + api/routes/README.md | 2 + index.js | 0 7 files changed, 120 insertions(+) create mode 100644 api/app.js create mode 100644 api/controllers/README.md create mode 100644 api/index.js create mode 100644 api/middlewares/README.md create mode 100644 api/models/README.md create mode 100644 api/routes/README.md delete mode 100644 index.js diff --git a/api/app.js b/api/app.js new file mode 100644 index 000000000..3ff42c610 --- /dev/null +++ b/api/app.js @@ -0,0 +1,110 @@ +//Crea servidor + +const Joi = require('joi'); +const express = require('express'); +const { exist, invalid } = require('joi/lib/types/lazy'); + +const app = express (); +app.use(express.json()); + +const courses = [ + { id: 1, name:'course 1'}, + { id: 2, name:'course 2'}, + { id: 3, name:'course 3'}, + { id: 4, name:'course 4'} +]; + +app.get('/', (req, res) => { //Dos argumentos path o url, callback + res.send('Hello World'); +}); + +app.get('/api/courses', (req, res) => { + res.send(courses); +}); + +//Metódo básico para hacer una petición por un parámetro especifico y devolver ese valor. +// app.get('/api/courses/:id', (req,res) => { +// res.send(req.params.id); +// }) + +//Forma de hacer post (create) con validación manual +// app.post('/api/courses', (req, res) => { +// if(!req.body.name || req.body.name.length < 3) { +// //400 Bad Request +// res.status(400).send('Name is required and should be minimun characters') +// return; +// } +// const course = { +// id: courses.length + 1, +// name: req.body.name +// } +// courses.push(course); +// res.send(course); +// }) + +//Metodo de hacer post con validació utilizando Joi +app.post('/api/courses', (req, res) => { + const schema = { + name: Joi.string().min(3).required() + }; + const result = Joi.validate(req.body, schema); + + if(result.error) return res.status(400).send(result.error.details[0].message) + + const course = { + id: courses.length + 1, + name: req.body.name + } + courses.push(course); + res.send(course); +}) + +app.get('/api/courses/:id', (req, res) => { //Metódo completo con devolución de errores + const course = courses.find(c => c.id === parseInt(req.params.id)); + if(!course) return res.status(404).send('the cours with the given ID was not found')// 404 + res.send(course) + +}) + +//Método PUT básico +app.put('/api/courses/:id', (req, res) => { + // Look up the course + // if not exist, return 404 + const course = courses.find(c => c.id === parseInt(req.params.id)); + if(!course) return res.status(404).send('the cours with the given ID was not found')// 404 + + // Validate + // If invalid, return 400 + const schema = { + name: Joi.string().min(3).required() + }; + const result = Joi.validate(req.body, schema); + if(result.error){ + return res.status(400).send(result.error.details[0].message) + } + + // Update courser + // return updated course + course.name = req.body.name; + res.send(course); +}) + +//Metodo delete, +app.delete('/api/courses/:id', (req, res) => { + //Look up + // if not exists, return 404 + const course = courses.find(c => c.id === parseInt(req.params.id)); + if(!course) return res.status(404).send('The course with the given Id was not found'); + + //Delete + const index = courses.indexOf(course) + courses.splice(index, 1); + + //Return the same course + res.send(course); +}) + + +//Port +const port = process.env.PORT || 3000; //Variable de entorno que captura el puerto que esta desginado en el ordenador +app.listen(port, () => console.log(`Listening on port ${port}...`)) \ No newline at end of file diff --git a/api/controllers/README.md b/api/controllers/README.md new file mode 100644 index 000000000..0531c1b67 --- /dev/null +++ b/api/controllers/README.md @@ -0,0 +1,2 @@ +### Controladores +Archivo controlador de ejemplo. En el programamos las acciones y operaciones sobre nuestra base de datos, en este caso para obtener los datos de un usuario. \ No newline at end of file diff --git a/api/index.js b/api/index.js new file mode 100644 index 000000000..d05770e5e --- /dev/null +++ b/api/index.js @@ -0,0 +1 @@ +//Conecta con BD \ No newline at end of file diff --git a/api/middlewares/README.md b/api/middlewares/README.md new file mode 100644 index 000000000..ec8117a21 --- /dev/null +++ b/api/middlewares/README.md @@ -0,0 +1,3 @@ +### Middlewares +Archivo con el middleware para validar la autenticación del usuario. +Cabecera Cache-control: no-cache \ No newline at end of file diff --git a/api/models/README.md b/api/models/README.md new file mode 100644 index 000000000..d428d9459 --- /dev/null +++ b/api/models/README.md @@ -0,0 +1,2 @@ +### Models +Para crear los esquema y modelos de usuarios \ No newline at end of file diff --git a/api/routes/README.md b/api/routes/README.md new file mode 100644 index 000000000..5f4aab22a --- /dev/null +++ b/api/routes/README.md @@ -0,0 +1,2 @@ +### Routes +Archivo en el que definimos las rutas (path) a las que responderá nuestra aplicación y en ellas se encontrará la lógica a ejecutar. \ No newline at end of file diff --git a/index.js b/index.js deleted file mode 100644 index e69de29bb..000000000 From 513d79899c47a2a5dd1194734fdbc0377a5ad196 Mon Sep 17 00:00:00 2001 From: Mauricio Date: Mon, 31 Jan 2022 13:04:20 +0100 Subject: [PATCH 03/17] Enlaces --- Enlaces.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/Enlaces.md b/Enlaces.md index 4d6dbb01a..89015c54d 100644 --- a/Enlaces.md +++ b/Enlaces.md @@ -1,7 +1 @@ -1. [Enlace Como crear un ToDO List (Ejemplo)](https://vegibit.com/node-js-todo-list-tutorial/) -2. [Enlace de app similar](https://www.youtube.com/watch?v=v2GKt39-LPA) -3. [Enlace de como usar Inquirer](https://www.digitalocean.com/community/tutorials/nodejs-interactive-command-line-prompts) -4. [Enlace Node Readline (Como crear interfaz de consola e interactuar con ella)](https://nodejs.org/dist/latest-v17.x/docs/api/readline.html) -5. [Enlace Node File System (Manejar archivos en local o en remoto)](https://nodejs.org/dist/latest-v17.x/docs/api/fs.html) -6. [Enlace Como crear una App de Consola (Sólo saqué la idea de organización)](https://medium.com/@maniakhitoccori/cómo-crear-una-aplicación-real-de-node-cli-con-node-db1338fa1d9b) - +1. [Enlace estructura proyecto Node y Express ](https://medium.com/williambastidasblog/estructura-de-una-api-rest-con-nodejs-express-y-mongodb-cdd97637b18b) From 240d69113a6f2e1129671b05e82e6a40913d2bfa Mon Sep 17 00:00:00 2001 From: Mauricio Date: Mon, 31 Jan 2022 13:04:50 +0100 Subject: [PATCH 04/17] Upd --- Enlaces.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Enlaces.md b/Enlaces.md index 89015c54d..3b9dd7619 100644 --- a/Enlaces.md +++ b/Enlaces.md @@ -1 +1,2 @@ 1. [Enlace estructura proyecto Node y Express ](https://medium.com/williambastidasblog/estructura-de-una-api-rest-con-nodejs-express-y-mongodb-cdd97637b18b) +2. [Validación de archivos](https://pharos.sh/cargue-la-gestion-de-archivos-en-node-js-con-express-y-multer/) \ No newline at end of file From 90d3e69592a7fe66352f41fa54ce7351d37db0f4 Mon Sep 17 00:00:00 2001 From: Mauricio Date: Tue, 1 Feb 2022 10:46:43 +0100 Subject: [PATCH 05/17] Rutas creadas & Requirimientos en Readme --- README.md | 59 +- api/app.js | 110 +--- api/index.js | 2 +- api/routes/time.js | 9 + api/routes/upload.js | 9 + api/routes/users.js | 9 + package-lock.json | 1268 ++++++++++++++++++++++++++++++++++++++++++ package.json | 28 + 8 files changed, 1343 insertions(+), 151 deletions(-) create mode 100644 api/routes/time.js create mode 100644 api/routes/upload.js create mode 100644 api/routes/users.js create mode 100644 package-lock.json create mode 100644 package.json diff --git a/README.md b/README.md index 3863714aa..c6053bdd0 100644 --- a/README.md +++ b/README.md @@ -1,50 +1,15 @@ -

Welcome to Developers Team - Todo App👋

+

Welcome to Node Rest Server👋

+Nivell 1 +- Exercici 1 +Crea un servidor amb Express que retorni a una petició GET a l'endpoint /user un json amb el teu nom, edat i la url des d'on es fa la petició. -> Pequeño programa en node.js para hacer y administrar "to-dos" +- Exercici 2 +Afegeix un endpoint /upload per a pujar al servidor un arxiu de tipus png, jpg o gif que retorni un missatge d'error en cas que l'extensió de l'arxiu no coincideixi amb aquestes. -Para probar el modulo inquirer: -`npm install inquirer` -`node inquirerTest.js` -> Prueba de como ingresar datos por consola. -`node createTest.js`-> Prueba de como crear una tarea por consola. +Nivell 2 +- Exercici 1 +Creu un endpoint /time que rebi per POST com a paràmetre un JSON amb el nom d'usuari i retorni un objecte JSON que contingui l'hora i data actual. Inclogui un middleware que afegeixi la capçalera Cache-control: no-cache. Habiliti CORS (Cross-Origin Resource Sharing) en les respostes, ja sigui mitjançant Express o mitjançant un altre middleware. -Propuesta de la tarea, la idea es que todos usemos el mismo objeto para que sea más fácil integrar cada funcionalidad: -const toDo = { -taskName: 'Nombre de tarea', -taskStartDate: 'Fecha de Inicio', -taskEndDate: 'Fecha de Fin', -taskDescription:'Descripción y/o detalles', -taskUser:'Usuario Asignado' -} - -## Install -Para instalar inquirer -> -```sh -npm install inquirer -``` - -## Usage - -```sh -npm start -``` - -## Run tests - -```sh -npm run test -``` - -## Authors - -👤 **Mauricio, Pere Ruiz, Bianca Inga** - -- Github: [@molivaresr] (https://github.com/molivaresr), [En\_Pere] (https://github.com/En_Pere), [Blanket25] (https://github.com/Blanket25) -## Our Organization sheet -[Trello](https://trello.com/b/2ujcduIe/developer-team) -## Show your support - -Give a ⭐️ if this project helped you! - ---- - -_This README was generated with ❤️ by [readme-md-generator](https://github.com/kefranabg/readme-md-generator)_ +Nivell 3 +- Exercici 1 +Afegeixi un middleware a l'endpoint anterior que retorni un HTTP Status 401 - Unauthorized si la capçalera de la petició no conté autenticació bàsica (usuari i contrasenya). \ No newline at end of file diff --git a/api/app.js b/api/app.js index 3ff42c610..fe2a0ca60 100644 --- a/api/app.js +++ b/api/app.js @@ -1,110 +1,14 @@ //Crea servidor - -const Joi = require('joi'); const express = require('express'); -const { exist, invalid } = require('joi/lib/types/lazy'); - const app = express (); -app.use(express.json()); - -const courses = [ - { id: 1, name:'course 1'}, - { id: 2, name:'course 2'}, - { id: 3, name:'course 3'}, - { id: 4, name:'course 4'} -]; - -app.get('/', (req, res) => { //Dos argumentos path o url, callback - res.send('Hello World'); -}); - -app.get('/api/courses', (req, res) => { - res.send(courses); -}); - -//Metódo básico para hacer una petición por un parámetro especifico y devolver ese valor. -// app.get('/api/courses/:id', (req,res) => { -// res.send(req.params.id); -// }) - -//Forma de hacer post (create) con validación manual -// app.post('/api/courses', (req, res) => { -// if(!req.body.name || req.body.name.length < 3) { -// //400 Bad Request -// res.status(400).send('Name is required and should be minimun characters') -// return; -// } -// const course = { -// id: courses.length + 1, -// name: req.body.name -// } -// courses.push(course); -// res.send(course); -// }) - -//Metodo de hacer post con validació utilizando Joi -app.post('/api/courses', (req, res) => { - const schema = { - name: Joi.string().min(3).required() - }; - const result = Joi.validate(req.body, schema); - - if(result.error) return res.status(400).send(result.error.details[0].message) - - const course = { - id: courses.length + 1, - name: req.body.name - } - courses.push(course); - res.send(course); -}) - -app.get('/api/courses/:id', (req, res) => { //Metódo completo con devolución de errores - const course = courses.find(c => c.id === parseInt(req.params.id)); - if(!course) return res.status(404).send('the cours with the given ID was not found')// 404 - res.send(course) - -}) - -//Método PUT básico -app.put('/api/courses/:id', (req, res) => { - // Look up the course - // if not exist, return 404 - const course = courses.find(c => c.id === parseInt(req.params.id)); - if(!course) return res.status(404).send('the cours with the given ID was not found')// 404 - - // Validate - // If invalid, return 400 - const schema = { - name: Joi.string().min(3).required() - }; - const result = Joi.validate(req.body, schema); - if(result.error){ - return res.status(400).send(result.error.details[0].message) - } - - // Update courser - // return updated course - course.name = req.body.name; - res.send(course); -}) - -//Metodo delete, -app.delete('/api/courses/:id', (req, res) => { - //Look up - // if not exists, return 404 - const course = courses.find(c => c.id === parseInt(req.params.id)); - if(!course) return res.status(404).send('The course with the given Id was not found'); - - //Delete - const index = courses.indexOf(course) - courses.splice(index, 1); - - //Return the same course - res.send(course); -}) - +const users = require('../api/routes/users') +const upload = require('../api/routes/upload') +const time = require('../api/routes/time') +app.use(express.json()); +app.use('/api/users',users) +app.use('/api/upload', upload) +app.use('/api/time', time) //Port const port = process.env.PORT || 3000; //Variable de entorno que captura el puerto que esta desginado en el ordenador app.listen(port, () => console.log(`Listening on port ${port}...`)) \ No newline at end of file diff --git a/api/index.js b/api/index.js index d05770e5e..191fe4a0f 100644 --- a/api/index.js +++ b/api/index.js @@ -1 +1 @@ -//Conecta con BD \ No newline at end of file +//Conectar BD diff --git a/api/routes/time.js b/api/routes/time.js new file mode 100644 index 000000000..0db2afee2 --- /dev/null +++ b/api/routes/time.js @@ -0,0 +1,9 @@ +const express = require('express'); + +const router = express.Router(); + +router.get('/', (req,res) => { + res.send('Controlando el tiempo') +}); + +module.exports = router diff --git a/api/routes/upload.js b/api/routes/upload.js new file mode 100644 index 000000000..8d1d8be3c --- /dev/null +++ b/api/routes/upload.js @@ -0,0 +1,9 @@ +const express = require('express'); + +const router = express.Router(); + +router.get('/', (req,res) => { + res.send('Subiendo Archivos') +}); + +module.exports = router diff --git a/api/routes/users.js b/api/routes/users.js new file mode 100644 index 000000000..4a6ef5d8d --- /dev/null +++ b/api/routes/users.js @@ -0,0 +1,9 @@ +const express = require('express'); + +const router = express.Router(); + +router.get('/', (req,res) => { + res.send('Hola Usuarios') +}); + +module.exports = router diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..015d49916 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1268 @@ +{ + "name": "sprint41", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@hapi/hoek": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", + "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==" + }, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@sideway/address": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.3.tgz", + "integrity": "sha512-8ncEUtmnTsMmL7z1YPB47kPUq7LpKWJNFPsRzHiIajGC5uXlWGn+AmkYPcHNl8S4tcEGx+cnORnNYaw2wvL+LQ==", + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "requires": { + "string-width": "^4.1.0" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "body-parser": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", + "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", + "requires": { + "bytes": "3.1.1", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.6", + "raw-body": "2.4.2", + "type-is": "~1.6.18" + } + }, + "boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "bytes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", + "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==" + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + } + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "requires": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + } + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "requires": { + "is-obj": "^2.0.0" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "express": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", + "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.6", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "global-dirs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", + "requires": { + "ini": "2.0.0" + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + }, + "http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=" + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "requires": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + } + }, + "is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" + }, + "joi": { + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", + "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", + "requires": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "requires": { + "json-buffer": "3.0.0" + } + }, + "latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "requires": { + "package-json": "^6.3.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" + }, + "mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "requires": { + "mime-db": "1.51.0" + } + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "nodemon": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz", + "integrity": "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==", + "requires": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5", + "update-notifier": "^5.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + }, + "package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "requires": { + "escape-goat": "^2.0.0" + } + }, + "qs": { + "version": "6.9.6", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", + "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", + "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", + "requires": { + "bytes": "3.1.1", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + } + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "registry-auth-token": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", + "requires": { + "rc": "^1.2.8" + } + }, + "registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "requires": { + "rc": "^1.2.8" + } + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "signal-exit": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "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" + } + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "requires": { + "nopt": "~1.0.10" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "update-notifier": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "requires": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "requires": { + "prepend-http": "^2.0.0" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "requires": { + "string-width": "^4.0.0" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 000000000..ee5246025 --- /dev/null +++ b/package.json @@ -0,0 +1,28 @@ +{ + "name": "sprint41", + "version": "1.0.0", + "description": "REST Server", + "main": "index.js", + "scripts": { + "test": "NO" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/molivaresr/nodeInitialDemo.git" + }, + "keywords": [ + "REST", + "Node" + ], + "author": "Mauricio Olivares", + "license": "MIT", + "bugs": { + "url": "https://github.com/molivaresr/nodeInitialDemo/issues" + }, + "homepage": "https://github.com/molivaresr/nodeInitialDemo#readme", + "dependencies": { + "express": "^4.17.2", + "joi": "^17.6.0", + "nodemon": "^2.0.15" + } +} From 6ed1eb3af82e68beb2dbccb6b337e3cf7057d553 Mon Sep 17 00:00:00 2001 From: Mauricio Date: Tue, 1 Feb 2022 10:51:40 +0100 Subject: [PATCH 06/17] Updated Gitingore --- .gitignore | 2 +- api/database/README.md | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 api/database/README.md diff --git a/.gitignore b/.gitignore index f7baaa326..0965b4fb4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ node_modules/ -database/ + ##MacOs .DS_Store \ No newline at end of file diff --git a/api/database/README.md b/api/database/README.md new file mode 100644 index 000000000..ebaf36fda --- /dev/null +++ b/api/database/README.md @@ -0,0 +1,2 @@ +### Bases de datos +Lugar donde se almacena el JSON \ No newline at end of file From 8faa7a4ddeb9f9e69a6d0bda14c79b51f9bd282c Mon Sep 17 00:00:00 2001 From: Mauricio Date: Tue, 1 Feb 2022 13:00:34 +0100 Subject: [PATCH 07/17] Endpoint Users finalizado (N1Ex1) --- api/routes/users.js | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/api/routes/users.js b/api/routes/users.js index 4a6ef5d8d..86b7fd512 100644 --- a/api/routes/users.js +++ b/api/routes/users.js @@ -1,9 +1,38 @@ const express = require('express'); - +const req = require('express/lib/request'); const router = express.Router(); +const Joi = require('joi'); +const users = [] // "Persistencia" router.get('/', (req,res) => { - res.send('Hola Usuarios') + const user = { + id: users.length + 1, + name: 'Mauricio', + age: '54', + url: req.originalUrl + } + res.status(200).send(user) +}); + +//Create new user +router.post('/', (req, res) => { + const schema = Joi.object ({ + name: Joi.string().required().min(3), + age: Joi.number().greater(17).required(), + }); + + const {error, result} = schema.validate(req.body); + + if(error) return res.status(400).send(error.details[0].message); + + const user = { + id: users.length + 1, + name: req.body.name, + age: req.body.age, + url: req.originalUrl + } + users.push(user); + res.send(users); }); module.exports = router From 6fbce319aa7d53d0ea628dff0a000b446679c560 Mon Sep 17 00:00:00 2001 From: Mauricio Date: Wed, 2 Feb 2022 12:22:57 +0100 Subject: [PATCH 08/17] Nivell 1 - Exercise 2 --- .gitignore | 2 +- api/app.js | 25 ++++- api/controllers/multerConf.js | 23 ++++ api/routes/upload.js | 9 -- api/routes/uploads.js | 32 ++++++ api/routes/users.js | 2 +- package-lock.json | 202 ++++++++++++++++++++++++++++++++++ package.json | 4 + 8 files changed, 284 insertions(+), 15 deletions(-) create mode 100644 api/controllers/multerConf.js delete mode 100644 api/routes/upload.js create mode 100644 api/routes/uploads.js diff --git a/.gitignore b/.gitignore index 0965b4fb4..14029d3fa 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ node_modules/ - +uploads/ ##MacOs .DS_Store \ No newline at end of file diff --git a/api/app.js b/api/app.js index fe2a0ca60..83cee3d76 100644 --- a/api/app.js +++ b/api/app.js @@ -1,14 +1,31 @@ //Crea servidor const express = require('express'); -const app = express (); +const multer = require('multer'); +const cors = require('cors'); +const bodyParser = require('body-parser'); +const morgan = require('morgan'); + const users = require('../api/routes/users') -const upload = require('../api/routes/upload') +const uploads = require('./routes/uploads') const time = require('../api/routes/time') +//Crea express app +const app = express (); + +//Activa CORS +app.use(cors()); + +//Otros middlewares +app.use(bodyParser.json()); +app.use(bodyParser.urlencoded({extended: true})); +app.use(morgan('dev')); app.use(express.json()); -app.use('/api/users',users) -app.use('/api/upload', upload) + +//Rutas +app.use('/api/users', users) +app.use('/api/uploads', uploads) app.use('/api/time', time) +//app.use(express.static(__dirname + '/public')); //Port const port = process.env.PORT || 3000; //Variable de entorno que captura el puerto que esta desginado en el ordenador app.listen(port, () => console.log(`Listening on port ${port}...`)) \ No newline at end of file diff --git a/api/controllers/multerConf.js b/api/controllers/multerConf.js new file mode 100644 index 000000000..2daa7f2bb --- /dev/null +++ b/api/controllers/multerConf.js @@ -0,0 +1,23 @@ +const multer = require('multer'); +const path = require('path') + +//Configurar Multer +const storage = multer.diskStorage({ + destination:'./uploads/', + limits:{ + files: 1, //Máximo 1 archivo + fieldSize: 2 * 1024 * 1024 + }, + filename: function (req, file, cb) { + cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname)) + } +}); +const imageFilter = (req,file,cb) => { + if(!file.originalname.match(/.(jpg|JPG|jpeg|JPEG|png|PNG|gif|GIF)$/)){ + req.fileValidationError='Sólo se permiten imagenes'; + return cb(new Error('Sólo se permiten imagenes'), false); + } + cb(null,true); +}; + +module.exports = {storage, imageFilter}; \ No newline at end of file diff --git a/api/routes/upload.js b/api/routes/upload.js deleted file mode 100644 index 8d1d8be3c..000000000 --- a/api/routes/upload.js +++ /dev/null @@ -1,9 +0,0 @@ -const express = require('express'); - -const router = express.Router(); - -router.get('/', (req,res) => { - res.send('Subiendo Archivos') -}); - -module.exports = router diff --git a/api/routes/uploads.js b/api/routes/uploads.js new file mode 100644 index 000000000..60ca06200 --- /dev/null +++ b/api/routes/uploads.js @@ -0,0 +1,32 @@ +const express = require('express'); +const router = express.Router(); +const multer = require('multer') +const {storage, imageFilter} = require('../controllers/multerConf') + +router.get('/', (req,res) => { + res.send('Subiendo Archivos') +}); + +router.post('/', (req,res) => { + let upload = multer({storage: storage, fileFilter: imageFilter}).single('profilePic'); + + upload(req,res, function(err) { + if(req.fileValidationError){ + return res.send(req.fileValidationError).status(400); + } + else if(!req.file) { + return res.send('Debes seleccionar una imagen').status(400); + } + else if(err instanceof multer.MulterError) { + return res.send(err).status(400); + } + else if (err){ + return res.send(err); + } + + res.send('Imagen subida').status(200) + }) + +}); + +module.exports = router diff --git a/api/routes/users.js b/api/routes/users.js index 86b7fd512..4e9fdf2ed 100644 --- a/api/routes/users.js +++ b/api/routes/users.js @@ -18,7 +18,7 @@ router.get('/', (req,res) => { router.post('/', (req, res) => { const schema = Joi.object ({ name: Joi.string().required().min(3), - age: Joi.number().greater(17).required(), + age: Joi.number().required().greater(17), }); const {error, result} = schema.validate(req.body); diff --git a/package-lock.json b/package-lock.json index 015d49916..91a0fc460 100644 --- a/package-lock.json +++ b/package-lock.json @@ -92,6 +92,11 @@ "picomatch": "^2.0.4" } }, + "append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY=" + }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -102,6 +107,21 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -156,6 +176,11 @@ "fill-range": "^7.0.1" } }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, "bytes": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", @@ -270,6 +295,51 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "configstore": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", @@ -306,6 +376,20 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, "crypto-random-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", @@ -658,6 +742,11 @@ "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, "joi": { "version": "17.6.0", "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", @@ -770,11 +859,73 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "requires": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "dependencies": { + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + } + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, + "multer": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4.tgz", + "integrity": "sha512-2wY2+xD4udX612aMqMcB8Ws2Voq6NIUPEtD1be6m411T4uDH/VtL9i//xvcyFlTVfRdaBsk7hV5tgrGQqhuBiw==", + "requires": { + "append-field": "^1.0.0", + "busboy": "^0.2.11", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "on-finished": "^2.3.0", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "dependencies": { + "busboy": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", + "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=", + "requires": { + "dicer": "0.2.5", + "readable-stream": "1.1.x" + } + }, + "dicer": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", + "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=", + "requires": { + "readable-stream": "1.1.x", + "streamsearch": "0.1.2" + } + } + } + }, "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -830,6 +981,11 @@ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -838,6 +994,11 @@ "ee-first": "1.1.1" } }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -889,6 +1050,11 @@ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, "proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -959,6 +1125,17 @@ } } }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, "readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -1074,6 +1251,11 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" }, + "streamsearch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", + "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" + }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -1084,6 +1266,11 @@ "strip-ansi": "^6.0.1" } }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -1145,6 +1332,11 @@ "mime-types": "~2.1.24" } }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, "typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -1210,6 +1402,11 @@ "prepend-http": "^2.0.0" } }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -1259,6 +1456,11 @@ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", diff --git a/package.json b/package.json index ee5246025..e705a14a7 100644 --- a/package.json +++ b/package.json @@ -21,8 +21,12 @@ }, "homepage": "https://github.com/molivaresr/nodeInitialDemo#readme", "dependencies": { + "body-parser": "^1.19.1", + "cors": "^2.8.5", "express": "^4.17.2", "joi": "^17.6.0", + "morgan": "^1.10.0", + "multer": "^1.4.4", "nodemon": "^2.0.15" } } From 87abc462462f374b499c5c8ecd76c5ca4e03ee5e Mon Sep 17 00:00:00 2001 From: molivaresr <69109375+molivaresr@users.noreply.github.com> Date: Thu, 10 Feb 2022 10:13:07 +0100 Subject: [PATCH 09/17] Update README.md --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c6053bdd0..4e8abb0b6 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,9 @@

Welcome to Node Rest Server👋

+**Para iniciar servidor**. +``npm i``-> Instala modulos requeridos. +``node .\api\app.js``. + + Nivell 1 - Exercici 1 Crea un servidor amb Express que retorni a una petició GET a l'endpoint /user un json amb el teu nom, edat i la url des d'on es fa la petició. @@ -12,4 +17,4 @@ Creu un endpoint /time que rebi per POST com a paràmetre un JSON amb el nom d'u Nivell 3 - Exercici 1 -Afegeixi un middleware a l'endpoint anterior que retorni un HTTP Status 401 - Unauthorized si la capçalera de la petició no conté autenticació bàsica (usuari i contrasenya). \ No newline at end of file +Afegeixi un middleware a l'endpoint anterior que retorni un HTTP Status 401 - Unauthorized si la capçalera de la petició no conté autenticació bàsica (usuari i contrasenya). From 2bd9500d33b746d91c7252be0ce7c44f637d6513 Mon Sep 17 00:00:00 2001 From: Mauricio Date: Thu, 10 Feb 2022 10:16:11 +0100 Subject: [PATCH 10/17] Update readme --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4e8abb0b6..5cf57004b 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,9 @@

Welcome to Node Rest Server👋

-**Para iniciar servidor**. +**Para iniciar servidor** + ``npm i``-> Instala modulos requeridos. -``node .\api\app.js``. +``node .\api\app.js``. Nivell 1 - Exercici 1 From 791e69569b8684f75567cc27c6a2b10df603773b Mon Sep 17 00:00:00 2001 From: Mauricio Date: Thu, 10 Feb 2022 10:16:56 +0100 Subject: [PATCH 11/17] Updrdm --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5cf57004b..0ce7165ae 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ``npm i``-> Instala modulos requeridos. -``node .\api\app.js``. +``node .\api\app.js`` -> Inicializa servidor. Nivell 1 - Exercici 1 From 3895ab050a3616c0c79ad87b1fad912fcf83f19d Mon Sep 17 00:00:00 2001 From: molivaresr <69109375+molivaresr@users.noreply.github.com> Date: Mon, 14 Feb 2022 09:36:44 +0100 Subject: [PATCH 12/17] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0ce7165ae..9b08100f9 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ``npm i``-> Instala modulos requeridos. -``node .\api\app.js`` -> Inicializa servidor. +``npm start`` -> Inicializa servidor. Nivell 1 - Exercici 1 From 004a3a301e282802afdff71f6cde872486a9e0c4 Mon Sep 17 00:00:00 2001 From: Mauricio Date: Mon, 14 Feb 2022 09:37:01 +0100 Subject: [PATCH 13/17] Update Package.json --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index e705a14a7..a9fbe039c 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "description": "REST Server", "main": "index.js", "scripts": { - "test": "NO" + "test": "NO", + "start": "node ./api/app.js" }, "repository": { "type": "git", From 072ef4a9e4a065f5c599f80b24dcb0887e2aaa4e Mon Sep 17 00:00:00 2001 From: Mauricio Date: Mon, 14 Feb 2022 09:44:16 +0100 Subject: [PATCH 14/17] uploads --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index 14029d3fa..5bf806752 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ node_modules/ -uploads/ ##MacOs .DS_Store \ No newline at end of file From bbd0672d855355c2223ded19321a8a2fc299d45e Mon Sep 17 00:00:00 2001 From: Mauricio Date: Mon, 14 Feb 2022 09:44:23 +0100 Subject: [PATCH 15/17] uploads --- uploads/img_example.jpg | Bin 0 -> 25490 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 uploads/img_example.jpg diff --git a/uploads/img_example.jpg b/uploads/img_example.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f095deb8e533f0c345178d093e898d85f2bc61eb GIT binary patch literal 25490 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 literal 0 HcmV?d00001 From 74aca88308eb8bd978621c7a3f4ed52ae7e475ba Mon Sep 17 00:00:00 2001 From: molivaresr Date: Mon, 7 Mar 2022 20:16:41 +0100 Subject: [PATCH 16/17] Niveles 1 al 3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Colección de Postman incluída --- api/app.js | 10 +- api/middlewares/cacheMiddleware.js | 5 + api/routes/time.js | 27 +- api/routes/users.js | 1 + package-lock.json | 1951 +++++++++++++++++++++++++++- package.json | 2 +- postMan.json | 154 +++ 7 files changed, 2135 insertions(+), 15 deletions(-) create mode 100644 api/middlewares/cacheMiddleware.js create mode 100644 postMan.json diff --git a/api/app.js b/api/app.js index 83cee3d76..4c02e9fc0 100644 --- a/api/app.js +++ b/api/app.js @@ -21,11 +21,13 @@ app.use(bodyParser.urlencoded({extended: true})); app.use(morgan('dev')); app.use(express.json()); +// + //Rutas -app.use('/api/users', users) -app.use('/api/uploads', uploads) -app.use('/api/time', time) -//app.use(express.static(__dirname + '/public')); +app.use('/api/users', users); +app.use('/api/uploads', uploads); +app.use('/api/time', time); + //Port const port = process.env.PORT || 3000; //Variable de entorno que captura el puerto que esta desginado en el ordenador app.listen(port, () => console.log(`Listening on port ${port}...`)) \ No newline at end of file diff --git a/api/middlewares/cacheMiddleware.js b/api/middlewares/cacheMiddleware.js new file mode 100644 index 000000000..ba798454d --- /dev/null +++ b/api/middlewares/cacheMiddleware.js @@ -0,0 +1,5 @@ +module.exports = cacheMiddleware = (req,res,next)=>{ + res.set('Cache-control', 'no-cache') + next() + } + \ No newline at end of file diff --git a/api/routes/time.js b/api/routes/time.js index 0db2afee2..e5edf249e 100644 --- a/api/routes/time.js +++ b/api/routes/time.js @@ -1,9 +1,28 @@ const express = require('express'); - const router = express.Router(); +const cors = require('cors'); + +const midCache = (req, res, next) => { + res.set('Cache-Control','no-cache'); + next() +} + +const checkAuth = (req, res, next) => { + const user = req.body.user; + const password = req.body.password; + if(!user || !password) { + res.status(401).send({message:"Usuario y/ Contraseña incorrecta"}) + } + next() +} -router.get('/', (req,res) => { - res.send('Controlando el tiempo') -}); +router.post('/',cors(), checkAuth, midCache,(req,res) => { + const user = req.body; + const respuesta = { + user: user, + date: new Date().toLocaleString() + } + res.json(respuesta) +}) module.exports = router diff --git a/api/routes/users.js b/api/routes/users.js index 4e9fdf2ed..8b838831b 100644 --- a/api/routes/users.js +++ b/api/routes/users.js @@ -35,4 +35,5 @@ router.post('/', (req, res) => { res.send(users); }); + module.exports = router diff --git a/package-lock.json b/package-lock.json index 91a0fc460..cec67ba48 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8 +1,1947 @@ { "name": "sprint41", "version": "1.0.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "sprint41", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "body-parser": "^1.19.1", + "cors": "^2.8.5", + "express": "^4.17.2", + "joi": "^17.6.0", + "morgan": "^1.10.0", + "multer": "^1.4.4", + "nodemon": "^2.0.15" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", + "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==" + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/address": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.3.tgz", + "integrity": "sha512-8ncEUtmnTsMmL7z1YPB47kPUq7LpKWJNFPsRzHiIajGC5uXlWGn+AmkYPcHNl8S4tcEGx+cnORnNYaw2wvL+LQ==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "node_modules/accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dependencies": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY=" + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/body-parser": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", + "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", + "dependencies": { + "bytes": "3.1.1", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.6", + "raw-body": "2.4.2", + "type-is": "~1.6.18" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/bytes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", + "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dependencies": { + "mimic-response": "^1.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dependencies": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", + "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", + "dependencies": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.6", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/global-dirs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + }, + "node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=" + }, + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "node_modules/is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" + }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "node_modules/joi": { + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", + "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", + "dependencies": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, + "node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dependencies": { + "package-json": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dependencies": { + "mime-db": "1.51.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/morgan/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/multer": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4.tgz", + "integrity": "sha512-2wY2+xD4udX612aMqMcB8Ws2Voq6NIUPEtD1be6m411T4uDH/VtL9i//xvcyFlTVfRdaBsk7hV5tgrGQqhuBiw==", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^0.2.11", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "on-finished": "^2.3.0", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/multer/node_modules/busboy": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", + "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=", + "dependencies": { + "dicer": "0.2.5", + "readable-stream": "1.1.x" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/multer/node_modules/dicer": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", + "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=", + "dependencies": { + "readable-stream": "1.1.x", + "streamsearch": "0.1.2" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nodemon": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz", + "integrity": "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==", + "hasInstallScript": true, + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5", + "update-notifier": "^5.1.0" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/nodemon/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dependencies": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "engines": { + "node": ">=4" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "dependencies": { + "escape-goat": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qs": { + "version": "6.9.6", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", + "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", + "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", + "dependencies": { + "bytes": "3.1.1", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/registry-auth-token": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dependencies": { + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semver-diff/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/signal-exit": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/streamsearch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", + "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-notifier": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "dependencies": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + }, "dependencies": { "@hapi/hoek": { "version": "9.2.1", @@ -1256,6 +3195,11 @@ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -1266,11 +3210,6 @@ "strip-ansi": "^6.0.1" } }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", diff --git a/package.json b/package.json index a9fbe039c..774285f83 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "index.js", "scripts": { "test": "NO", - "start": "node ./api/app.js" + "start": "nodemon ./api/app.js" }, "repository": { "type": "git", diff --git a/postMan.json b/postMan.json new file mode 100644 index 000000000..0a803ecf7 --- /dev/null +++ b/postMan.json @@ -0,0 +1,154 @@ +{ + "info": { + "_postman_id": "c7e750d5-d5fa-4baa-923b-300475d7a5fa", + "name": "New Collection", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "name": "Get -> /api/users", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "http://localhost:3000/api/users", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "3000", + "path": [ + "api", + "users" + ] + } + }, + "response": [] + }, + { + "name": "Post -> /api/uploads/", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "profilePic", + "type": "file", + "src": "/Users/mauricioub/Desktop/9al17-3.png" + } + ] + }, + "url": { + "raw": "http://localhost:3000/api/uploads/", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "3000", + "path": [ + "api", + "uploads", + "" + ] + } + }, + "response": [] + }, + { + "name": "Post -> Nivell 2 /api/time", + "request": { + "method": "POST", + "header": [ + { + "key": "Cache-Control", + "value": "No-Cache", + "type": "text" + } + ], + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "Cache-Control", + "value": "no-cache", + "type": "text", + "disabled": true + }, + { + "key": "user", + "value": "CodingWithMoch", + "type": "text" + }, + { + "key": "password", + "value": "admin", + "type": "text" + } + ] + }, + "url": { + "raw": "http://localhost:3000/api/time/", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "3000", + "path": [ + "api", + "time", + "" + ] + } + }, + "response": [] + }, + { + "name": "Post -> Nivell 3 /api/time with Authorization", + "request": { + "method": "POST", + "header": [ + { + "key": "Cache-Control", + "value": "No-Cache", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"user\":\"Cassidy\",\n \"password\":\"ItAcademy\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://localhost:3000/api/time/?user=Cassidy&password=Omar2022", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "3000", + "path": [ + "api", + "time", + "" + ], + "query": [ + { + "key": "user", + "value": "Cassidy" + }, + { + "key": "password", + "value": "Omar2022" + } + ] + } + }, + "response": [] + } + ] +} \ No newline at end of file From 051f2124de1a7caac548ce64618ac4b9dbca4bf9 Mon Sep 17 00:00:00 2001 From: Mauricio Olivares Rojas <69109375+molro@users.noreply.github.com> Date: Thu, 10 Mar 2022 11:44:31 +0100 Subject: [PATCH 17/17] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 774285f83..a9fbe039c 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "index.js", "scripts": { "test": "NO", - "start": "nodemon ./api/app.js" + "start": "node ./api/app.js" }, "repository": { "type": "git",