├── .gitignore ├── README.md ├── contacts_index.png ├── db.json ├── new_contact.png ├── package-lock.json ├── package.json ├── public ├── index.html └── style.css └── server.js /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # Bower dependency directory (https://bower.io/) 27 | bower_components 28 | 29 | # node-waf configuration 30 | .lock-wscript 31 | 32 | # Compiled binary addons (http://nodejs.org/api/addons.html) 33 | build/Release 34 | 35 | # Dependency directories 36 | node_modules/ 37 | jspm_packages/ 38 | 39 | # Typescript v1 declaration files 40 | typings/ 41 | 42 | # Optional npm cache directory 43 | .npm 44 | 45 | # Optional eslint cache 46 | .eslintcache 47 | 48 | # Optional REPL history 49 | .node_repl_history 50 | 51 | # Output of 'npm pack' 52 | *.tgz 53 | 54 | # Yarn Integrity file 55 | .yarn-integrity 56 | 57 | # dotenv environment variables file 58 | .env 59 | 60 | .DS_Store 61 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Beetrack Front-end Test 2 | ### Introducción 3 | La siguiente prueba busca evaluar los conocimientos en javascript, css y html. Para consultas, enviar un correo a [engineering@beetrack.com](mailto:engineering@beetrack.com). 4 | ### Descripción e instalación 5 | Se adjunta un proyecto de nodejs, con una pequeña base de datos y una api ya desarrollada. Para ejecutar el proyecto, una vez descargado hay que correr las siguientes líneas por línea de comandos en el root del proyecto: 6 | ``` 7 | npm install 8 | node server.js 9 | ``` 10 | Los requisitos son únicamente tener instalado una versión de `node >= 4` y `npm`. 11 | Si todo funcionó correctamente, va a correr el servidor, y vas a poder acceder a través de cualquier navegador en la dirección: [localhost:3000](http://localhost:3000). Se debería visualizar el html ubicado en `public/index.html`. 12 | ### Desarrollo 13 | El objectivo del test es desarrollar 2 vistas utilizando la api incluida en el proyecto. 14 | 15 | La primera consiste en una lista paginada de usuarios con un buscador. Se debe visualizar la imagen del usuario con su respectivo nombre, y la descripción al lado, como se ve a continuación: 16 | 17 | ![alt text](./contacts_index.png "Users list") 18 | 19 | Al hacer hover en una fila, se debe mostrar un vínculo para eliminar dicho usuario a través de un AJAX. No es necesario que el paginador muestra el número de páginas; sólo un link para ir a la siguiente o la anterior. 20 | 21 | La segunda vista consiste en el formulario para agregar un usuario. Se gatilla como modal al presionar el botón de `Nuevo Contacto` de la vista anterior. La única validación que debe hacer este formulario, es que verifique que se incluyen todos los campos. Una vez completado, al presionar el botón `Guardar` debe enviar la información por AJAX a la api para crear el usuario. La vista se muestra a continuación: 22 | 23 | ![alt text](./new_contact.png "New Contact") 24 | ### Descripción de la API 25 | El proyecto incluye la api y la base de datos de almacenamiento. La api es REST, y a continuación se especifican sus métodos: 26 | 27 | | Método HTTP | Ruta | Descripción | 28 | | ------------- |:------------- | -----| 29 | | GET | /api/users | Devuelve la lista de todos los usuarios. Para paginar necesita recibir adicionalmente los parámetros `_page` y `_limit` : `/api/users?_page=2&_limit=10`. Para buscar, necesita el parámetro `q`: `/api/users?q=texto`| 30 | | GET | /api/users/:id | Devuelve únicamente el usuario especificado por el id | 31 | | POST | /api/users | Crea un usuario nuevo. Debe incluir el header `Content-Type: application/json`, y los parámetros en formato JSON. Ej: `{"name": "Algún nombre","description": "Alguna descripción","photo": "Alguna URL"}`| 32 | | DELETE | /api/users/:id | Elimina el usuario correspondiente al id dado. | 33 | ### Criterios de evaluación 34 | Se pide específicamente el uso de [React](https://facebook.github.io/react/). Dará un valor adicional, aunque no es obligatorio, el uso además de [Redux](https://redux.js.org). Adicionalmente se evaluarán los siguientes puntos: 35 | 1. Utilización de patrones, buenas prácticas en el código y arquitectura acorde 36 | 2. Documentación en el código 37 | 3. Diseño lo más similar posible a las imágenes mostradas más arriba 38 | 4. Tiempo en realizar la tarea 39 | ### Plazos y envío 40 | Esta prueba no considera plazos máximos de entrega, pero el tiempo es un criterio de evaluación, por lo que se espera una buen balance entre calidad y el tiempo usado. Una vez terminada la tarea, por favor adjuntar el proyecto modificado, y enviarlo a [engineering@beetrack.com](mailto:engineering@beetrack.com). Se recibirá sólo una entrega por candidato (solamente la primera), por lo tanto enviar cuando esté completamente listo. 41 | -------------------------------------------------------------------------------- /contacts_index.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Beetrack/frontend-test/dac1a77316f2514a2d62c390df553419edb78a8f/contacts_index.png -------------------------------------------------------------------------------- /db.json: -------------------------------------------------------------------------------- 1 | { 2 | "users": [ 3 | { "id": 1, "name": "Francisco", "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", "photo": "https://images.pexels.com/photos/91227/pexels-photo-91227.jpeg?h=350&auto=compress&cs=tinysrgb" }, 4 | { "id": 2, "name": "Pedro", "description": "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.", "photo": "https://images.pexels.com/photos/193355/pexels-photo-193355.jpeg?h=350&auto=compress&cs=tinysrgb"}, 5 | { "id": 3, "name": "Maria", "description": "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", "photo": "https://images.pexels.com/photos/157661/young-woman-shooting-model-157661.jpeg?h=350&auto=compress&cs=tinysrgb" }, 6 | { "id": 4, "name": "Jorge", "description": "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.", "photo": "https://images.pexels.com/photos/247917/pexels-photo-247917.jpeg?h=350&auto=compress&cs=tinysrgb" }, 7 | { "id": 5, "name": "Ana", "description": "Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.", "photo": "https://images.pexels.com/photos/418870/pexels-photo-418870.jpeg?h=350&auto=compress&cs=tinysrgb" }, 8 | { "id": 6, "name": "Felipe", "description": "Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem.", "photo": "https://images.pexels.com/photos/325682/pexels-photo-325682.jpeg?h=350&auto=compress&cs=tinysrgb" } 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /new_contact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Beetrack/frontend-test/dac1a77316f2514a2d62c390df553419edb78a8f/new_contact.png -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "beeetrack-javascript-test", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "dependencies": { 6 | "accepts": { 7 | "version": "1.3.3", 8 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", 9 | "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", 10 | "dev": true 11 | }, 12 | "ajv": { 13 | "version": "4.11.8", 14 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", 15 | "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", 16 | "dev": true 17 | }, 18 | "ansi-align": { 19 | "version": "1.1.0", 20 | "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-1.1.0.tgz", 21 | "integrity": "sha1-LwwWWIKXOa3V67FeawxuNCPwFro=", 22 | "dev": true 23 | }, 24 | "ansi-regex": { 25 | "version": "2.1.1", 26 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 27 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 28 | "dev": true 29 | }, 30 | "ansi-styles": { 31 | "version": "2.2.1", 32 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 33 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 34 | "dev": true 35 | }, 36 | "array-flatten": { 37 | "version": "1.1.1", 38 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 39 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", 40 | "dev": true 41 | }, 42 | "asn1": { 43 | "version": "0.2.3", 44 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", 45 | "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", 46 | "dev": true 47 | }, 48 | "assert-plus": { 49 | "version": "0.2.0", 50 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", 51 | "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", 52 | "dev": true 53 | }, 54 | "asynckit": { 55 | "version": "0.4.0", 56 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 57 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", 58 | "dev": true 59 | }, 60 | "aws-sign2": { 61 | "version": "0.6.0", 62 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", 63 | "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", 64 | "dev": true 65 | }, 66 | "aws4": { 67 | "version": "1.6.0", 68 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", 69 | "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", 70 | "dev": true 71 | }, 72 | "basic-auth": { 73 | "version": "1.1.0", 74 | "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz", 75 | "integrity": "sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ=", 76 | "dev": true 77 | }, 78 | "bcrypt-pbkdf": { 79 | "version": "1.0.1", 80 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", 81 | "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", 82 | "dev": true, 83 | "optional": true 84 | }, 85 | "body-parser": { 86 | "version": "1.17.2", 87 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.2.tgz", 88 | "integrity": "sha1-+IkqvI+eYn1Crtr7yma/WrmRBO4=", 89 | "dev": true 90 | }, 91 | "boom": { 92 | "version": "2.10.1", 93 | "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", 94 | "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", 95 | "dev": true 96 | }, 97 | "boxen": { 98 | "version": "0.6.0", 99 | "resolved": "https://registry.npmjs.org/boxen/-/boxen-0.6.0.tgz", 100 | "integrity": "sha1-g2TUJIrDT/DvGy8r9JpsYM4NgbY=", 101 | "dev": true 102 | }, 103 | "builtin-modules": { 104 | "version": "1.1.1", 105 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", 106 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", 107 | "dev": true 108 | }, 109 | "bytes": { 110 | "version": "2.4.0", 111 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", 112 | "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=", 113 | "dev": true 114 | }, 115 | "camelcase": { 116 | "version": "2.1.1", 117 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", 118 | "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", 119 | "dev": true 120 | }, 121 | "capture-stack-trace": { 122 | "version": "1.0.0", 123 | "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", 124 | "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", 125 | "dev": true 126 | }, 127 | "caseless": { 128 | "version": "0.12.0", 129 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 130 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", 131 | "dev": true 132 | }, 133 | "chalk": { 134 | "version": "1.1.3", 135 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 136 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 137 | "dev": true 138 | }, 139 | "cli-boxes": { 140 | "version": "1.0.0", 141 | "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", 142 | "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", 143 | "dev": true 144 | }, 145 | "cliui": { 146 | "version": "3.2.0", 147 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", 148 | "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", 149 | "dev": true 150 | }, 151 | "co": { 152 | "version": "4.6.0", 153 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 154 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", 155 | "dev": true 156 | }, 157 | "code-point-at": { 158 | "version": "1.1.0", 159 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", 160 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", 161 | "dev": true 162 | }, 163 | "combined-stream": { 164 | "version": "1.0.5", 165 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", 166 | "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", 167 | "dev": true 168 | }, 169 | "compressible": { 170 | "version": "2.0.11", 171 | "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.11.tgz", 172 | "integrity": "sha1-FnGKdd4oPtjmBAQWJaIGRYZ5fYo=", 173 | "dev": true 174 | }, 175 | "compression": { 176 | "version": "1.7.0", 177 | "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.0.tgz", 178 | "integrity": "sha1-AwyfGY8WQ6BX13anOOki2kNzAS0=", 179 | "dev": true, 180 | "dependencies": { 181 | "bytes": { 182 | "version": "2.5.0", 183 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.5.0.tgz", 184 | "integrity": "sha1-TJQj6i0lLCcMQbK97+/5u2tiwGo=", 185 | "dev": true 186 | }, 187 | "debug": { 188 | "version": "2.6.8", 189 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", 190 | "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", 191 | "dev": true 192 | } 193 | } 194 | }, 195 | "configstore": { 196 | "version": "2.1.0", 197 | "resolved": "https://registry.npmjs.org/configstore/-/configstore-2.1.0.tgz", 198 | "integrity": "sha1-c3o6cDbpiGECqmCZ5HuzOrGroaE=", 199 | "dev": true, 200 | "dependencies": { 201 | "uuid": { 202 | "version": "2.0.3", 203 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", 204 | "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", 205 | "dev": true 206 | } 207 | } 208 | }, 209 | "connect-pause": { 210 | "version": "0.1.0", 211 | "resolved": "https://registry.npmjs.org/connect-pause/-/connect-pause-0.1.0.tgz", 212 | "integrity": "sha1-D9d72e+Lpg0KJw7lIxOz2tRsQSo=", 213 | "dev": true 214 | }, 215 | "content-disposition": { 216 | "version": "0.5.2", 217 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", 218 | "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", 219 | "dev": true 220 | }, 221 | "content-type": { 222 | "version": "1.0.2", 223 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", 224 | "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=", 225 | "dev": true 226 | }, 227 | "cookie": { 228 | "version": "0.3.1", 229 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", 230 | "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", 231 | "dev": true 232 | }, 233 | "cookie-signature": { 234 | "version": "1.0.6", 235 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 236 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", 237 | "dev": true 238 | }, 239 | "core-util-is": { 240 | "version": "1.0.2", 241 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 242 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 243 | "dev": true 244 | }, 245 | "cors": { 246 | "version": "2.8.4", 247 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.4.tgz", 248 | "integrity": "sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY=", 249 | "dev": true 250 | }, 251 | "create-error-class": { 252 | "version": "3.0.2", 253 | "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", 254 | "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", 255 | "dev": true 256 | }, 257 | "cryptiles": { 258 | "version": "2.0.5", 259 | "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", 260 | "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", 261 | "dev": true 262 | }, 263 | "dashdash": { 264 | "version": "1.14.1", 265 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 266 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", 267 | "dev": true, 268 | "dependencies": { 269 | "assert-plus": { 270 | "version": "1.0.0", 271 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 272 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", 273 | "dev": true 274 | } 275 | } 276 | }, 277 | "debug": { 278 | "version": "2.6.7", 279 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", 280 | "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", 281 | "dev": true 282 | }, 283 | "decamelize": { 284 | "version": "1.2.0", 285 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 286 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 287 | "dev": true 288 | }, 289 | "deep-extend": { 290 | "version": "0.4.2", 291 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", 292 | "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", 293 | "dev": true 294 | }, 295 | "delayed-stream": { 296 | "version": "1.0.0", 297 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 298 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", 299 | "dev": true 300 | }, 301 | "depd": { 302 | "version": "1.1.1", 303 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", 304 | "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", 305 | "dev": true 306 | }, 307 | "destroy": { 308 | "version": "1.0.4", 309 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 310 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", 311 | "dev": true 312 | }, 313 | "dot-prop": { 314 | "version": "3.0.0", 315 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", 316 | "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", 317 | "dev": true 318 | }, 319 | "duplexer2": { 320 | "version": "0.1.4", 321 | "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", 322 | "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", 323 | "dev": true 324 | }, 325 | "ecc-jsbn": { 326 | "version": "0.1.1", 327 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", 328 | "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", 329 | "dev": true, 330 | "optional": true 331 | }, 332 | "ee-first": { 333 | "version": "1.1.1", 334 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 335 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", 336 | "dev": true 337 | }, 338 | "encodeurl": { 339 | "version": "1.0.1", 340 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", 341 | "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=", 342 | "dev": true 343 | }, 344 | "error-ex": { 345 | "version": "1.3.1", 346 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", 347 | "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", 348 | "dev": true 349 | }, 350 | "errorhandler": { 351 | "version": "1.5.0", 352 | "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.0.tgz", 353 | "integrity": "sha1-6rpkyl1UKjEayUX1gt78M2Fl2fQ=", 354 | "dev": true 355 | }, 356 | "escape-html": { 357 | "version": "1.0.3", 358 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 359 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", 360 | "dev": true 361 | }, 362 | "escape-string-regexp": { 363 | "version": "1.0.5", 364 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 365 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 366 | "dev": true 367 | }, 368 | "etag": { 369 | "version": "1.8.0", 370 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz", 371 | "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE=", 372 | "dev": true 373 | }, 374 | "express": { 375 | "version": "4.15.3", 376 | "resolved": "https://registry.npmjs.org/express/-/express-4.15.3.tgz", 377 | "integrity": "sha1-urZdDwOqgMNYQIly/HAPkWlEtmI=", 378 | "dev": true 379 | }, 380 | "express-urlrewrite": { 381 | "version": "1.2.0", 382 | "resolved": "https://registry.npmjs.org/express-urlrewrite/-/express-urlrewrite-1.2.0.tgz", 383 | "integrity": "sha1-jmZ7d2H/HH/9sO+gXWQDU4fII+s=", 384 | "dev": true, 385 | "dependencies": { 386 | "path-to-regexp": { 387 | "version": "1.7.0", 388 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", 389 | "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", 390 | "dev": true 391 | } 392 | } 393 | }, 394 | "extend": { 395 | "version": "3.0.1", 396 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", 397 | "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", 398 | "dev": true 399 | }, 400 | "extsprintf": { 401 | "version": "1.0.2", 402 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", 403 | "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", 404 | "dev": true 405 | }, 406 | "filled-array": { 407 | "version": "1.1.0", 408 | "resolved": "https://registry.npmjs.org/filled-array/-/filled-array-1.1.0.tgz", 409 | "integrity": "sha1-w8T2xmO5I0WamqKZEtLQMfFQf4Q=", 410 | "dev": true 411 | }, 412 | "finalhandler": { 413 | "version": "1.0.3", 414 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz", 415 | "integrity": "sha1-70fneVDpmXgOhgIqVg4yF+DQzIk=", 416 | "dev": true 417 | }, 418 | "find-up": { 419 | "version": "1.1.2", 420 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", 421 | "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", 422 | "dev": true 423 | }, 424 | "forever-agent": { 425 | "version": "0.6.1", 426 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 427 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", 428 | "dev": true 429 | }, 430 | "form-data": { 431 | "version": "2.1.4", 432 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", 433 | "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", 434 | "dev": true 435 | }, 436 | "forwarded": { 437 | "version": "0.1.0", 438 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", 439 | "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M=", 440 | "dev": true 441 | }, 442 | "fresh": { 443 | "version": "0.5.0", 444 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", 445 | "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=", 446 | "dev": true 447 | }, 448 | "get-caller-file": { 449 | "version": "1.0.2", 450 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", 451 | "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", 452 | "dev": true 453 | }, 454 | "getpass": { 455 | "version": "0.1.7", 456 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 457 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", 458 | "dev": true, 459 | "dependencies": { 460 | "assert-plus": { 461 | "version": "1.0.0", 462 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 463 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", 464 | "dev": true 465 | } 466 | } 467 | }, 468 | "got": { 469 | "version": "5.7.1", 470 | "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", 471 | "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", 472 | "dev": true 473 | }, 474 | "graceful-fs": { 475 | "version": "4.1.11", 476 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 477 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", 478 | "dev": true 479 | }, 480 | "har-schema": { 481 | "version": "1.0.5", 482 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", 483 | "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", 484 | "dev": true 485 | }, 486 | "har-validator": { 487 | "version": "4.2.1", 488 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", 489 | "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", 490 | "dev": true 491 | }, 492 | "has-ansi": { 493 | "version": "2.0.0", 494 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 495 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 496 | "dev": true 497 | }, 498 | "hawk": { 499 | "version": "3.1.3", 500 | "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", 501 | "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", 502 | "dev": true 503 | }, 504 | "hoek": { 505 | "version": "2.16.3", 506 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", 507 | "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", 508 | "dev": true 509 | }, 510 | "hosted-git-info": { 511 | "version": "2.5.0", 512 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", 513 | "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", 514 | "dev": true 515 | }, 516 | "http-errors": { 517 | "version": "1.6.1", 518 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", 519 | "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=", 520 | "dev": true, 521 | "dependencies": { 522 | "depd": { 523 | "version": "1.1.0", 524 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", 525 | "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=", 526 | "dev": true 527 | } 528 | } 529 | }, 530 | "http-signature": { 531 | "version": "1.1.1", 532 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", 533 | "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", 534 | "dev": true 535 | }, 536 | "iconv-lite": { 537 | "version": "0.4.15", 538 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", 539 | "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=", 540 | "dev": true 541 | }, 542 | "imurmurhash": { 543 | "version": "0.1.4", 544 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 545 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 546 | "dev": true 547 | }, 548 | "inherits": { 549 | "version": "2.0.3", 550 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 551 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 552 | "dev": true 553 | }, 554 | "ini": { 555 | "version": "1.3.4", 556 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", 557 | "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", 558 | "dev": true 559 | }, 560 | "invert-kv": { 561 | "version": "1.0.0", 562 | "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", 563 | "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", 564 | "dev": true 565 | }, 566 | "ipaddr.js": { 567 | "version": "1.4.0", 568 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.4.0.tgz", 569 | "integrity": "sha1-KWrKh4qCGBbluF0KKFqZvP9FgvA=", 570 | "dev": true 571 | }, 572 | "is-arrayish": { 573 | "version": "0.2.1", 574 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 575 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 576 | "dev": true 577 | }, 578 | "is-builtin-module": { 579 | "version": "1.0.0", 580 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", 581 | "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", 582 | "dev": true 583 | }, 584 | "is-finite": { 585 | "version": "1.0.2", 586 | "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", 587 | "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", 588 | "dev": true 589 | }, 590 | "is-fullwidth-code-point": { 591 | "version": "1.0.0", 592 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 593 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 594 | "dev": true 595 | }, 596 | "is-npm": { 597 | "version": "1.0.0", 598 | "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", 599 | "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", 600 | "dev": true 601 | }, 602 | "is-obj": { 603 | "version": "1.0.1", 604 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", 605 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", 606 | "dev": true 607 | }, 608 | "is-promise": { 609 | "version": "2.1.0", 610 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", 611 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", 612 | "dev": true 613 | }, 614 | "is-redirect": { 615 | "version": "1.0.0", 616 | "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", 617 | "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", 618 | "dev": true 619 | }, 620 | "is-retry-allowed": { 621 | "version": "1.1.0", 622 | "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", 623 | "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", 624 | "dev": true 625 | }, 626 | "is-stream": { 627 | "version": "1.1.0", 628 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 629 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", 630 | "dev": true 631 | }, 632 | "is-typedarray": { 633 | "version": "1.0.0", 634 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 635 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", 636 | "dev": true 637 | }, 638 | "is-utf8": { 639 | "version": "0.2.1", 640 | "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", 641 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", 642 | "dev": true 643 | }, 644 | "isarray": { 645 | "version": "0.0.1", 646 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 647 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", 648 | "dev": true 649 | }, 650 | "isstream": { 651 | "version": "0.1.2", 652 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 653 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", 654 | "dev": true 655 | }, 656 | "jju": { 657 | "version": "1.3.0", 658 | "resolved": "https://registry.npmjs.org/jju/-/jju-1.3.0.tgz", 659 | "integrity": "sha1-2t2e8BkkvHKLA/L3l5vb1i96Kqo=", 660 | "dev": true 661 | }, 662 | "jsbn": { 663 | "version": "0.1.1", 664 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 665 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", 666 | "dev": true, 667 | "optional": true 668 | }, 669 | "json-parse-helpfulerror": { 670 | "version": "1.0.3", 671 | "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz", 672 | "integrity": "sha1-E/FM4C7tTpgSl7ZOueO5MuLdE9w=", 673 | "dev": true 674 | }, 675 | "json-schema": { 676 | "version": "0.2.3", 677 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", 678 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", 679 | "dev": true 680 | }, 681 | "json-server": { 682 | "version": "0.11.2", 683 | "resolved": "https://registry.npmjs.org/json-server/-/json-server-0.11.2.tgz", 684 | "integrity": "sha512-bHlHkZAXKXUIcSp4ldHZ0B7w+s77B/IDe46xla3ZdqAJA9xTimtxj3BqSjd4ijkYQncFVTNspGbubIzeRaheHA==", 685 | "dev": true 686 | }, 687 | "json-stable-stringify": { 688 | "version": "1.0.1", 689 | "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", 690 | "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", 691 | "dev": true 692 | }, 693 | "json-stringify-safe": { 694 | "version": "5.0.1", 695 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 696 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", 697 | "dev": true 698 | }, 699 | "jsonify": { 700 | "version": "0.0.0", 701 | "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", 702 | "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", 703 | "dev": true 704 | }, 705 | "jsprim": { 706 | "version": "1.4.0", 707 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", 708 | "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", 709 | "dev": true, 710 | "dependencies": { 711 | "assert-plus": { 712 | "version": "1.0.0", 713 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 714 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", 715 | "dev": true 716 | } 717 | } 718 | }, 719 | "latest-version": { 720 | "version": "2.0.0", 721 | "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-2.0.0.tgz", 722 | "integrity": "sha1-VvjWE5YghHuAF/jx9NeOIRMkFos=", 723 | "dev": true 724 | }, 725 | "lazy-req": { 726 | "version": "1.1.0", 727 | "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-1.1.0.tgz", 728 | "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=", 729 | "dev": true 730 | }, 731 | "lcid": { 732 | "version": "1.0.0", 733 | "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", 734 | "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", 735 | "dev": true 736 | }, 737 | "load-json-file": { 738 | "version": "1.1.0", 739 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", 740 | "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", 741 | "dev": true 742 | }, 743 | "lodash": { 744 | "version": "4.17.4", 745 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", 746 | "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", 747 | "dev": true 748 | }, 749 | "lodash-id": { 750 | "version": "0.13.0", 751 | "resolved": "https://registry.npmjs.org/lodash-id/-/lodash-id-0.13.0.tgz", 752 | "integrity": "sha1-GyCGwk8ATwdBG9sJt3UHIRS83cY=", 753 | "dev": true 754 | }, 755 | "lowdb": { 756 | "version": "0.15.5", 757 | "resolved": "https://registry.npmjs.org/lowdb/-/lowdb-0.15.5.tgz", 758 | "integrity": "sha1-mt4QXfiqVzaS0SIWIrhUFPv0+pY=", 759 | "dev": true 760 | }, 761 | "lowercase-keys": { 762 | "version": "1.0.0", 763 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", 764 | "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", 765 | "dev": true 766 | }, 767 | "media-typer": { 768 | "version": "0.3.0", 769 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 770 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", 771 | "dev": true 772 | }, 773 | "merge-descriptors": { 774 | "version": "1.0.1", 775 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 776 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", 777 | "dev": true 778 | }, 779 | "method-override": { 780 | "version": "2.3.9", 781 | "resolved": "https://registry.npmjs.org/method-override/-/method-override-2.3.9.tgz", 782 | "integrity": "sha1-vRUfLONM8Bp2ykAKuVwBKxAtj3E=", 783 | "dev": true, 784 | "dependencies": { 785 | "debug": { 786 | "version": "2.6.8", 787 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", 788 | "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", 789 | "dev": true 790 | } 791 | } 792 | }, 793 | "methods": { 794 | "version": "1.1.2", 795 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 796 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", 797 | "dev": true 798 | }, 799 | "mime": { 800 | "version": "1.3.4", 801 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", 802 | "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", 803 | "dev": true 804 | }, 805 | "mime-db": { 806 | "version": "1.29.0", 807 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.29.0.tgz", 808 | "integrity": "sha1-SNJtI1WJZRcErFkWygYAGRQmaHg=", 809 | "dev": true 810 | }, 811 | "mime-types": { 812 | "version": "2.1.16", 813 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.16.tgz", 814 | "integrity": "sha1-K4WKUuXs1RbbiXrCvodIeDBpjiM=", 815 | "dev": true 816 | }, 817 | "minimist": { 818 | "version": "0.0.8", 819 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 820 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 821 | "dev": true 822 | }, 823 | "mkdirp": { 824 | "version": "0.5.1", 825 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 826 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 827 | "dev": true 828 | }, 829 | "morgan": { 830 | "version": "1.8.2", 831 | "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.8.2.tgz", 832 | "integrity": "sha1-eErHc05KRTqcbm6GgKkyknXItoc=", 833 | "dev": true, 834 | "dependencies": { 835 | "debug": { 836 | "version": "2.6.8", 837 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", 838 | "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", 839 | "dev": true 840 | } 841 | } 842 | }, 843 | "ms": { 844 | "version": "2.0.0", 845 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 846 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 847 | "dev": true 848 | }, 849 | "negotiator": { 850 | "version": "0.6.1", 851 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", 852 | "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", 853 | "dev": true 854 | }, 855 | "node-status-codes": { 856 | "version": "1.0.0", 857 | "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", 858 | "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=", 859 | "dev": true 860 | }, 861 | "normalize-package-data": { 862 | "version": "2.4.0", 863 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", 864 | "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", 865 | "dev": true 866 | }, 867 | "number-is-nan": { 868 | "version": "1.0.1", 869 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 870 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", 871 | "dev": true 872 | }, 873 | "oauth-sign": { 874 | "version": "0.8.2", 875 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", 876 | "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", 877 | "dev": true 878 | }, 879 | "object-assign": { 880 | "version": "4.1.1", 881 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 882 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 883 | "dev": true 884 | }, 885 | "on-finished": { 886 | "version": "2.3.0", 887 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 888 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 889 | "dev": true 890 | }, 891 | "on-headers": { 892 | "version": "1.0.1", 893 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", 894 | "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", 895 | "dev": true 896 | }, 897 | "os-homedir": { 898 | "version": "1.0.2", 899 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 900 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 901 | "dev": true 902 | }, 903 | "os-locale": { 904 | "version": "1.4.0", 905 | "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", 906 | "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", 907 | "dev": true 908 | }, 909 | "os-tmpdir": { 910 | "version": "1.0.2", 911 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 912 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 913 | "dev": true 914 | }, 915 | "osenv": { 916 | "version": "0.1.4", 917 | "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", 918 | "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", 919 | "dev": true 920 | }, 921 | "package-json": { 922 | "version": "2.4.0", 923 | "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz", 924 | "integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=", 925 | "dev": true 926 | }, 927 | "parse-json": { 928 | "version": "2.2.0", 929 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", 930 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", 931 | "dev": true 932 | }, 933 | "parseurl": { 934 | "version": "1.3.1", 935 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", 936 | "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=", 937 | "dev": true 938 | }, 939 | "path-exists": { 940 | "version": "2.1.0", 941 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", 942 | "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", 943 | "dev": true 944 | }, 945 | "path-to-regexp": { 946 | "version": "0.1.7", 947 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 948 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", 949 | "dev": true 950 | }, 951 | "path-type": { 952 | "version": "1.1.0", 953 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", 954 | "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", 955 | "dev": true 956 | }, 957 | "performance-now": { 958 | "version": "0.2.0", 959 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", 960 | "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", 961 | "dev": true 962 | }, 963 | "pify": { 964 | "version": "2.3.0", 965 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 966 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 967 | "dev": true 968 | }, 969 | "pinkie": { 970 | "version": "2.0.4", 971 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 972 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 973 | "dev": true 974 | }, 975 | "pinkie-promise": { 976 | "version": "2.0.1", 977 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 978 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 979 | "dev": true 980 | }, 981 | "please-upgrade-node": { 982 | "version": "1.0.1", 983 | "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-1.0.1.tgz", 984 | "integrity": "sha512-cLfOKsn2M5tWb8kbg6VRzkF1NVRFz1tTnZQq1dLFOS3rKCPtOXcgN+8C301KLUuCpXjj7QQOvGdTbiO63b0Ing==", 985 | "dev": true 986 | }, 987 | "pluralize": { 988 | "version": "3.1.0", 989 | "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-3.1.0.tgz", 990 | "integrity": "sha1-hCE9ChI1YGnaqEBgxVkkJjMWE2g=", 991 | "dev": true 992 | }, 993 | "prepend-http": { 994 | "version": "1.0.4", 995 | "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", 996 | "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", 997 | "dev": true 998 | }, 999 | "process-nextick-args": { 1000 | "version": "1.0.7", 1001 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", 1002 | "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", 1003 | "dev": true 1004 | }, 1005 | "proxy-addr": { 1006 | "version": "1.1.5", 1007 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.5.tgz", 1008 | "integrity": "sha1-ccDuOxAt4/IC87ZPYI0XP8uhqRg=", 1009 | "dev": true 1010 | }, 1011 | "punycode": { 1012 | "version": "1.4.1", 1013 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 1014 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", 1015 | "dev": true 1016 | }, 1017 | "qs": { 1018 | "version": "6.4.0", 1019 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", 1020 | "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", 1021 | "dev": true 1022 | }, 1023 | "range-parser": { 1024 | "version": "1.2.0", 1025 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", 1026 | "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", 1027 | "dev": true 1028 | }, 1029 | "raw-body": { 1030 | "version": "2.2.0", 1031 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.2.0.tgz", 1032 | "integrity": "sha1-mUl2z2pQlqQRYoQEkvC9xdbn+5Y=", 1033 | "dev": true 1034 | }, 1035 | "rc": { 1036 | "version": "1.2.1", 1037 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", 1038 | "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", 1039 | "dev": true, 1040 | "dependencies": { 1041 | "minimist": { 1042 | "version": "1.2.0", 1043 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 1044 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 1045 | "dev": true 1046 | } 1047 | } 1048 | }, 1049 | "read-all-stream": { 1050 | "version": "3.1.0", 1051 | "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", 1052 | "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", 1053 | "dev": true 1054 | }, 1055 | "read-pkg": { 1056 | "version": "1.1.0", 1057 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", 1058 | "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", 1059 | "dev": true 1060 | }, 1061 | "read-pkg-up": { 1062 | "version": "1.0.1", 1063 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", 1064 | "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", 1065 | "dev": true 1066 | }, 1067 | "readable-stream": { 1068 | "version": "2.3.3", 1069 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", 1070 | "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", 1071 | "dev": true, 1072 | "dependencies": { 1073 | "isarray": { 1074 | "version": "1.0.0", 1075 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1076 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1077 | "dev": true 1078 | } 1079 | } 1080 | }, 1081 | "registry-auth-token": { 1082 | "version": "3.3.1", 1083 | "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", 1084 | "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", 1085 | "dev": true 1086 | }, 1087 | "registry-url": { 1088 | "version": "3.1.0", 1089 | "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", 1090 | "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", 1091 | "dev": true 1092 | }, 1093 | "repeating": { 1094 | "version": "2.0.1", 1095 | "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", 1096 | "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", 1097 | "dev": true 1098 | }, 1099 | "request": { 1100 | "version": "2.81.0", 1101 | "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", 1102 | "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", 1103 | "dev": true 1104 | }, 1105 | "require-directory": { 1106 | "version": "2.1.1", 1107 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1108 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 1109 | "dev": true 1110 | }, 1111 | "require-main-filename": { 1112 | "version": "1.0.1", 1113 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", 1114 | "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", 1115 | "dev": true 1116 | }, 1117 | "safe-buffer": { 1118 | "version": "5.1.1", 1119 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 1120 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", 1121 | "dev": true 1122 | }, 1123 | "semver": { 1124 | "version": "5.4.1", 1125 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", 1126 | "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", 1127 | "dev": true 1128 | }, 1129 | "semver-diff": { 1130 | "version": "2.1.0", 1131 | "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", 1132 | "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", 1133 | "dev": true 1134 | }, 1135 | "send": { 1136 | "version": "0.15.3", 1137 | "resolved": "https://registry.npmjs.org/send/-/send-0.15.3.tgz", 1138 | "integrity": "sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk=", 1139 | "dev": true 1140 | }, 1141 | "serve-static": { 1142 | "version": "1.12.3", 1143 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.3.tgz", 1144 | "integrity": "sha1-n0uhni8wMMVH+K+ZEHg47DjVseI=", 1145 | "dev": true 1146 | }, 1147 | "server-destroy": { 1148 | "version": "1.0.1", 1149 | "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", 1150 | "integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0=", 1151 | "dev": true 1152 | }, 1153 | "set-blocking": { 1154 | "version": "2.0.0", 1155 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 1156 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", 1157 | "dev": true 1158 | }, 1159 | "setprototypeof": { 1160 | "version": "1.0.3", 1161 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", 1162 | "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", 1163 | "dev": true 1164 | }, 1165 | "shortid": { 1166 | "version": "2.2.8", 1167 | "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.8.tgz", 1168 | "integrity": "sha1-AzsRfWoul1gE9vCWnb59PQs1UTE=", 1169 | "dev": true 1170 | }, 1171 | "slide": { 1172 | "version": "1.1.6", 1173 | "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", 1174 | "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", 1175 | "dev": true 1176 | }, 1177 | "sntp": { 1178 | "version": "1.0.9", 1179 | "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", 1180 | "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", 1181 | "dev": true 1182 | }, 1183 | "spdx-correct": { 1184 | "version": "1.0.2", 1185 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", 1186 | "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", 1187 | "dev": true 1188 | }, 1189 | "spdx-expression-parse": { 1190 | "version": "1.0.4", 1191 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", 1192 | "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", 1193 | "dev": true 1194 | }, 1195 | "spdx-license-ids": { 1196 | "version": "1.2.2", 1197 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", 1198 | "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", 1199 | "dev": true 1200 | }, 1201 | "sshpk": { 1202 | "version": "1.13.1", 1203 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", 1204 | "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", 1205 | "dev": true, 1206 | "dependencies": { 1207 | "assert-plus": { 1208 | "version": "1.0.0", 1209 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 1210 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", 1211 | "dev": true 1212 | } 1213 | } 1214 | }, 1215 | "statuses": { 1216 | "version": "1.3.1", 1217 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", 1218 | "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", 1219 | "dev": true 1220 | }, 1221 | "steno": { 1222 | "version": "0.4.4", 1223 | "resolved": "https://registry.npmjs.org/steno/-/steno-0.4.4.tgz", 1224 | "integrity": "sha1-BxEFvfwobmYVwEA8J+nXtdy4Vcs=", 1225 | "dev": true 1226 | }, 1227 | "string-width": { 1228 | "version": "1.0.2", 1229 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", 1230 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 1231 | "dev": true 1232 | }, 1233 | "string_decoder": { 1234 | "version": "1.0.3", 1235 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 1236 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", 1237 | "dev": true 1238 | }, 1239 | "stringstream": { 1240 | "version": "0.0.5", 1241 | "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", 1242 | "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", 1243 | "dev": true 1244 | }, 1245 | "strip-ansi": { 1246 | "version": "3.0.1", 1247 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 1248 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 1249 | "dev": true 1250 | }, 1251 | "strip-bom": { 1252 | "version": "2.0.0", 1253 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", 1254 | "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", 1255 | "dev": true 1256 | }, 1257 | "strip-json-comments": { 1258 | "version": "2.0.1", 1259 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 1260 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 1261 | "dev": true 1262 | }, 1263 | "supports-color": { 1264 | "version": "2.0.0", 1265 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 1266 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 1267 | "dev": true 1268 | }, 1269 | "timed-out": { 1270 | "version": "3.1.3", 1271 | "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz", 1272 | "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=", 1273 | "dev": true 1274 | }, 1275 | "tough-cookie": { 1276 | "version": "2.3.2", 1277 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", 1278 | "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", 1279 | "dev": true 1280 | }, 1281 | "tunnel-agent": { 1282 | "version": "0.6.0", 1283 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 1284 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 1285 | "dev": true 1286 | }, 1287 | "tweetnacl": { 1288 | "version": "0.14.5", 1289 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 1290 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", 1291 | "dev": true, 1292 | "optional": true 1293 | }, 1294 | "type-is": { 1295 | "version": "1.6.15", 1296 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", 1297 | "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", 1298 | "dev": true 1299 | }, 1300 | "unpipe": { 1301 | "version": "1.0.0", 1302 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1303 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", 1304 | "dev": true 1305 | }, 1306 | "unzip-response": { 1307 | "version": "1.0.2", 1308 | "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", 1309 | "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=", 1310 | "dev": true 1311 | }, 1312 | "update-notifier": { 1313 | "version": "1.0.3", 1314 | "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-1.0.3.tgz", 1315 | "integrity": "sha1-j5LFFUgr1oMbfJMBPnD4dVLHz1o=", 1316 | "dev": true 1317 | }, 1318 | "url-parse-lax": { 1319 | "version": "1.0.0", 1320 | "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", 1321 | "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", 1322 | "dev": true 1323 | }, 1324 | "util-deprecate": { 1325 | "version": "1.0.2", 1326 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1327 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 1328 | "dev": true 1329 | }, 1330 | "utils-merge": { 1331 | "version": "1.0.0", 1332 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", 1333 | "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=", 1334 | "dev": true 1335 | }, 1336 | "uuid": { 1337 | "version": "3.1.0", 1338 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", 1339 | "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", 1340 | "dev": true 1341 | }, 1342 | "validate-npm-package-license": { 1343 | "version": "3.0.1", 1344 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", 1345 | "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", 1346 | "dev": true 1347 | }, 1348 | "vary": { 1349 | "version": "1.1.1", 1350 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz", 1351 | "integrity": "sha1-Z1Neu2lMHVIldFeYRmUyP1h+jTc=", 1352 | "dev": true 1353 | }, 1354 | "verror": { 1355 | "version": "1.3.6", 1356 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", 1357 | "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", 1358 | "dev": true 1359 | }, 1360 | "which-module": { 1361 | "version": "1.0.0", 1362 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", 1363 | "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", 1364 | "dev": true 1365 | }, 1366 | "widest-line": { 1367 | "version": "1.0.0", 1368 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", 1369 | "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", 1370 | "dev": true 1371 | }, 1372 | "wrap-ansi": { 1373 | "version": "2.1.0", 1374 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", 1375 | "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", 1376 | "dev": true 1377 | }, 1378 | "write-file-atomic": { 1379 | "version": "1.3.4", 1380 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", 1381 | "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", 1382 | "dev": true 1383 | }, 1384 | "xdg-basedir": { 1385 | "version": "2.0.0", 1386 | "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz", 1387 | "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=", 1388 | "dev": true 1389 | }, 1390 | "y18n": { 1391 | "version": "3.2.1", 1392 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", 1393 | "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", 1394 | "dev": true 1395 | }, 1396 | "yargs": { 1397 | "version": "6.6.0", 1398 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", 1399 | "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", 1400 | "dev": true, 1401 | "dependencies": { 1402 | "camelcase": { 1403 | "version": "3.0.0", 1404 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", 1405 | "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", 1406 | "dev": true 1407 | } 1408 | } 1409 | }, 1410 | "yargs-parser": { 1411 | "version": "4.2.1", 1412 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", 1413 | "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", 1414 | "dev": true, 1415 | "dependencies": { 1416 | "camelcase": { 1417 | "version": "3.0.0", 1418 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", 1419 | "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", 1420 | "dev": true 1421 | } 1422 | } 1423 | } 1424 | } 1425 | } 1426 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "beeetrack-javascript-test", 3 | "version": "1.0.0", 4 | "devDependencies": { 5 | "json-server": "^0.11.2" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | JSON Server 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 |
14 |

Beetrack test

15 |
16 |
17 |
18 |
19 |

Descripción

20 |

21 | Para acceder a los recursos, puedes hacerlo a través del endpoint /api/users, siguiendo las operaciones 22 | establecidas por REST: 23 |

31 |

32 |
33 |
34 | 35 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /public/style.css: -------------------------------------------------------------------------------- 1 | html { 2 | font-size: 70%; 3 | } 4 | 5 | body { 6 | display: flex; 7 | min-height: 100vh; 8 | flex-direction: column; 9 | padding:0; 10 | margin: 0; 11 | color: #333; 12 | letter-spacing: 0; 13 | } 14 | 15 | header { 16 | padding-top: 2.0rem; 17 | border-bottom: 1px solid #EEE; 18 | } 19 | 20 | header a, header a:hover { 21 | text-decoration: none; 22 | } 23 | 24 | main { 25 | flex: 1; 26 | } 27 | 28 | footer { 29 | padding-top: 2.5rem; 30 | border-top: 1px solid #EEE; 31 | } 32 | 33 | h4 { 34 | margin-top: 4rem; 35 | } 36 | 37 | a { 38 | color: #0275d8; 39 | } 40 | 41 | a:hover { 42 | color: #014c8c; 43 | text-decoration: underline; 44 | } 45 | 46 | table { 47 | margin-left: 0; 48 | } 49 | 50 | td { 51 | border: 0; 52 | padding: 0 1em .5em 0; 53 | color: #014c8c; 54 | } 55 | 56 | td:first-child { 57 | width: 1%; 58 | white-space: nowrap; 59 | } 60 | 61 | ul { 62 | list-style-position: inside; 63 | padding-left: 0; 64 | } 65 | 66 | li { 67 | list-style-type: none; 68 | margin-bottom: .2rem; 69 | } 70 | 71 | code { 72 | border-radius: 0; 73 | } 74 | -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | const jsonServer = require('json-server') 2 | const server = jsonServer.create() 3 | const router = jsonServer.router('db.json') 4 | const middlewares = jsonServer.defaults() 5 | 6 | server.use(middlewares) 7 | server.use('/api', router) 8 | server.listen(3000, () => { 9 | console.log('JSON Server is running') 10 | }) 11 | --------------------------------------------------------------------------------