├── .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 | 
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 | 
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 |
24 | GET /api/users
25 | GET /api/users/1
26 | POST /api/users
27 | PUT /api/users/1
28 | PATCH /api/users/1
29 | DELETE /api/users/1
30 |
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 |
--------------------------------------------------------------------------------